From a5cb45db6a24630df3b8bab8df51cc153dd4c751 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期三, 07 六月 2023 18:07:14 +0800
Subject: [PATCH] 表单组件绑定上树参照选中的数据

---
 Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue |   19 ++++++++-
 Source/UBCS-WEB/src/components/refer/vciWebRefer.vue         |   46 ++++++++++++++---------
 Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue     |   20 +++++++--
 3 files changed, 59 insertions(+), 26 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
index 396fd4d..6afac39 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
@@ -27,6 +27,9 @@
         <vciWebRefer
           v-if="item.type == 'refer'"
           :referConfig="item.referConfig || {}"
+          :value="form[item.referConfig.field] || item.value"
+          :text="form[item.referConfig.showField]"
+          @setReferValue="setReferValue"
         ></vciWebRefer>
       </template>
     </avue-form>
@@ -559,9 +562,7 @@
             showField:formItem.showField || formItem.field,
             field: formItem.field,
             placeholder: formItem.inputTip,
-            options:formItem.referConfig,
-            value:'',
-            text:''
+            options:formItem.referConfig
           }:{},
           change: () => {
             this.changeFun(formItem.displayExtension, formItem.prop);
@@ -645,6 +646,11 @@
         return val;
       }
     },
+    changeFun(displayExtension, prop) {
+      // executeCode({displayExtension, data: this.form}).then(res => {
+      //   this.form[prop] = res.data.data
+      // })
+    },
     // 鑾峰彇swich鍜屽凡鎷垮埌鐨勪笅鎷夋暟鎹�
     getDataList(type, dicData) {
       if (type === "truefalse") {
@@ -708,6 +714,13 @@
         }
       );
     },
+    setReferValue(data){
+      if(data.field){
+        this.form[data.field]=data.value || '';
+        this.form[data.showField]=data.text || '';
+        this.$emit("getFormData", this.form);
+      }
+    }
   },
   watch: {
     // 琛ㄥ崟鏁版嵁淇敼鍙嶉鍒扮埗缁勪欢
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
index 8049591..27f49f0 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
@@ -1,7 +1,7 @@
 <template>
-  <vciWebReferTree v-if="refertype=='tree'" :value="value" :referConfig="referConfig"></vciWebReferTree>
-  <vciWebReferTable v-else-if="refertype=='table'" :value="value" :referConfig="referConfig"></vciWebReferTable>
-  <vciWebReferDefalut v-else :value="value" :referConfig="referConfig"></vciWebReferDefalut>
+  <vciWebReferTree v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferTree>
+  <vciWebReferTable v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferTable>
+  <vciWebReferDefalut v-else  @setValue="setValue" :value="value" :text="text" :referConfig="referConfig"></vciWebReferDefalut>
 </template>
 
 <script>
@@ -11,30 +11,40 @@
 import {validatenull} from "@/util/validate";
 export default {
   name: "vciWebRefer",
-  props:["referConfig"],
-  components: { vciWebReferTree,vciWebReferTable,vciWebReferDefalut},
+  props: ["referConfig","value","text"],
+  components: {vciWebReferTree, vciWebReferTable, vciWebReferDefalut},
   data() {
     return {
       refertype: this.referConfig.options.type,
       isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
-      value: this.referConfig.value
+      emitData:{}
     };
   },
   created() {
-    var title =this.referConfig.title || '';
-    title = title.replace(":","");
-    if(title){
-      title = validatenull(this.referConfig.title)?('涓恒��' + title + '銆戦�夊彇鍊�'):this.referConfig.title;
-    }else{
-      title = validatenull(this.referConfig.title)?('涓恒��' + this.referConfig.showField + '銆戦�夊彇鍊�'):this.referConfig.title;
+    var title = this.referConfig.title || '';
+    title = title.replace(":", "");
+    if (title) {
+      title = validatenull(this.referConfig.title) ? ('涓恒��' + title + '銆戦�夊彇鍊�') : this.referConfig.title;
+    } else {
+      title = validatenull(this.referConfig.title) ? ('涓恒��' + this.referConfig.showField + '銆戦�夊彇鍊�') : this.referConfig.title;
     }
-    this.referConfig.title= title;
-    this.referConfig.isMuti=this.isMuti
-    if(this.refertype=='tree'){
-      console.log('referConfig:')
-      console.log(this.referConfig)
+    this.referConfig.title = title;
+    this.referConfig.isMuti = this.isMuti;
+  },
+  methods: {
+    setValue(value) {
+      this.emitData = value;
     }
-
+  },
+  watch:{
+    // 淇敼鍙嶉鍒扮埗缁勪欢
+    emitData: {
+      deep: true,
+      immediate: true,
+      handler(newV) {
+        this.$emit("setReferValue", newV);
+      },
+    }
   },
   mounted() {
 
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
index fb1830b..4180372 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -1,5 +1,5 @@
 <template>
-  <avue-input-tree :props="props" :lazy="lazy" :tree-load="treeLoad" :leaf-only="!referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="placeholder" :dic="treeData"></avue-input-tree>
+  <avue-input-tree ref="referTree" :props="props" :lazy="lazy" :tree-load="treeLoad" :node-click="nodeClick" :leaf-only="!referConfig.onlyLeaf" :multiple="isMuti" v-model="value" :placeholder="placeholder" :dic="treeData"></avue-input-tree>
 </template>
 
 <script>
@@ -7,7 +7,7 @@
 
 export default {
   name: "vciWebReferTree",
-  props:["referConfig","value"],
+  props:["referConfig","value","text"],
   data() {
     return {
       options: this.referConfig.options,
@@ -20,8 +20,9 @@
         //value:"value",
         //label:"title"
       },
-      treeUrl: this.referConfig.options.url || '',//'/api/ubcs-code/codeClassify/treeCodeClassify',
+      treeUrl: this.referConfig.options.url || '/api/ubcs-code/codeClassify/treeCodeClassify',
       treeData: [],
+      currentNode:{},
       params: {},
       loadType: {'all': 'all', 'node': 'node'},
       copyParam: ['btmType', 'lnType', 'toBtmType', 'textField', 'valueField', 'parentFieldName', 'parentValue', 'sort', 'order', 'isDirection', 'whereSql', 'isMuti', 'queryScheme', 'isQueryAllColumn', 'queryColumn', 'split', 'loadType', 'onlyLeaf', 'onlyLeafText', 'parentUsedField']
@@ -29,6 +30,8 @@
   },
   created() {
     this.getParams();
+    console.log('referConfig:')
+    console.log(this.referConfig)
   },
   mounted() {
     if(!this.lazy){
@@ -42,7 +45,6 @@
   methods: {
     getParams:function (){
       var queryParams = {};
-      debugger;
       if(this.options.extraParams){
         queryParams = this.options.extraParams;
       }
@@ -140,8 +142,16 @@
           }
         }))
       });
+    },
+    nodeClick(data){
+      //涓嶈鐢╳atch鐩戝惉value鍊硷紝浼氭壘涓嶅埌text
+      this.value=data[this.props.value];
+      this.text=data[this.props.label];
+      this.currentNode=data;
+      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.currentNode});
     }
-
+  },
+  watch:{
   }
 }
 </script>

--
Gitblit v1.9.3