From fbaa314196992bdd683be9f412c20961c0a443ef Mon Sep 17 00:00:00 2001 From: fujunling <2984387807@qq.com> Date: 星期一, 05 六月 2023 16:13:49 +0800 Subject: [PATCH] 动态表单 --- Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue | 980 +++++++++++++++++++++++------------------------- Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue | 23 Source/UBCS-WEB/src/components/FormTemplate/index.vue | 48 + Source/UBCS-WEB/src/components/FormTemplate/ResembleQueryDialog.vue | 96 ++++ Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue | 3 Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue | 20 Source/UBCS-WEB/src/api/formTemplate.js | 19 7 files changed, 639 insertions(+), 550 deletions(-) diff --git a/Source/UBCS-WEB/src/api/formTemplate.js b/Source/UBCS-WEB/src/api/formTemplate.js index acbb3d4..992b2df 100644 --- a/Source/UBCS-WEB/src/api/formTemplate.js +++ b/Source/UBCS-WEB/src/api/formTemplate.js @@ -2,7 +2,7 @@ import request from "@/router/axios"; // 鑾峰彇琛ㄥ崟妯℃澘鏁版嵁 -export const getFormTemplate = (params) => { +export function getFormTemplate(params) { return request({ url: 'api/ubcs-code/ubcs-code/mdmEngineController/getFormDefineByTemplateOid', method: 'get', @@ -10,7 +10,7 @@ }) } // 琛ㄥ崟鏁版嵁鎵ц浠g爜 -export const executeCode = (params) => { +export function executeCode(params) { return request({ url: 'api/ubcs-code/ubcs-code/mdmEngineController/getFormDefineByTemplateOid', method: 'get', @@ -18,7 +18,7 @@ }) } // 鐩镐技椤规煡璇� -export const findLike = (data) => { +export function findLike(data) { return request({ url: 'api/ubcs-code/ubcs-code/mdmEngineController/resembleQuery', method: 'post', @@ -26,11 +26,20 @@ }) } -// 鑾峰彇鏁版嵁 -export const getCodeRule = (params) => { +// 鑾峰彇鐮佸�肩敵璇锋暟鎹� +export function getCodeRule(params) { return request({ url: 'api/ubcs-code/ubcs-code/mdmEngineController/getCodeRuleByClassifyOid', method: 'get', params }) +} + +// 鑾峰彇璇︽儏 +export function getFormDetail(params) { + return request({ + url: 'api/ubcs-code/ubcs-code/mdmEngineController/getDataByOid', + method: 'get', + params + }) } \ No newline at end of file diff --git a/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue b/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue index 242fbac..8b84cca 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/CodeApply.vue @@ -113,6 +113,9 @@ return []; } }, + async validate() { + return await this.$refs.FormTempalte.validate() + } }, watch: { }, diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue index bfa0367..ebb0e9e 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue @@ -1,38 +1,46 @@ +<!-- eslint-disable vue/valid-v-for --> +<!-- eslint-disable vue/require-v-for-key --> <template> <div> - <avue-form v-model="form" :option="option" v-loading="loading" ref="form" :style="{minHeight: loading ? '300px' : ''}"> - <template :slot="item.prop + 'Label'" v-for="item in slotColumnList"> - <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> - </span> - </template> - <template :slot="groupItem.prop + ''" v-for="groupItem in option.group"> - <template :slot="item.prop + ''" v-for="item in groupItem.column"> - <span>1111</span> - <vciWebRefer v-if="item.type=='refer'" :value="item.value" :options="item.referConfig"></vciWebRefer> + <avue-form + v-model="form" + :option="option" + v-loading="loading" + ref="form" + :style="{ minHeight: loading ? '300px' : '' }" + > + <template :slot="item.prop + 'Label'" v-for="item in slotColumnList"> + <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> + </span> </template> - - </template> - </avue-form> + <template :slot="item.prop + ''" v-for="item in slotColumnList"> + <vciWebRefer + v-if="item.type == 'refer'" + :value="item.value" + :options="item.referConfig || {}" + ></vciWebRefer> + </template> + </avue-form> </div> </template> <script> -import { getFormTemplate } from "@/api/formTemplate"; +import { getFormTemplate, getFormDetail } from "@/api/formTemplate"; import { getDictionary } from "../../api/system/dict"; import vciWebRefer from "../refer/vciWebRefer.vue"; export default { name: "FormTemplate", - components: { vciWebRefer}, + components: { vciWebRefer }, props: { // 榛樿绂佺敤鍏冪礌 disabledProp: { @@ -47,10 +55,10 @@ type: String, default: "", }, - // 淇敼鍥炴樉鐨勬暟鎹� - editForm: { - type: Object, - default: () => ({}), + // 鍒楄〃鏁版嵁oid + rowOid: { + type: String, + default: "", }, // 琛ㄥ崟绫诲瀷锛坅dd, edit, detail锛� type: { @@ -75,7 +83,7 @@ option: { emptyBtn: false, submitBtn: false, - labelWidth: "130", + labelWidth: "140", column: [], group: [], }, @@ -88,479 +96,408 @@ textarea: "textarea", datetime: "datetime", date: "date", + refer: "refer", }, // 鍋囨暟鎹� - // 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: "", - // }, - // ], + 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: 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: {}, + required: false, + selectLibFlag: "", + showField: "depId", + suffix: "", + text: "鍙傜収", + tooltips: "", + type: "refer", + unique: false, + verify: "", + }, + ], trendsSpan: 8, defaultValue: {}, // 琛ㄥ崟灞炴�� attributes: [], - slotColumnList: [] + slotColumnList: [], }; }, mounted() { this.handleResize(); }, methods: { + // 鍒濆鍖� init(columnList) { if (Array.isArray(columnList)) { this.templateRender(columnList); @@ -568,6 +505,7 @@ this.getFormTemplate(); } }, + // 鎺ュ彛鑾峰彇琛ㄥ崟鏁版嵁 getFormTemplate() { getFormTemplate({ templateOid: this.templateOid, @@ -584,12 +522,13 @@ console.log(err); }); }, + // 娓叉煋琛ㄥ崟妯℃澘 templateRender(formItemList) { // 鏃犻渶鍒嗙粍鏁版嵁 let column = []; let group = []; let dictKeys = []; - let slotColumnList = [] + let slotColumnList = []; formItemList.forEach((formItem) => { formItem = this.resetFormConfig(formItem); if (formItem.type === "line") { @@ -608,10 +547,7 @@ dictKeys.push({ dictKey: formItem.comboxKey, field: formItem.field }); } // 绂佺敤閮ㄥ垎灞炴�э紙澶栭儴浼犲�肩鐢ㄥ拰鍙傜収绂佺敤锛� - if ( - this.disabledProp.includes(formItem.field) || - this.$utilFunc.isValuableObj(formItem.referConfig) - ) { + if (this.disabledProp.includes(formItem.field)) { formItem.readOnly = true; } // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰 @@ -639,8 +575,9 @@ format: formItem.dateFormate, keyAttr: formItem.keyAttr, value: formItem.defaultValue, - tip: formItem.tooltips, - tipPlacement: "right", + // tip: formItem.tooltips, + // tipPlacement: "right", + placeholder: formItem.inputTip, comboxKey: formItem.comboxKey, display: !formItem.hidden, maxlength: formItem.maxlength, @@ -649,9 +586,6 @@ this.changeFun(formItem.displayExtension, formItem.prop); }, span: formItem.type === "textarea" ? 24 : this.trendsSpan, - click: () => { - this.clickFun(formItem.referConfig) - }, rules: [ { required: formItem.required, @@ -670,19 +604,20 @@ value: "key", }, }; - slotColumnList.push(columnItem) + slotColumnList.push(columnItem); if (group.length === 0) { column.push(columnItem); } else { group[group.length - 1]["column"].push(columnItem); } }); - this.slotColumnList = slotColumnList + this.slotColumnList = slotColumnList; this.$set(this.option, "column", column); this.$set(this.option, "group", group); this.formIndex++; - this.loading = false + this.loading = false; this.geDictData(dictKeys); + this.getFormDetail() }, // 浣跨敤浼犲叆鐨勮〃鍗曟暟鎹厤缃� resetFormConfig(formItem) { @@ -715,6 +650,7 @@ } return formItem; }, + // 鏍规嵁灞忓箷鍔ㄦ�侀厤缃〃鍗曞竷灞� handleResize() { let windowWidth = document.body.clientWidth; this.trendsSpan = 24 / Math.floor(windowWidth / 500); @@ -732,12 +668,6 @@ // executeCode({displayExtension, data: this.form}).then(res => { // this.form[prop] = res.data.data // }) - }, - clickFun(referConfig) { - console.log(123123); - if (this.type === "detail") { - return; - } }, // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹� getDataList(type, dicData) { @@ -757,7 +687,7 @@ } return []; }, - // 鑾峰彇瀛楀吀鏁版嵁 + // 寮傛鑾峰彇瀛楀吀鏁版嵁 geDictData(dictKeys) { dictKeys.forEach((dictObj) => { getDictionary({ code: dictObj.dictKey }).then((res) => { @@ -777,8 +707,30 @@ }); }); }, + // 琛ㄥ崟鏍¢獙 + validate() { + return new Promise((resolve) => { + this.$refs.form.validate((valid, done, msg) => { + console.error(msg, valid) + if (valid) { + resolve(true) + } else { + resolve(false); + } + }); + }) + + }, + // 鑾峰彇琛ㄥ崟鏁版嵁 + getFormDetail() { + if (this.type === 'add') return + getFormDetail({templateOid: this.templateOid, oid: this.rowOid}).then(res => { + console.log(res, 'res'); + }) + } }, watch: { + // 琛ㄥ崟鏁版嵁淇敼鍙嶉鍒扮埗缁勪欢 form: { deep: true, immediate: true, @@ -790,4 +742,10 @@ }; </script> -<style lang="less" scoped></style> +<style lang="scss" scoped> +.key_attr_icon { + font-size: 20px !important; + vertical-align: baseline; + color: red; +} +</style> diff --git a/Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue b/Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue index 86dce48..3aaf6fe 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/ResembleQuery.vue @@ -1,7 +1,14 @@ <template> <div> - <el-table :data="tableData" v-loading="loading" height="250" :border="true"> + <el-table + :data="tableData" + v-loading="loading" + height="250" + :border="true" + size="small" + > <el-table-column + v-if="column.length > 0" type="index" width="60" label="搴忓彿" @@ -55,6 +62,10 @@ type: String, default: "", }, + codeRuleOid: { + type: String, + default: "", + }, type: { type: String, default: "add", @@ -63,14 +74,9 @@ type: Object, default: () => ({}), }, - codeRuleOid: { - type: String, - default: "", - }, }, data() { return { - tableVisible: true, formTemplateVisible: false, activeName: "findlike", tableData: [], @@ -114,8 +120,6 @@ formItems: [], }; }, - created() {}, - computed: {}, methods: { // 鐩镐技椤规煡璇� resembleQuery(form) { @@ -127,10 +131,9 @@ codeClassifyOid: this.codeClassifyOid, codeRuleOid: this.codeRuleOid, templateOid: this.templateOid, - data: formValue + data: formValue, }; params = Object.assign(params, defaultValue); - this.tableVisible = true; findLike(params).then((res) => { this.loading = false; this.tableData = res.data.data || []; diff --git a/Source/UBCS-WEB/src/components/FormTemplate/ResembleQueryDialog.vue b/Source/UBCS-WEB/src/components/FormTemplate/ResembleQueryDialog.vue new file mode 100644 index 0000000..9741d14 --- /dev/null +++ b/Source/UBCS-WEB/src/components/FormTemplate/ResembleQueryDialog.vue @@ -0,0 +1,96 @@ +<template> + <el-dialog + :visible.sync="dialogVisible" + v-dialogDrag + top="0vh" + title="鐩镐技椤规煡璇�" + :width="width" + append-to-body + @opened="openDialog" + class="avue-dialog avue-dialog--top" + > + <ResembleQuery + v-loading="loading" + ref="ResembleQuery" + v-bind="$attrs" + :column="column" + :templateOid="templateOid" + :codeRuleOid="codeRuleOid" + :codeClassifyOid="codeClassifyOid" + ></ResembleQuery> + </el-dialog> +</template> + +<script> +import { getFormTemplate } from "@/api/formTemplate"; +import ResembleQuery from "./ResembleQuery"; +export default { + name: "ResembleQueryDialog", + components: { ResembleQuery }, + props: { + visible: { + type: Boolean, + default: false, + }, + codeClassifyOid: { + type: String, + default: "", + }, + templateOid: { + type: String, + default: "", + }, + codeRuleOid: { + type: String, + default: "", + }, + type: { + type: String, + default: "add", + }, + form: { + type: Object, + default: () => ({}), + }, + }, + data() { + return { + column: [], + loading: false + }; + }, + computed: { + dialogVisible: { + get() { + return this.visible; + }, + set(val) { + this.$emit("update:visible", val); + }, + }, + }, + methods: { + openDialog() { + this.loading = true + getFormTemplate({ + templateOid: this.templateOid, + codeClassifyOid: this.codeClassifyOid, + }).then((res) => { + this.loading = false + if ( + res.data && + res.data.resembleTableVO.cols && + res.data.resembleTableVO.cols.length > 0 + ) { + this.column = res.data.resembleTableVO.cols; + this.$refs.ResembleQuery.resembleQuery(); + } else { + this.column = []; + } + }); + }, + }, +}; +</script> + +<style lang="less" scoped></style> diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue index 23edc8f..d04ed50 100644 --- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue +++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue @@ -19,10 +19,14 @@ @getFormData="getFormData" ></FormTempalte> - <div class="tab_box" v-if="type !== 'detail' && dialogVisible"> - <el-tabs v-model="activeName" type="card"> + <div class="tab_box" v-if="type !== 'detail' && dialogVisible && (showCodeApply || showResembleQuery)"> + <el-tabs v-model="activeName" type="border-card"> <el-tab-pane label="鐮佸�肩敵璇�" name="codeApply" v-if="showCodeApply"> - <CodeApply ref="CodeApply" v-bind="$attrs" @getCodeRuleOid="getCodeRuleOid"></CodeApply> + <CodeApply + ref="CodeApply" + v-bind="$attrs" + @getCodeRuleOid="getCodeRuleOid" + ></CodeApply> </el-tab-pane> <el-tab-pane label="鐩镐技椤规煡璇�" @@ -35,17 +39,16 @@ :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 @click="submit()" type="primary" :loading="submitBtnLoading" >纭� 瀹�</el-button > - <el-button @click="resembleQuerySubmit" type="primary" v-if="hasResemble" + <el-button @click="resembleQuerySubmit" type="primary" v-if="showResembleQuery" >鐩镐技鍍忔煡璇�</el-button > </div> @@ -70,7 +73,7 @@ }, title: { type: String, - default: "琛ㄥ崟妯℃澘", + default: "缂栫爜鐢宠", }, width: { type: String, @@ -84,9 +87,7 @@ hasResemble: false, resembleTableColumn: [], secVOList: [], - activeName: "resembleQuery", - codeRuleOid: '', - form: {} + form: {}, }; }, created() {}, @@ -105,29 +106,31 @@ return false; } } else { - if (this.hasResemble) { - return false; - } + return false; } return true; }, showResembleQuery() { return this.hasResemble; }, + activeName() { + return ( + (this.showCodeApply && "codeApply") || + (this.showResembleQuery && "resembleQuery") + ); + }, }, methods: { openDialog() { this.$nextTick(() => { - this.$refs.FormTempalte.init() - this.$refs.CodeApply.getCodeRule() - }) + this.$refs.FormTempalte.init(); + }); }, close() { this.dialogVisible = false; }, getCodeRuleOid(data) { - this.codeRuleOid = data.oid - this.secVOList = data.secVOList + this.secVOList = data.secVOList; }, getFormTemplate(data) { this.hasResemble = @@ -137,11 +140,18 @@ this.resembleTableColumn = data.resembleTableVO.cols || []; }, getFormData(form) { - this.form = form + this.form = form; }, resembleQuerySubmit() { this.$refs.resembleQueryRef.resembleQuery(this.form); }, + async submit() { + const formValidate = await this.$refs.FormTempalte.validate(); + if (this.showCodeApply) { + const codeValidate = this.$refs.CodeApply.validate(); + console.log(formValidate, codeValidate); + } + }, }, }; </script> diff --git a/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue b/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue index 31fe475..1122205 100644 --- a/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue +++ b/Source/UBCS-WEB/src/views/MasterData/FormTempalteTest.vue @@ -1,33 +1,43 @@ <template> <div> <el-button @click="visible = true">娴嬭瘯</el-button> + <el-button @click="visible1 = true">鐩镐技椤规煡璇�</el-button> <FormTemplateDialog :visible.sync="visible" - :FormTemplateProp="FormTemplateProp" :type="this.type" - :editForm="editForm" :templateOid="this.templateOid" :codeClassifyOid="this.codeClassifyOid" + :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" + :rowOid="rowOid" ></FormTemplateDialog> + <ResembleQueryDialog + :visible.sync="visible1" + :type="this.type" + :templateOid="this.templateOid" + :codeClassifyOid="this.codeClassifyOid" + :codeRuleOid="this.codeRuleOid" + ></ResembleQueryDialog> </div> </template> -codeClassifyOid <script> +import ResembleQueryDialog from '@/components/FormTemplate/ResembleQueryDialog.vue'; export default { name: "FormTempalteTest", + components: { ResembleQueryDialog }, data() { return { visible: false, + visible1: false, // 榛樿绂佺敤鐨勮〃鍏冪礌 disabledProp: ["id"], - // 淇敼鍥炴樉鐨勬暟鎹� - editForm: {}, // 琛ㄥ崟绫诲瀷 type: "add", templateOid: "78B8C7C5-A042-0B96-FE6D-65421451782A", codeClassifyOid: "4524E801-6CC6-92E8-1AC3-2AB9604E8F96", + codeRuleOid: "B95872A6-9CEA-D490-8F1B-9D26548CAF96", + rowOid: '6EF696C3-CD87-0E7C-1EA1-8DE3913A95C9' }; }, }; -- Gitblit v1.9.3