数通互联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
3.1 KiB

import {getPrintTemplate} from '@/api/DesignForm/requestapi'
import {fieldTree,PageConfig} from './printHtmlRender.vue'
import printHtmlRender from './printHtmlRender.vue'
import {printWithSmartPagination} from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/printHtmlDom.js"
import {gainRunTaskFlow} from "@/api/DesignForm/requestapi";
const printRenderTree: Ref<any[]> = ref([]);
export const printHtmlPage = async (pformid:string,pappkey:string,pversionid:string,pformkey:string,row: any) => {
let data:any[]=[]
let _pageConfig:PageConfig
let title:string="表单";
let flowlist:any[]=[]
if (row.flowIsOpens==1){
let sendInfo = {
id:row.runFlowId
}
await gainRunTaskFlow(sendInfo)
.then((resp:any) =>{
console.log("获取流程--werwerwerwer--->",resp.data)
flowlist=resp.data.flowList
})
}
await getPrintTemplate({"versionid":pversionid,"formkey":pappkey}).then(resp=>{
title=resp.data.title
if(resp.data.formtemplatejson!=""){
data=JSON.parse(resp.data.formtemplatejson)
}else{
alert("请先创建打印模板!")
return
}
if(resp.data.pageconfigjson!=""){
_pageConfig=JSON.parse(resp.data.pageconfigjson)
if(_pageConfig.founder!=""){
_pageConfig.founder=row[_pageConfig.founder]
}
if(_pageConfig.founderTime!=""){
_pageConfig.founderTime=row[_pageConfig.founderTime]
}
if(_pageConfig.deptOrg!=""){
_pageConfig.deptOrg=row[_pageConfig.deptOrg]
}
_pageConfig.masters_key=row.masters_key
}
})
let qrstr=`https://wab.hxgk.group/#/form_table/taskListPage?id=${pformid}&key=${pappkey}&
formid=${pversionid}&formKey=${pformkey}&qrDetailId=${row.id}`
data.forEach(node=>{
deepLoopForm(node,row)
})
printRenderTree.value=data
ElMessageBox({
message: () => h('div',{style:{ width:'1200px',display:'flex','flex-direction':'column'}},[
h(ElButton, {
type:"primary",
style: "margin:10px 10px 5px auto;",
onClick: () => {
printWithSmartPagination("printPageAll",{
paperSize: _pageConfig.pagesize,
landscape: _pageConfig.horizontal=="htal"? true : false , //默认竖向
margin: 5,
});
}
},'打印表单'),
h('div',{style:{ border: '1px solid black', width: 'fit-content', margin: '5px','align-self': 'center'}},[
h(printHtmlRender,{
name:title,
fieldTree:printRenderTree.value,
pageConfig:_pageConfig,
flowList:flowlist,
qrcode:qrstr,
})
])
]),
showConfirmButton:false,
customStyle: { '--el-messagebox-width':'1300px',padding:'10px'},
}).then(() => {
})
};
const deepLoopForm=(node:fieldTree, row: Record<string, any>)=>{
if(Array.isArray(node)){
node.forEach(item=>{deepLoopForm(item,row)})
return
}
if(node.field!=""){
let rnode:Object;
if (row.hasOwnProperty(node.field!)){// 有这个字段
if (node.type=="table" || node.type=="tabs"){
node.data=row[node.field!]
}else{
node.field=row[node.field!]
}
}
}
}