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.
86 lines
2.8 KiB
86 lines
2.8 KiB
|
2 weeks ago
|
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"
|
||
|
|
|
||
|
|
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="表单";
|
||
|
|
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/taskInfo?id=${pformid}&key=${pappkey}&
|
||
|
|
formid=${pversionid}&formKey=${pformkey}&state=2`
|
||
|
|
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,
|
||
|
|
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!]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|