|
|
|
@ -31,9 +31,9 @@ import type { FormInstance, FormRules } from "element-plus"; |
|
|
|
import { gainFormPageListCont } from "@/api/DesignForm/requestapi"; |
|
|
|
import { Picture, InfoFilled, QuestionFilled } from "@element-plus/icons-vue"; |
|
|
|
import request from "@/utils/request"; |
|
|
|
import html2canvas from 'html2canvas'; |
|
|
|
import JSZip, { forEach } from 'jszip'; |
|
|
|
import { ElLoading,ElMessage,ElNotification } from 'element-plus' |
|
|
|
import html2canvas from "html2canvas"; |
|
|
|
import JSZip, { forEach } from "jszip"; |
|
|
|
import { ElLoading, ElMessage, ElNotification } from "element-plus"; |
|
|
|
import { softDeletion, retractRunWorkFlow } from "@/api/taskapi/management"; |
|
|
|
|
|
|
|
import { formatNumber } from "@/api/DesignForm/utils"; |
|
|
|
@ -69,8 +69,8 @@ const props = withDefaults( |
|
|
|
versiontitle?: string; |
|
|
|
viewPage?: viewPageType; |
|
|
|
formBasicConfig?: any; |
|
|
|
fieldsDetailList?:any; |
|
|
|
orgAndManTree?:any; |
|
|
|
fieldsDetailList?: any; |
|
|
|
orgAndManTree?: any; |
|
|
|
}>(), |
|
|
|
{ |
|
|
|
showPage: true, |
|
|
|
@ -225,23 +225,23 @@ const resetFields = (formEl: FormInstance | undefined) => { |
|
|
|
}; |
|
|
|
|
|
|
|
//20250117 李文轩 二维码表格 |
|
|
|
const qrCodesPrintDialogFlag = ref(false) |
|
|
|
const qrCodesPrintDialogFlag = ref(false); |
|
|
|
let tableRefs = reactive({}); |
|
|
|
const tablesData = ref({}) |
|
|
|
function getDetailQrCodes(val:any) { |
|
|
|
const tablesData = ref({}); |
|
|
|
function getDetailQrCodes(val: any) { |
|
|
|
return request({ |
|
|
|
url: "/javasys/lowCode/QrCode/getDetailQrCodes", |
|
|
|
method: "post", |
|
|
|
data: { |
|
|
|
cfid: props.formId, |
|
|
|
idArray:val, |
|
|
|
settings:props.formBasicConfig, |
|
|
|
idArray: val, |
|
|
|
settings: props.formBasicConfig, |
|
|
|
}, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function modifyFieldsMap4(fieldsMap: any): Array<{ key: string, value: string }> { |
|
|
|
let result: Array<{ key: string, value: string }> = []; |
|
|
|
function modifyFieldsMap4(fieldsMap: any): Array<{ key: string; value: string }> { |
|
|
|
let result: Array<{ key: string; value: string }> = []; |
|
|
|
// 使用 Object.entries 获取键值对数组,保留原始顺序 |
|
|
|
for (const [key, value] of Object.entries(fieldsMap)) { |
|
|
|
let parts = value.split("!@#@!"); |
|
|
|
@ -264,7 +264,7 @@ async function downloadTables() { |
|
|
|
isButton2Disabled.value = true; |
|
|
|
const loadingInstance = ElLoading.service({ |
|
|
|
fullscreen: true, |
|
|
|
text: '正在生成图片,请稍候...' // 添加的文字内容,可根据需要修改 |
|
|
|
text: "正在生成图片,请稍候...", // 添加的文字内容,可根据需要修改 |
|
|
|
}); |
|
|
|
//ElMessage('This is a message.') |
|
|
|
const zip = new JSZip(); |
|
|
|
@ -272,9 +272,9 @@ async function downloadTables() { |
|
|
|
for (const [tableKey, element] of Object.entries(tableRefs)) { |
|
|
|
try { |
|
|
|
const canvas = await html2canvas(element); |
|
|
|
const dataUrl = canvas.toDataURL('image/png'); |
|
|
|
const byteString = atob(dataUrl.split(',')[1]); |
|
|
|
const mimeString = dataUrl.split(',')[0].split(':')[1].split(';')[0]; |
|
|
|
const dataUrl = canvas.toDataURL("image/png"); |
|
|
|
const byteString = atob(dataUrl.split(",")[1]); |
|
|
|
const mimeString = dataUrl.split(",")[0].split(":")[1].split(";")[0]; |
|
|
|
const ab = new ArrayBuffer(byteString.length); |
|
|
|
const ia = new Uint8Array(ab); |
|
|
|
|
|
|
|
@ -289,27 +289,35 @@ async function downloadTables() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
zip.generateAsync({ type: 'blob' }).then(function(content) { |
|
|
|
zip.generateAsync({ type: "blob" }).then(function (content) { |
|
|
|
const now = new Date(); |
|
|
|
const formattedDate = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}${String(now.getSeconds()).padStart(2, '0')}`; |
|
|
|
const formattedDate = `${now.getFullYear()}${String(now.getMonth() + 1).padStart( |
|
|
|
2, |
|
|
|
"0" |
|
|
|
)}${String(now.getDate()).padStart(2, "0")}_${String(now.getHours()).padStart( |
|
|
|
2, |
|
|
|
"0" |
|
|
|
)}${String(now.getMinutes()).padStart(2, "0")}${String(now.getSeconds()).padStart( |
|
|
|
2, |
|
|
|
"0" |
|
|
|
)}`; |
|
|
|
const fileName = `${props.formBasicConfig.formName}-${formattedDate}.zip`; |
|
|
|
|
|
|
|
const link = document.createElement('a'); |
|
|
|
const link = document.createElement("a"); |
|
|
|
link.href = URL.createObjectURL(content); |
|
|
|
link.download = fileName; |
|
|
|
loadingInstance.close() |
|
|
|
loadingInstance.close(); |
|
|
|
link.click(); |
|
|
|
tableRefs = {} |
|
|
|
tableRefs = {}; |
|
|
|
// 不管成功与否,最后都要恢复按钮的状态 |
|
|
|
isButton1Disabled.value = false; |
|
|
|
isButton2Disabled.value = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
function closeQrDownload(){ |
|
|
|
qrCodesPrintDialogFlag.value = false |
|
|
|
tableRefs = {} |
|
|
|
function closeQrDownload() { |
|
|
|
qrCodesPrintDialogFlag.value = false; |
|
|
|
tableRefs = {}; |
|
|
|
//console.log(tableRefs) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
let asfs: any[] = []; |
|
|
|
@ -318,27 +326,32 @@ let checkboxs: any[] = []; |
|
|
|
let switchs: any[] = []; |
|
|
|
let selects: any[] = []; |
|
|
|
let tables: any[] = []; |
|
|
|
let dofs: any[] = [];//deptOrgAndOrgCententAndFounderArr |
|
|
|
let dofs: any[] = []; //deptOrgAndOrgCententAndFounderArr |
|
|
|
|
|
|
|
function getAsfs() { |
|
|
|
//setTimeout(() => { |
|
|
|
let dataList = ref({}); |
|
|
|
dataList.value = props.fieldsDetailList |
|
|
|
dataList.value = props.fieldsDetailList; |
|
|
|
if (dataList && Array.isArray(dataList.value) && dataList.value.length > 0) { |
|
|
|
for (let i = 0; i < dataList.value.length; i++) { |
|
|
|
if (dataList.value[i].type == "associatedForms") { |
|
|
|
asfs.push(dataList.value[i]); |
|
|
|
}else if(dataList.value[i].type == "radio"){ |
|
|
|
radios.push(dataList.value[i]) |
|
|
|
} else if(dataList.value[i].type == "checkbox"){ |
|
|
|
checkboxs.push(dataList.value[i]) |
|
|
|
} else if(dataList.value[i].type == "switch"){ |
|
|
|
switchs.push(dataList.value[i]) |
|
|
|
} else if(dataList.value[i].type == "select"){ |
|
|
|
selects.push(dataList.value[i]) |
|
|
|
} else if(dataList.value[i].type == "deptOrg"||dataList.value[i].type == "orgCentent"||dataList.value[i].type == "founder"){//||dataList.value[i].type == "owner"拥有者,"expand-user"选择用户 |
|
|
|
dofs.push(dataList.value[i]) |
|
|
|
}else if ( |
|
|
|
} else if (dataList.value[i].type == "radio") { |
|
|
|
radios.push(dataList.value[i]); |
|
|
|
} else if (dataList.value[i].type == "checkbox") { |
|
|
|
checkboxs.push(dataList.value[i]); |
|
|
|
} else if (dataList.value[i].type == "switch") { |
|
|
|
switchs.push(dataList.value[i]); |
|
|
|
} else if (dataList.value[i].type == "select") { |
|
|
|
selects.push(dataList.value[i]); |
|
|
|
} else if ( |
|
|
|
dataList.value[i].type == "deptOrg" || |
|
|
|
dataList.value[i].type == "orgCentent" || |
|
|
|
dataList.value[i].type == "founder" |
|
|
|
) { |
|
|
|
//||dataList.value[i].type == "owner"拥有者,"expand-user"选择用户 |
|
|
|
dofs.push(dataList.value[i]); |
|
|
|
} else if ( |
|
|
|
dataList.value[i].type == "card" || |
|
|
|
dataList.value[i].type == "flex" || |
|
|
|
dataList.value[i].type == "div" || |
|
|
|
@ -351,16 +364,20 @@ function getAsfs() { |
|
|
|
dataList.value[i].list.forEach((element: any) => { |
|
|
|
if (element.type == "associatedForms") { |
|
|
|
asfs.push(element); |
|
|
|
}else if(element.type == "radio"){ |
|
|
|
radios.push(element) |
|
|
|
}else if(element.type == "checkbox"){ |
|
|
|
checkboxs.push(element) |
|
|
|
}else if(element.type == "switch"){ |
|
|
|
switchs.push(element) |
|
|
|
}else if(element.type == "select"){ |
|
|
|
selects.push(element) |
|
|
|
}else if(element.type == "deptOrg"||element.type == "orgCentent"||element.type == "founder"){ |
|
|
|
dofs.push(element) |
|
|
|
} else if (element.type == "radio") { |
|
|
|
radios.push(element); |
|
|
|
} else if (element.type == "checkbox") { |
|
|
|
checkboxs.push(element); |
|
|
|
} else if (element.type == "switch") { |
|
|
|
switchs.push(element); |
|
|
|
} else if (element.type == "select") { |
|
|
|
selects.push(element); |
|
|
|
} else if ( |
|
|
|
element.type == "deptOrg" || |
|
|
|
element.type == "orgCentent" || |
|
|
|
element.type == "founder" |
|
|
|
) { |
|
|
|
dofs.push(element); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else if (dataList.value[i].type == "grid") { |
|
|
|
@ -373,16 +390,20 @@ function getAsfs() { |
|
|
|
|
|
|
|
if (a.type == "associatedForms") { |
|
|
|
asfs.push(a); |
|
|
|
}else if(a.type == "radio"){ |
|
|
|
radios.push(a) |
|
|
|
}else if(a.type == "checkbox"){ |
|
|
|
checkboxs.push(a) |
|
|
|
}else if(a.type == "switch"){ |
|
|
|
switchs.push(a) |
|
|
|
}else if(a.type == "select"){ |
|
|
|
selects.push(a) |
|
|
|
}else if(a.type == "deptOrg"||a.type == "orgCentent"||a.type == "founder"){ |
|
|
|
dofs.push(a) |
|
|
|
} else if (a.type == "radio") { |
|
|
|
radios.push(a); |
|
|
|
} else if (a.type == "checkbox") { |
|
|
|
checkboxs.push(a); |
|
|
|
} else if (a.type == "switch") { |
|
|
|
switchs.push(a); |
|
|
|
} else if (a.type == "select") { |
|
|
|
selects.push(a); |
|
|
|
} else if ( |
|
|
|
a.type == "deptOrg" || |
|
|
|
a.type == "orgCentent" || |
|
|
|
a.type == "founder" |
|
|
|
) { |
|
|
|
dofs.push(a); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -397,17 +418,21 @@ function getAsfs() { |
|
|
|
|
|
|
|
if (a.type == "associatedForms") { |
|
|
|
asfs.push(a); |
|
|
|
}else if(a.type == "radio"){ |
|
|
|
radios.push(a) |
|
|
|
}else if(a.type == "checkbox"){ |
|
|
|
checkboxs.push(a) |
|
|
|
}else if(a.type == "switch"){ |
|
|
|
switchs.push(a) |
|
|
|
}else if(a.type == "select"){ |
|
|
|
selects.push(a) |
|
|
|
}else if(a.type == "deptOrg"||a.type == "orgCentent"||a.type == "founder"){ |
|
|
|
dofs.push(a) |
|
|
|
}else if (a.type == "flex" || a.type == "table") { |
|
|
|
} else if (a.type == "radio") { |
|
|
|
radios.push(a); |
|
|
|
} else if (a.type == "checkbox") { |
|
|
|
checkboxs.push(a); |
|
|
|
} else if (a.type == "switch") { |
|
|
|
switchs.push(a); |
|
|
|
} else if (a.type == "select") { |
|
|
|
selects.push(a); |
|
|
|
} else if ( |
|
|
|
a.type == "deptOrg" || |
|
|
|
a.type == "orgCentent" || |
|
|
|
a.type == "founder" |
|
|
|
) { |
|
|
|
dofs.push(a); |
|
|
|
} else if (a.type == "flex" || a.type == "table") { |
|
|
|
if (a.type == "table") { |
|
|
|
tables.push(dataList.value[i]); |
|
|
|
} |
|
|
|
@ -418,16 +443,20 @@ function getAsfs() { |
|
|
|
|
|
|
|
if (q.type == "associatedForms") { |
|
|
|
asfs.push(q); |
|
|
|
}else if(q.type == "radio"){ |
|
|
|
radios.push(q) |
|
|
|
}else if(q.type == "checkbox"){ |
|
|
|
checkboxs.push(q) |
|
|
|
}else if(q.type == "switch"){ |
|
|
|
switchs.push(q) |
|
|
|
}else if(q.type == "select"){ |
|
|
|
selects.push(q) |
|
|
|
}else if(q.type == "deptOrg"||q.type == "orgCentent"||q.type == "founder"){ |
|
|
|
dofs.push(q) |
|
|
|
} else if (q.type == "radio") { |
|
|
|
radios.push(q); |
|
|
|
} else if (q.type == "checkbox") { |
|
|
|
checkboxs.push(q); |
|
|
|
} else if (q.type == "switch") { |
|
|
|
switchs.push(q); |
|
|
|
} else if (q.type == "select") { |
|
|
|
selects.push(q); |
|
|
|
} else if ( |
|
|
|
q.type == "deptOrg" || |
|
|
|
q.type == "orgCentent" || |
|
|
|
q.type == "founder" |
|
|
|
) { |
|
|
|
dofs.push(q); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -442,19 +471,19 @@ function getAsfs() { |
|
|
|
} |
|
|
|
|
|
|
|
function convertStringToArray(str: string) { |
|
|
|
if (typeof str!== 'string') { |
|
|
|
throw new Error('Input must be a string.'); |
|
|
|
if (typeof str !== "string") { |
|
|
|
throw new Error("Input must be a string."); |
|
|
|
} |
|
|
|
if (str === '') { |
|
|
|
if (str === "") { |
|
|
|
return []; |
|
|
|
} |
|
|
|
// 去除首尾的中括号 |
|
|
|
str = str.slice(1, -1); |
|
|
|
if (str === '') { |
|
|
|
if (str === "") { |
|
|
|
return []; |
|
|
|
} |
|
|
|
let parts = str.split(','); |
|
|
|
return parts.map(part => parseFloat(part)); |
|
|
|
let parts = str.split(","); |
|
|
|
return parts.map((part) => parseFloat(part)); |
|
|
|
} |
|
|
|
|
|
|
|
interface Tree { |
|
|
|
@ -499,8 +528,6 @@ function isAllCharactersNumbers(str: string) { |
|
|
|
|
|
|
|
//liwenxuan 20250120 二维码 end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-01 11:36:07 |
|
|
|
@ -511,144 +538,185 @@ const setUpClick = (val: string, id: string) => { |
|
|
|
if (val.key == "newAdd") { |
|
|
|
drawerWith.value = container.value?.clientWidth; |
|
|
|
openTaskDrawer.value = true; |
|
|
|
} else if(val.key == "showQrCode"){ |
|
|
|
} else if (val.key == "showQrCode") { |
|
|
|
//liwenxuan 20250114 二维码打印弹窗 start |
|
|
|
//在此组装参数,以生成二维码图片 |
|
|
|
let idArray = state.selectionChecked.map(item => item.id); |
|
|
|
if(idArray.length>0){ |
|
|
|
|
|
|
|
let idArray = state.selectionChecked.map((item) => item.id); |
|
|
|
if (idArray.length > 0) { |
|
|
|
//console.log(props.formBasicConfig) |
|
|
|
|
|
|
|
if(props.formBasicConfig.qrCodeFlag==true){ |
|
|
|
if(props.formBasicConfig.qrCodeInside==true){ |
|
|
|
if(props.formBasicConfig.qrCodePrintStyle&&props.formBasicConfig.qrCodePrintStyle=="2"&&props.formBasicConfig.qrCodeShowFields.length==0){ |
|
|
|
alert("未配置表格展示字段") |
|
|
|
return |
|
|
|
if (props.formBasicConfig.qrCodeFlag == true) { |
|
|
|
if (props.formBasicConfig.qrCodeInside == true) { |
|
|
|
if ( |
|
|
|
props.formBasicConfig.qrCodePrintStyle && |
|
|
|
props.formBasicConfig.qrCodePrintStyle == "2" && |
|
|
|
props.formBasicConfig.qrCodeShowFields.length == 0 |
|
|
|
) { |
|
|
|
alert("未配置表格展示字段"); |
|
|
|
return; |
|
|
|
} |
|
|
|
const loadingInstance1 = ElLoading.service({ |
|
|
|
fullscreen: true, |
|
|
|
text: '正在生成二维码,请稍候...' // 添加的文字内容,可根据需要修改 |
|
|
|
text: "正在生成二维码,请稍候...", // 添加的文字内容,可根据需要修改 |
|
|
|
}); |
|
|
|
|
|
|
|
//请求数据 |
|
|
|
let getDetailQrCodesData: any = {} |
|
|
|
let currentFieldsMapArrObj: any = {} |
|
|
|
getDetailQrCodes(idArray).then(({ data }) => { |
|
|
|
let getDetailQrCodesData: any = {}; |
|
|
|
let currentFieldsMapArrObj: any = {}; |
|
|
|
getDetailQrCodes(idArray) |
|
|
|
.then(({ data }) => { |
|
|
|
getDetailQrCodesData = JSON.parse(JSON.stringify(data)); |
|
|
|
if(props.formBasicConfig.qrCodePrintStyle&&props.formBasicConfig.qrCodePrintStyle=="2"){ |
|
|
|
if ( |
|
|
|
props.formBasicConfig.qrCodePrintStyle && |
|
|
|
props.formBasicConfig.qrCodePrintStyle == "2" |
|
|
|
) { |
|
|
|
let asfQueryParams1: any[] = []; |
|
|
|
for (let key in getDetailQrCodesData) { |
|
|
|
currentFieldsMapArrObj[key] = getDetailQrCodesData[key] |
|
|
|
currentFieldsMapArrObj[key] = getDetailQrCodesData[key]; |
|
|
|
if (getDetailQrCodesData.hasOwnProperty(key)) { |
|
|
|
let currentFieldsMap = getDetailQrCodesData[key].fieldsMap |
|
|
|
let currentFieldsMap = getDetailQrCodesData[key].fieldsMap; |
|
|
|
//console.log(currentFieldsMap) |
|
|
|
// 遍历对象的属性 |
|
|
|
for (let attr_name in currentFieldsMap) { |
|
|
|
if (currentFieldsMap.hasOwnProperty(attr_name)) { |
|
|
|
//console.log("attr_name------"+attr_name) |
|
|
|
//console.log(`属性名: ${attr_name}, 属性值: ${currentFieldsMap[attr_name]}`); |
|
|
|
radios.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
radios.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此单选,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
let optionsHasCurrentValue = false |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
let optionsHasCurrentValue = false; |
|
|
|
element.options.forEach((element1: any) => { |
|
|
|
if(toConvertValue==element1.value){ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+element1.label |
|
|
|
optionsHasCurrentValue = true |
|
|
|
if (toConvertValue == element1.value) { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
element1.label; |
|
|
|
optionsHasCurrentValue = true; |
|
|
|
} |
|
|
|
}); |
|
|
|
if(optionsHasCurrentValue==false){ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+"" |
|
|
|
if (optionsHasCurrentValue == false) { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
""; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
selects.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
selects.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此单选,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
let optionsHasCurrentValue = false |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
let optionsHasCurrentValue = false; |
|
|
|
element.options.forEach((element1: any) => { |
|
|
|
if(toConvertValue==element1.value){ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+element1.label |
|
|
|
optionsHasCurrentValue = true |
|
|
|
if (toConvertValue == element1.value) { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
element1.label; |
|
|
|
optionsHasCurrentValue = true; |
|
|
|
} |
|
|
|
}); |
|
|
|
if(optionsHasCurrentValue==false){ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+"" |
|
|
|
if (optionsHasCurrentValue == false) { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
""; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//console.log(dofs) |
|
|
|
dofs.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
dofs.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此单选,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
//console.log(toConvertValue) |
|
|
|
if(isAllCharactersNumbers(toConvertValue)){ |
|
|
|
let orgName = getLabelById(toConvertValue) |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+orgName |
|
|
|
if (isAllCharactersNumbers(toConvertValue)) { |
|
|
|
let orgName = getLabelById(toConvertValue); |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
orgName; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
switchs.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
switchs.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此单选,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
if(toConvertValue=="0"){ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+"禁用" |
|
|
|
}else{ |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+"启用" |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
if (toConvertValue == "0") { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
"禁用"; |
|
|
|
} else { |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
"启用"; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
checkboxs.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
checkboxs.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此单选,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
let toConvertArr = convertStringToArray(toConvertValue); |
|
|
|
let toAddStr = "" |
|
|
|
if(toConvertArr.length>0){ |
|
|
|
let toAddStr = ""; |
|
|
|
if (toConvertArr.length > 0) { |
|
|
|
toConvertArr.forEach((element1: any) => { |
|
|
|
element.options.forEach((element2: any) => { |
|
|
|
if(element1==element2.value){ |
|
|
|
toAddStr = toAddStr+element2.label+"," |
|
|
|
if (element1 == element2.value) { |
|
|
|
toAddStr = toAddStr + element2.label + ","; |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
toAddStr = toAddStr.slice(0, -1) |
|
|
|
currentFieldsMap[attr_name] = currentFieldsMap[attr_name].split("!@#@!")[0]+"!@#@!"+toAddStr |
|
|
|
toAddStr = toAddStr.slice(0, -1); |
|
|
|
currentFieldsMap[attr_name] = |
|
|
|
currentFieldsMap[attr_name].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
toAddStr; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
asfs.forEach(function(element) { |
|
|
|
if(attr_name==element.name){ |
|
|
|
asfs.forEach(function (element) { |
|
|
|
if (attr_name == element.name) { |
|
|
|
//表格属性中存在此关联表单,将其value根据options替换为可读值 |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split("!@#@!")[1] |
|
|
|
if(toConvertValue.length>0){ |
|
|
|
let toConvertValue = currentFieldsMap[attr_name].split( |
|
|
|
"!@#@!" |
|
|
|
)[1]; |
|
|
|
if (toConvertValue.length > 0) { |
|
|
|
//console.log(element) |
|
|
|
let fieldCount = 0;//如果>0则有此field名 |
|
|
|
let fieldCount = 0; //如果>0则有此field名 |
|
|
|
asfQueryParams1.forEach((item1: any) => { |
|
|
|
//如果参数数组中已存在同field的 关联表单asfQueryParamsItem1,则往已存在的如果参数数组中已存在同field的关联表单asfQueryParamsItem1.asfToSelectIds1中新增asfMasterAndAsfId1 |
|
|
|
// 不存在则push一个新的关联表单asfQueryParamsItem1 |
|
|
|
if(item1.field==element.name){ |
|
|
|
fieldCount++ |
|
|
|
if (item1.field == element.name) { |
|
|
|
fieldCount++; |
|
|
|
} |
|
|
|
}); |
|
|
|
if(fieldCount>0){ |
|
|
|
if (fieldCount > 0) { |
|
|
|
//已存在 |
|
|
|
//得到已存在的相关field参数对象 |
|
|
|
asfQueryParams1.forEach((item1: any) => { |
|
|
|
if(item1.field==element.name){ |
|
|
|
if (item1.field == element.name) { |
|
|
|
let asfMasterAndAsfId1: any = {}; |
|
|
|
asfMasterAndAsfId1.asfId = toConvertValue+""; |
|
|
|
asfMasterAndAsfId1.asfMasterId = key+""; |
|
|
|
item1.asfToSelectIds.push(asfMasterAndAsfId1) |
|
|
|
asfMasterAndAsfId1.asfId = toConvertValue + ""; |
|
|
|
asfMasterAndAsfId1.asfMasterId = key + ""; |
|
|
|
item1.asfToSelectIds.push(asfMasterAndAsfId1); |
|
|
|
} |
|
|
|
}); |
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
//不存在 |
|
|
|
let asfQueryParamsItem1: any = {}; |
|
|
|
asfQueryParamsItem1.formId = element.control.formid; |
|
|
|
@ -656,19 +724,21 @@ const setUpClick = (val: string, id: string) => { |
|
|
|
let asfToSelectIds1: any[] = []; |
|
|
|
asfQueryParamsItem1.asfToSelectIds = asfToSelectIds1; |
|
|
|
let asfMasterAndAsfId1: any = {}; |
|
|
|
asfMasterAndAsfId1.asfId = toConvertValue+""; |
|
|
|
asfMasterAndAsfId1.asfMasterId = key+""; |
|
|
|
asfToSelectIds1.push(asfMasterAndAsfId1) |
|
|
|
asfQueryParams1.push(asfQueryParamsItem1) |
|
|
|
asfMasterAndAsfId1.asfId = toConvertValue + ""; |
|
|
|
asfMasterAndAsfId1.asfMasterId = key + ""; |
|
|
|
asfToSelectIds1.push(asfMasterAndAsfId1); |
|
|
|
asfQueryParams1.push(asfQueryParamsItem1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
setTimeout(()=>{ |
|
|
|
getDetailQrCodesData[key].fieldsMap = modifyFieldsMap4(currentFieldsMap) |
|
|
|
},800) |
|
|
|
setTimeout(() => { |
|
|
|
getDetailQrCodesData[key].fieldsMap = modifyFieldsMap4( |
|
|
|
currentFieldsMap |
|
|
|
); |
|
|
|
}, 800); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -676,55 +746,53 @@ const setUpClick = (val: string, id: string) => { |
|
|
|
let getAsfDataTitlesByIdsData = JSON.parse(JSON.stringify(data)); |
|
|
|
for (let key in currentFieldsMapArrObj) { |
|
|
|
if (getDetailQrCodesData.hasOwnProperty(key)) { |
|
|
|
let currentFieldsMap = getDetailQrCodesData[key].fieldsMap |
|
|
|
let currentFieldsMap = getDetailQrCodesData[key].fieldsMap; |
|
|
|
getAsfDataTitlesByIdsData.forEach((element1: any) => { |
|
|
|
element1.list.forEach((element2: any) => { |
|
|
|
if(key==element2.asfMasterId){ |
|
|
|
currentFieldsMap[element1.field] = currentFieldsMap[element1.field].split("!@#@!")[0]+"!@#@!"+element2.label |
|
|
|
if (key == element2.asfMasterId) { |
|
|
|
currentFieldsMap[element1.field] = |
|
|
|
currentFieldsMap[element1.field].split("!@#@!")[0] + |
|
|
|
"!@#@!" + |
|
|
|
element2.label; |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setTimeout(()=>{ |
|
|
|
tablesData.value = getDetailQrCodesData |
|
|
|
},810) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setTimeout(()=>{ |
|
|
|
loadingInstance1.close() |
|
|
|
qrCodesPrintDialogFlag.value = true |
|
|
|
},820) |
|
|
|
}); |
|
|
|
|
|
|
|
}else if(props.formBasicConfig.qrCodePrintStyle&&props.formBasicConfig.qrCodePrintStyle=="1"){ |
|
|
|
setTimeout(() => { |
|
|
|
tablesData.value = getDetailQrCodesData; |
|
|
|
}, 810); |
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
|
loadingInstance1.close(); |
|
|
|
qrCodesPrintDialogFlag.value = true; |
|
|
|
}, 820); |
|
|
|
} else if ( |
|
|
|
props.formBasicConfig.qrCodePrintStyle && |
|
|
|
props.formBasicConfig.qrCodePrintStyle == "1" |
|
|
|
) { |
|
|
|
//fieldsMap = null |
|
|
|
tablesData.value = getDetailQrCodesData |
|
|
|
qrCodesPrintDialogFlag.value = true |
|
|
|
loadingInstance1.close() |
|
|
|
tablesData.value = getDetailQrCodesData; |
|
|
|
qrCodesPrintDialogFlag.value = true; |
|
|
|
loadingInstance1.close(); |
|
|
|
} |
|
|
|
|
|
|
|
}).finally(()=>{ |
|
|
|
loadingInstance1.close() |
|
|
|
}) |
|
|
|
|
|
|
|
}else{ |
|
|
|
alert("内部二维码功能未启用") |
|
|
|
.finally(() => { |
|
|
|
loadingInstance1.close(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
alert("内部二维码功能未启用"); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
alert("请先为本表单开启二维码功能") |
|
|
|
} else { |
|
|
|
alert("请先为本表单开启二维码功能"); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
alert("未选中任何一条,请先选择") |
|
|
|
|
|
|
|
} else { |
|
|
|
alert("未选中任何一条,请先选择"); |
|
|
|
} |
|
|
|
//liwenxuan 20250114 二维码打印弹窗 end |
|
|
|
|
|
|
|
}else { |
|
|
|
} else { |
|
|
|
if (idList.value.length > 0) { |
|
|
|
ElMessageBox.confirm("确认删除此数据项?删除后不可恢复!", "警告", { |
|
|
|
confirmButtonText: "确定", |
|
|
|
@ -953,7 +1021,7 @@ const getPageData = () => { |
|
|
|
switchs = []; |
|
|
|
selects = []; |
|
|
|
tables = []; |
|
|
|
getAsfs() |
|
|
|
getAsfs(); |
|
|
|
}); |
|
|
|
} |
|
|
|
}; |
|
|
|
@ -1010,7 +1078,7 @@ const asfGetPageData = (asfFormId: any, asfToSelectMastersKey: any) => { |
|
|
|
for (let i = 0; i < data.data.list.length; i++) { |
|
|
|
let asfMasterAndAsfId: any = {}; |
|
|
|
//asfMasterAndAsfId.asfId = data.data.list[i][asfDetails[j].field]; |
|
|
|
asfMasterAndAsfId.asfId = data.data.list[i].id |
|
|
|
asfMasterAndAsfId.asfId = data.data.list[i].id; |
|
|
|
asfMasterAndAsfId.asfMasterId = data.data.list[i].id; |
|
|
|
|
|
|
|
asfToSelectIds.push(asfMasterAndAsfId); |
|
|
|
@ -1058,15 +1126,14 @@ const asfGetPageData = (asfFormId: any, asfToSelectMastersKey: any) => { |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
/* state.loading = false; */ |
|
|
|
setTimeout(()=>{ |
|
|
|
setTimeout(() => { |
|
|
|
//nextTick(() => { |
|
|
|
//显示关联表单本条详情 |
|
|
|
tablePageClass.value = 4; |
|
|
|
drawerWith.value = container.value?.clientWidth; |
|
|
|
asflookPageInfoIsShow.value = true; |
|
|
|
//}); |
|
|
|
},500) |
|
|
|
|
|
|
|
}, 500); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
@ -1075,7 +1142,7 @@ onMounted(() => { |
|
|
|
nextTick(() => { |
|
|
|
drawerWith.value = container.value?.clientWidth; |
|
|
|
}); |
|
|
|
getAsfs() |
|
|
|
getAsfs(); |
|
|
|
}); |
|
|
|
//liwenxuan 关联表单数据获取 start |
|
|
|
function getAsfDataTitlesByIds(asfQueryParams: any[]) { |
|
|
|
@ -1505,13 +1572,13 @@ const diGuiJilian = (val: any, options: any[]) => { |
|
|
|
:placeholder="'请选择' + item.label" |
|
|
|
value-format="x" |
|
|
|
/> |
|
|
|
<el-select |
|
|
|
<DeptOrgSearch |
|
|
|
v-model="item.value" |
|
|
|
clearable |
|
|
|
:placeholder="'请选择' + item.label" |
|
|
|
v-if="unitIsShow(item, 'org')" |
|
|
|
> |
|
|
|
</el-select> |
|
|
|
</DeptOrgSearch> |
|
|
|
<DeptOrgSearch |
|
|
|
v-if="unitIsShow(item, 'deptOrg')" |
|
|
|
v-model:model-value="item.value" |
|
|
|
@ -2024,7 +2091,7 @@ const diGuiJilian = (val: any, options: any[]) => { |
|
|
|
:versionid="props.versionid" |
|
|
|
:versiontitle="props.versiontitle" |
|
|
|
:drawerwith="drawerWith" |
|
|
|
:cfid = "props.formId" |
|
|
|
:cfid="props.formId" |
|
|
|
@searchquery="getListData" |
|
|
|
/> |
|
|
|
<!-- 2025 liwenxuan 二维码打印 --> |
|
|
|
@ -2038,18 +2105,30 @@ const diGuiJilian = (val: any, options: any[]) => { |
|
|
|
style="margin-top: 10px" |
|
|
|
width="40%" |
|
|
|
> |
|
|
|
<div v-if="formBasicConfig.qrCodePrintStyle == '2'" style="max-width: 600px;min-height: 50px; max-height: 750px; overflow-y: auto"> |
|
|
|
<div |
|
|
|
v-if="formBasicConfig.qrCodePrintStyle == '2'" |
|
|
|
style="max-width: 600px; min-height: 50px; max-height: 750px; overflow-y: auto" |
|
|
|
> |
|
|
|
<div |
|
|
|
v-for="(tableData, tableKey) in tablesData" |
|
|
|
:id="tableKey" |
|
|
|
:key="tableKey" |
|
|
|
:ref="(el: any) => { if (el) tableRefs[tableKey] = el }" |
|
|
|
style="margin-bottom: 30px; width: 95%;" |
|
|
|
style="margin-bottom: 30px; width: 95%" |
|
|
|
> |
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<th colspan="2">{{ tablesData[tableKey].appName }}-{{ tablesData[tableKey].formName }}</th> |
|
|
|
<td rowspan="6" style="width: 240px;"><img :src="tableData.bufferedImage" alt="二维码" width="200px" style="margin-top: 5px;" ></td> |
|
|
|
<th colspan="2"> |
|
|
|
{{ tablesData[tableKey].appName }}-{{ tablesData[tableKey].formName }} |
|
|
|
</th> |
|
|
|
<td rowspan="6" style="width: 240px"> |
|
|
|
<img |
|
|
|
:src="tableData.bufferedImage" |
|
|
|
alt="二维码" |
|
|
|
width="200px" |
|
|
|
style="margin-top: 5px" |
|
|
|
/> |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
<tr v-for="(item, fIndex) in tableData.fieldsMap" :key="fIndex"> |
|
|
|
<th>{{ item.key }}</th> |
|
|
|
@ -2058,20 +2137,41 @@ const diGuiJilian = (val: any, options: any[]) => { |
|
|
|
</table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-if="formBasicConfig.qrCodePrintStyle == '1'" style="display: flex; flex-direction: column; align-items: center; min-height: 50px; max-height: 750px; overflow-y: auto"> |
|
|
|
<div |
|
|
|
v-if="formBasicConfig.qrCodePrintStyle == '1'" |
|
|
|
style=" |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
align-items: center; |
|
|
|
min-height: 50px; |
|
|
|
max-height: 750px; |
|
|
|
overflow-y: auto; |
|
|
|
" |
|
|
|
> |
|
|
|
<div |
|
|
|
v-for="(tableData, tableKey) in tablesData" |
|
|
|
:id="tableKey" |
|
|
|
:key="tableKey" |
|
|
|
:ref="(el: any) => { if (el) tableRefs[tableKey] = el }" |
|
|
|
style="margin-bottom: 30px; width: 400px;" |
|
|
|
style="margin-bottom: 30px; width: 400px" |
|
|
|
> |
|
|
|
<table > |
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<th style="font-weight: bold; font-size:medium;" colspan="1">{{ tablesData[tableKey].appName }}-{{ tablesData[tableKey].formName }}-{{ tablesData[tableKey].dataTitle }}</th> |
|
|
|
<th style="font-weight: bold; font-size: medium" colspan="1"> |
|
|
|
{{ tablesData[tableKey].appName }}-{{ tablesData[tableKey].formName }}-{{ |
|
|
|
tablesData[tableKey].dataTitle |
|
|
|
}} |
|
|
|
</th> |
|
|
|
</tr> |
|
|
|
<tr> |
|
|
|
<th ><img :src="tableData.bufferedImage" alt="二维码" width="auto" height="100%"></th> |
|
|
|
<th> |
|
|
|
<img |
|
|
|
:src="tableData.bufferedImage" |
|
|
|
alt="二维码" |
|
|
|
width="auto" |
|
|
|
height="100%" |
|
|
|
/> |
|
|
|
</th> |
|
|
|
</tr> |
|
|
|
</table> |
|
|
|
</div> |
|
|
|
@ -2079,8 +2179,19 @@ const diGuiJilian = (val: any, options: any[]) => { |
|
|
|
|
|
|
|
<template #footer> |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button :disabled="isButton1Disabled" type="primary" plain @click="downloadTables">下载</el-button> |
|
|
|
<el-button :disabled="isButton2Disabled" type="primary" plain @click="closeQrDownload"> |
|
|
|
<el-button |
|
|
|
:disabled="isButton1Disabled" |
|
|
|
type="primary" |
|
|
|
plain |
|
|
|
@click="downloadTables" |
|
|
|
>下载</el-button |
|
|
|
> |
|
|
|
<el-button |
|
|
|
:disabled="isButton2Disabled" |
|
|
|
type="primary" |
|
|
|
plain |
|
|
|
@click="closeQrDownload" |
|
|
|
> |
|
|
|
确定 |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
@ -2173,13 +2284,12 @@ table { |
|
|
|
width: 100%; |
|
|
|
font-size: 13px; |
|
|
|
text-align: center; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
td, th { |
|
|
|
td, |
|
|
|
th { |
|
|
|
border: 1px solid black; |
|
|
|
padding: 8px; |
|
|
|
vertical-align: middle; /* 设置文字上下居中 */ |
|
|
|
} |
|
|
|
|
|
|
|
</style> |