{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\FieldPanel.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\FieldPanel.vue","mtime":1675071991960},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport Draggable from \"vuedraggable\";\r\nimport deepmerge from \"deepmerge\";\r\nimport {\r\n basicComponents,\r\n layoutComponents,\r\n advanceComponents,\r\n} from \"@/api/controlsConfig.js\";\r\nimport req from \"@/request.js\";\r\nconst EipCopyFormDialog = () =>\r\n import(\"@/components/dialog/EipCopyFormDialog.vue\");\r\n\r\nexport default {\r\n name: \"field-panel\",\r\n components: { Draggable, EipCopyFormDialog },\r\n props: [\"boDefIds\", \"widgetForm\", \"formType\", \"formId\",\"copyFormList\"],\r\n data() {\r\n return {\r\n showFiledList:[],\r\n basicComponents,\r\n layoutComponents,\r\n advanceComponents,\r\n activeName: \"controlLayout\",\r\n boTreeData: [],\r\n activeBoTreeMenu: \"0\",\r\n activeCopyFormNames: [\"form0\"],\r\n selectedMap: {},\r\n boDefIdMap: {},\r\n copyFiledMap: {},\r\n copyFormBoTreeData: [],\r\n };\r\n },\r\n created() {\r\n if (this.copyFormList && this.copyFormList.length>0) {\r\n this.initGenerateBoTreeData(this.boDefIds, true);\r\n }\r\n },\r\n watch: {\r\n boDefIds: {\r\n handler: function (newVal) {\r\n this.copyFiledMap = {};\r\n this.initGenerateBoTreeData(newVal);\r\n },\r\n },\r\n widgetForm: {\r\n handler: function (val, oldVal) {\r\n if (val && val.list && val.list.length > 0) {\r\n this.initSelectedMap(val.list);\r\n } else {\r\n this.selectedMap = {};\r\n }\r\n },\r\n deep: true,\r\n },\r\n },\r\n methods: {\r\n handleMoveEnd: function (evt) {},\r\n handleMoveStart: function (evt) {\r\n // 新增控件时 将控件属性切断联系\r\n evt.item._underlying_vm_ = deepmerge({}, evt.item._underlying_vm_, {\r\n clone: true,\r\n });\r\n const key =\r\n Date.parse(new Date()) + \"_\" + Math.ceil(Math.random() * 99999);\r\n evt.item._underlying_vm_.key = key;\r\n },\r\n handleFiledMoveStart: function (evt) {\r\n // 新增控件时 将控件属性切断联系\r\n const fieldControl = this.getFieldControl(evt.item._underlying_vm_);\r\n if (this.selectedMap[fieldControl.tableName + \"_\" + fieldControl.name]) {\r\n this.$message({\r\n message:\r\n \"字段【\" + fieldControl.desc + \"】已绑定控件,不能多次绑定。\",\r\n type: \"warning\",\r\n });\r\n delete evt.item._underlying_vm_;\r\n return;\r\n }\r\n //添加拖拽方式属性\r\n fieldControl.dragType = \"field\";\r\n evt.item._underlying_vm_ = deepmerge({}, fieldControl, {\r\n clone: true,\r\n });\r\n const key =\r\n Date.parse(new Date()) + \"_\" + Math.ceil(Math.random() * 99999);\r\n evt.item._underlying_vm_.key = key;\r\n },\r\n handleCopyFiledMoveStart: function (formKey, evt) {\r\n // 新增控件时 将控件属性切断联系\r\n const fieldControl = this.getCopyFieldControl(\r\n formKey,\r\n evt.item._underlying_vm_\r\n );\r\n if (!fieldControl || typeof fieldControl == \"undefined\") {\r\n this.$message({ message: \"未找到该复用字段的控件。\", type: \"warning\" });\r\n fieldControl = this.getFieldControl(evt.item._underlying_vm_);\r\n }\r\n if (this.selectedMap[fieldControl.tableName + \"_\" + fieldControl.name]) {\r\n this.$message({\r\n message:\r\n \"字段【\" + fieldControl.desc + \"】已绑定控件,不能多次绑定。\",\r\n type: \"warning\",\r\n });\r\n delete evt.item._underlying_vm_;\r\n return;\r\n }\r\n //添加拖拽方式属性\r\n fieldControl.dragType = \"copy\";\r\n evt.item._underlying_vm_ = deepmerge({}, fieldControl, {\r\n clone: true,\r\n });\r\n const key =\r\n Date.parse(new Date()) + \"_\" + Math.ceil(Math.random() * 99999);\r\n evt.item._underlying_vm_.key = key;\r\n //检测有没有绑定指定属性或事件,如果有提示注意检查是否涉及到其他BO导致绑定属性或事件失效\r\n setTimeout(() => this.validateFieldProperty(fieldControl), 1500);\r\n },\r\n handleMove: function (evt) {},\r\n handleClick(tab, event) {\r\n if (\r\n tab.name == \"attributeField\" &&\r\n this.boDefIds &&\r\n (!this.boTreeData || this.boTreeData.length == 0)\r\n ) {\r\n this.initGenerateBoTreeData(this.boDefIds);\r\n }\r\n },\r\n validateFieldProperty(filed) {\r\n if (filed && filed.options) {\r\n let propertyList = [];\r\n //判断计算公式\r\n if (filed.options.formulasDiyJs) {\r\n propertyList.push(\"【计算公式】\");\r\n }\r\n //判断联动设置\r\n if (filed.options.linkage) {\r\n propertyList.push(\"【联动设置】\");\r\n }\r\n //判断统计函数\r\n if (filed.options.mathExp) {\r\n propertyList.push(\"【字段校验】\");\r\n }\r\n //判断文本内容的变量\r\n if (filed.options.textValue) {\r\n propertyList.push(\"【文本内容变量】\");\r\n }\r\n //判断字段校验\r\n if (\r\n filed.options.validateList &&\r\n filed.options.validateList.length > 0\r\n ) {\r\n propertyList.push(\"【字段校验】\");\r\n }\r\n if (propertyList.length > 0) {\r\n let msg =\r\n \"复用字段“\" +\r\n filed.desc +\r\n \"”中设置了\" +\r\n propertyList.join(\",\") +\r\n \",请检查是否存在绑定非当前BO字段,如果存在需自行修改,否则可能会影响相关功能效果。\";\r\n this.$message({ message: msg, type: \"warning\", duration: 5500 });\r\n }\r\n }\r\n },\r\n getTitleStyle(entName, fieldName) {\r\n if (this.selectedMap[entName + \"_\" + fieldName]) {\r\n return \"color:#bdbfc2;\";\r\n }\r\n return \"color:#212121;\";\r\n },\r\n initGenerateBoTreeData(boDefIds, initCopyForm) {\r\n if (boDefIds) {\r\n let _this = this;\r\n const ids = boDefIds.split(\",\");\r\n ids.forEach((defId) => {\r\n _this.boDefIdMap[defId] = true;\r\n });\r\n req\r\n .get(\"${form}/form/form/v1/generateBoTreeData?boDefIds=\" + boDefIds)\r\n .then((data) => {\r\n let response = data.data;\r\n if (response.state) {\r\n _this.boTreeData = JSON.parse(response.value);\r\n }\r\n if(initCopyForm){\r\n _this.formDialogConfirm(_this.copyFormList, true);\r\n _this.initSelectedMap(_this.widgetForm.list);\r\n }\r\n \r\n });\r\n } else {\r\n this.boTreeData = [];\r\n this.boDefIdMap = {};\r\n }\r\n },\r\n getFieldControl(field) {\r\n let baseObj = {\r\n name: field.name,\r\n target: field.name,\r\n desc: field.comment,\r\n title: field.comment,\r\n boAttrId: field.boAttrId,\r\n fieldPath: field.fieldPath,\r\n entId: field.entId,\r\n boDefAlias: field.boDefAlias,\r\n tableName: field.tableName,\r\n columnType: field.dataType,\r\n };\r\n if (field.fieldPath.split(\".\").length > 2) {\r\n baseObj.parentNodeType = \"sun\";\r\n baseObj.boSubEntity = field.tableName;\r\n }\r\n const key =\r\n Date.parse(new Date()) + \"_\" + Math.ceil(Math.random() * 99999);\r\n if (field.dataType == \"number\") {\r\n let option = {\r\n icon: \"icon-single\",\r\n ctrlType: \"number\",\r\n key: key,\r\n columnType: \"number\",\r\n options: {\r\n defaultValue: 0,\r\n min: 0,\r\n max: 99999,\r\n step: 1,\r\n decimalDigits: field.decimalLen,\r\n maxDecimalDigits: field.decimalLen,\r\n filtercurrency: \"\",\r\n filterthousandBit: \"\",\r\n advancedProperty: \"inputType|bindPreAndSufFix\",\r\n basicsProperty: \"number|currency|placeholder|dateCount\",\r\n controlsPosition: \"\",\r\n company: \"\",\r\n validateType:\r\n \"min_value|max_value|confirmed|numeric|between|digits|required|row_unique|frontJSValidate|mobile\",\r\n dataType: \"number\",\r\n validateList: [],\r\n disabled: false,\r\n formulasDiyJs: \"\",\r\n lableColor: \"#969799\",\r\n mathExp: \"\",\r\n bindPreAndSufFixjson: {\r\n preFix: \"\",\r\n sufSix: \"\",\r\n },\r\n },\r\n };\r\n return { ...baseObj, ...option };\r\n } else if (field.dataType == \"date\") {\r\n let option = {\r\n icon: \"icon-date\",\r\n ctrlType: \"date\",\r\n key: key,\r\n columnType: \"date\",\r\n options: {\r\n defaultValue: \"\",\r\n dataType: \"date\",\r\n validateType:\r\n \"isAfter|isBefore|isStart|isEnd|required|row_unique|frontJSValidate\",\r\n advancedProperty: \"isEditor|isInputEdit\",\r\n placeholder: \"\",\r\n basicsProperty: \"date|placeholder\",\r\n validate: \"\",\r\n readonly: false,\r\n editable: true,\r\n clearable: true,\r\n timestamp: false,\r\n required: false,\r\n type: \"date\",\r\n validateList: [],\r\n disabled: false,\r\n formulasDiyJs: \"\",\r\n lableColor: \"#969799\",\r\n mathExp: \"\",\r\n bindPreAndSufFixjson: {\r\n preFix: \"\",\r\n sufSix: \"\",\r\n },\r\n format: field.format,\r\n inputFormat: field.format,\r\n },\r\n };\r\n return { ...baseObj, ...option };\r\n } else if (field.dataType == \"clob\") {\r\n let option = {\r\n icon: \"icon-single\",\r\n ctrlType: \"textarea\",\r\n key: key,\r\n columnType: \"clob\",\r\n options: {\r\n width: \"100%\",\r\n isWidth: true,\r\n defaultValue: \"\",\r\n dataType: \"clob\",\r\n validateType:\r\n \"regex|min|max|required|row_unique|frontJSValidate|backendValidate\",\r\n advancedProperty: \"isEditor|isInputEdit\",\r\n placeholder: \"\",\r\n basicsProperty: \"placeholder\",\r\n validateList: [],\r\n disabled: false,\r\n formulasDiyJs: \"\",\r\n lableColor: \"#969799\",\r\n },\r\n };\r\n return { ...baseObj, ...option };\r\n } else {\r\n let option = {\r\n icon: \"icon-single\",\r\n ctrlType: \"input\",\r\n key: key,\r\n options: {\r\n width: \"100%\",\r\n isWidth: true,\r\n defaultValue: \"\",\r\n isCountDate: false,\r\n mathExp: \"\",\r\n isStartDate: \"\",\r\n isEndDate: \"\",\r\n countFormat: \"day\",\r\n dataType: \"string|number\",\r\n validateList: [],\r\n validate: \"\",\r\n validateType:\r\n \"confirmed|email|regex|min|max|min_value|max_value|isAfter|isBefore|isStart|isEnd|numeric|between|is|digits|mobile|required|row_unique|alpha_spaces|alpha_dash|alpha_num|alpha|frontJSValidate|backendValidate\",\r\n advancedProperty:\r\n \"isInputEdit|isBindIdentity|inputType|bindPreAndSufFix\",\r\n placeholder: \"\",\r\n disabled: false,\r\n basicsProperty: \"input|dateCount|placeholder\",\r\n bindIdentityjson: {},\r\n isBindPreAndSufFix: false,\r\n bindPreAndSufFixjson: {\r\n preFix: \"\",\r\n sufSix: \"\",\r\n },\r\n formulasDiyJs: \"\",\r\n lableColor: \"#969799\",\r\n showCondition: { target: '',fieldPath:'',value:''}\r\n },\r\n };\r\n return { ...baseObj, ...option };\r\n }\r\n return null;\r\n },\r\n getCopyFieldControl(formKey, field) {\r\n if (\r\n this.copyFiledMap[formKey] &&\r\n this.copyFiledMap[formKey][\r\n formKey + \"_\" + field.tableName + \"_\" + field.name\r\n ]\r\n ) {\r\n return this.copyFiledMap[formKey][\r\n formKey + \"_\" + field.tableName + \"_\" + field.name\r\n ];\r\n } else {\r\n return null;\r\n }\r\n },\r\n initSelectedMap(rootList, formKey) {\r\n const this_ = this;\r\n let newMap = {};\r\n let getFieldMap = function (newMap, obj, type) {\r\n switch (type) {\r\n case \"grid\":\r\n if (obj.columns && obj.columns.length > 0) {\r\n obj.columns.forEach((citem) => {\r\n if (citem.list && citem.list.length > 0) {\r\n citem.list.forEach((gitem) => {\r\n if (gitem.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey + \"_\" + gitem.tableName + \"_\" + gitem.name\r\n ] = { ...gitem };\r\n } else {\r\n newMap[gitem.tableName + \"_\" + gitem.name] = true;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n case \"table\":\r\n if (obj.rows && obj.rows.length > 0) {\r\n obj.rows.forEach((ritem) => {\r\n if (ritem.cols && ritem.cols.length > 0) {\r\n ritem.cols.forEach((citem) => {\r\n citem.list.forEach((item) => {\r\n if (item.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey + \"_\" + item.tableName + \"_\" + item.name\r\n ] = { ...item };\r\n } else {\r\n newMap[item.tableName + \"_\" + item.name] = true;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n let getLayoutMap = function (list, newMap) {\r\n list.forEach((listItem) => {\r\n if (listItem.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey + \"_\" + listItem.tableName + \"_\" + listItem.name\r\n ] = { ...listItem };\r\n } else {\r\n newMap[listItem.tableName + \"_\" + listItem.name] = true;\r\n }\r\n } else if (listItem.ctrlType) {\r\n switch (listItem.ctrlType) {\r\n case \"tab\":\r\n case \"accordion\":\r\n if (listItem.columns && listItem.columns.length > 0) {\r\n listItem.columns.forEach((aitem) => {\r\n if (aitem.list && aitem.list.length > 0) {\r\n getLayoutMap(aitem.list, newMap);\r\n }\r\n });\r\n }\r\n break;\r\n case \"grid\":\r\n getFieldMap(newMap, listItem, \"grid\");\r\n break;\r\n case \"table\":\r\n getFieldMap(newMap, listItem, \"table\");\r\n break;\r\n case \"subtable\":\r\n if (listItem.list && listItem.list.length > 0) {\r\n listItem.list.forEach((item) => {\r\n if (item.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey + \"_\" + item.tableName + \"_\" + item.name\r\n ] = { ...item };\r\n } else {\r\n newMap[item.tableName + \"_\" + item.name] = true;\r\n }\r\n } else if (\r\n item.ctrlType == \"sunDiv\" ||\r\n item.ctrlType == \"suntable\"\r\n ) {\r\n if (item.list && item.list.length > 0) {\r\n item.list.forEach((sunitem) => {\r\n if (sunitem.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey +\r\n \"_\" +\r\n sunitem.tableName +\r\n \"_\" +\r\n sunitem.name\r\n ] = { ...sunitem };\r\n } else {\r\n newMap[\r\n sunitem.tableName + \"_\" + sunitem.name\r\n ] = true;\r\n }\r\n } else if (sunitem.ctrlType == \"grid\") {\r\n getFieldMap(newMap, sunitem, \"grid\");\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case \"subDiv\":\r\n if (listItem.list && listItem.list.length > 0) {\r\n listItem.list.forEach((item) => {\r\n if (item.fieldPath) {\r\n newMap[item.tableName + \"_\" + item.name] = true;\r\n } else if (item.ctrlType == \"grid\") {\r\n getFieldMap(newMap, item, \"grid\");\r\n } else if (\r\n item.ctrlType == \"sunDiv\" ||\r\n item.ctrlType == \"suntable\"\r\n ) {\r\n if (item.list && item.list.length > 0) {\r\n item.list.forEach((sunitem) => {\r\n if (sunitem.fieldPath) {\r\n if (formKey) {\r\n newMap[\r\n formKey +\r\n \"_\" +\r\n sunitem.tableName +\r\n \"_\" +\r\n sunitem.name\r\n ] = { ...sunitem };\r\n } else {\r\n newMap[\r\n sunitem.tableName + \"_\" + sunitem.name\r\n ] = true;\r\n }\r\n } else if (sunitem.ctrlType == \"grid\") {\r\n getFieldMap(newMap, sunitem, \"grid\");\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n }\r\n });\r\n if(newMap){\r\n //获取可以复用的字段集合\r\n for(let key in newMap){\r\n this_.showFiledList.push(newMap[key]);\r\n }\r\n }\r\n };\r\n getLayoutMap(rootList, newMap);\r\n if (formKey) {\r\n this.copyFiledMap[formKey] = newMap;\r\n } else {\r\n this.selectedMap = newMap;\r\n }\r\n },\r\n addCopyForms() {\r\n this.$refs.eipCopyFormDialog.showDialog();\r\n },\r\n addCopyForm(form) {\r\n let formObj = { key: form.formKey, name: form.name, boTreeData: [] };\r\n let _this = this;\r\n let copyBoTree = function (defId) {\r\n let copyTreeData = {};\r\n _this.boTreeData.forEach((treeData) => {\r\n if (treeData.id == defId) {\r\n copyTreeData = { ...treeData };\r\n }\r\n });\r\n return copyTreeData;\r\n };\r\n form.boDefList.forEach((defId) => {\r\n if (_this.boDefIdMap[defId]) {\r\n let copyTree = copyBoTree(defId);\r\n if (JSON.stringify(copyTree) != \"{}\") {\r\n formObj.boTreeData.push(copyTree);\r\n }\r\n }\r\n });\r\n if (formObj.boTreeData.length > 0) {\r\n const expand = JSON.parse(form.expand);\r\n this.initSelectedMap(expand.list, form.formKey);\r\n this.copyFormBoTreeData.push(formObj);\r\n } else {\r\n this.$message({\r\n message: \"表单【\" + form.name + \"】不能被复用。\",\r\n type: \"warning\",\r\n });\r\n }\r\n },\r\n formDialogConfirm(data, init) {\r\n if (data && data.length > 0) {\r\n let _this = this;\r\n data.forEach((form) => {\r\n if (form.expand && form.boDefList && form.boDefList.length > 0) {\r\n _this.addCopyForm(form);\r\n if(!init){\r\n _this.$emit('addTocopyFormList', form);\r\n }\r\n }\r\n });\r\n }\r\n },\r\n //判断哪些字段可以复用\r\n isShow(attr){\r\n if(this.showFiledList.length>0){\r\n let isShow = this.showFiledList.find(obj=>\r\n obj.fieldPath==attr.fieldPath\r\n )\r\n if(isShow){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n return false;\r\n }\r\n }\r\n },\r\n};\r\n",null]}