From cdf02470da825ae5b8f234f361416fd0e159544b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 09 十一月 2023 10:03:34 +0800
Subject: [PATCH] 标准枚举

---
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue |  248 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 199 insertions(+), 49 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index 4eb070b..90e1442 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -26,12 +26,14 @@
       </template>
       <template :slot="item.prop + ''" v-for="item in slotColumnList">
         <vciWebRefer
+          :key="item.dataKey" :data-key="item.dataKey"
           v-if="item.type == 'refer'"
           :referConfig="item.referConfig || {}"
           :value="form[item.referConfig.field] || item.value"
           :text="form[item.referConfig.showField]"
           :disabled="item.disabled"
           :display="item.display"
+          :reloadData="item.referConfig.reloadData || false"
           @setReferValue="setReferValue"
         ></vciWebRefer>
       </template>
@@ -41,7 +43,7 @@
 
 <script>
 import { getFormDetail } from "@/api/formTemplate";
-import { getDictionary } from "../../api/system/dict";
+import { getEnumDictionary } from "../../api/system/dict";
 import vciWebRefer from "../refer/vciWebRefer.vue";
 export default {
   name: "FormTemplate",
@@ -60,6 +62,10 @@
       type: String,
       default: "",
     },
+    LoadingStatus:{
+      type: String,
+      default : "code"
+    },
     // 鍒楄〃鏁版嵁oid
     rowOid: {
       type: String,
@@ -68,7 +74,7 @@
     // 琛ㄥ崟绫诲瀷锛坅dd, edit, detail锛�
     type: {
       type: String,
-      default: "add",
+      default: "",
     },
     // 鑷畾涔夎〃鍗曠被鍨�
     selfColumnType: {
@@ -89,9 +95,15 @@
       type: String,
       default: "",
     },
+    eventList:{
+      type:Array
+    }
   },
   data() {
     return {
+      codeattrsecValue:'',
+      ValidataValue:false,
+      eventFlag:{},
       TreeValueForm:'',
       updateIndex: 0,
       form: {},
@@ -119,8 +131,15 @@
       slotColumnList: [],
     };
   },
-    mounted() {
+  mounted() {
     this.handleResize();
+  },
+  updated() {
+  },
+  created() {
+    if (this.LoadingStatus === 'code') {
+      this.loading = false;
+    }
   },
   computed: {
     localTrendsSpan() {
@@ -146,25 +165,30 @@
       handler(newval,oldval){
         if(newval){
           this.TreeValueForm=newval;
-          // console.log(this.TreeValueForm)
         }
       },
       deep:true,
       immediate:true
-    }
+    },
   },
   methods: {
     // 娓叉煋琛ㄥ崟妯℃澘
     templateRender(formItemList,TreeValue) {
+      if (this.eventList) {
+        this.eventFlag= this.eventList.some(item => {
+          if (item.classifyInvokeEditFlag === 'true') {
+            this.eventObject = item;
+            return true;
+          }
+        });
+      }
       // 鏃犻渶鍒嗙粍鏁版嵁
       let column = [];
       let group = [];
       let dictKeys = [];
       let slotColumnList = [];
-      let value=''
       formItemList.forEach((formItem) => {
         formItem = this.resetFormConfig(formItem);
-        // console.log('formItem.dicData.value',formItem.dicData)
         if (formItem.type === "line") {
           group.push({
             label: formItem.text,
@@ -198,12 +222,23 @@
           trigger = "blur";
         }
         let fieldMapKey=''
-        if( formItem.type == "refer"){
-          if(!formItem.fieldMap){
-            fieldMapKey=formItem.field+'Id'
-          }
+        if( formItem.type == "refer" && !formItem.fieldMap){
+          fieldMapKey=formItem.field+'Id'
+          formItem.fieldMap={}
+          formItem.fieldMap[fieldMapKey]='id'
+          formItem.fieldMap[formItem.field+'id']='id'
         }
+
+
         let columnItem = {
+          change:(val)=>{
+            // console.log(val)
+            if(val.column.field === "drawingno"){
+              this.codeattrsecValue=val.value;
+            }
+            console.log(this.codeattrsecValue)
+          },
+          dataKey:formItem.dataKey || formItem.field,
           label: formItem.text,
           labelslot: true,
           prop: this.$utilFunc.isValuableObj(formItem.referConfig)
@@ -221,7 +256,8 @@
           format: formItem.dateFormate,
           keyAttr: formItem.keyAttr,
           value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
-            (formItem.secType == "codedatesec"?formItem.codeDateValue: null) || ( TreeValue&& formItem.secType == "codelevelsec" ? TreeValue : null),
+            (formItem.secType == "codedatesec" ? formItem.codeDateValue: null) || ( TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
+            (formItem.secType == "codeattrsec" ? this.codeattrsecValue : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
           tip: formItem.tooltips,
@@ -233,19 +269,126 @@
           referConfig:
             formItem.type == "refer"
               ? {
-                  title: formItem.text,
-                  showField: formItem.showField || formItem.field,
-                  field: formItem.field,
-                  fieldMap:formItem.fieldMap || {fieldMapKey:'id'},
-                  placeholder: formItem.inputTip,
-                  options: formItem.referConfig
-                }
+                title: formItem.text,
+                showField: formItem.showField || formItem.field,
+                field: formItem.field,
+                fieldMap:formItem.fieldMap || {},
+                placeholder: formItem.inputTip,
+                options: formItem.referConfig
+              }
               : {},
           span: formItem.span
             ? formItem.span
             : formItem.type === "textarea"
-            ? 24
-            : this.localTrendsSpan,
+              ? 24
+              : this.localTrendsSpan,
+          rules: [
+            {
+              required: formItem.required,
+              message: `${message}${formItem.text}`,
+              trigger,
+            },
+            {
+              // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
+              pattern: formItem.verify ? formItem.verify : /[\s\S.]*/g,
+              message: formItem.tooltips,
+              trigger,
+            },
+          ],
+          props: {
+            label: "itemName",
+            value: "key",
+          },
+        };
+        // console.log('formItem',formItem)
+        // console.log('columnItem',columnItem)
+        slotColumnList.push(columnItem);
+        if (group.length === 0) {
+          column.push(columnItem);
+        } else {
+          group[group.length - 1]["column"].push(columnItem);
+        }
+      });
+      this.slotColumnList = slotColumnList;
+      this.$set(this.option, "column", column);
+      this.$set(this.option, "group", group);
+      this.updateIndex++;
+      if (this.type === "add") {
+        this.loading = false;
+      }
+
+      this.geDictData(dictKeys);
+      this.getFormDetail();
+
+    },
+    //淇敼绾ц仈椤�
+    changeChildItem(items,TreeValue) {
+      let column = this.option.column;
+      let group = this.option.group;
+      let that=this;
+      items.forEach((item) => {
+        let formItem = this.resetFormConfig(item);
+        if (formItem.field == "lcstatus") {
+          formItem.field = formItem.field + "_text";
+          formItem.readOnly = true;
+        }
+        // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰
+        let message = "璇烽�夋嫨";
+        let trigger = "change";
+        if (formItem.type === "text") {
+          message = "璇疯緭鍏�";
+          trigger = "blur";
+        }
+        let fieldMapKey = ''
+        if (formItem.type == "refer" && !formItem.fieldMap) {
+          fieldMapKey = formItem.field + 'Id'
+          formItem.fieldMap = {}
+          formItem.fieldMap[fieldMapKey] = 'id'
+          formItem.fieldMap[formItem.field + 'id'] = 'id'
+        }
+        let columnItem = {
+          label: formItem.text,
+          labelslot: true,
+          prop: this.$utilFunc.isValuableObj(formItem.referConfig)
+            ? formItem.showField || formItem.field
+            : formItem.field,
+          field: formItem.field,
+          type: this.columnType[formItem.type],
+          dicData: this.getDataList(formItem.type, formItem.data),
+          disabled: this.type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ? true : false),
+          prepend: this.preOrSufFixShow("text", formItem.prefix),
+          append: this.preOrSufFixShow("text", formItem.suffix),
+          prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
+          suffixIcon: this.preOrSufFixShow("icon", formItem.suffix),
+          valueFormat: formItem.dateFormate,
+          format: formItem.dateFormate,
+          keyAttr: formItem.keyAttr,
+          value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
+            (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null),
+          placeholder: formItem.inputTip,
+          comboxKey: formItem.comboxKey,
+          tip: formItem.tooltips,
+          // hidden:formItem.secType && formItem.codeValueApplyStatus == 3 ? true : false,
+          // readonly:formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ?true : false ,
+          display: !formItem.hidden,
+          maxlength: formItem.maxlength,
+          filterable: true,
+          referConfig:
+            formItem.type == "refer"
+              ? {
+                title: formItem.text,
+                showField: formItem.showField || formItem.field,
+                field: formItem.field,
+                fieldMap: formItem.fieldMap || {},
+                placeholder: formItem.inputTip,
+                options: formItem.referConfig
+              }
+              : {},
+          span: formItem.span
+            ? formItem.span
+            : formItem.type === "textarea"
+              ? 24
+              : this.localTrendsSpan,
           rules: [
             {
               required: formItem.required,
@@ -264,31 +407,37 @@
             value: "key",
           },
         };
-        // console.log('columnItem',columnItem)
-        slotColumnList.push(columnItem);
-        // console.log('slotColumnList',slotColumnList)
+
         if (group.length === 0) {
-          column.push(columnItem);
+          that.slotColumnList.forEach((colItem,index) => {
+            if (colItem.field == columnItem.field) {
+              that.slotColumnList[index] = columnItem;
+              column[index] = columnItem;
+              return;
+            }
+          })
         } else {
-          group[group.length - 1]["column"].push(columnItem);
+          that.slotColumnList.forEach((colItem,index) => {
+            if (colItem.field == columnItem.field) {
+              that.slotColumnList[index] = columnItem;
+              return;
+            }
+          })
+          group.forEach((groupItem,index) => {
+            groupItem.column.forEach((colItem,colIndex) => {
+              if (colItem.field == columnItem.field) {
+                group[index].column[colIndex] = columnItem;
+                return;
+              }
+            })
+          });
         }
       });
-      this.slotColumnList = slotColumnList;
-      this.$set(this.option, "column", column);
-      this.$set(this.option, "group", group);
-      this.updateIndex++;
-      if (this.type === "add") {
-        this.loading = false;
-      }
-
-      this.geDictData(dictKeys);
-      this.getFormDetail();
-      // console.log('selfColumnConfig',this.selfColumnConfig)
-
+      that.$set(that.option, "column", column);
+      that.$set(that.option, "group", group);
     },
     // 浣跨敤浼犲叆鐨勮〃鍗曟暟鎹厤缃�
     resetFormConfig(formItem) {
-      // console.log(this.selfColumnConfig)
       for (const configType in this.selfColumnConfig) {
         if (Object.hasOwnProperty.call(this.selfColumnConfig, configType)) {
           const element = this.selfColumnConfig[configType];
@@ -304,9 +453,6 @@
               if (Object.hasOwnProperty.call(element, newAttr)) {
                 const oldAttr = element[newAttr];
                 formItem[newAttr] = formItem[oldAttr];
-                // console.log(formItem)
-                // console.log(newAttr,oldAttr)
-                // console.log(formItem[newAttr],formItem[oldAttr])
               }
             }
           } else if (configType === "directVoluation") {
@@ -356,7 +502,8 @@
     // 寮傛鑾峰彇瀛楀吀鏁版嵁
     geDictData(dictKeys) {
       dictKeys.forEach((dictObj) => {
-        getDictionary({ code: dictObj.dictKey }).then((res) => {
+        getEnumDictionary({ code: dictObj.dictKey }).then((res) => {
+          console.log(res)
           if (res.data && res.data.code === 200) {
             this.option.column = this.option.column.map((item) => {
               if (item.field === dictObj.field) {
@@ -380,6 +527,7 @@
           if (valid) {
             done();
             resolve(true);
+            this.ValidataValue=true;
           } else {
             resolve(false);
           }
@@ -397,7 +545,6 @@
       );
     },
     setReferValue(data) {
-      // console.log(data)
       if (data.field) {
         this.form[data.field] = data.value || "";
         this.form[data.showField] = data.text || "";
@@ -411,21 +558,24 @@
               if (!_item.attributes) {
                 _item.attributes = _item;
               }
+              if (!_item.attributes.data) {
+                _item.attributes.data = {};
+              }
               if (mapFields.length == 1) {
                 var mapField = mapFields[0];
                 if (mapField.indexOf("attribute.") > -1) {
-                  temp = _item['attributes'][mapField.subString("attribute.".length)];
+                  temp = _item['attributes'][mapField.subString("attribute.".length)] || _item['attributes']['data'][mapField.subString("attribute.".length)];
                 } else {
-                  temp = _item['attributes'][mapField] || _item[mapField];
+                  temp = _item['attributes'][mapField] ||_item['attributes']['data'][mapField] || _item[mapField];
                 }
               } else {
                 //鏈夊涓�
                 var mutiTemp = [];
                 layui.each(mapFields, function (_indexField, _itemField) {
                   if (_itemField.indexOf("attribute.") > -1) {
-                    mutiTemp.push(_item['attributes'][_itemField.subString("attribute.".length)]);
+                    mutiTemp.push(_item['attributes'][_itemField.subString("attribute.".length)] || _item['attributes']['data'][_itemField.subString("attribute.".length)]);
                   } else {
-                    mutiTemp.push(_item['attributes'][_itemField] || _item[_itemField]);
+                    mutiTemp.push(_item['attributes'][_itemField] || _item['attributes']['data'][_itemField] || _item[_itemField]);
                   }
                 });
                 temp = mutiTemp.join(' ');
@@ -437,8 +587,8 @@
             this.form[key] = value.join(',');
           }
         }
-        this.$emit("getFormData", this.form);
         this.$emit("referConfigDataUpdate", data);
+        this.$emit("getFormData", this.form);
       }
     },
   },

--
Gitblit v1.9.3