{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\BusinessObjDialog.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\views\\form\\BusinessObjDialog.vue","mtime":1675071992881},{"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\r\nimport form from '@/api/form.js'\r\nimport req from '@/request.js'\r\nimport util from '@/hotent-ui-util.js'\r\nimport main from '@/main.js'\r\nimport BusinessObjHeader from '@/views/form/BusinessObjHeader.vue'\r\nimport BusinessObjEnts from '@/views/form/BusinessObjEnts.vue'\r\nimport BusinessObjAttr from '@/views/form/BusinessObjAttr.vue'\r\nimport BusinessObjExternalDialog from '@/views/form/BusinessObjExternalDialog.vue'\r\nimport FormTemplateDialog from '@/components/dialog/FormTemplateDialog.vue'\r\n\r\nexport default {\r\n components: {\r\n BusinessObjHeader,\r\n BusinessObjEnts,\r\n BusinessObjAttr,\r\n BusinessObjExternalDialog,\r\n FormTemplateDialog\r\n },\r\n props: ['dataView', 'deployedId', 'clickTree', 'data'],\r\n data() {\r\n return {\r\n asideShow: true,\r\n messageCations: {}, //用来获取校验弹窗提示的实例,以对对应弹窗进行操作\r\n entExtsTableHeight: 0,\r\n typeData: [],\r\n entIndex: 0, //选中实体下标\r\n isHide: true,\r\n entExts: {\r\n //TODO\r\n comment: '',\r\n desc: '',\r\n dsName: '',\r\n index: 0,\r\n isExternal: '1',\r\n name: '',\r\n packageId: '',\r\n pk: '',\r\n pkType: '',\r\n relation: '',\r\n show: '',\r\n status: '',\r\n tableName: '',\r\n attributeList: [],\r\n type: ''\r\n },\r\n formData: {\r\n //表单\r\n alias: '',\r\n categoryId: '',\r\n categoryName: '',\r\n deployed: 0,\r\n description: '',\r\n dsName: '',\r\n isCreateTable: '',\r\n isExternal: '',\r\n status: 'normal',\r\n supportDb: true,\r\n ents: []\r\n },\r\n countAttrLength: 0,\r\n dialogVisible: false,\r\n openGrandSonAttr: false,\r\n grandSonIndex: -1,\r\n attrTableData: [],\r\n addFk: false, //TODO\r\n extLen: 0,\r\n showMessage: false,\r\n externalTables: [] // 当前外部表的字段\r\n }\r\n },\r\n mounted() {\r\n const this_ = this\r\n this_.$root.$on('validateField', function(res) {\r\n this_.closeAllNotification()\r\n util\r\n .validateForm(this, 'form')\r\n .then(() => {\r\n this_.closeAllNotification()\r\n })\r\n .catch(reason => {\r\n let rule = reason.map(v => {\r\n return v.rule\r\n })\r\n rule = rule.unique()\r\n this_.closeAllNotification()\r\n if (rule.includes('required')) {\r\n let n = this_.$message.warning('请将信息填写完整')\r\n this_.messageCations[n.id] = n\r\n } else if (rule.includes('regex')) {\r\n let n = this_.$message.warning(\r\n '只能输入字母、数字、下划线,且以字母开头'\r\n )\r\n this_.messageCations[n.id] = n\r\n }\r\n })\r\n })\r\n },\r\n created() {\r\n this.$validator = this.$root.$validator\r\n },\r\n watch: {\r\n data: {\r\n handler(v) {\r\n if (this.dataView.id) {\r\n this.formData = v\r\n }\r\n },\r\n deep: true\r\n }\r\n },\r\n methods: {\r\n //关闭所有校验通知\r\n closeAllNotification() {\r\n for (let key in this.messageCations) {\r\n this.messageCations[key].close()\r\n delete this.messageCations[key]\r\n }\r\n },\r\n addGrandSonEnt(index) {\r\n this.getEntsByIndex(index)\r\n let row = {\r\n desc: '',\r\n index: this.entIndex,\r\n name: '',\r\n packageId: '',\r\n show: '孙实体',\r\n relation: 'onetomany',\r\n attributeList: [],\r\n status: '',\r\n isCheck: true\r\n }\r\n if (!this.formData.ents[index].children) {\r\n this.$set(this.formData.ents[index], 'children', [])\r\n }\r\n if (this.checkGrandSonEnts(index)) {\r\n return\r\n }\r\n this.formData.ents[index].children.push(row)\r\n this.grandSonIndex = this.formData.ents[index].children.length - 1\r\n this.openGrandSonAttr = true\r\n this.attrTableData = this.formData.ents[index].children[\r\n this.grandSonIndex\r\n ].attributeList\r\n },\r\n checkGrandSonEnts(index, param) {\r\n if (\r\n (this.formData.ents[index].children &&\r\n this.formData.ents[index].children.length == 0) ||\r\n !this.formData.ents[index].children\r\n ) {\r\n return false\r\n }\r\n let child = this.formData.ents[index].children\r\n let len = this.formData.ents[index].children.length - 1\r\n child[len].comment = child[len].desc\r\n child[len].description = child[len].desc\r\n if (!param && child[len].attributeList.length == 0) {\r\n this.$message({message: '请添加字段信息', type: 'warning'})\r\n return true\r\n }\r\n },\r\n //输入检测\r\n checkIsChinese(param) {\r\n var check = new RegExp('[\\u4e00-\\u9fa5]')\r\n var pattern = new RegExp(\r\n \"[%--`~!@#$^&*()=|{}':;',\\\\[\\\\].<>/?~!@#¥……&*()——| {}【】‘;:”“'。,、?]\"\r\n )\r\n if (check.test(param) || pattern.test(param)) {\r\n this.$message({message: '请勿输入中文或特殊字符', type: 'warning'})\r\n return true\r\n }\r\n },\r\n //输入检测\r\n checkInSpecialCharacters(param) {\r\n var pattern = new RegExp(\r\n \"[%--`~!@#$^&*()=|{}':;',\\\\[\\\\].<>/?~!@#¥……&*()——| {}【】‘;:”“'。,、?]\"\r\n )\r\n if (pattern.test(param)) {\r\n this.$message({message: '请勿输入特殊字符', type: 'warning'})\r\n return true\r\n }\r\n },\r\n getGrandSonEntsByIndex(i, index) {\r\n this.getEntsByIndex(index, 'grandSonEnt')\r\n this.grandSonIndex = i\r\n if (\r\n this.formData.ents[this.entIndex].children &&\r\n this.formData.ents[this.entIndex].children[i]\r\n ) {\r\n this.attrTableData = this.formData.ents[this.entIndex].children[\r\n i\r\n ].attributeList\r\n }\r\n },\r\n //获取选中实体\r\n getEntsByIndex(index, param) {\r\n //如果是删除自动选择上一个实体\r\n if (param == 'delete') {\r\n if (this.formData.ents[index]) {\r\n this.entIndex = index\r\n this.formData.ents.forEach(data => {\r\n data.isCheck = false\r\n })\r\n this.formData.ents[index].isCheck = true\r\n return true\r\n }\r\n } else {\r\n let this_ = this\r\n util\r\n .validateForm(this, 'form')\r\n .then(() => {\r\n this.openGrandSonAttr = false\r\n if (param == 'grandSonEnt') {\r\n this.openGrandSonAttr = true\r\n }\r\n if (this.formData.ents[index]) {\r\n this.entIndex = index\r\n this.formData.ents.forEach(data => {\r\n data.isCheck = false\r\n })\r\n this.formData.ents[index].isCheck = true\r\n return true\r\n }\r\n })\r\n .catch(reason => {\r\n let rule = reason.map(v => {\r\n return v.rule\r\n })\r\n rule = rule.unique()\r\n this_.closeAllNotification()\r\n if (rule.includes('required')) {\r\n let n = this_.$message.warning('请将信息填写完整')\r\n this_.messageCations[n.id] = n\r\n } else if (rule.includes('regex')) {\r\n let n = this_.$message.warning(\r\n '只能输入字母、数字、下划线,且以字母开头'\r\n )\r\n this_.messageCations[n.id] = n\r\n }\r\n })\r\n }\r\n },\r\n\r\n //表单对话框\r\n handleOpen() {\r\n this.dialogVisible = true\r\n this.init()\r\n },\r\n init() {\r\n this.formData.categoryId = this.clickTree.id\r\n this.formData.categoryName = this.clickTree.name\r\n if (this.dataView.entIndex) {\r\n this.entIndex = this.dataView.entIndex\r\n }\r\n },\r\n //表单数据加载\r\n getFormData() {\r\n if (this.dataView.id) {\r\n form.getEntData(this.dataView.id, resp => {\r\n resp.data.ents.forEach((entData, index) => {\r\n if (entData.isExternal == '1' && index == 0) {\r\n entData.show = '主实体-外'\r\n } else if (entData.isExternal == '1') {\r\n entData.show = '子实体-外'\r\n }\r\n if (index === 0) {\r\n entData.isCheck = true\r\n }\r\n if (entData.children) {\r\n entData.children.forEach(v => {\r\n if (v.isExternal == '1') {\r\n v.show = '孙实体-外'\r\n }\r\n })\r\n }\r\n for (let q = 0; q < entData.attributeList.length; q++) {\r\n if (entData.attributeList[q]) {\r\n if (entData.attributeList[q].isRequired == 0) {\r\n entData.attributeList[q].isRequired = '0'\r\n } else {\r\n entData.attributeList[q].isRequired = '1'\r\n }\r\n }\r\n for (let i = 0; i < entData.attributeList.length - 1 - q; i++) {\r\n if (\r\n entData.attributeList[i].index >\r\n entData.attributeList[i + 1].index\r\n ) {\r\n let temp = entData.attributeList[i]\r\n entData.attributeList[i] = entData.attributeList[i + 1]\r\n entData.attributeList[i + 1] = temp\r\n }\r\n }\r\n }\r\n })\r\n this.formData = resp.data\r\n })\r\n }\r\n },\r\n //关闭表单对话框\r\n handleDialogClose() {\r\n this.$emit('loadTableData')\r\n this.dialogVisible = false\r\n this.isSave = false\r\n this.entIndex = 0\r\n this.grandSonIndex = -1\r\n this.openGrandSonAttr = false\r\n this.countAttrLength = 0\r\n this.formData = {\r\n alias: '',\r\n categoryId: '',\r\n categoryName: '',\r\n deployed: 0,\r\n description: '',\r\n dsName: '',\r\n isCreateTable: '',\r\n isExternal: '',\r\n status: 'normal',\r\n supportDb: true,\r\n ents: []\r\n }\r\n this.$router.push({path: `/sysplat/businessObj`}) //form#businessObj\r\n },\r\n //新增实体\r\n addEntRows() {\r\n const this_ = this\r\n util\r\n .validateForm(this_, 'form')\r\n .then(() => {\r\n if (this_.formData.ents.length > 0) {\r\n for (let i = 0; i < this_.formData.ents.length; i++) {\r\n if (this_.checkGrandSonEnts(i)) {\r\n return\r\n }\r\n }\r\n this_.countAttrLength = 0\r\n if (!this_.checkEntFunc(this_.formData.ents)) {\r\n return false\r\n }\r\n this_.extLen = 0\r\n }\r\n this_.formData.ents.forEach(data => {\r\n data.isCheck = false\r\n })\r\n this_.entIndex = ++this_.entIndex\r\n let row = {\r\n desc: '',\r\n index: this_.entIndex,\r\n name: '',\r\n packageId: '',\r\n show: '子实体',\r\n children: [],\r\n relation: 'onetomany',\r\n attributeList: [],\r\n status: '',\r\n isCheck: true\r\n }\r\n if (this_.formData.ents.length == 0) {\r\n this_.entIndex = 0\r\n row = {\r\n desc: '',\r\n index: 0,\r\n name: '',\r\n packageId: '',\r\n show: '主实体',\r\n relation: 'main',\r\n status: '',\r\n attributeList: [],\r\n isCheck: true\r\n }\r\n }\r\n if (\r\n this_.formData.ents.length > 0 &&\r\n this_.checkGrandSonEnts(this_.formData.ents.length - 1)\r\n ) {\r\n return\r\n }\r\n this_.formData.ents.push(row)\r\n })\r\n .catch(reason => {\r\n let rule = reason.map(v => {\r\n return v.rule\r\n })\r\n rule = rule.unique()\r\n if (rule.includes('required')) {\r\n let n = this_.$message.warning('请将信息填写完整')\r\n this_.messageCations[n.id] = n\r\n } else if (rule.includes('regex')) {\r\n this_.$message.warning('只能输入字母、数字、下划线,且以字母开头')\r\n }\r\n })\r\n },\r\n //删除实体\r\n deleteEntRows(index) {\r\n this.entIndex = index\r\n if (!this.formData.ents[this.entIndex].attributeList) {\r\n this.formData.ents[this.entIndex].attributeList = []\r\n }\r\n //处理加入的外部表数组\r\n if (\r\n this.formData.ents[index] &&\r\n this.formData.ents[index].isExternal == 1 &&\r\n this.externalTables &&\r\n this.externalTables.length > 0\r\n ) {\r\n let extName = this.formData.ents[index].tableName\r\n this.externalTables.forEach((item, idx) => {\r\n if (item == extName) {\r\n this.externalTables.splice(idx, 1)\r\n }\r\n })\r\n }\r\n this.formData.ents.splice(index, 1)\r\n if (this.entIndex >= this.formData.ents.length) {\r\n this.entIndex = this.formData.ents.length - 1\r\n this.getEntsByIndex(this.entIndex)\r\n }\r\n if (this.formData.ents.length > 0) {\r\n if (index == 0) {\r\n if (this.formData.ents[0].isExternal != '1') {\r\n this.formData.ents[0].show = '主实体'\r\n this.formData.ents[0].relation = 'main'\r\n this.formData.ents[0].children = []\r\n } else {\r\n this.formData.ents[0].show = '主实体-外'\r\n this.formData.ents[0].relation = 'main'\r\n }\r\n }\r\n }\r\n },\r\n deleteGrandSonEntRows(i, index) {\r\n this.getEntsByIndex(index, 'noCheck')\r\n this.grandSonIndex = i\r\n if (!this.formData.ents[this.entIndex].attributeList) {\r\n this.formData.ents[this.entIndex].children[i].attributeList = []\r\n }\r\n this.formData.ents[this.entIndex].children.splice(i, 1)\r\n this.openGrandSonAttr = false\r\n this.attrTableData = this.formData.ents[this.entIndex].attributeList\r\n if (\r\n this.formData.ents[this.entIndex].children[i - 1] &&\r\n this.formData.ents[this.entIndex].children[i - 1].attributeList.length >\r\n 0\r\n ) {\r\n this.attrTableData = this.formData.ents[this.entIndex].children[\r\n i - 1\r\n ].attributeList\r\n }\r\n },\r\n //数据源\r\n addEntExts(index, i) {\r\n let currentEnt = null,\r\n currentEntType = ''\r\n if (typeof index != 'undefined') {\r\n if (typeof i != 'undefined') {\r\n currentEntType = 'sunTable'\r\n currentEnt = this.formData.ents[index].children[i]\r\n } else {\r\n currentEnt = this.formData.ents[index]\r\n currentEntType = index > 0 ? 'subTable' : 'mainTable'\r\n }\r\n }\r\n this.$refs.businessObjExternalDialog.open(\r\n currentEnt,\r\n currentEntType,\r\n index == 0 ? 0 : this.formData.ents.length,\r\n this.externalTables\r\n )\r\n },\r\n validatorForm(param) {\r\n util\r\n .validateForm(this, 'form')\r\n .then(() => {\r\n for (let i = 0; i < this.formData.ents.length; i++) {\r\n if (this.checkGrandSonEnts(i)) {\r\n return\r\n }\r\n }\r\n this.countAttrLength = 0\r\n if (!this.checkEntFunc(this.formData.ents)) {\r\n return false\r\n }\r\n this.extLen = 0\r\n if (param == 'deployed') {\r\n this.deployedEntData()\r\n return true\r\n } else if (param == 'save') {\r\n this.saveEntData()\r\n return true\r\n } else if (param == 'createTableForm') {\r\n this.createTableForm()\r\n return true\r\n }\r\n return true\r\n })\r\n .catch(reason => {\r\n let rule = reason.map(v => {\r\n return v.rule\r\n })\r\n rule = rule.unique()\r\n if (rule.includes('required')) {\r\n let n = this.$message.warning('请将信息填写完整')\r\n this.messageCations[n.id] = n\r\n } else if (rule.includes('regex')) {\r\n this.$message.warning('只能输入字母、数字、下划线,且以字母开头')\r\n }\r\n })\r\n },\r\n checkEntFunc(ent, sonIndex) {\r\n let entVal = {}\r\n if (ent.length < 1) {\r\n this.$message({type: 'warning', message: '请添加实体对象!'})\r\n return false\r\n }\r\n for (let i = 0; i < ent.length; i++) {\r\n if (ent[i].show != '孙实体') {\r\n ent[i].description = ent[i].comment\r\n ent[i].desc = ent[i].comment\r\n }\r\n if (!entVal['desc' + ent[i].desc]) {\r\n entVal['desc' + ent[i].desc] = ent[i].desc\r\n } else {\r\n this.entBlurDescRepeatIndex = i\r\n if (\r\n document.getElementById('changeEntsDesc' + i) &&\r\n ent[i].show == '子实体'\r\n ) {\r\n this.$message({\r\n message: '已存在子实体描述为【' + ent[i].desc + '】的bo实体',\r\n type: 'warning'\r\n })\r\n document\r\n .getElementById('changeEntsDesc' + i)\r\n .getElementsByTagName('div')[0]\r\n .lastElementChild.focus()\r\n document\r\n .getElementById('changeEntsDesc' + i)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border =\r\n '1px solid red'\r\n } else {\r\n this.$message({\r\n message: '已存在孙实体描述为【' + ent[i].desc + '】的bo实体',\r\n type: 'warning'\r\n })\r\n document\r\n .getElementById('changeGrandSonEntsDesc' + i)\r\n .getElementsByTagName('div')[0]\r\n .lastElementChild.focus()\r\n document\r\n .getElementById('changeGrandSonEntsDesc' + i)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border =\r\n '1px solid red'\r\n }\r\n return false\r\n }\r\n if (!entVal['name' + ent[i].name]) {\r\n entVal['name' + ent[i].name] = ent[i].name\r\n } else {\r\n this.entBlurNameRepeatIndex = i\r\n if (\r\n document.getElementById('entName' + i) &&\r\n ent[i].show == '子实体'\r\n ) {\r\n this.$message({\r\n message: '已存在子实体名称为【' + ent[i].name + '】的bo实体',\r\n type: 'warning'\r\n })\r\n document\r\n .getElementById('entName' + i)\r\n .getElementsByTagName('div')[0]\r\n .lastElementChild.focus()\r\n document\r\n .getElementById('entName' + i)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border =\r\n '1px solid red'\r\n } else {\r\n this.$message({\r\n message: '已存在孙实体名称为【' + ent[i].name + '】的bo实体',\r\n type: 'warning'\r\n })\r\n document\r\n .getElementById('changeGrandSonEntsName' + i)\r\n .getElementsByTagName('div')[0]\r\n .lastElementChild.focus()\r\n document\r\n .getElementById('changeGrandSonEntsName' + i)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border =\r\n '1px solid red'\r\n }\r\n return false\r\n }\r\n if (ent[i].isExternal == '1') {\r\n ++this.extLen\r\n if (i != 0 && this.extLen > 1 && !ent[i].fk) {\r\n this.$message({\r\n message: '请给' + ent[i].comment + '实体添加外键!',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n }\r\n if (ent[i].attributeList.length > 0) {\r\n if (!this.checkAttrFunc(ent[i], i, sonIndex)) {\r\n return false\r\n }\r\n } else {\r\n this.$message({message: '请添加字段!', type: 'warning'})\r\n return false\r\n }\r\n if (ent[i].children && ent[i].children.length > 0) {\r\n this.countAttrLength = 0\r\n if (!this.checkEntFunc(ent[i].children, i)) {\r\n return false\r\n }\r\n }\r\n this.countAttrLength = 0\r\n }\r\n return true\r\n },\r\n checkAttrFunc(ent, i, sonIndex) {\r\n let regPos = new RegExp('^\\\\d*(?:\\\\.\\\\d{1,2})?$')\r\n let attrVal = {}\r\n let attr = ent.attributeList\r\n for (let j = 0; j < attr.length; j++) {\r\n attr[j].desc = attr[j].comment\r\n if (attr[j].defaultValue == null) {\r\n attr[j].defaultValue = ''\r\n }\r\n attr[j].defaultValue = attr[j].defaultValue.trim()\r\n this.attrCommentElementId = attr[j].name + 'comment' + j\r\n if (ent.isExternal != '1') {\r\n if (!attrVal['name' + attr[j].name]) {\r\n attrVal['name' + attr[j].name] = attr[j].name\r\n } else {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n this.attrNameElementId = attr\r\n this.checkAttrNameIndex = j\r\n const msg =\r\n '实体:' +\r\n ent.desc +\r\n '(' +\r\n ent.name +\r\n ')中存在重复字段名【' +\r\n attr[j].name +\r\n '】'\r\n this.$message({message: msg, type: 'warning'})\r\n document\r\n .getElementById(this.attrNameElementId[j].name + 'attrName' + j)\r\n .focus()\r\n document\r\n .getElementById(this.attrNameElementId[j].name + 'attrName' + j)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border =\r\n '1px solid red'\r\n return false\r\n }\r\n this.attrLenElementId = attr[j].name + 'attrLen' + j\r\n if (attr[j].attrLength && attr[j].attrLength !== 0) {\r\n if (!regPos.test(attr[j].attrLength)) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrLenElementId).focus()\r\n document.getElementById(this.attrLenElementId).style.border =\r\n '1px solid red'\r\n let n = this.$message.warning('请输入正确数字')\r\n this.messageCations[n.id] = n\r\n return false\r\n }\r\n }\r\n this.attrDecimaElementId = attr[j].name + 'decima' + j\r\n if (attr[j].decimalLen && attr[j].decimalLen !== 0) {\r\n if (!regPos.test(attr[j].decimalLen)) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrDecimaElementId).focus()\r\n document.getElementById(this.attrDecimaElementId).style.border =\r\n '1px solid red'\r\n let n = this.$message.warning('请输入正确数字')\r\n this.messageCations[n.id] = n\r\n return false\r\n }\r\n }\r\n if (attr[j].decimalLen) {\r\n if (attr[j].decimalLen.length > 1) {\r\n let decimalLen = attr[j].decimalLen.substr(0, 1)\r\n if (decimalLen == '0') {\r\n attr[j].decimalLen = attr[j].decimalLen.substr(\r\n 1,\r\n attr[j].decimalLen.length\r\n )\r\n }\r\n }\r\n if (attr[j].decimalLen < 0 || attr[j].decimalLen > 30) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrDecimaElementId).focus()\r\n document.getElementById(this.attrDecimaElementId).style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '小数长度不能小于0或者大于30',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n }\r\n if (attr[j].dataType === 'varchar') {\r\n this.countAttrLength += parseInt(attr[j].attrLength)\r\n }\r\n if (attr[j].attrLength) {\r\n if (attr[j].attrLength.length > 1) {\r\n let attrLength = attr[j].attrLength.substr(0, 1)\r\n if (attrLength == '0') {\r\n attr[j].attrLength = attr[j].attrLength.substr(\r\n 1,\r\n attr[j].attrLength.length\r\n )\r\n }\r\n }\r\n if (attr[j].dataType === 'varchar') {\r\n if (attr[j].attrLength < 1 || this.countAttrLength > 21500) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrLenElementId).focus()\r\n document.getElementById(this.attrLenElementId).style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '整数长度不能小于1或者长度总和超出21500',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n }\r\n\r\n if (attr[j].dataType === 'number' || attr[j].dataType == '数字') {\r\n let defaultVal = attr[j].defaultValue.split('.')\r\n if (Number(attr[j].attrLength) < 1) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrLenElementId).focus()\r\n document.getElementById(this.attrLenElementId).style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '整数长度不能小于1',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n if (\r\n Number(attr[j].attrLength) + Number(attr[j].decimalLen) >\r\n 38\r\n ) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrLenElementId).focus()\r\n document.getElementById(this.attrLenElementId).style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '整数长度与小数长度之和不能超过38',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n if (\r\n defaultVal[1] &&\r\n Number(defaultVal[1].length) > Number(attr[j].decimalLen)\r\n ) {\r\n this.defaultValueIndex = j\r\n this.defaultValueType = 'number'\r\n document.getElementsByName('defaultValue' + j)[0].focus()\r\n document.getElementsByName('defaultValue' + j)[0].style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '默认值中小数长度超出设置值',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n if (attr[j].defaultValue && attr[j].defaultValue.length > 21) {\r\n this.defaultValueIndex = j\r\n this.defaultValueType = 'number'\r\n document.getElementsByName('defaultValue' + j)[0].focus()\r\n document.getElementsByName('defaultValue' + j)[0].style.border =\r\n '1px solid red'\r\n this.$message({message: '整数长度不能超过21', type: 'warning'})\r\n return false\r\n }\r\n if (!regPos.test(Number(attr[j].defaultValue))) {\r\n this.defaultValueIndex = j\r\n this.defaultValueType = 'number'\r\n document.getElementsByName('defaultValue' + j)[0].focus()\r\n document.getElementsByName('defaultValue' + j)[0].style.border =\r\n '1px solid red'\r\n this.$message({message: '默认值应为数字', type: 'warning'})\r\n return false\r\n }\r\n }\r\n let d = attr[j].defaultValue\r\n if (d.indexOf('.') > -1) {\r\n let i = d.indexOf('.')\r\n let start = d.substring(0, i)\r\n let end = d.substring(i + 1, attr[j].defaultValue.length)\r\n d = start + end\r\n }\r\n if (d.length > attr[j].attrLength + attr[j].decimalLen) {\r\n this.defaultValueIndex = j\r\n this.defaultValueType = 'varchar'\r\n document.getElementsByName('defaultValue' + j)[0].focus()\r\n document.getElementsByName('defaultValue' + j)[0].style.border =\r\n '1px solid red'\r\n this.$message({\r\n message: '默认值长度需小于整数长度',\r\n type: 'warning'\r\n })\r\n return false\r\n }\r\n } else if (\r\n attr[j].dataType === 'varchar' ||\r\n attr[j].dataType === 'number'\r\n ) {\r\n this.entAttrIndex = i\r\n if (sonIndex) {\r\n this.sonAttrIndex = sonIndex\r\n }\r\n document.getElementById(this.attrLenElementId).focus()\r\n document.getElementById(this.attrLenElementId).style.border =\r\n '1px solid red'\r\n this.$message({message: '请添加整数长度', type: 'warning'})\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n },\r\n entBlur() {\r\n if (\r\n this.openGrandSonAttr &&\r\n this.formData.ents[this.entIndex].children[this.grandSonIndex]\r\n .attributeList &&\r\n this.formData.ents[this.entIndex].children[this.grandSonIndex]\r\n .attributeList.length > 0\r\n ) {\r\n this.formData.ents[this.entIndex].children[\r\n this.grandSonIndex\r\n ].attributeList.forEach(item => {\r\n item.desc = item.comment\r\n })\r\n }\r\n if (typeof this.entBlurDescRepeatIndex == 'number') {\r\n if (\r\n document.getElementById(\r\n 'changeEntsDesc' + this.entBlurDescRepeatIndex\r\n )\r\n ) {\r\n document\r\n .getElementById('changeEntsDesc' + this.entBlurDescRepeatIndex)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n if (\r\n document.getElementById(\r\n 'changeGrandSonEntsDesc' + this.entBlurDescRepeatIndex\r\n )\r\n ) {\r\n document\r\n .getElementById(\r\n 'changeGrandSonEntsDesc' + this.entBlurDescRepeatIndex\r\n )\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n }\r\n if (typeof this.entBlurNameRepeatIndex == 'number') {\r\n if (document.getElementById('entName' + this.entBlurNameRepeatIndex)) {\r\n document\r\n .getElementById('entName' + this.entBlurNameRepeatIndex)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n if (\r\n document.getElementById(\r\n 'changeGrandSonEntsName' + this.entBlurNameRepeatIndex\r\n )\r\n ) {\r\n document\r\n .getElementById(\r\n 'changeGrandSonEntsName' + this.entBlurNameRepeatIndex\r\n )\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n }\r\n if (\r\n this.attrCommentElementId &&\r\n document.getElementById(this.attrCommentElementId)\r\n ) {\r\n document\r\n .getElementById(this.attrCommentElementId)\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n if (typeof this.checkAttrNameIndex == 'number') {\r\n if (\r\n document.getElementById(\r\n this.formData.ents[this.entAttrIndex].attributeList[\r\n this.checkAttrNameIndex\r\n ].name +\r\n 'attrName' +\r\n this.checkAttrNameIndex\r\n )\r\n ) {\r\n document\r\n .getElementById(\r\n this.formData.ents[this.entAttrIndex].attributeList[\r\n this.checkAttrNameIndex\r\n ].name +\r\n 'attrName' +\r\n this.checkAttrNameIndex\r\n )\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n let sonAttr = this.formData.ents[this.sonAttrIndex]\r\n if (sonAttr) {\r\n document\r\n .getElementById(\r\n sonAttr.children[this.entAttrIndex].attributeList[\r\n this.checkAttrNameIndex\r\n ].name +\r\n 'attrName' +\r\n this.checkAttrNameIndex\r\n )\r\n .getElementsByTagName('div')[0].firstElementChild.style.border = ''\r\n }\r\n this.checkAttrNameIndex = null\r\n }\r\n if (this.defaultValueType) {\r\n document.getElementsByName(\r\n 'defaultValue' + this.defaultValueIndex\r\n )[0].style.border = ''\r\n this.defaultValueType = null\r\n }\r\n if (\r\n this.attrLenElementId &&\r\n document.getElementById(this.attrLenElementId)\r\n ) {\r\n document.getElementById(this.attrLenElementId).style.border = ''\r\n }\r\n if (\r\n this.attrDecimaElementId &&\r\n document.getElementById(this.attrDecimaElementId)\r\n ) {\r\n document.getElementById(this.attrDecimaElementId).style.border = ''\r\n }\r\n },\r\n //发布并保存实体\r\n deployedEntData() {\r\n let formData = this.formData\r\n this.formData.deployed = true\r\n let _this = this\r\n let loading = this.$loading()\r\n form\r\n .saveEntData(this.formData)\r\n .then(resp => {\r\n if (resp.data.state) {\r\n this.$confirm('发布成功,是否跳转到业务表单页面?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n loading.close()\r\n //this.handleDialogClose();\r\n if (!formData.id) {\r\n formData.id = resp.data.message\r\n formData.pkVal = resp.data.message\r\n }\r\n _this.$refs.formTemplateDialog.showDialog(formData.id)\r\n })\r\n .catch(() => {\r\n loading.close()\r\n this.handleDialogClose()\r\n this.dataView.id = ''\r\n })\r\n }\r\n })\r\n .catch(() => {\r\n this.formData.deployed = false\r\n })\r\n },\r\n //保存实体\r\n saveEntData() {\r\n let loading = this.$loading()\r\n let formData = this.formData\r\n if (this.isSave) {\r\n this.formData.deployed = true\r\n }\r\n form.saveEntData(this.formData).then(resp => {\r\n if (resp.data.state) {\r\n if (!this.isSave) {\r\n this.$confirm('保存成功,是否退出?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n loading.close()\r\n this.$emit('loadTableData')\r\n this.handleDialogClose()\r\n this.dataView.id = ''\r\n })\r\n .catch(() => {\r\n loading.close()\r\n if (resp.data.message != null) {\r\n this.dataView.id = resp.data.message\r\n }\r\n this.$emit('opreta', 'edit')\r\n this.$emit('opretaId', this.dataView.id)\r\n })\r\n } else {\r\n this.$confirm('保存成功,是否跳转到业务表单页面', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n if (this.isSave) {\r\n if (!formData.id) {\r\n formData.id = resp.data.message\r\n formData.pkVal = resp.data.message\r\n }\r\n this.$refs.formTemplateDialog.showDialog(formData.id)\r\n }\r\n })\r\n .catch(() => {\r\n this.$emit('loadTableData')\r\n this.handleDialogClose()\r\n this.dataView.id = ''\r\n })\r\n .finally(() => loading.close())\r\n }\r\n }\r\n })\r\n },\r\n conFirmTemplate(templateModel) {\r\n this.$router.push({\r\n path: '/sysplat/form#formManager',\r\n query: {\r\n bos: [this.formData],\r\n templateConf: templateModel\r\n }\r\n })\r\n },\r\n cancelFirmTemplate() {\r\n this.handleDialogClose()\r\n },\r\n //外部表数据加入表单\r\n handleSelectExternal(externalEnt) {\r\n let {entExts, addFk, entExtsTable} = externalEnt\r\n\r\n let selectEnt = this.entIndex\r\n this.entIndex = entExts.index\r\n let data = {}\r\n if (this.formData.ents.length == 0 && !addFk) {\r\n entExts.show = '主实体-外'\r\n entExts.relation = 'main'\r\n this.formData.ents.splice(this.entIndex, 1, entExts)\r\n this.formData.ents[this.entIndex].attributeList = entExtsTable\r\n data = this.formData.ents[this.entIndex]\r\n } else if (entExts.type == 'sunTable' && !addFk) {\r\n if (!this.formData.ents[selectEnt].children) {\r\n this.$set(this.formData.ents[selectEnt], 'children', [])\r\n }\r\n this.formData.ents[selectEnt].children.push(entExts)\r\n this.grandSonIndex = this.formData.ents[selectEnt].children.length - 1\r\n this.formData.ents[selectEnt].children[\r\n this.grandSonIndex\r\n ].attributeList = entExtsTable\r\n data = this.formData.ents[selectEnt].children[this.grandSonIndex]\r\n data.desc = entExts.comment\r\n data.name = entExts.name\r\n data.show = '孙实体-外'\r\n } else if (!addFk) {\r\n this.formData.ents.push(entExts)\r\n this.formData.ents[this.entIndex].attributeList = entExtsTable\r\n data = this.formData.ents[this.entIndex]\r\n } else if (addFk) {\r\n this.entIndex = selectEnt\r\n this.formData.ents[selectEnt].fk = entExts.fk\r\n this.formData.ents[selectEnt].attributeList = entExtsTable\r\n data = this.formData.ents[selectEnt]\r\n }\r\n let _this = this\r\n data.attributeList = data.attributeList.filter(item => {\r\n let val = item.name.toUpperCase()\r\n return (\r\n val != entExts.pk.toUpperCase() &&\r\n val != 'F_FORM_DATA_REV_' &&\r\n val != 'REF_ID_' &&\r\n (!entExts.fk || val != entExts.fk.toUpperCase()) &&\r\n val.toUpperCase() != 'TENANT_ID_'\r\n )\r\n })\r\n data.attributeList.forEach((item, index) => {\r\n item.index = index + 1\r\n // 数字类型长度\r\n if (item.attrLength == 0 && item.intLen != 0) {\r\n item.attrLength = item.intLen\r\n }\r\n })\r\n if (entExts.type == 'sunTable') {\r\n this.getGrandSonEntsByIndex(this.grandSonIndex, selectEnt)\r\n } else {\r\n this.getEntsByIndex(this.entIndex)\r\n }\r\n },\r\n //创建表单\r\n createTableForm() {\r\n if (!this.dataView.id) {\r\n this.deployedEntData()\r\n } else {\r\n this.isSave = true\r\n //this.saveEntData();\r\n this.deployedEntData()\r\n }\r\n },\r\n chineseFormat(id, list, param, index, v) {\r\n let _this = this\r\n let d = document.getElementById(id)\r\n // disabled 或者 readonly 时 不需要请求\r\n let timer = null\r\n if (d === null || d.__vue__.disabled || d.__vue__.readonly || !v) return\r\n if (timer) {\r\n clearTimeout(timer)\r\n }\r\n timer = setTimeout(function() {\r\n req\r\n .request({\r\n url: `${window.context.uc}/base/tools/v1/getPinyin`,\r\n method: 'GET',\r\n params: {chinese: v, type: 0}\r\n })\r\n .then(res => {\r\n if (res.data.state) {\r\n list[index][param] = res.data.value\r\n main.$nextTick(() => {\r\n main.$validator.validate()\r\n })\r\n }\r\n })\r\n }, 500)\r\n },\r\n addExternalTable(tableName) {\r\n // 添加外部表\r\n this.externalTables.push(tableName)\r\n }\r\n }\r\n}\r\n",null]}