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