{"remainingRequest":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\cssc-fvue\\src\\components\\flow\\OnlineForm.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\cssc-fvue\\src\\components\\flow\\OnlineForm.vue","mtime":1667804639149},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\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\r\nimport EipInput from '@/components/eipControl/EipInput.vue'\r\nimport EipCheckbox from '@/components/eipControl/EipCheckbox.vue'\r\nimport EipSelect from '@/components/eipControl/EipSelect.vue'\r\nimport EipRadio from '@/components/eipControl/EipRadio.vue'\r\nimport EipUserSelector from '@/components/eipControl/selector/EipUserSelector.vue'\r\nimport EipDemensionSelector from '@/components/eipControl/selector/EipDemensionSelector.vue'\r\nimport EipJobSelector from '@/components/eipControl/selector/EipJobSelector.vue'\r\nimport EipOrgSelector from '@/components/eipControl/selector/EipOrgSelector.vue'\r\nimport EipPostSelector from '@/components/eipControl/selector/EipPostSelector.vue'\r\nimport EipRoleSelector from '@/components/eipControl/selector/EipRoleSelector.vue'\r\nimport EipTextarea from '@/components/eipControl/EipTextarea.vue'\r\nimport EipFont from '@/components/eipControl/EipFont.vue'\r\nimport EipDialog from '@/components/eipControl/EipDialog.vue'\r\nimport EipAutocomplete from '@/components/eipControl/EipAutocomplete.vue'\r\nimport EipCascader from '@/components/eipControl/EipCascader.vue'\r\nimport EipTreeselect from '@/components/eipControl/EipTreeselect.vue'\r\nimport EipButton from '@/components/eipControl/EipButton.vue'\r\nimport EipDate from '@/components/eipControl/EipDate.vue'\r\nimport EipImg from '@/components/eipControl/EipImg.vue'\r\nimport EipViewer from '@/components/eipControl/EipViewer.vue'\r\nimport EipSwitch from '@/components/eipControl/EipSwitch.vue'\r\nconst EipMap = () => import(\"@/components/eipControl/EipMap.vue\");\r\nconst EipFontUeditor = () => import(\"@/components/eipControl/EipFontUeditor.vue\");\r\nimport HtFile from '@/components/control/HtFile.vue'\r\nimport VRuntimeTemplate from 'v-runtime-template'\r\nimport HtGangedSelect from '@/components/control/HtGangedSelect.vue'\r\nimport EipRelFlow from '@/components/eipControl/EipRelFlow.vue'\r\nimport EipSubDialog from '@/components/eipControl/EipSubDialog.vue'\r\nimport EipSunDialog from '@/components/eipControl/EipSunDialog.vue'\r\nimport HtLabel from '@/components/control/HtLabel.vue'\r\nimport HtDigital from '@/components/control/HtDigital.vue'\r\nimport HtCurrency from '@/components/control/HtCurrency.vue'\r\nimport EipRealtimeInput from '@/components/eipControl/EipRealtimeInput.vue'\r\nimport EipRealtimeTextarea from '@/components/eipControl/EipRealtimeTextarea.vue'\r\nimport EipStep from '@/components/eipControl/EipStep.vue'\r\nimport HtInputAutocomplete from '@/components/control/HtInputAutocomplete.vue'\r\nimport HtTreeselect from '@/components/control/HtTreeselect.vue'\r\nimport HtCascader from '@/components/control/HtCascader.vue'\r\nimport HtTree from '@/components/control/HtTree.vue'\r\n\r\nimport EipTabs from '@/components/eipControl/EipTabs.vue'\r\nimport EipSubPagination from '@/components/eipControl/EipSubPagination.vue'\r\nimport EipSubImportDialog from '@/components/eipControl/EipSubImportDialog.vue'\r\nimport EipSubExportDialog from '@/components/eipControl/EipSubExportDialog.vue'\r\nimport EipAttachment from '@/components/eipControl/EipAttachment.vue'\r\nimport EipDic from '@/components/eipControl/EipDic.vue'\r\nimport EipPaginationLayout from '@/components/eipControl/EipPaginationLayout.vue'\r\nimport EipPagination from '@/components/eipControl/EipPagination.vue'\r\nimport EipCollapse from '@/components/eipControl/EipCollapse.vue'\r\nimport EipPaginationSteps from '@/components/eipControl/EipPaginationSteps.vue'\r\nimport EipDataView from '@/components/eipControl/EipDataView.vue'\r\nimport EipHotTable from '@/components/eipControl/EipHotTable.vue'\r\nimport EipHotSubDialog from '@/components/eipControl/EipHotSubDialog.vue'\r\nimport ContractPreview from '@/components/common/ContractPreview.vue'\r\nimport EipTag from '@/components/eipControl/EipTag.vue'\r\nimport EipSubtableBackfill from '@/components/eipControl/EipSubtableBackfill.vue'\r\nimport EipDivider from '@/components/eipControl/EipDivider.vue'\r\nimport EipOffice from '@/components/eipControl/EipOffice.vue'\r\nimport EipQrcode from '@/components/eipControl/EipQrcode.vue'\r\nimport EipSignature from '@/components/eipControl/EipSignature.vue'\r\nimport SubPagination from '@/components/eipControl/bus/SubPagination.js'\r\n\r\nimport Vue from 'vue'\r\nexport default {\r\n name: 'online-form',\r\n props: ['html', 'data', 'permission', 'isView', 'isPrint', 'initFillData', 'flowKey', 'formId', 'isLook', 'flowKey'],\r\n data() {\r\n return {\r\n loadedFail: false, //表单加载html是否失败\r\n subBackfill: new Map(),\r\n hotTableFillback: String\r\n }\r\n },\r\n created() {\r\n this.init()\r\n },\r\n watch: {\r\n data:{\r\n handler: function(newVal, oldValue) {\r\n this.$root.$emit(\"updateData\",newVal);\r\n },\r\n deep: true,\r\n immediate: true\r\n },\r\n html: function(newVal) {\r\n if (newVal) {\r\n this.init()\r\n }\r\n },\r\n hotTableFillback: function(newVal) {\r\n if (newVal) {\r\n let newValArray = newVal.split('_timestamp_')\r\n let boPathArray = newValArray[0].split('.')\r\n let hotTableRef = 'hottable.' + boPathArray[0] + '.' + boPathArray[1]\r\n let subBo = this.data[boPathArray[0]][boPathArray[1]]\r\n this.$refs.onlineForm.$refs[hotTableRef].fillbackHotTableData(subBo)\r\n }\r\n }\r\n },\r\n methods: {\r\n loadSuccess(res){\r\n this.$emit(\"loadSuccess\",res);\r\n },\r\n init() {\r\n let initFillData = this.initFillData\r\n let permission = this.permission\r\n Vue.component('ht-runtime-template', {\r\n props: ['html', 'data', 'permission', 'isView', 'isPrint'],\r\n template: this.html,\r\n data() {\r\n return {\r\n left_image: '',\r\n right_image: '',\r\n transitionIndex: -1,\r\n curTabIndex: 'tabe_check_0',\r\n errMesg: '',\r\n fillOrg: {},\r\n fillOrgConfMap: {}\r\n }\r\n },\r\n computed: {\r\n // 子表前端分页过滤器\r\n pagingSubData() {\r\n const me = this\r\n return function(datapath) {\r\n // 通过子表数据路径获取分页数据\r\n return SubPagination.pagingByPath(datapath, me)\r\n }\r\n }\r\n },\r\n mounted() {\r\n // 如果当前表单的element为Comment说明表单加载失败了。\r\n if (this.$el && this.$el.constructor == Comment) {\r\n this.$parent.loadedFail = true\r\n }\r\n this.$validator = this.$root.$validator\r\n if (this.permission.table) {\r\n for (let subTableName in this.permission.table) {\r\n if (this.permission.table[subTableName].required) {\r\n this.addSubTableByName(subTableName)\r\n }\r\n }\r\n }\r\n this.$emit(\"loadSuccess\",true);\r\n //初始化handsontable数据\r\n if (this.data) {\r\n const formId = this.formId\r\n let _this = this\r\n if (!formId) {\r\n this.toInitTemolateData(initFillData)\r\n } else {\r\n const loading = this.$loading({\r\n lock: true,\r\n text: '正在获取初始化信息...',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n })\r\n this.$http.get('${form}/form/form/v1/previewDesignVue?formId=' + formId).then(\r\n resp => {\r\n if (resp.data) {\r\n const formData = resp.data.data\r\n for (const key in formData) {\r\n if (formData.hasOwnProperty(key)) {\r\n if (!_this.data[key]) {\r\n _this.data[key] = formData[key]\r\n }\r\n }\r\n }\r\n loading.close()\r\n _this.toInitTemolateData(initFillData)\r\n } else {\r\n loading.close()\r\n _this.toInitTemolateData(initFillData)\r\n }\r\n },\r\n () => {\r\n loading.close()\r\n _this.toInitTemolateData(initFillData)\r\n }\r\n )\r\n }\r\n }\r\n if (this.isPrint) {\r\n this.printDetail()\r\n }\r\n },\r\n //改v-runtime-template.es.js的源码,或者改v-runtime-template的版本改成1.5.2\r\n methods: {\r\n toInitTemolateData(initFillData) {\r\n if (!this.data) {\r\n return\r\n }\r\n const formData = this.data\r\n let refs = this.$refs\r\n for (const def in formData) {\r\n if (formData.hasOwnProperty(def)) {\r\n const boDef = formData[def]\r\n for (const bo in boDef) {\r\n if (boDef.hasOwnProperty(bo) && bo.indexOf('sub_') == 0) {\r\n const ref = 'hottable.' + def + '.' + bo\r\n if (refs[ref]) {\r\n try {\r\n refs[ref].fillbackHotTableData(formData[def][bo], permission)\r\n if (initFillData) {\r\n refs[ref].initTemplateData()\r\n }\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n printDetail() {\r\n let a = document.getElementsByName('online-form')[0].innerHTML\r\n window.print()\r\n if (this.isPrint) {\r\n this.$router.go(-1)\r\n }\r\n setTimeout(function() {\r\n location.reload()\r\n }, 200)\r\n },\r\n async leaveTabVerify(activeName, oldActiveName) {\r\n let erritems = []\r\n let formElementAry = document.getElementsByName('online-form')\r\n let frmInst = formElementAry[0].__vue__\r\n let childrens = frmInst.$refs.onlineForm.$refs\r\n let result = await frmInst.$root.$validator.validateAll('custom-form')\r\n if (!result) {\r\n let curEl = childrens[oldActiveName].$el\r\n this.$validator.errors.items.forEach(item => {\r\n if (curEl.contains(document.getElementsByName(item.field)[0])) {\r\n erritems.push(item)\r\n }\r\n })\r\n }\r\n //拼接提示消息\r\n let msg = ''\r\n for (let item of erritems) {\r\n let fieldLabel = ''\r\n if (item.field) {\r\n fieldLabel = item.field\r\n }\r\n if (item.field && item.field.indexOf('-') != -1) {\r\n fieldLabel = item.field.substr(item.field.indexOf('-') + 1)\r\n }\r\n msg += fieldLabel + ' ' + item.msg + '
'\r\n }\r\n if (msg) {\r\n this.$notify.error({\r\n title: this.$t('common.errTip'),\r\n dangerouslyUseHTMLString: true,\r\n message: msg\r\n })\r\n reject()\r\n }\r\n },\r\n //子表上移\r\n up(index, data) {\r\n if (index === 0) {\r\n this.$message({\r\n message: '已经是列表中第一位',\r\n type: 'warning'\r\n })\r\n } else {\r\n let temp = data[index - 1]\r\n this.$parent.loadedFail = true\r\n this.$set(data, index - 1, data[index])\r\n this.$set(data, index, temp)\r\n this.$parent.loadedFail = false\r\n }\r\n },\r\n //子表下移\r\n down(index, data) {\r\n if (index === data.length - 1) {\r\n this.$message({\r\n message: '已经是列表中最后一位',\r\n type: 'warning'\r\n })\r\n } else {\r\n this.isTransition = true\r\n let i = data[index + 1]\r\n this.$parent.loadedFail = true\r\n this.$set(data, index + 1, data[index])\r\n this.$set(data, index, i)\r\n this.$parent.loadedFail = false\r\n }\r\n },\r\n //子表复制数据\r\n copy(obj, item) {\r\n let newOne = JSON.parse(JSON.stringify(item))\r\n //把id置空以免走的修改方法\r\n if (newOne.id_) {\r\n delete newOne.id_\r\n }\r\n if (newOne.sub_row_readonly) {\r\n delete newOne.sub_row_readonly\r\n }\r\n newOne.sub_guid=this.guid();\r\n obj.push(newOne)\r\n },\r\n //子表默认值回填\r\n addSubTab(subTabPath) {\r\n let pathArr = subTabPath.split('.')\r\n if (pathArr.length < 3) {\r\n this.$message({\r\n message: '子表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let subTabName = pathArr[2].replace('sub_', '')\r\n let subInitData = this.data[pathArr[1]].initData[subTabName] || {}\r\n //判断当前子表是否存有回显值\r\n if (this.$parent.subBackfill && this.$parent.subBackfill.has(subTabPath)) {\r\n //this.data[pathArr[1]][pathArr[2]].push(this.$parent.subBackfill.get(subTabPath));\r\n subInitData = this.$parent.subBackfill.get(subTabPath)\r\n }\r\n //把数组里面的值为 null 转换为空字符串\r\n let str = JSON.stringify(subInitData).replace(/null/g, '\"\"')\r\n let subData = JSON.parse(str)\r\n for (var key in subData) {\r\n //点添加时判断要新增子表记录中的孙表是否有值\r\n if (key.indexOf('sub_') == 0 && subData[key].length > 0) {\r\n subData[key] = [] //有则清空\r\n }\r\n // //点添加时判断要新增子表记录中的字段是否有值\r\n // if(subData[key]){\r\n // subData[key] = \"\";//有则清空\r\n // }\r\n }\r\n let fillObj = this.toFillOrg(pathArr[1] + '.' + pathArr[2], subData)\r\n fillObj.sub_guid=this.guid();\r\n this.data[pathArr[1]][pathArr[2]].push(fillObj)\r\n }\r\n },\r\n guid(){\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0,\r\n v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n },\r\n //孙表默认值回填\r\n addSunTab(subTabPath, subIndex) {\r\n let pathArr = subTabPath.split('.')\r\n if (pathArr.length < 4) {\r\n this.$message({\r\n message: '孙表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let subTabName = pathArr[2].replace('sub_', '')\r\n let sunTabName = pathArr[3].replace('sub_', '')\r\n let subInitData = this.data[pathArr[1]].initData[subTabName].initData[sunTabName] || {}\r\n //判断当前孙表是否存有回显值\r\n if (this.$parent.subBackfill && this.$parent.subBackfill.has(subTabPath)) {\r\n //this.data[pathArr[1]][pathArr[2]].push(this.$parent.subBackfill.get(subTabPath));\r\n subInitData = this.$parent.subBackfill.get(subTabPath)\r\n }\r\n //把数组里面的值为 null 转换为空字符串\r\n let str = JSON.stringify(subInitData).replace(/null/g, '\"\"')\r\n if (!this.data[pathArr[1]][pathArr[2]][subIndex][pathArr[3]]) {\r\n let key = [pathArr[3]]\r\n let value = new Array()\r\n this.data[pathArr[1]][pathArr[2]][subIndex][key] = value\r\n }\r\n let sunBodata=JSON.parse(str);\r\n sunBodata.sub_guid=this.guid();\r\n this.data[pathArr[1]][pathArr[2]][subIndex][pathArr[3]].push(sunBodata)\r\n this.$forceUpdate() //迫使 Vue 实例重新渲染\r\n\r\n // this.permission.table[sunTabName].required = \"false\";\r\n }\r\n },\r\n addSubTableByName(subTableName) {\r\n for (let boAlias in this.data) {\r\n let subInitData = this.data[boAlias].initData[subTableName] || {}\r\n if (this.data[boAlias]['sub_' + subTableName] && this.data[boAlias]['sub_' + subTableName].length < 1) {\r\n this.data[boAlias]['sub_' + subTableName].push(JSON.parse(JSON.stringify(subInitData)))\r\n // 孙表必填 默认添加一条\r\n if (this.permission.table) {\r\n for (let tableName in this.permission.table) {\r\n if (this.permission.table[tableName].required) {\r\n if (\r\n this.data[boAlias]['sub_' + subTableName][0].hasOwnProperty('sub_' + tableName) &&\r\n this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName] &&\r\n this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName].length < 1\r\n ) {\r\n this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName].push(\r\n JSON.parse(JSON.stringify(subInitData.initData[tableName]))\r\n )\r\n } else if (\r\n this.data[boAlias]['sub_' + subTableName][0].hasOwnProperty('sub_' + tableName) &&\r\n !this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName]\r\n ) {\r\n this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName] = []\r\n this.data[boAlias]['sub_' + subTableName][0]['sub_' + tableName].push(subInitData.initData[tableName])\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n deleteRow(subTablePath, item) {\r\n let pathArr = subTablePath.split('.')\r\n if (pathArr.length < 2) {\r\n this.$message({\r\n message: '子表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let subTabName = pathArr[1].replace('sub_', '')\r\n if (\r\n this.data[pathArr[0]][pathArr[1]].length == 1 &&\r\n (this.permission.table[subTabName].required == true || this.permission.table[subTabName].required == 'true')\r\n ) {\r\n this.$message({\r\n message: '子表必填一条记录',\r\n type: 'warning'\r\n })\r\n return\r\n }\r\n this.data[pathArr[0]][pathArr[1]].remove(item)\r\n }\r\n },\r\n deleteSunRow(subTablePath, item, subIndex) {\r\n let pathArr = subTablePath.split('.')\r\n if (pathArr.length < 3) {\r\n this.$message({\r\n message: '孙表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let subTabName = pathArr[1].replace('sub_', '')\r\n let sunTabName = pathArr[2].replace('sub_', '')\r\n if (\r\n this.data[pathArr[0]][pathArr[1]][subIndex][pathArr[2]].length == 1 &&\r\n (this.permission.table[sunTabName].required == true || this.permission.table[subTabName].required == 'true')\r\n ) {\r\n this.$message({\r\n message: '孙表必填一条记录',\r\n type: 'warning'\r\n })\r\n return\r\n }\r\n this.data[pathArr[0]][pathArr[1]][subIndex][pathArr[2]].remove(item)\r\n }\r\n },\r\n clearAll(subTablePath, isHot, index) {\r\n let pathArr = subTablePath.split('.')\r\n if (pathArr.length < 2) {\r\n this.$message({\r\n message: '子表路径有误',\r\n type: 'warning'\r\n })\r\n //孙表\r\n } else if ((index || index === 0) && pathArr.length == 3) {\r\n this.data[pathArr[0]][pathArr[1]][index][pathArr[2]].empty()\r\n } else {\r\n const subTabName = pathArr[1].replace('sub_', '')\r\n if (\r\n this.data[pathArr[0]][pathArr[1]].length == 1 &&\r\n (this.permission.table[subTabName].required == true || this.permission.table[subTabName].required == 'true')\r\n ) {\r\n this.$message({\r\n message: '子表必填一条记录',\r\n type: 'warning'\r\n })\r\n return\r\n }\r\n this.data[pathArr[0]][pathArr[1]].empty()\r\n if (isHot) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].fillbackHotTableData(null)\r\n }\r\n }\r\n },\r\n addInitTemplateData(subTablePath) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].toAddInitTemplateData()\r\n },\r\n mergeCellRefresh(subTablePath) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].mergeCellRefresh()\r\n },\r\n execCellMathExp(subTablePath) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].execCellMathExp()\r\n },\r\n execCrossMapping(subTablePath) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].execCrossMapping()\r\n },\r\n getHotTableData(subTablePath) {\r\n const hotTableRef = 'hottable.' + subTablePath\r\n this.$refs[hotTableRef].getHotTableData()\r\n },\r\n //点击分页校验按钮触发事件\r\n nextStepClick(isCheck, index, way) {\r\n let childrens = this.$refs.onlineForm.$children[0].$refs\r\n let nextIndex = way == 'back' ? index - 1 : index + 1\r\n //进入下一个页签并且需要校验当前页签。则进行校验\r\n if (way == 'next' && isCheck == 'y') {\r\n this.$validator.validateAll('custom-form').then(result => {\r\n let curTabHasError = false\r\n if (!result) {\r\n let curEl = childrens['next_step_check_' + index].$el\r\n this.$validator.errors.items.forEach(item => {\r\n if (curEl.contains(document.getElementsByName(item.field)[0])) {\r\n curTabHasError = true\r\n return\r\n }\r\n })\r\n }\r\n if (result || !curTabHasError) {\r\n childrens.el_table_check.currentName = nextIndex + ''\r\n var childrensArray = Object.getOwnPropertyNames(childrens)\r\n childrensArray.remove('collapse')\r\n if (index == childrensArray.length - 3 && way == 'next') {\r\n this.$root.$emit('startFlowBtnChange', true)\r\n }\r\n }\r\n })\r\n } else {\r\n childrens.el_table_check.currentName = nextIndex + ''\r\n var childrensArray = Object.getOwnPropertyNames(childrens)\r\n childrensArray.remove('collapse')\r\n if (index == childrensArray.length - 3 && way == 'next') {\r\n this.$root.$emit('startFlowBtnChange', true)\r\n }\r\n }\r\n },\r\n toFillOrg(path, row) {\r\n const fillOrgConf = this.fillOrgConfMap[path]\r\n let fillObj = {}\r\n if (fillOrgConf && this.fillOrg) {\r\n if (fillOrgConf.name) {\r\n const namePath = fillOrgConf.name.split('.')\r\n fillObj[namePath[namePath.length - 1]] = this.fillOrg.name\r\n }\r\n if (fillOrgConf.id) {\r\n const idPath = fillOrgConf.id.split('.')\r\n fillObj[idPath[idPath.length - 1]] = this.fillOrg.id\r\n }\r\n if (fillOrgConf.code) {\r\n const codePath = fillOrgConf.code.split('.')\r\n fillObj[codePath[codePath.length - 1]] = this.fillOrg.code\r\n }\r\n if (fillOrgConf.instId) {\r\n const instIdPath = fillOrgConf.instId.split('.')\r\n fillObj[instIdPath[instIdPath.length - 1]] = this.$parent.$parent.instId ? this.$parent.$parent.instId : ''\r\n }\r\n return {...row, ...fillObj}\r\n }\r\n return row\r\n },\r\n initFill(path, conf) {\r\n //收集自动回填信息\r\n if (path && conf) {\r\n try {\r\n const confJson = this.fillOrgConfMap[path] ? this.fillOrgConfMap[path] : JSON.parse(conf)\r\n if (confJson.id || confJson.code || confJson.name || confJson.instId) {\r\n this.fillOrgConfMap[path] = confJson\r\n this.initFirstFill(path, confJson)\r\n }\r\n } catch (error) {}\r\n }\r\n },\r\n initFirstFill(path, conf) {\r\n //处理第一行的回填\r\n const paths = path.split('.')\r\n if (this.data[paths[0]][paths[1]] && this.data[paths[0]][paths[1]].length == 1 && this.fillOrg.id) {\r\n if (conf.id) {\r\n const idPath = conf.id.split('.')\r\n if (!this.data[paths[0]][paths[1]][0][idPath[2]]) {\r\n this.data[paths[0]][paths[1]][0][idPath[2]] = this.fillOrg.id\r\n if (conf.code) {\r\n const codePath = conf.code.split('.')\r\n if (!this.data[paths[0]][paths[1]][0][codePath[2]]) {\r\n this.data[paths[0]][paths[1]][0][codePath[2]] = this.fillOrg.code\r\n }\r\n }\r\n if (conf.name) {\r\n const namePath = conf.name.split('.')\r\n if (!this.data[paths[0]][paths[1]][0][namePath[2]]) {\r\n this.data[paths[0]][paths[1]][0][namePath[2]] = this.fillOrg.name\r\n }\r\n }\r\n }\r\n }\r\n if (conf.instId) {\r\n const instIdPath = conf.instId.split('.')\r\n if (!this.data[paths[0]][paths[1]][0][instIdPath[2]]) {\r\n this.data[paths[0]][paths[1]][0][instIdPath[2]] = this.$parent.$parent.instId ? this.$parent.$parent.instId : ''\r\n }\r\n }\r\n }\r\n },\r\n isShowAddButton(path, maxRow, subIndex) {\r\n if (maxRow === 0) return false\r\n let pathArr = path.split('.')\r\n if (subIndex >= 0) {\r\n if (pathArr.length < 4) {\r\n this.$message({\r\n message: '子表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let data = this.data[pathArr[1]][pathArr[2]][subIndex][pathArr[3]]\r\n return data.length >= maxRow\r\n }\r\n } else {\r\n if (pathArr.length < 3) {\r\n this.$message({\r\n message: '子表路径有误',\r\n type: 'warning'\r\n })\r\n } else {\r\n let data = this.data[pathArr[1]][pathArr[2]]\r\n return data.length >= maxRow\r\n }\r\n }\r\n return false\r\n }\r\n },\r\n components: {\r\n EipPagination,\r\n EipSubPagination,\r\n EipSubImportDialog,\r\n EipSubExportDialog,\r\n EipPaginationLayout,\r\n EipInput,\r\n EipCheckbox,\r\n EipSelect,\r\n EipUserSelector,\r\n EipDemensionSelector,\r\n EipJobSelector,\r\n EipOrgSelector,\r\n EipPostSelector,\r\n EipRoleSelector,\r\n EipRadio,\r\n EipTextarea,\r\n EipFont,\r\n EipDialog,\r\n EipButton,\r\n EipDate,\r\n EipImg,\r\n EipViewer,\r\n EipSwitch,\r\n HtFile,\r\n VRuntimeTemplate,\r\n HtGangedSelect,\r\n EipRelFlow,\r\n EipSubDialog,\r\n HtLabel,\r\n HtDigital,\r\n HtCurrency,\r\n EipRealtimeInput,\r\n EipRealtimeTextarea,\r\n EipStep,\r\n HtInputAutocomplete,\r\n HtTreeselect,\r\n HtCascader,\r\n HtTree,\r\n EipAttachment,\r\n EipDic,\r\n EipAutocomplete,\r\n EipCascader,\r\n EipTreeselect,\r\n EipCollapse,\r\n EipPaginationSteps,\r\n EipMap,\r\n EipDataView,\r\n EipSunDialog,\r\n EipTag,\r\n EipHotTable,\r\n EipHotSubDialog,\r\n ContractPreview,\r\n EipSubtableBackfill,\r\n EipDivider,\r\n EipOffice,\r\n EipQrcode,\r\n EipSignature,\r\n EipTabs,\r\n EipFontUeditor\r\n }\r\n })\r\n }\r\n }\r\n}\r\n",null]}