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.
120 lines
3.6 KiB
120 lines
3.6 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";
|
|
import { useOrgMemberStore } from "@/store/modules/orgMember";
|
|
|
|
const printRenderTree: Ref<any[]> = ref([]);
|
|
const orgMembers = useOrgMemberStore()
|
|
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
|
|
})
|
|
}
|
|
|
|
let noTemplate:boolean=false
|
|
await getPrintTemplate({"versionid":pversionid,"formkey":pappkey}).then(resp=>{
|
|
title=resp.data.title
|
|
if(resp.data.formtemplatejson!=""){
|
|
data=JSON.parse(resp.data.formtemplatejson)
|
|
}else{
|
|
noTemplate=true
|
|
alert("请先创建打印模板!")
|
|
return
|
|
}
|
|
|
|
if(resp.data.pageconfigjson!=""){
|
|
_pageConfig=JSON.parse(resp.data.pageconfigjson)
|
|
if(_pageConfig.founder!=""){
|
|
_pageConfig.founder=row[_pageConfig.founder]
|
|
_pageConfig.deptOrg=orgMembers.listMap[row.createrOrg]
|
|
}
|
|
|
|
if(_pageConfig.founderTime!=""){
|
|
_pageConfig.founderTime=row[_pageConfig.founderTime]
|
|
}
|
|
|
|
_pageConfig.masters_key=row.masters_key
|
|
}
|
|
})
|
|
|
|
if(noTemplate) return;
|
|
|
|
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.type=="tabs"&&node.child){
|
|
node.child?.forEach(item=>{deepLoopForm(item,row)})
|
|
return
|
|
}
|
|
|
|
if(node.field!=""){
|
|
if (row.hasOwnProperty(node.field!)){// 有这个字段
|
|
if (node.type=="table"){
|
|
node.data=row[node.field!]
|
|
}else if(node.type=="select"||node.type=="checkbox"){
|
|
const val=row[node.field!]
|
|
node.field=""
|
|
for(let op of node.options!){
|
|
if(op.value==val){
|
|
node.field=op.label
|
|
break;
|
|
}
|
|
}
|
|
}else{
|
|
node.field=row[node.field!]
|
|
}
|
|
}
|
|
}
|
|
}
|