From dfec0257c8a662fec8e3f27667355f9b1ca09a20 Mon Sep 17 00:00:00 2001 From: fujunling <2984387807@qq.com> Date: 星期二, 30 五月 2023 09:50:38 +0800 Subject: [PATCH] 解决api配置冲突 --- Source/UBCS-WEB/src/components/FormTemplate/index.vue | 546 ++++++++++++++++++++++++------------------------------ 1 files changed, 245 insertions(+), 301 deletions(-) diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue index 739da06..189b7b1 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue @@ -3,46 +3,89 @@ :visible.sync="dialogVisible" v-dialogDrag top="0vh" - title="鎻愮ず" + :title="title" class="avue-dialog avue-dialog--top" :width="dialogOptions.width" append-to-body + v-if="dialogVisible" > - <avue-form :option="option" v-loading="loading" ref="form"> + <avue-form + v-model="form" + :option="option" + v-loading="loading" + ref="form" + :key="index" + > <template :slot="item.prop + 'Label'" v-for="item in option.column"> - <div> - <span>{{ item.label }}</span> + <span> + <span>{{ item.label }} </span> <el-tooltip v-if="item.keyAttr" class="item" effect="dark" - content="鍏抽敭灞炴��" + content="璇ュ睘鎬т负鍏抽敭灞炴��" placement="top-start" > <i class="el-icon-star-on key_attr_icon"></i> </el-tooltip> - </div> + <el-tooltip + v-if="item.tip" + class="item" + effect="dark" + :content="item.tip" + placement="top-start" + > + <i class="el-icon-warning"></i> + </el-tooltip> + </span> </template> </avue-form> - <div class="avue-dialog__footer"> + <FindLike ref="findLike"></FindLike> + <div class="avue-dialog__footer" v-if="type !== 'detail'"> <el-button @click="close()">鍙� 娑�</el-button> - <el-button @click="close()" type="primary">纭� 瀹�</el-button> + <el-button @click="close()" type="primary" :loading="submitBtnLoading">纭� 瀹�</el-button> + <el-button @click="findLinkSubmit" type="primary">鐩镐技鍍忔煡璇�</el-button> </div> </el-dialog> </template> <script> -import { getFormTemplate } from "../../api/common"; +import { getFormTemplate, executeCode, findLike } from "@/api/formTemplate"; +import { getDictionary } from "../../api/system/dict"; +import FindLike from "./FindLike.vue"; export default { name: "FormTemplate", + components: { FindLike }, props: { visible: { type: Boolean, default: false, }, + disabledProp: { + type: Array, + default: () => ["id"], + }, + templateOid: { + type: String, + default: "", + }, + codeClassifyOid: { + type: String, + default: "", + }, + type: { + type: String, + default: 'add' + }, + title: { + type: String, + default: '琛ㄥ崟妯℃澘' + } }, data() { return { + index: 0, + form: {}, loading: false, dialogOptions: { width: "60%", @@ -59,8 +102,11 @@ combox: "select", truefalse: "switch", number: "number", + textarea: "textarea", datetime: "datetime", + date: "date" }, + // 鍋囨暟鎹� testItems: [ { comboxKey: null, @@ -72,31 +118,6 @@ extendAttrMap: null, extendAttrString: null, field: "id", - hidden: true, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "浠e彿", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: "wupin${lcstatus}", - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "lcstatus", hidden: false, keyAttr: false, prefix: "", @@ -106,7 +127,31 @@ selectLibFlag: "", showField: null, suffix: "", - text: "鐘舵��", + text: "浼犲�肩鐢ㄥ姛鑳�", + tooltips: "", + type: "combox", + unique: false, + verify: "", + }, + { + customClass: null, + data: null, + dateFormate: "", + defaultValue: "", + displayExtension: null, + extendAttrMap: null, + extendAttrString: null, + field: "state", + hidden: false, + keyAttr: false, + prefix: "", + readOnly: true, + referConfig: null, + required: false, + selectLibFlag: "", + showField: null, + suffix: "", + text: "鎺ュ彛绂佺敤鍔熻兘", tooltips: "", type: "combox", unique: false, @@ -131,7 +176,7 @@ selectLibFlag: "", showField: null, suffix: "鏂囨湰鍚庣紑娴嬭瘯", - text: "鍓嶅悗缂�", + text: "鍓嶅悗缂�鍔熻兘", tooltips: "", type: "text", unique: false, @@ -156,14 +201,14 @@ selectLibFlag: "", showField: null, suffix: "", - text: "姝e垯鏍¢獙", + text: "姝e垯鏍¢獙鍔熻兘", tooltips: "璇疯緭鍏ユ暟瀛�", type: "text", unique: false, verify: "/[0-9]/", }, { - comboxKey: "materialclassify_data", + comboxKey: null, customClass: null, data: [ { @@ -182,7 +227,7 @@ displayExtension: null, extendAttrMap: null, extendAttrString: null, - field: "materialclassify", + field: "dataSelect", hidden: false, keyAttr: false, prefix: "", @@ -192,7 +237,32 @@ selectLibFlag: "", showField: null, suffix: "", - text: "鐗╂枡鍒嗙被", + text: "鐩存帴杩斿洖涓嬫媺", + tooltips: "", + type: "combox", + unique: false, + verify: "", + }, + { + comboxKey: "formTemplateTest", + customClass: null, + data: [], + dateFormate: "", + defaultValue: "", + displayExtension: null, + extendAttrMap: null, + extendAttrString: null, + field: "dictSelect", + hidden: false, + keyAttr: false, + prefix: "", + readOnly: false, + referConfig: null, + required: false, + selectLibFlag: "", + showField: null, + suffix: "", + text: "瀛楀吀杩斿洖涓嬫媺", tooltips: "", type: "combox", unique: false, @@ -232,7 +302,7 @@ displayExtension: null, extendAttrMap: null, extendAttrString: null, - field: "secondfl", + field: "datetime", hidden: false, keyAttr: false, prefix: "", @@ -242,7 +312,7 @@ selectLibFlag: "", showField: null, suffix: "", - text: "鏃堕棿閫夋嫨鍣�", + text: "鏃ユ湡鏃堕棿閫夋嫨鍣�", tooltips: "", type: "datetime", unique: false, @@ -257,9 +327,9 @@ displayExtension: null, extendAttrMap: null, extendAttrString: null, - field: "thrifl", + field: "time", hidden: false, - keyAttr: true, + keyAttr: false, prefix: "", readOnly: false, referConfig: null, @@ -267,9 +337,9 @@ selectLibFlag: "", showField: null, suffix: "", - text: "鍏抽敭灞炴��", + text: "鏃堕棿閫夋嫨鍣�", tooltips: "", - type: "text", + type: "date", unique: false, verify: "", }, @@ -292,7 +362,7 @@ selectLibFlag: "", showField: null, suffix: "", - text: "閿�鍞墿鏂�", + text: "寮�鍏�", tooltips: "", type: "truefalse", unique: false, @@ -303,7 +373,7 @@ customClass: null, data: null, dateFormate: "", - defaultValue: "", + defaultValue: "鎴戞槸榛樿鍊�", displayExtension: null, extendAttrMap: null, extendAttrString: null, @@ -317,7 +387,7 @@ selectLibFlag: "", showField: null, suffix: "", - text: "鍥惧彿", + text: "榛樿鍊煎姛鑳�", tooltips: "鎻愮ず", type: "text", unique: false, @@ -334,7 +404,7 @@ extendAttrString: null, field: "xinghaoguige", hidden: false, - keyAttr: false, + keyAttr: true, prefix: "", readOnly: false, referConfig: null, @@ -342,7 +412,7 @@ selectLibFlag: "", showField: null, suffix: "", - text: "瑙勬牸鍨嬪彿锛圕APP锛�", + text: "灞炴�у叧閿��", tooltips: "", type: "text", unique: false, @@ -362,189 +432,12 @@ keyAttr: false, prefix: "", readOnly: false, - referConfig: { - backPath: "", - displayTable: null, - height: null, - initSort: null, - loadType: "all", - mapFields: "", - method: "GET", - muti: false, - onlyLeaf: false, - paramForFormKey: "", - parentFieldName: null, - parentUsedField: null, - parentValue: null, - referContent: null, - referType: "appendix", - remoteSort: false, - tableConfig: { - cols: [ - { - align: "left", - colspan: 1, - comboxKey: null, - data: [], - dateFormate: null, - edit: null, - editConfig: null, - event: null, - field: "id", - fieldType: "text", - fixed: null, - hidden: false, - minWidth: null, - optionButtons: null, - optionField: false, - optionJsMap: null, - queryField: null, - referConfig: null, - rowspan: 1, - showField: null, - sort: true, - sortField: "id", - style: null, - templet: null, - title: "缂栧彿", - unresize: false, - width: 150, - }, - { - align: "left", - colspan: 1, - comboxKey: null, - data: [], - dateFormate: null, - edit: null, - editConfig: null, - event: null, - field: "name", - fieldType: "text", - fixed: null, - hidden: false, - minWidth: null, - optionButtons: null, - optionField: false, - optionJsMap: null, - queryField: null, - referConfig: null, - rowspan: 1, - showField: null, - sort: true, - sortField: "name", - style: null, - templet: null, - title: "鍚嶇О", - unresize: false, - width: 180, - }, - ], - oid: null, - page: { - limit: 15, - page: 1, - }, - queryColumns: [ - { - align: "left", - colspan: 1, - comboxKey: null, - data: [], - dateFormate: null, - edit: null, - editConfig: null, - event: null, - field: "id", - fieldType: "text", - fixed: null, - hidden: false, - minWidth: null, - optionButtons: null, - optionField: false, - optionJsMap: null, - queryField: null, - referConfig: null, - rowspan: 1, - showField: null, - sort: true, - sortField: "id", - style: null, - templet: null, - title: "缂栧彿", - unresize: false, - width: 150, - }, - { - align: "left", - colspan: 1, - comboxKey: null, - data: [], - dateFormate: null, - edit: null, - editConfig: null, - event: null, - field: "name", - fieldType: "text", - fixed: null, - hidden: false, - minWidth: null, - optionButtons: null, - optionField: false, - optionJsMap: null, - queryField: null, - referConfig: null, - rowspan: 1, - showField: null, - sort: true, - sortField: "name", - style: null, - templet: null, - title: "鍚嶇О", - unresize: false, - width: 180, - }, - ], - }, - textField: "name", - type: "default", - url: "", - useFormKey: "", - valueField: "oid", - where: { - materialname: "璁¢噺鍗曚綅", - }, - }, + tip: "鎴戞槸鎻愮ず鍔熻兘", required: false, selectLibFlag: "", showField: "jiliangdwname", suffix: "", - text: "璁¢噺鍗曚綅", - tooltips: "", - type: "refer", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "chukufangshi", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鍑哄簱鏂瑰紡", + text: "鎻愮ず鍔熻兘", tooltips: "", type: "text", unique: false, @@ -556,10 +449,10 @@ data: null, dateFormate: "", defaultValue: "", - displayExtension: null, + displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2", extendAttrMap: null, extendAttrString: null, - field: "beizhushuoming", + field: "fun1", hidden: false, keyAttr: false, prefix: "", @@ -569,7 +462,7 @@ selectLibFlag: "", showField: null, suffix: "", - text: "澶囨敞璇存槑", + text: "鍙傛暟1娴嬭瘯js", tooltips: "", type: "text", unique: false, @@ -581,77 +474,50 @@ data: null, dateFormate: "", defaultValue: "", - displayExtension: null, + displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2", extendAttrMap: null, extendAttrString: null, - field: "hesuanfenlei", + field: "fun2", hidden: false, keyAttr: false, prefix: "", readOnly: false, - referConfig: { - backPath: "", - displayTable: null, - height: null, - initSort: null, - loadType: "all", - mapFields: "", - method: "GET", - muti: false, - onlyLeaf: false, - paramForFormKey: "", - parentFieldName: "PARENTCODECLASSIFYOID", - parentUsedField: "oid", - parentValue: - "\\IN(SELECT oid from PLATFORMBTM_CODECLASSIFY where id ='hesuanfenlei')", - referContent: null, - referType: "codeclassify", - remoteSort: false, - tableConfig: null, - textField: "name", - type: "tree", - url: "", - useFormKey: "", - valueField: "oid", - where: null, - }, required: false, selectLibFlag: "", showField: "hesuanfenleiname", suffix: "", - text: "鏍哥畻鍒嗙被", + text: "鍙傛暟2娴嬭瘯js", tooltips: "", - type: "refer", + type: "text", unique: false, verify: "", }, { - comboxKey: "Eummaterialtype", + comboxKey: null, customClass: null, data: null, dateFormate: "", - defaultValue: "1001", - displayExtension: null, + defaultValue: "", + displayExtension: "", extendAttrMap: null, extendAttrString: null, - field: "materialtype", + field: "sum", hidden: false, keyAttr: false, prefix: "", - readOnly: false, - referConfig: null, + readOnly: true, required: false, selectLibFlag: "", - showField: null, + showField: "", suffix: "", - text: "鐗╂枡绫诲瀷", + text: "鍙傛暟1鍙傛暟2姹傚拰", tooltips: "", - type: "combox", + type: "text", unique: false, verify: "", }, { - comboxKey: "myDataSecret", + comboxKey: null, customClass: null, data: null, dateFormate: "", @@ -659,7 +525,7 @@ displayExtension: null, extendAttrMap: null, extendAttrString: null, - field: "secretgrade", + field: "textarea", hidden: false, keyAttr: false, prefix: "", @@ -669,18 +535,42 @@ selectLibFlag: "", showField: null, suffix: "", - text: "secretGrade", + text: "鏂囨湰鍩�", tooltips: "", - type: "combox", + type: "textarea", + unique: false, + verify: "", + }, + { + comboxKey: null, + customClass: null, + data: null, + dateFormate: "", + defaultValue: "", + displayExtension: null, + extendAttrMap: null, + extendAttrString: null, + field: "cz", + hidden: false, + keyAttr: false, + prefix: "", + readOnly: true, + referConfig: true, + required: false, + selectLibFlag: "", + showField: "depId", + suffix: "", + text: "鍙傜収", + tooltips: "", + type: "text", unique: false, verify: "", }, ], + submitBtnLoading: false }; }, - created() { - this.preOrSufFixShow(); - }, + created() {}, computed: { dialogVisible: { get() { @@ -695,10 +585,8 @@ getFormTemplate() { this.loading = true; getFormTemplate({ - templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A", - codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96", - page: 1, - limit: 30, + templateOid: this.templateOid, + codeClassifyOid: this.codeClassifyOid, }) .then((res) => { if (res.status === 200) { @@ -714,16 +602,25 @@ }); }, templateRender() { - const items = this.testItems; - // const items = this.templateData.formDefineVO.items; + const items = this.templateData.formDefineVO.items; + let column = []; + let dictKeys = []; items.forEach((item) => { // 闅愯棌琛ㄥ崟鍏冪礌 if (item.hide) { return; } - // if (item.field === 'id' || item.field === 'lcstatus') { - // item.readOnly = true - // } + if ( + item.type === "combox" && + item.comboxKey && + (!Array.isArray(item.dicData) || item.dicData.length === 0) + ) { + dictKeys.push({ dictKey: item.comboxKey, field: item.field }); + } + // 绂佺敤閮ㄥ垎灞炴�э紙澶栭儴浼犲�肩鐢ㄥ拰鍙傜収绂佺敤锛� + if (this.disabledProp.includes(item.field) || this.$utilFunc.isValuableObj(item.referConfig)) { + item.readOnly = true; + } // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰 let message = "璇烽�夋嫨"; let trigger = "change"; @@ -736,10 +633,10 @@ let columnItem = { label: item.text, labelslot: true, - prop: item.field, + prop: this.$utilFunc.isValuableObj(item.referConfig) ? (item.showField || item.field) : item.field, type: this.columnType[item.type], - dicData: this.getDictData(item.type, item.dicData), - disabled: item.readOnly, + dicData: this.getDataList(item.type, item.data), + disabled: this.type === 'detail' ? true : item.readOnly, prepend: this.preOrSufFixShow("text", item.prefix), append: this.preOrSufFixShow("text", item.suffix), prefixIcon: this.preOrSufFixShow("icon", item.prefix), @@ -747,7 +644,14 @@ valueFormat: item.dateFormate, format: item.dateFormate, keyAttr: item.keyAttr, - value: 1, + value: item.defaultValue, + tip: item.tip, + comboxKey: item.comboxKey, + change: () => { + this.changeFun(item.displayExtension, item.prop); + }, + span: item.type === "file" || item.type === "textarea" ? 24 : null, + click: this.clickFun(item.referConfig), rules: [ { required: item.required, @@ -755,7 +659,8 @@ trigger, }, { - pattern: item.verify, + // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗� + pattern: item.verify ? item.verify : /[\s\S.]*/g, message: item.tooltips, trigger, }, @@ -765,12 +670,21 @@ value: "key", }, }; - console.log(this.$refs.form, "form"); - this.option.column.push(columnItem); + column.push(columnItem); + this.$set(this.option, "column", column); }); + this.index++; + this.geDictData(dictKeys); }, - close() { - this.dialogVisible = false; + changeFun(displayExtension, prop) { + // executeCode({displayExtension, data: this.form}).then(res => { + // this.form[prop] = res.data.data + // }) + }, + clickFun(referConfig) { + if (this.type === 'detail') { + return + } }, // 鍓嶅悗缂� preOrSufFixShow(type, val) { @@ -780,17 +694,17 @@ return val; } }, - // 鑾峰彇瀛楀吀鏁版嵁 - getDictData(type, dicData) { + // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹� + getDataList(type, dicData) { if (type === "truefalse") { return [ { + key: false, value: "鍚�", - key: 0, }, { + key: true, value: "鏄�", - key: 1, }, ]; } else if (type === "combox") { @@ -798,11 +712,37 @@ } return []; }, + // 鑾峰彇瀛楀吀鏁版嵁 + geDictData(dictKeys) { + dictKeys.forEach((dictObj) => { + getDictionary({ code: dictObj.dictKey }).then((res) => { + if (res.data && res.data.code === 200) { + this.option.column = this.option.column.map((item) => { + if (item.field === dictObj.field) { + let dictData = (res.data.data || []).map((itm) => { + itm.value = itm.dictValue; + itm.key = itm.dictKey; + return itm; + }); + item.dicData = dictData; + } + return item; + }); + } + }); + }); + }, + findLinkSubmit() { + this.templateData.templateVO.data = this.form + console.log(this.$refs.findLike, 'this.$refs.findLike'); + this.$refs.findLike.findLinkClick(this.templateData.templateVO) + } }, watch: { visible(newV) { if (newV) { this.getFormTemplate(); + // this.templateRender() } }, }, @@ -816,4 +756,8 @@ top: 2px; color: red; } +// 瑙e喅swich缁勪欢涓嶅瀭鐩村眳涓殑闂 +/deep/ .el-switch { + vertical-align: baseline; +} </style> -- Gitblit v1.9.3