介绍

在文档使用案例中有一部分是导出pdf的文档,但是目前不能直接导出pdf,只能是先预览在下载pdf,实现步骤与文档套件使用案例基本一致,需要修改的地方就是代码部分。

配置功能

文档数据,数据提取方式用资源表也可以

文档模板,其中文档类型的pdf 目前不用配,这个类型不用了

文档模板预览效果

在全局脚本库编写脚本

文档表单的下载与预览脚本库(doExecDoc)代码

/*
 方法调用示例:JE.callCustomFn('编码',{ param1:1, param2:2 });
*/
/*
 方法体编写示例:
*/
// 1. 方法参数解析
// const { param1, param2 } = EventOptions;
// 2. 方法体编写
// 3. 需要返回值,直接return;
// return result;
const {docCode,params,pd,returnType,$func} = EventOptions;
var pdf="0";
var returnTypeVal="exp";
if(JE.isNotEmpty(returnType)){
    returnTypeVal=returnType;
}
var pdVal="";
if(JE.isNotEmpty(pd)){
    pdVal=pd;
}else{
    if($func && $func.getFuncData){
        pdVal=$func.getFuncData().info.productCode;
    }
}
JE.ajax({
    url:"/je/office/jeOffice/doCacheParam",
    params:params || {},
    headers:{pd:pdVal}
}).then((resObj)=>{
    if(resObj.success){
        var paramKey=resObj.data;
        if('exp'==returnType){
            window.open("/je/office/jeOffice/doExecDoc?code="+docCode+"&pdf="+pdf+"&returnType="+returnTypeVal+"&type=cache&data="+paramKey+"&pd="+pdVal);
        }else{
            window.open("/je/office/jeOffice/doExecDoc?code="+docCode+"&pdf="+pdf+"&returnType="+returnTypeVal+"&type=cache&data="+paramKey+"&pd="+pdVal);
        }
    }else{
        JE.alert(resObj.data, "error");
    }
})

文档生成后保存到文档(doExecDataDoc)代码

/*
 方法调用示例:JE.callCustomFn('编码',{ param1:1, param2:2 });
*/
/*
 方法体编写示例:
*/
// 1. 方法参数解析
// const { param1, param2 } = EventOptions;
// 2. 方法体编写
// 3. 需要返回值,直接return;
// return result;
const {docCode,params,pd,returnType,$func,pdf} = EventOptions;
const {Upload} = JE.useUi();
var pdfVal="0";
var returnTypeVal="exp";
if(JE.isNotEmpty(returnType)){
    returnTypeVal=returnType;
}
var pdVal="";
if(JE.isNotEmpty(pd)){
    pdVal=pd;
}else{
    if($func && $func.getFuncData){
        pdVal=$func.getFuncData().info.productCode;
    }
}
if(JE.isNotEmpty(pdf)){
    pdfVal=pdf;
}
JE.ajax({
    url:"/je/office/jeOffice/doCacheParam",
    params:params || {},
    headers:{pd:pdVal}
}).then((resObj)=>{
    if(resObj.success){
        var paramKey=resObj.data;
        JE.ajax({
            url:"/je/office/jeOffice/doExecDataDoc",
            params:{
                code:docCode,
                pdf:pdf,
                returnType:returnType,
                type:'cache',
                data:paramKey
            }, headers:{pd:pdVal}
        }).then((docObj)=>{
            if(!docObj.success){
                JE.alert(docObj.message,"error");
                return;
            }
            if("exp"==returnTypeVal){
                 JE.useUtils().downloadFile(docObj.data.fileKey);
            }else{
                const fileItem = {fileKey: docObj.data.fileKey,relName:docObj.data.relName,size: docObj.data.size,suffix: "docx"};
                Upload.previewFile(fileItem);
                // JE.useUtils().previewFile(docObj.data.fileKey);
            }
        });
    }else{
        JE.alert(resObj.data, "error");
    }
})

业务功能中使用

在功能中配置按钮,编写按钮事件,这里加了两个按钮,第一:下载原件,这是直接下载Word;预览文档,这是先将文档进行预览,预览之后下载pdf。

下载原件按钮事件

//获取ajax
//获得功能对象
const {$func} = EventOptions;
const funcForm=$func.getFuncForm();
const formValues=funcForm.getValues();
var pkCode=$func.getFuncData().info.pkCode;
if(!JE.isNotEmpty(formValues[pkCode])){
    JE.alert("请先保存数据!", "error");
    return;
}
var docCode="CRM002";
var params={
    pkValue:formValues[pkCode]
}
var returnType="exp";
JE.callCustomFn('doExecDoc',{docCode:docCode,params:params,returnType:returnType,$func});

下载原文件效果(word)

预览文档按钮事件

const {
    $func,  // 功能对象
    button, // 按钮对象
} = EventOptions;

// 异步事件,支持 await语法,实现同步处理。

const funcForm=$func.getFuncForm();
const formValues=funcForm.getValues();
var pkCode=$func.getFuncData().info.pkCode;
if(!JE.isNotEmpty(formValues[pkCode])){
    JE.alert("请先保存数据!", "error");
    return;
}
var docCode="CRM002";
var params={
    pkValue:formValues[pkCode]
}
var returnType="preview";
JE.callCustomFn('doExecDataDoc',{docCode:docCode,params:params,returnType:returnType,$func});

预览文档效果:单击按钮之后弹框效果,先预览在手动点击下载

下载pdf效果

最后编辑: 呼丽华  文档更新时间: 2024-10-18 09:24   作者:呼丽华