From 8cc891b06558d9998723942aacd20ca3d894336e Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 22 九月 2023 18:05:16 +0800
Subject: [PATCH] 修改参照

---
 Source/UBCS-WEB/src/components/refer/vciWebRefer.vue                   |    6 
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue                 |    3 
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                  |   17 ++-
 Source/UBCS-WEB/src/components/code-dialog-page/maxSerialnumDialog.vue |    7 +
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue           |  129 ++++++++++++++++++++++++++++++--
 Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue               |   28 +++---
 6 files changed, 156 insertions(+), 34 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index 3e341d5..9f69e9b 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -211,10 +211,11 @@
           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 = {
           label: formItem.text,
@@ -249,7 +250,7 @@
                 title: formItem.text,
                 showField: formItem.showField || formItem.field,
                 field: formItem.field,
-                fieldMap:formItem.fieldMap || {fieldMapKey:'id'},
+                fieldMap:formItem.fieldMap || {},
                 placeholder: formItem.inputTip,
                 options: formItem.referConfig
               }
@@ -294,8 +295,121 @@
 
       this.geDictData(dictKeys);
       this.getFormDetail();
-      // console.log('selfColumnConfig',this.selfColumnConfig)
 
+    },
+    //淇敼绾ц仈椤�
+    changeChildItem(items,TreeValue) {
+      let column = this.option.column;
+      let group = this.option.group;
+      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,
+              message: `${message}${formItem.text}`,
+              trigger,
+            },
+            {
+              // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
+              pattern: formItem.verify ? formItem.verify : /[\s\S.]*/g,
+              message: formItem.tooltips,
+              trigger,
+            },
+          ],
+          props: {
+            label: "value",
+            value: "key",
+          },
+        };
+
+        if (group.length === 0) {
+          this.slotColumnList.forEach((index, colItem) => {
+            if (colItem.field == columnItem.field) {
+              this.slotColumnList[index] = columnItem;
+              column[index] = columnItem;
+              return;
+            }
+          })
+        } else {
+          this.slotColumnList.forEach((index, colItem) => {
+            if (colItem.field == columnItem.field) {
+              this.slotColumnList[index] = columnItem;
+              return;
+            }
+          })
+          group.forEach((index, groupItem) => {
+            groupItem.column.forEach((colIndex, colItem) => {
+              if (colItem.field == columnItem.field) {
+                group[index].column[colIndex] = columnItem;
+                return;
+              }
+            })
+          });
+        }
+      });
+      this.$set(this.option, "column", column);
+      this.$set(this.option, "group", group);
     },
     // 浣跨敤浼犲叆鐨勮〃鍗曟暟鎹厤缃�
     resetFormConfig(formItem) {
@@ -404,7 +518,6 @@
       );
     },
     setReferValue(data) {
-      debugger;
       if (data.field) {
         this.form[data.field] = data.value || "";
         this.form[data.showField] = data.text || "";
@@ -447,8 +560,8 @@
             this.form[key] = value.join(',');
           }
         }
-        this.$emit("getFormData", this.form);
         this.$emit("referConfigDataUpdate", data);
+        this.$emit("getFormData", this.form);
       }
     },
   },
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 886ce91..858400a 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -11,6 +11,7 @@
     @opened="openDialog"
   >
     <FormTemplate
+      key="masterForm" data-key="masterForm"
       v-bind="$attrs"
       :type="type"
       :TreeValue="TreeValue"
@@ -33,7 +34,8 @@
       <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
         <el-tab-pane label="鐮佸�肩敵璇�" name="codeApply" v-if="showCodeApply">
           <FormTemplate
-            v-bind="$attrs"
+            key="codeApplyForm" data-key="codeApplyForm"
+            secDTOListv-bind="$attrs"
             :type="type"
             :selfColumnType="selfColumnType"
             :selfColumnConfig="selfColumnConfig"
@@ -271,8 +273,8 @@
     },
     // 鑾峰彇鐮佸�肩敵璇锋暟鎹�
     getCodeRule() {
-      let  that = this;
-      getCodeRule({ codeClassifyOid: that.codeClassifyOid }).then((res) => {
+      let that = this;
+      getCodeRule({codeClassifyOid: that.codeClassifyOid}).then((res) => {
         if (res.data && res.data.code === 200) {
           that.codeRuleOid = res.data.data.oid;
           const typeList = [
@@ -298,8 +300,8 @@
           if (that.secVOList.length > 0 && that.type === "add") {
             that.showCodeApply = true;
             that.activeName = "codeApply";
-            that.$nextTick(() => {
-              that.$refs.CodeApply.templateRender(that.secVOList,this.TreeValue);
+            this.$nextTick(() => {
+              that.$refs.CodeApply.templateRender(that.secVOList, this.TreeValue);
             });
           } else {
             that.showCodeApply = false;
@@ -316,16 +318,19 @@
     // 鍙傜収缁勪欢鏁版嵁鍙樻洿
     referConfigDataUpdate(data) {
       const { field } = data;
+      let childItems=[];
       this.secVOList = this.secVOList.map((item) => {
         if (item.parentClassifySecOid === field) {
           this.$refs.CodeApply.form[item.oid] = undefined;
           this.$refs.CodeApply.form[item.name] = undefined;
           item.readOnly=false;
           item.referConfig.extraParams.parentClassifyValueOid=data.value;
+          childItems.push(item)
         }
         return item;
       });
-      this.$refs.CodeApply.templateRender(this.secVOList,this.TreeValue);
+      //this.$refs.CodeApply.templateRender(this.secVOList,this.TreeValue);
+      this.$refs.CodeApply.changeChildItem(childItems);
     },
     resembleQuerySubmit() {
       this.activeName = "resembleQuery";
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index 8b5bc4c..da4f9db 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -853,6 +853,7 @@
           {
             label: "鍙傜収閰嶇疆",
             prop: "referConfig",
+            width: 105
           },
           {
             label: "绾ц仈鏌ヨ灞炴��",
@@ -897,7 +898,7 @@
           {
             label: "鍙栧�艰寖鍥�",
             prop: "valueArea",
-          },
+          }
         ]
       },
       // 瀛樺偍琛ㄦ牸鏁版嵁
diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/maxSerialnumDialog.vue b/Source/UBCS-WEB/src/components/code-dialog-page/maxSerialnumDialog.vue
index e389526..155d24a 100644
--- a/Source/UBCS-WEB/src/components/code-dialog-page/maxSerialnumDialog.vue
+++ b/Source/UBCS-WEB/src/components/code-dialog-page/maxSerialnumDialog.vue
@@ -7,7 +7,7 @@
     </el-form>
     <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
       <el-tab-pane label="鏈�澶ф祦姘村彿" name="codeApply">
-        <form-template v-bind="$attrs" type="add" :selfColumnType="selfColumnType" :trendsSpan="24"
+        <form-template key="codeApplyMaxForm" data-key="codeApplyMaxForm" v-bind="$attrs" type="add" :selfColumnType="selfColumnType" :trendsSpan="24"
                        :selfColumnConfig="selfColumnConfig" ref="CodeApply" @getFormData="getCodeApplyFormData"
                        @referConfigDataUpdate="referConfigDataUpdate"></form-template>
       </el-tab-pane>
@@ -194,16 +194,19 @@
     // 鍙傜収缁勪欢鏁版嵁鍙樻洿
     referConfigDataUpdate(data) {
       const {field} = data;
+      let childItems=[];
       this.secVOList = this.secVOList.map((item) => {
         if (item.parentClassifySecOid === field) {
           this.$refs.CodeApply.form[item.oid] = undefined;
           this.$refs.CodeApply.form[item.name] = undefined;
           item.readOnly = false;
           item.referConfig.extraParams.parentClassifyValueOid = data.value;
+          childItems.push(item)
         }
         return item;
       });
-      this.$refs.CodeApply.templateRender(this.secVOList);
+      //this.$refs.CodeApply.templateRender(this.secVOList);
+      this.$refs.CodeApply.changeChildItem(childItems);
     },
     isRequired(item) {
       return item.nullableFlag != "true";
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
index 7ecbfa0..f73ca39 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
@@ -1,8 +1,8 @@
 <template>
   <div v-if="display">
-    <vciWebReferTree ref="vciWebReferTree" v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTree>
-    <vciWebReferTable v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTable>
-    <vciWebReferDefalut v-else  @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferDefalut>
+    <vciWebReferTree :key="referConfig.field" :data-key="referConfig.field" ref="vciWebReferTree" v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTree>
+    <vciWebReferTable :key="referConfig.field" :data-key="referConfig.field" v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferTable>
+    <vciWebReferDefalut :key="referConfig.field" :data-key="referConfig.field" v-else  @setValue="setValue" :value="value" :text="text" :title="title" :disabled="disabled" :referConfig="referConfig"></vciWebReferDefalut>
 
   </div>
 </template>
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
index fa3ea8d..f1ac96e 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -1,5 +1,6 @@
 <template>
-  <avue-input-tree ref="referTree" :props="props" :disabled="disabled" :lazy="lazy" :tree-load="treeLoad" :node-click="nodeClick" :checked="checked" :blur="valueChange" :leaf-only="referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="title" :dic="treeData"></avue-input-tree>
+  <avue-input-tree ref="referTree" :props="props" :disabled="disabled" :lazy="lazy" :tree-load="treeLoad" :node-click="nodeClick" :checked="checked"
+                   :leaf-only="referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="title" :dic="treeData"></avue-input-tree>
 </template>
 
 <script>
@@ -11,6 +12,7 @@
   props:["referConfig","value","text","title","disabled"],
   data() {
     return {
+      visible: false,
       options: this.referConfig.options,
       lazy: this.referConfig.options.loadType == 'node',
       isMuti:("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
@@ -127,14 +129,15 @@
 
     },
     getTree() {
+      //鍔犺浇鍏ㄩ儴
       getTree(this.params, this.treeUrl).then(res => {
         res.data.map(item => {
-          if (!item.attribute) {
-            item.attribute = {
+          if (!item.attributes) {
+            item.attributes = {
               data: {}
             }
           } else {
-            item.attribute.data = item.attribute.data || {}
+            item.attributes.data = item.attributes.data || {}
           }
           return {
             ...item,
@@ -145,6 +148,7 @@
       })
     },
     treeLoad: function (treeNode, resolve) {
+      //閫愮骇鍔犺浇
       const parentOid = (treeNode.level === 0) ? 0 : treeNode.data.oid;
       this.params.parentOid=parentOid.indexOf('@vcitreesep@') > -1 ? parentOid.split('@vcitreesep@')[1] : parentOid;
       this.params.parentValue=this.params.parentOid;
@@ -158,12 +162,12 @@
       }
       getLazyTree(this.params,this.treeUrl).then(res => {
         resolve(res.data.data.map(item => {
-          if(!item.attribute){
-            item.attribute={
+          if(!item.attributes){
+            item.attributes={
               data:{}
             }
           }else{
-            item.attribute.data=item.attribute.data || {}
+            item.attributes.data=item.attributes.data || {}
           }
           return {
             ...item,
@@ -178,17 +182,13 @@
       }
     },
     checked(checkedNode, checkedData) {
-      this.checkedData=checkedData
-    },
-    valueChange(){
-      if(this.isMuti){
-        // this.setValue(this.checkedData)
-      }
+      this.setValue(checkedData)
     },
     setValue:function (checkedData){
+      this.checkedData=checkedData
       var value = [];
       var text = [];
-      const textSep =this.config.textSep;
+      const textSep =this.config.textSep;debugger;
       for(var j =0;j<checkedData.checkedNodes.length;j++){
         const item=checkedData.checkedNodes[j];
         var v=this.config.valueField.indexOf("attribute.")>=0?(item.attributes[this.config.valueField.replace("attribute.","")] || item.attributes.data[this.config.valueField.replace("attribute.","")]):(item.attributes[this.config.valueField] || item[this.config.valueField] || item.attributes.data[this.config.valueField])

--
Gitblit v1.9.3