From f39675fad28f66dd32aee1d3ee805ad99007bce5 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 02 六月 2023 21:13:16 +0800 Subject: [PATCH] 代码整合 --- Source/UBCS-WEB/src/components/FormTemplate/index.vue | 787 ++++++------------------------------------------------- 1 files changed, 92 insertions(+), 695 deletions(-) diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue index 189b7b1..23edc8f 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue @@ -5,569 +5,88 @@ top="0vh" :title="title" class="avue-dialog avue-dialog--top" - :width="dialogOptions.width" + :width="width" append-to-body - v-if="dialogVisible" + @opened="openDialog" > - <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"> - <span> - <span>{{ item.label }} </span> - <el-tooltip - v-if="item.keyAttr" - class="item" - effect="dark" - content="璇ュ睘鎬т负鍏抽敭灞炴��" - placement="top-start" - > - <i class="el-icon-star-on key_attr_icon"></i> - </el-tooltip> - <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> - <FindLike ref="findLike"></FindLike> + <FormTempalte + v-bind="$attrs" + :visible="visible" + :type="type" + v-if="dialogVisible" + ref="FormTempalte" + @getFormTemplateEnd="getFormTemplate" + @getFormData="getFormData" + ></FormTempalte> + + <div class="tab_box" v-if="type !== 'detail' && dialogVisible"> + <el-tabs v-model="activeName" type="card"> + <el-tab-pane label="鐮佸�肩敵璇�" name="codeApply" v-if="showCodeApply"> + <CodeApply ref="CodeApply" v-bind="$attrs" @getCodeRuleOid="getCodeRuleOid"></CodeApply> + </el-tab-pane> + <el-tab-pane + label="鐩镐技椤规煡璇�" + name="resembleQuery" + v-if="showResembleQuery" + > + <ResembleQuery + v-bind="$attrs" + ref="resembleQueryRef" + :hasResemble="this.hasResemble" + :column="this.resembleTableColumn" + :form="this.form" + :codeRuleOid="codeRuleOid" + ></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="close()" type="primary" :loading="submitBtnLoading">纭� 瀹�</el-button> - <el-button @click="findLinkSubmit" type="primary">鐩镐技鍍忔煡璇�</el-button> + <el-button @click="close()" type="primary" :loading="submitBtnLoading" + >纭� 瀹�</el-button + > + <el-button @click="resembleQuerySubmit" type="primary" v-if="hasResemble" + >鐩镐技鍍忔煡璇�</el-button + > </div> </el-dialog> </template> <script> -import { getFormTemplate, executeCode, findLike } from "@/api/formTemplate"; -import { getDictionary } from "../../api/system/dict"; -import FindLike from "./FindLike.vue"; +import FormTempalte from "./FormTempalte"; +import ResembleQuery from "./ResembleQuery"; +import CodeApply from "./CodeApply"; export default { - name: "FormTemplate", - components: { FindLike }, + name: "FormTemplateDialog", + components: { ResembleQuery, FormTempalte, CodeApply }, props: { visible: { type: Boolean, default: false, }, - disabledProp: { - type: Array, - default: () => ["id"], - }, - templateOid: { - type: String, - default: "", - }, - codeClassifyOid: { - type: String, - default: "", - }, type: { type: String, - default: 'add' + default: "add", }, title: { type: String, - default: '琛ㄥ崟妯℃澘' - } + default: "琛ㄥ崟妯℃澘", + }, + width: { + type: String, + default: "80%", + }, }, data() { return { - index: 0, - form: {}, loading: false, - dialogOptions: { - width: "60%", - }, - option: { - emptyBtn: false, - submitBtn: false, - labelWidth: "120", - column: [], - }, - templateData: {}, - columnType: { - text: "input", - combox: "select", - truefalse: "switch", - number: "number", - textarea: "textarea", - datetime: "datetime", - date: "date" - }, - // 鍋囨暟鎹� - testItems: [ - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "id", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - 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, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "oldcode", - hidden: false, - keyAttr: false, - prefix: "el-icon-search", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "鏂囨湰鍚庣紑娴嬭瘯", - text: "鍓嶅悗缂�鍔熻兘", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "materialname", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: true, - selectLibFlag: "", - showField: null, - suffix: "", - text: "姝e垯鏍¢獙鍔熻兘", - tooltips: "璇疯緭鍏ユ暟瀛�", - type: "text", - unique: false, - verify: "/[0-9]/", - }, - { - comboxKey: null, - customClass: null, - data: [ - { - attributes: {}, - key: "model_type", - value: "妯″瀷", - }, - { - attributes: {}, - key: "part_type", - value: "闆朵欢", - }, - ], - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "dataSelect", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - 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, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "firstfl", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鏁板瓧杈撳叆妗�", - tooltips: "", - type: "number", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "yyyy-MM-dd HH:mm:ss", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "datetime", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鏃ユ湡鏃堕棿閫夋嫨鍣�", - tooltips: "", - type: "datetime", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "time", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鏃堕棿閫夋嫨鍣�", - tooltips: "", - type: "date", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "false", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "xiaoshouwl", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "寮�鍏�", - tooltips: "", - type: "truefalse", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "鎴戞槸榛樿鍊�", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "tuhao", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "榛樿鍊煎姛鑳�", - tooltips: "鎻愮ず", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "xinghaoguige", - hidden: false, - keyAttr: true, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "灞炴�у叧閿��", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "jiliangdw", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - tip: "鎴戞槸鎻愮ず鍔熻兘", - required: false, - selectLibFlag: "", - showField: "jiliangdwname", - suffix: "", - text: "鎻愮ず鍔熻兘", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2", - extendAttrMap: null, - extendAttrString: null, - field: "fun1", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鍙傛暟1娴嬭瘯js", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: "this.form.sum = this.form.fun1 + this.form.fun2", - extendAttrMap: null, - extendAttrString: null, - field: "fun2", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - required: false, - selectLibFlag: "", - showField: "hesuanfenleiname", - suffix: "", - text: "鍙傛暟2娴嬭瘯js", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: "", - extendAttrMap: null, - extendAttrString: null, - field: "sum", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: true, - required: false, - selectLibFlag: "", - showField: "", - suffix: "", - text: "鍙傛暟1鍙傛暟2姹傚拰", - tooltips: "", - type: "text", - unique: false, - verify: "", - }, - { - comboxKey: null, - customClass: null, - data: null, - dateFormate: "", - defaultValue: "", - displayExtension: null, - extendAttrMap: null, - extendAttrString: null, - field: "textarea", - hidden: false, - keyAttr: false, - prefix: "", - readOnly: false, - referConfig: null, - required: false, - selectLibFlag: "", - showField: null, - suffix: "", - text: "鏂囨湰鍩�", - tooltips: "", - 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 + submitBtnLoading: false, + hasResemble: false, + resembleTableColumn: [], + secVOList: [], + activeName: "resembleQuery", + codeRuleOid: '', + form: {} }; }, created() {}, @@ -580,170 +99,48 @@ this.$emit("update:visible", val); }, }, + showCodeApply() { + if (this.type === "add") { + if (this.hasResemble && this.secVOList.length === 0) { + return false; + } + } else { + if (this.hasResemble) { + return false; + } + } + return true; + }, + showResembleQuery() { + return this.hasResemble; + }, }, methods: { - getFormTemplate() { - this.loading = true; - getFormTemplate({ - templateOid: this.templateOid, - codeClassifyOid: this.codeClassifyOid, + openDialog() { + this.$nextTick(() => { + this.$refs.FormTempalte.init() + this.$refs.CodeApply.getCodeRule() }) - .then((res) => { - if (res.status === 200) { - this.templateData = res.data; - this.templateRender(); - } - this.loading = false; - console.log(res.data); - }) - .catch((err) => { - this.loading = false; - console.log(err); - }); }, - templateRender() { - const items = this.templateData.formDefineVO.items; - let column = []; - let dictKeys = []; - items.forEach((item) => { - // 闅愯棌琛ㄥ崟鍏冪礌 - if (item.hide) { - return; - } - 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"; - if (item.type === "text") { - message = "璇疯緭鍏�"; - trigger = "blur"; - } else if (item.type === "file") { - message = "璇蜂笂浼�"; - } - let columnItem = { - label: item.text, - labelslot: true, - prop: this.$utilFunc.isValuableObj(item.referConfig) ? (item.showField || item.field) : item.field, - type: this.columnType[item.type], - 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), - suffixIcon: this.preOrSufFixShow("icon", item.suffix), - valueFormat: item.dateFormate, - format: item.dateFormate, - keyAttr: item.keyAttr, - 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, - message: `璇�${message}${item.text}`, - trigger, - }, - { - // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗� - pattern: item.verify ? item.verify : /[\s\S.]*/g, - message: item.tooltips, - trigger, - }, - ], - props: { - label: "value", - value: "key", - }, - }; - 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 - // }) + getCodeRuleOid(data) { + this.codeRuleOid = data.oid + this.secVOList = data.secVOList }, - clickFun(referConfig) { - if (this.type === 'detail') { - return - } + getFormTemplate(data) { + this.hasResemble = + data.resembleTableVO && + data.resembleTableVO.cols && + data.resembleTableVO.cols.length > 0; + this.resembleTableColumn = data.resembleTableVO.cols || []; }, - // 鍓嶅悗缂� - preOrSufFixShow(type, val) { - if (this.$utilFunc.isEmpty(val) && typeof val !== "string") return; - const isIcon = val.slice(0, 8) === "el-icon-"; - if ((type === "text" && !isIcon) || (type === "icon" && isIcon)) { - return val; - } + getFormData(form) { + this.form = form }, - // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹� - getDataList(type, dicData) { - if (type === "truefalse") { - return [ - { - key: false, - value: "鍚�", - }, - { - key: true, - value: "鏄�", - }, - ]; - } else if (type === "combox") { - return dicData; - } - 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() - } + resembleQuerySubmit() { + this.$refs.resembleQueryRef.resembleQuery(this.form); }, }, }; -- Gitblit v1.9.3