From 007e33dd8728b4557917a2ffa2e2449865602742 Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期一, 04 十二月 2023 16:10:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS-WEB/src/components/FormTemplate/index.vue | 455 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 350 insertions(+), 105 deletions(-) diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue index b6946b6..561cb91 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue @@ -1,88 +1,114 @@ <template> <el-dialog - :visible.sync="dialogVisible" v-if="dialogVisible" v-dialogDrag - top="5vh" :title="title" + :visible.sync="dialogVisible" :width="width" append-to-body + class="avue-dialog avue-dialog--top" + top="-5vh" @opened="openDialog" > - <FormTempalte + <FormTemplate + v-if="dialogVisible" key="masterForm" + ref="FormTemplate" v-bind="$attrs" - :visible="visible" - :type="type" + :TreeValue="TreeValue" + :eventList="eventList" :rowOid="rowOid" + :status="status" :templateOid="templateOid" - ref="FormTempalte" + :type="type" + data-key="masterForm" + @dataYearCode="dataYearHandler" @getFormData="getFormData" - ></FormTempalte> - + @isShow="isShowHandler" + ></FormTemplate> <div - class="tab_box" v-if=" type !== 'detail' && dialogVisible && (showCodeApply || showResembleQuery) && type !== 'preview' " + class="tab_box" > <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick"> - <el-tab-pane label="鐮佸�肩敵璇�" name="codeApply"> - <FormTempalte - v-bind="$attrs" - :type="type" - :selfColumnType="selfColumnType" + <el-tab-pane v-if="showCodeApply" label="鐮佸�肩敵璇�" name="codeApply"> + <FormTemplate + key="codeApplyForm" ref="CodeApply" :selfColumnConfig="selfColumnConfig" - ref="CodeApply" + :selfColumnType="selfColumnType" + :type="type" + data-key="codeApplyForm" + secDTOListv-bind="$attrs" + @attrList="attrListForm" @getFormData="getCodeApplyFormData" @referConfigDataUpdate="referConfigDataUpdate" - ></FormTempalte> + ></FormTemplate> </el-tab-pane> <el-tab-pane + v-if="showResembleQuery" label="鐩镐技椤规煡璇�" name="resembleQuery" - v-if="showResembleQuery" > <ResembleQuery - v-bind="$attrs" ref="resembleQueryRef" - :hasResemble="this.hasResemble" - :column="this.resembleTableColumn" + v-bind="$attrs" :codeClassifyOid="codeClassifyOid" + :column="this.resembleTableColumn" :form="this.form" + :hasResemble="this.hasResemble" :templateOid="templateOid" ></ResembleQuery> </el-tab-pane> </el-tabs> </div> - <div class="avue-dialog__footer" v-if="type !== 'detail'"> - <el-button @click="close()">鍙� 娑�</el-button> - <el-button @click="submit()" type="primary" :loading="submitBtnLoading">{{ - submitText - }}</el-button> - <el-button - @click="resembleQuerySubmit" - type="primary" - v-if="showResembleQuery" - >鐩镐技鍍忔煡璇�</el-button - > - </div> + <template #footer> + <div v-if="type !== 'detail'" class=""> + <el-button size="small" @click="close()">鍙� 娑�</el-button> + <el-button + :loading="submitBtnLoading" + size="small" + type="primary" + @click="submit()" + >{{ submitText }} + </el-button + > + <el-button + v-if="showResembleQuery" + size="small" + type="primary" + @click="resembleQuerySubmit" + >鐩镐技鍍忔煡璇� + </el-button + > + </div> + </template> </el-dialog> </template> <script> -import { getCodeRule, getFormTemplate } from "@/api/formTemplate.js"; -import FormTempalte from "./FormTempalte"; +import {getCodeRule, getFormTemplate} from "@/api/formTemplate.js"; +import FormTemplate from "./FormTemplate"; import ResembleQuery from "./ResembleQuery"; + export default { name: "FormTemplateDialog", - components: { ResembleQuery, FormTempalte }, + components: {ResembleQuery, FormTemplate}, props: { + status: { + type: String, + default: "", + }, visible: { type: Boolean, default: false, + }, + TreeValue: { + type: String, + default: "", }, type: { type: String, @@ -109,9 +135,18 @@ type: String, default: "纭� 瀹�", }, + setForm: { + type: Object, + default: () => ({}), + }, }, data() { return { + isSeriesType: {}, + attrList: [], + eventList: [], + //鐮佸�肩殑绗簩绉嶅彧璇婚殣钘忔儏鍐� + codeValueApplyStatus: '', loading: false, submitBtnLoading: false, hasResemble: false, @@ -120,13 +155,16 @@ form: {}, codeApplyForm: {}, activeName: "codeApply", - showCodeApply: true, - showResembleQuery: true, + showCodeApply: false, + showResembleQuery: false, selfColumnType: { - codefixedsec: "combox", - codeclassifysec: "refer", - codevariablesec: "text", - coderefersec: "refer", + codefixedsec: "combox",//鍥哄畾鐮佹 + codeclassifysec: "refer",//鍒嗙被鐮佹 + codevariablesec: "text",//鍙彉鐮佹 + coderefersec: "refer",//寮曠敤鐮佹 + codeattrsec: "text", + codelevelsec: "text", + codedatesec: "date" }, selfColumnConfig: { function: { @@ -145,6 +183,7 @@ label: "name", maxlength: "codeSecLength", data: "fixedValueVOList", + dateFormate: "codeDateFormatStr" }, directVoluation: { search: true, @@ -186,9 +225,12 @@ "copyfromversion", "secretgrade", ], + codeRuleOid: "", + isShowStatus: "" }; }, - created() {}, + created() { + }, computed: { dialogVisible: { get() { @@ -199,11 +241,20 @@ }, }, }, + watch: { + codeApplyForm: { + handler(newval, oldval) { + // console.log('newval',newval) + } + } + }, methods: { openDialog() { + //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢� this.getFormTemplate(); - if (this.type === "add") { + if (this.type === "add" || (this.type !== "add" && this.status === "amend")) { this.getCodeRule(); + return; } }, close() { @@ -211,6 +262,7 @@ }, // 鎺ュ彛鑾峰彇琛ㄥ崟鏁版嵁 getFormTemplate() { + //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢� getFormTemplate({ templateOid: this.templateOid, codeClassifyOid: this.codeClassifyOid, @@ -225,56 +277,131 @@ if (this.hasResemble) { this.activeName = "resembleQuery"; this.showResembleQuery = true; + } else { + this.showResembleQuery = false; } - this.$refs.FormTempalte.templateRender(res.data.formDefineVO.items); + //浼犻�掕〃鍗曚笂鏂瑰尯鍩熸暟鎹� 锛堟柊澧炲拰淇敼锛� + this.$nextTick(() => { + this.$refs.FormTemplate.templateRender( + res.data.formDefineVO.items + ); + this.eventList = res.data.templateVO.attributes + // this.$refs.FormTemplate.$emit('eventList', res.data.templateVO.attributes); + if (Object.keys(this.setForm).length > 0) { + this.$refs.FormTemplate.form = this.setForm; + } + }); } }) - .catch((err) => { + .catch(() => { this.loading = false; }); }, // 鑾峰彇鐮佸�肩敵璇锋暟鎹� getCodeRule() { - getCodeRule({ codeClassifyOid: this.codeClassifyOid }).then((res) => { + let that = this; + getCodeRule({codeClassifyOid: that.codeClassifyOid}).then((res) => { if (res.data && res.data.code === 200) { + that.codeRuleOid = res.data.data.oid; const typeList = [ - "codefixedsec", - "codeclassifysec", + //灞炴�х爜娈� 鍙 + "codeattrsec", + //鍙彉鐮佹 "codevariablesec", + //鍥哄畾鐮佹 + "codefixedsec", + //鍒嗙被鐮佹 + "codeclassifysec", + //鏃ユ湡鐮佹 鍙 + "codedatesec", + //寮曠敤鐮佹 "coderefersec", + //灞傜骇鐮佹 鍙 + "codelevelsec", + //娴佹按鐮佹 闅愯棌 ]; - this.secVOList = (res.data.data.secVOList || []).filter((item) => - typeList.includes(item) + that.secVOList = (res.data.data.secVOList || []).filter((item) => + typeList.includes(item.secType) ); - this.$nextTick(() => { - if (this.secVOList.length > 0 && this.type === "add") { - this.showCodeApply = true; - this.activeName = "codeApply"; - this.$refs.CodeApply.templateRender(this.secVOList); - } else { - this.showCodeApply = false; - } - }); + if (that.secVOList.length > 0 && that.type === "add" ||(that.type !== "add" && that.status === "amend")) { + that.showCodeApply = true; + that.activeName = "codeApply"; + + this.$nextTick(() => { + that.$refs.CodeApply.templateRender(that.secVOList, this.TreeValue); + }); + } else { + that.showCodeApply = false; + } } }); }, getFormData(form) { this.form = form; + //灞炴�х爜娈佃祴鍊� + if (this.attrList) { + this.attrList.forEach(item => { + if (this.form.hasOwnProperty(item.referAttributeId)) { + this.codeApplyForm[item.oid] = this.form[item.referAttributeId]; + } + }) + } + + }, + //绯诲垪鍙疯鍒� + isShowHandler(val) { + this.isShowStatus = val; + + this.secVOList.forEach(item => { + if (item.name === "绯诲垪鍙�") { + this.$set(item, "readOnly", val) + } + }) + if (this.$refs.CodeApply) { // 娣诲姞涓�涓垽鏂鍙ワ紝妫�鏌ュ璞℃槸鍚︿负undefined + this.$refs.CodeApply.changeChildItem(this.secVOList, this.TreeValue, this.type); + } + }, + //骞翠唬鍙� + dataYearHandler(val) { + const readOnlyValue = val && Object.values(val).every(value => value !== ''); + + this.secVOList.forEach(item => { + if (item.name === "骞翠唬鍙�") { + const year = readOnlyValue ? val.value.slice(0, 4) : item.codeDateValue; + this.codeApplyForm[item.oid] = year; + this.$set(item, "readOnly", readOnlyValue); + } + }); + + if (this.$refs.CodeApply) { + this.$refs.CodeApply.changeChildItem(this.secVOList, this.TreeValue, this.type); + } + }, + //灞炴�х爜娈佃祴鍊� + attrListForm(attrListForm) { + this.attrList = attrListForm; }, getCodeApplyFormData(codeApplyForm) { + // console.log("codeApplyForm",codeApplyForm) this.codeApplyForm = codeApplyForm; }, // 鍙傜収缁勪欢鏁版嵁鍙樻洿 referConfigDataUpdate(data) { - const { field } = data; + const {field} = data; + let childItems = []; this.secVOList = this.secVOList.map((item) => { if (item.parentClassifySecOid === field) { this.$refs.CodeApply.form[item.oid] = undefined; this.$refs.CodeApply.form[item.name] = undefined; + item.readOnly = false; + item.referConfig.extraParams.parentClassifyValueOid = data.value; + item.referConfig.reloadData = true; + childItems.push(item) } return item; }); - this.$refs.CodeApply.templateRender(this.secVOList); + //this.$refs.CodeApply.templateRender(this.secVOList,this.TreeValue); + this.$refs.CodeApply.changeChildItem(childItems, this.TreeValue, this.type); }, resembleQuerySubmit() { this.activeName = "resembleQuery"; @@ -286,49 +413,159 @@ } }, async submit() { - // 杩涜琛ㄥ崟鏍¢獙 - const formValidate = await this.$refs.FormTempalte.validate(); - if (!formValidate) return; - let codeValidate = true; - // 杩涜鐮佸�肩敵璇锋牎楠� - if (this.showCodeApply) { - codeValidate = await this.$refs.CodeApply.validate(); - console.log(9999); - if (!codeValidate) return; - } - // 杩涜鐩镐技椤规煡璇� - const resembleQueryList = await this.$refs.resembleQueryRef.resembleQuery( - this.form - ); - if (resembleQueryList.length === 0) { - let resForm = {} - const { defaultValue, formValue } = this.getDefaultValueAndFormValues(this.form) - resForm.data = formValue - resForm = Object.assign({}, resForm, defaultValue) - resForm.secDTOList = [] - for (const key in this.codeApplyForm) { - if (Object.hasOwnProperty.call(this.codeApplyForm, key)) { - const value = this.codeApplyForm[key]; - if (value) { - resForm.secDTOList.push({[key]: value}) + if(this.status){ + // 杩涜琛ㄥ崟鏍¢獙 + const formValidate = await this.$refs.FormTemplate.validate(); + if (!formValidate) return; + let resembleQueryList = []; + if (this.showResembleQuery && this.$refs.resembleQueryRef) { + // 杩涜鐩镐技椤规煡璇� + resembleQueryList = await this.$refs.resembleQueryRef.resembleQuery( + this.form + ); + } + if (resembleQueryList.length > 0) { + await this.$confirm( + `璇ョ墿鏂欏凡鏈�${resembleQueryList.length}鏉$浉浼兼暟鎹紝鏄惁缁х画淇濆瓨锛焋, + "闇�瑕佹偍纭", + { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + } + ); + } + // 鎺掗櫎涓�浜涘瓧娈� + const noData = [ + "jiliangdwname", + "materialtypeText", + "morengongysname", + "$caigouwl", + "$xiaoshouwl", + "$shifoupihaoguanli", + "lcstatus_text", + "hesuanfenleiname", + "$kucunwl", + "lastmodifier" + ]; + + let resForm = {}; + const {defaultValue, formValue} = this.getDefaultValueAndFormValues( + this.form + ); + noData.forEach((item) => { + this.$delete(formValue, item); + }); + const keys = Object.keys(formValue); + keys.forEach((item, index) => { + keys.forEach((itm, idx) => { + if ((item === ('$' + itm)) && idx !== index) { + this.$delete(formValue, keys[index]); + } + }) + }); + + resForm.data = formValue; + resForm.data = Object.assign({}, resForm.data, defaultValue); + resForm.secDTOList = this.secVOList.map((item) => { + return { + secOid: item.oid, + secValue: this.codeApplyForm[item.oid], + }; + }); + //鏍囧噯鐗瑰畾 + const mappings = { + codeStandardEditType: 'operationType', + reviseSeries: 'series', + oldcode: 'oldCode', + releaseDate: 'releaseTime', + isSeries: 'isEditseries' + }; + + for (const key in mappings) { + if (formValue[key]) { + resForm[mappings[key]] = formValue[key]; } } - } + // + resForm.codeClassifyOid = this.codeClassifyOid; + resForm.codeRuleOid = this.codeRuleOid; + resForm.templateOid = this.templateOid; this.$emit("submit", resForm); - } else { - this.$confirm( - `璇ョ墿鏂欏凡鏈�${resembleQueryList.length}鏉$浉浼兼暟鎹紝鏄惁缁х画淇濆瓨锛焋, - "闇�瑕佹偍纭", - { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - } - ) - .then(() => { - this.$emit("submit", this.form); + }else { + // 杩涜琛ㄥ崟鏍¢獙 + const formValidate = await this.$refs.FormTemplate.validate(); + if (!formValidate) return; + let codeValidate = true; + // 杩涜鐮佸�肩敵璇锋牎楠� + // if (this.showCodeApply) { + // codeValidate = await this.$refs.CodeApply.validate(); + // if (!codeValidate) { + // this.activeName = "codeApply"; + // return false; + // } + // } + let resembleQueryList = []; + if (this.showResembleQuery && this.$refs.resembleQueryRef) { + // 杩涜鐩镐技椤规煡璇� + resembleQueryList = await this.$refs.resembleQueryRef.resembleQuery( + this.form + ); + } + if (resembleQueryList.length > 0) { + await this.$confirm( + `璇ョ墿鏂欏凡鏈�${resembleQueryList.length}鏉$浉浼兼暟鎹紝鏄惁缁х画淇濆瓨锛焋, + "闇�瑕佹偍纭", + { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + } + ); + } + // 鎺掗櫎涓�浜涘瓧娈� + const noData = [ + "jiliangdwname", + "materialtypeText", + "morengongysname", + "$caigouwl", + "$xiaoshouwl", + "$shifoupihaoguanli", + "lcstatus_text", + "hesuanfenleiname", + "$kucunwl", + "oldcode", + "lastmodifier" + ]; + + let resForm = {}; + const {defaultValue, formValue} = this.getDefaultValueAndFormValues( + this.form + ); + noData.forEach((item) => { + this.$delete(formValue, item); + }); + const keys = Object.keys(formValue); + keys.forEach((item, index) => { + keys.forEach((itm, idx) => { + if ((item === ('$' + itm)) && idx !== index) { + this.$delete(formValue, keys[index]); + } }) - .catch(() => {}); + }); + + resForm.data = formValue; + resForm = Object.assign({}, resForm, defaultValue); + resForm.secDTOList = this.secVOList.map((item) => { + return { + secOid: item.oid, + secValue: this.codeApplyForm[item.oid], + }; + }); + resForm.codeClassifyOid = this.codeClassifyOid; + resForm.codeRuleOid = this.codeRuleOid; + resForm.templateOid = this.templateOid; + this.$emit("submit", resForm); } }, getDefaultValueAndFormValues(form) { @@ -350,11 +587,12 @@ }; }, getType(item) { - return this.selfColumnType[item.sectype]; + return this.selfColumnType[item.secType]; }, getReferConfig(item) { let params = {}; - if (item.sectype == "codeclassifysec") { + if (item.secType == "codeclassifysec") { + //鍒嗙被鐮佹 params = { isMuti: false, type: "grid", @@ -398,25 +636,31 @@ : "", }, }; - } else if (item.sectype == "coderefersec") { + } else if (item.secType == "coderefersec") { + //寮曠敤鐮佹 params = JSON.parse(item.referValueInfo); } return params; }, getDisabled(item) { - if (item.sectype === "codeclassifysec") { + if (item.secType === "codeclassifysec") { if (item.parentClassifySecOid) { if (!this.codeApplyForm[item.parentClassifySecOid]) { return true; } else { - return false; + return item.readOnly || false; } + } else { + return item.readOnly || false; } + } else { + return item.readOnly || false; } }, isRequired(item) { return item.nullableFlag != "true"; }, + //榛樿鍊� getOptionList(item) { if ( Array.isArray(item.fixedValueVOList) && @@ -451,6 +695,7 @@ top: 2px; color: red; } + // 瑙e喅swich缁勪欢涓嶅瀭鐩村眳涓殑闂 /deep/ .el-switch { vertical-align: baseline; -- Gitblit v1.9.3