From 3f5ffa69d5316c17a37de310bdea027523186064 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期一, 12 六月 2023 17:32:12 +0800
Subject: [PATCH] 修改参照组件

---
 Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue    |  368 +++++++++++++++++++++++---
 Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue |    2 
 Source/UBCS-WEB/src/components/refer/vciWebRefer.vue         |   32 +-
 Source/UBCS-WEB/src/api/refer/table.js                       |   32 ++
 Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue  |  295 +++++++++++++++++++++
 Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue     |   83 ++++-
 6 files changed, 730 insertions(+), 82 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/refer/table.js b/Source/UBCS-WEB/src/api/refer/table.js
new file mode 100644
index 0000000..e05299b
--- /dev/null
+++ b/Source/UBCS-WEB/src/api/refer/table.js
@@ -0,0 +1,32 @@
+import request from "@/router/axios";
+
+export const getList = (params,page, limit, url) => {
+  return request({
+    url: url,
+    method: 'get',
+    params: {
+      ...params,
+      page,
+      limit,
+    }
+  })
+}
+
+export const getLazyList = (params,url) => {
+  return request({
+    url: url,
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}
+export const getTableDefinedUrl = (params,url) => {
+  return request({
+    url: url,
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
index c8e5b43..37c5899 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTempalte.vue
@@ -558,7 +558,7 @@
           maxlength: formItem.maxlength,
           filterable: true,
           referConfig:formItem.type=='refer'?{
-            title:formItem.text,
+            title:formItem.text ,
             showField:formItem.showField || formItem.field,
             field: formItem.field,
             placeholder: formItem.inputTip,
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
index 27f49f0..a19ce27 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebRefer.vue
@@ -1,14 +1,13 @@
 <template>
-  <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>
+  <vciWebReferTree v-if="refertype=='tree'" @setValue="setValue" :value="value" :text="text" :title="title" :referConfig="referConfig"></vciWebReferTree>
+  <vciWebReferTable v-else-if="refertype=='table'" @setValue="setValue" :value="value" :text="text" :title="title" :referConfig="referConfig"></vciWebReferTable>
+  <vciWebReferDefalut v-else  @setValue="setValue" :value="value" :text="text" :title="title" :referConfig="referConfig"></vciWebReferDefalut>
 </template>
 
 <script>
 import vciWebReferTree from "./vciWebReferTree.vue";
 import vciWebReferTable from "./vciWebReferTable.vue";
-import vciWebReferDefalut from "./vciWebReferTable.vue";
-import {validatenull} from "@/util/validate";
+import vciWebReferDefalut from "./vciWebReferDefalut.vue";
 export default {
   name: "vciWebRefer",
   props: ["referConfig","value","text"],
@@ -16,20 +15,17 @@
   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,
-      emitData:{}
+      emitData:{},
+      title:''
     };
   },
-  created() {
+  created() {},
+  mounted() {
     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;
+    title = title ? ('涓恒��' + title + '銆戦�夊彇鍊�') : ('涓恒��' + this.referConfig.showField + '銆戦�夊彇鍊�');
+
+    this.title=title;
   },
   methods: {
     setValue(value) {
@@ -42,12 +38,12 @@
       deep: true,
       immediate: true,
       handler(newV) {
+        if(newV.isTreeMuti){
+          //鏍戝弬鐓у閫夛紝text娌℃湁鍊硷紝鍦ㄨ繖閲屽鐞唗ext鐨勫��
+        }
         this.$emit("setReferValue", newV);
       },
     }
-  },
-  mounted() {
-
   }
 }
 </script>
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
new file mode 100644
index 0000000..594e1ac
--- /dev/null
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
@@ -0,0 +1,295 @@
+<template>
+  <div>
+    <el-dialog :title="title"
+               v-dialogDrag append-to-body="true"
+               :visible.sync="visible"
+               top="0"
+               class="avue-dialog avue-dialog--top"
+               :width="referConfig.options.width|| '80%'">
+      <avue-crud :option="option"
+                 :table-loading="loading"
+                 :data="data"
+                 :page.sync="page"
+                 v-model="value"
+                 ref="referDefalutCrud"
+                 @search-change="searchChange"
+                 @search-reset="searchReset"
+                 @selection-change="selectionChange"
+                 @current-change="currentChange"
+                 @size-change="sizeChange"
+                 @refresh-change="refreshChange"
+                 @on-load="onLoad">
+      </avue-crud>
+      <div class="avue-dialog__footer">
+        <div class="avue-dialog__footer--left valueInfo">{{ valueInfo }}</div>
+        <el-button @click="visible=false">鍙� 娑�</el-button>
+        <el-button @click="setValue" type="primary">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+
+    <avue-input v-model="text" :placeholder="title" @click="visible=true"></avue-input>
+    <!--<avue-input-table ref="referTable"  :props="props"  :column="column" :on-load="onLoad" v-model="value"  :placeholder="title" ></avue-input-table>
+  -->
+  </div>
+</template>
+
+<script>
+import { validatenull } from "@/util/validate";
+import {getList,getLazyList,getTableDefinedUrl} from "@/api/refer/table";
+export default {
+  name: "vciWebReferDefalut",
+  props:["referConfig","value","text","title"],
+  data() {
+    return {
+      visible: false,
+      options: this.referConfig.options,
+      isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
+      props: {
+        value: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
+        label: this.referConfig.textField || this.referConfig.options.textField || "name"
+      },
+      url: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferDataGrid',
+      tableDefinedUrl:'',//骞冲彴琛ㄦ牸鍦板潃
+      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql',  'queryScheme'],
+      query: {},
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      data:this.referConfig.options.data || [],
+      selectionList: [],
+      objTree: {//鐢ㄤ簬琛ㄦ牸鏍戯紝鐩墠杩樻病鍔犱笂浣跨敤
+        keyId: 'oid',//鏍戝舰id瀛楁鍚嶇О
+        keyPid: 'parentSaleProduct',//鏍戝舰鐖秈d瀛楁鍚嶇О
+        title: 'id',//浠ユ爲褰㈠紡鏄剧ず鐨勫瓧娈�
+        defaultShow: false//榛樿鎶樺彔
+      },
+      option: {
+        addBtn: false,
+        height: this.referConfig.options.height ? this.referConfig.options.height : 475,
+        calcHeight: 30,
+        tip: false,
+        menu:false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        searchLabelWidth: 90,
+        border: true,
+        index: true,
+        selection: true,
+        dialogClickModal: false,
+        highlightCurrentRow: true,
+        column: []
+      }
+    };
+  },
+  created() {
+    this.getParams();
+    console.log('referConfig:')
+    console.log(this.referConfig)
+  },
+  mounted() {
+  },
+  computed:{
+    valueInfo:function (){
+      return this.text ? ("宸茶缃殑鍊间负[" + this.text + "]"): '鏈缃��'
+    }
+  },
+  methods: {
+    getParams:function () {
+      var queryParams = {};
+      if (this.options.extraParams) {
+        queryParams = this.options.extraParams;
+      }
+      if (this.options.useFormKey && this.options.formValues) {
+        //浣跨敤琛ㄥ崟涓婄殑瀛楁鏉ヨ繃婊�
+        queryParams['conditionMap["' + (this.options.paramForFormKey ? this.options.paramForFormKey : this.options.useFormKey) + '"]'] = this.options.formValues[this.options.useFormKey];
+      }
+      if (this.options.where) {
+        for (var key in this.options.where) {
+          queryParams['conditionMap["' + key + '"]'] = this.options.where[key];//鏂�
+        }
+      }
+      for (var i = 0; i < this.copyParam.length; i++) {
+        queryParams[this.copyParam[i]] = this.options[this.copyParam[i]];
+      }
+      queryParams["isMuti"] = this.isMuti;
+      queryParams.muti = this.isMuti;
+      if (!queryParams['referBo']) {
+        queryParams['referBo'] = this.options['referBo'] || this.options['referType'];
+      }
+      queryParams['referType'] = queryParams['referBo']
+      if (this.options.remoteSort && this.options.initSort) {
+        queryParams['order'] = this.options.initSort.type;//鏂规硶
+        queryParams['sort'] = this.options.initSort.field;//瀛楁
+      }
+      if (this.options.conditionParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.conditionParams) {
+          queryParams['conditionMap["' + key + '"]'] = this.options.conditionParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      if (this.options.sourceDataParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.sourceDataParams) {
+          if (key && key.constructor === Object) return;
+          queryParams['sourceData["' + key + '"]'] = this.options.sourceDataParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      if (this.options.replaceParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.replaceParams) {
+          if (key && key.constructor === Object) return;
+          queryParams['replaceMap["' + key + '"]'] = this.options.replaceParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      var paramsData = {};
+      //涓轰簡澶勭悊鍗曞紩鍙峰拰鍙屽紩鍙风殑
+      if (queryParams) {
+        for (var key in queryParams) {
+          paramsData[key.replace(/"/g, "'")] = queryParams[key];
+        }
+      }
+
+      if (!this.options.tableConfig || !this.options.tableConfig.cols || this.options.tableConfig.cols.length == 0) {
+        this.option.column = [{
+          prop: 'id',
+          label: '鑻辨枃鍚嶇О',
+          sort: true,
+          width: 150,
+          search: true
+        }, {
+          prop: 'name',
+          label: '涓枃鍚嶇О',
+          sort: true,
+          width: 150,
+          search: true
+        }, {
+          prop: 'description',
+          label: '鎻忚堪',
+          width: 250
+        }, {
+          prop: 'secretGradeText',
+          label: '瀵嗙骇',
+          width: 60,
+          hidden: (!this.controllerSecret)
+        }];
+      } else {
+        this.option.column = this.options.tableConfig.cols.map(item => {
+          if (item.field != 'LAY_TABLE_INDEX' && item.field != 'LAY_CHECKED') {
+            return {
+              ...item,
+              label: item.title,
+              prop: item.field,
+              search: true
+            }
+          }
+        })
+      }
+      if (!paramsData) {
+        paramsData = {
+          currentUserReferModelKey: this.options.currentUserReferModelKey,
+          currentUserReferMethodKey: this.options.currentUserReferMethodKey
+        };
+      } else {
+        paramsData['currentUserReferModelKey'] = this.options.currentUserReferModelKey;
+        paramsData['currentUserReferMethodKey'] = this.options.currentUserReferMethodKey;
+      }
+      this.params = paramsData;
+    },
+    setValue(){
+      if(this.selectionList.length==0){
+        this.$message.error( '娌℃湁閫夋嫨鏁版嵁');
+        return false;
+      }else if(this.selectionList.length>1 && !this.isMuti){
+        this.$message.error( '姣忔鍙兘閫夋嫨涓�鏉℃暟鎹�');
+        return false;
+      }
+
+      var value = [];
+      var text = [];
+      var isMutiValue = (this.props.value.indexOf(",")>-1);
+      var isMutiRaw = (this.props.label.indexOf(",")>-1);
+      var _that=this
+      this.selectionList.forEach((item,_index) =>{
+        if(isMutiValue){
+          var valueFieldArray = _that.props.value.split(",");
+          valueFieldArray.forEach((_indexField,_itemField)=>{
+            value.push( item[_itemField] + (_that.referConfig.valueSep?_that.referConfig.valueSep:' '));
+          })
+        }else {
+          value.push(item[_that.props.value]);
+        }
+        if(isMutiRaw) {
+          var rawFieldArray = _that.props.label.split(",");
+          rawFieldArray.forEach((_indexField,_itemField)=>{
+            text.push(item[_itemField] + (_that.referConfig.textSep?_that.referConfig.textSep:' ')) ;
+          })
+        }else{
+          text.push(item[_that.props.label]);
+        }
+      })
+
+      this.value=value.join(',');
+      this.text=text.join(',')
+      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList});
+      this.visible=false;
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    currentChange(currentPage){
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize){
+      this.page.pageSize = pageSize;
+    },
+    selectionChange(list) {
+      if (!this.isMuti && list.length > 1) {
+        const nowVal = list.shift();
+        this.$refs.referCrud.toggleRowSelection(nowVal, false);
+      }
+      this.selectionList = list
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.referCrud.toggleSelection();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = this.params) {
+      if(this.url){
+        this.loading = true;
+        getList(Object.assign(params, this.query),page.currentPage, page.pageSize, this.url).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+
+    }
+  }
+}
+</script>
+
+<style scoped>
+.valueInfo{
+  float: left;
+  border: 1px solid #E9E7E7;
+  display: inline-block;
+  vertical-align: middle;
+  padding: 9px 15px;
+  line-height: 1;
+}
+</style>
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
index fbcb212..28ff4e5 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
@@ -1,71 +1,349 @@
 <template>
-  <avue-input-table :props="props"  :column="column" :on-load="onLoad" v-model="value"  :placeholder="placeholder" ></avue-input-table>
+  <div>
+    <el-dialog :title="title"
+               v-dialogDrag append-to-body="true"
+               :visible.sync="visible"
+               top="0"
+               class="avue-dialog avue-dialog--top"
+               :width="referConfig.options.width|| '80%'">
+      <avue-crud :option="option"
+                 :table-loading="loading"
+                 :data="data"
+                 :page.sync="page"
+                 v-model="value"
+                 ref="referCrud"
+                 @search-change="searchChange"
+                 @search-reset="searchReset"
+                 @selection-change="selectionChange"
+                 @current-change="currentChange"
+                 @size-change="sizeChange"
+                 @refresh-change="refreshChange"
+                 @on-load="onLoad">
+      </avue-crud>
+      <div class="avue-dialog__footer">
+        <div class="avue-dialog__footer--left valueInfo">{{ valueInfo }}</div>
+        <el-button @click="visible=false">鍙� 娑�</el-button>
+        <el-button @click="setValue" type="primary">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+
+    <avue-input v-model="text" :placeholder="title" @click="visible=true"></avue-input>
+    <!--<avue-input-table ref="referTable"  :props="props"  :column="column" :on-load="onLoad" v-model="value"  :placeholder="title" ></avue-input-table>
+  -->
+  </div>
 </template>
 
 <script>
+import { validatenull } from "@/util/validate";
+import {getList,getLazyList,getTableDefinedUrl} from "@/api/refer/table";
 export default {
   name: "vciWebReferTable",
-  props:["referConfig","value"],
+  props:["referConfig","value","text","title"],
   data() {
     return {
-      placeholder:this.referConfig.placeholder || '璇烽�夋嫨鏁版嵁',
-      column:{
-        children:{
-          border: true,
-          column: [{
-            label: '濮撳悕',
-            width: 120,
-            search:true,
-            prop: 'name'
-          }, {
-            label: '鎬у埆',
-            search:true,
-            prop: 'sex'
-          }],
-        },
-      },
+      visible: false,
+      options: this.referConfig.options,
+      isMuti: ("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
       props: {
         value: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
         label: this.referConfig.textField || this.referConfig.options.textField || "name"
+      },
+      url: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferDataGrid',
+      tableDefinedUrl:'',//骞冲彴琛ㄦ牸鍦板潃
+      copyParam: ['referBo', 'textField', 'valueField', 'displayTable', 'whereSql',  'queryScheme'],
+      query: {},
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      data:this.referConfig.options.data || [],
+      selectionList: [],
+      objTree: {//鐢ㄤ簬琛ㄦ牸鏍戯紝鐩墠杩樻病鍔犱笂浣跨敤
+        keyId: 'oid',//鏍戝舰id瀛楁鍚嶇О
+        keyPid: 'parentSaleProduct',//鏍戝舰鐖秈d瀛楁鍚嶇О
+        title: 'id',//浠ユ爲褰㈠紡鏄剧ず鐨勫瓧娈�
+        defaultShow: false//榛樿鎶樺彔
+      },
+      option: {
+        addBtn: false,
+        height: this.referConfig.options.height ? this.referConfig.options.height : 475,
+        calcHeight: 30,
+        tip: false,
+        menu:false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        searchLabelWidth: 90,
+        border: true,
+        index: true,
+        selection: true,
+        dialogClickModal: false,
+        highlightCurrentRow: true,
+        column: []
       }
     };
   },
+  created() {
+    this.getParams();
+    console.log('referConfig:')
+    console.log(this.referConfig)
+  },
+  mounted() {
+  },
+  computed:{
+    valueInfo:function (){
+      return this.text ? ("宸茶缃殑鍊间负[" + this.text + "]"): '鏈缃��'
+    }
+  },
   methods: {
-    onLoad({page, value, data}, callback) {
-      //棣栨鍔犺浇鍘绘煡璇㈠搴旂殑鍊�
-      if (value) {
-        this.$message.success('棣栨鏌ヨ' + value)
-        callback({
-          id: '0',
-          name: '寮犱笁',
-          sex: '鐢�'
-        })
-        return
+    getParams:function (){
+      var queryParams = {};
+      if(this.options.extraParams){
+        queryParams = this.options.extraParams;
       }
-      if (data) {
-        this.$message.success('鎼滅储鏌ヨ鍙傛暟' + JSON.stringify(data))
+      if(this.options.useFormKey && this.options.formValues){
+        //浣跨敤琛ㄥ崟涓婄殑瀛楁鏉ヨ繃婊�
+        queryParams['conditionMap["' + (this.options.paramForFormKey?this.options.paramForFormKey:this.options.useFormKey)  + '"]'] = this.options.formValues[this.options.useFormKey];
       }
-      if (page) {
-        this.$message.success('鍒嗛〉鍙傛暟' + JSON.stringify(page))
+      if(this.options.where ) {
+        for (var key in this.options.where) {
+          queryParams['conditionMap["' + key + '"]'] = this.options.where[key];//鏂�
+        }
       }
-      //鍒嗛〉鏌ヨ淇℃伅
-      callback({
-        total: 2,
-        data: [{
-          id: '0',
-          name: '寮犱笁',
-          sex: '鐢�'
-        }, {
-          id: '1',
-          name: '鏉庡洓',
-          sex: '濂�'
-        }]
+      for(var i= 0 ; i < this.copyParam.length ; i ++){
+        queryParams[this.copyParam[i]] = this.options[this.copyParam[i]];
+      }
+      queryParams["isMuti"]=this.isMuti;
+      queryParams.muti =this.isMuti;
+      if(!queryParams['referBo']){
+        queryParams['referBo'] = this.options['referBo'] || this.options['referType'];
+      }
+      queryParams['referType']= queryParams['referBo']
+      if (this.options.remoteSort && this.options.initSort) {
+        queryParams['order'] = this.options.initSort.type;//鏂规硶
+        queryParams['sort'] = this.options.initSort.field;//瀛楁
+      }
+      if (this.options.conditionParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.conditionParams) {
+          queryParams['conditionMap["' + key + '"]'] = this.options.conditionParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      if (this.options.sourceDataParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.sourceDataParams) {
+          if (key && key.constructor === Object) return;
+          queryParams['sourceData["' + key + '"]'] = this.options.sourceDataParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      if (this.options.replaceParams) {
+        //璇存槑鏄墿灞曞睘鎬�
+        for (var key in this.options.replaceParams) {
+          if (key && key.constructor === Object) return;
+          queryParams['replaceMap["' + key + '"]'] = this.options.replaceParams[key];//鏂扮殑鏂瑰紡
+        }
+      }
+      var paramsData = {};
+      //涓轰簡澶勭悊鍗曞紩鍙峰拰鍙屽紩鍙风殑
+      if(queryParams){
+        for (var key in queryParams){
+          paramsData[key.replace(/"/g, "'")] = queryParams[key];
+        }
+      }
+
+      if(this.options.displayTable){
+        //璇存槑鏄娇鐢ㄥ钩鍙扮殑琛ㄦ牸
+        getTableDefinedUrl({btmType:(this.options.referBo||this.options.referType),code:this.options.displayTable,isMuti:this.isMuti},this.tableDefinedUrl).then(result => {
+          if(result.success){
+            var queryScheme = result.querySchema;
+            if(!validatenull(queryScheme) && validatenull(this.options.queryScheme)){
+              this.options.queryScheme = queryScheme;
+            }
+            paramsData['queryScheme'] = this.options.queryScheme;
+            if(result.showIndex){
+              this.option.index = true;
+            }
+            if(result.showCheckbox){
+              this.option.selection = true
+            }
+            var referColumn = "";
+            if(result.columns){
+              this.option.column= result.columns.map(item => {
+                if(item.field.indexOf(".")>-1){
+                  referColumn += item.field + ",";
+                  item.field = item.field.replace(".","_");
+                }
+                if(!validatenull(item.enumCode)) {
+                  //鏄灇涓剧殑鍐呭
+                  item.type = 'select';
+                  item.dicUrl = "/api/ubcs-omd/enum/dictionary?code=" + item.enumCode;
+                  item.dicData = item.enumMap;
+                  item.dataType = "String";
+                  item.search = true;
+                  item.props = {
+                    label: "itemName",
+                    value: "itemValue"
+                  };
+                  item.rules = [{
+                    required: true,
+                    message: "璇疯緭鍏�" + item.field,
+                    trigger: "blur"
+                  }];
+                  /*item.formatter=function(d,thisItem){
+                    var vciWebComboxStore = layui.vciWebComboxStore;
+                    return vciWebComboxStore.getComboxText(thisItem.enumCode,d[thisItem.field]);
+                  };*/
+                }
+                return {
+                  ...item,
+                  label: item.title,
+                  prop: item.field,
+                  search: true
+                }
+              })
+            }
+            paramsData['referColumn'] = referColumn;
+            if(result.limit>0){
+              this.page.pageSize = result.limit;
+              this.page.currentPage=1
+            }
+            if(this.options.isTreeGrid){
+              //琛ㄦ牸鏍戝姞涓婇厤缃�
+            }
+            this.params=paramsData;
+          }else{
+            this.$message.error(result.msg);
+          }
+
+        });
+      }else{
+        //璇存槑鏄嚜瀹氫箟鐨勮〃鏍�
+        var tableConfig = this.options.tableConfig;
+        if(!tableConfig){
+          this.$message.error( '娌℃湁瀹氫箟鍙傜収鐨勮〃鏍奸厤缃�');
+        }
+        this.page.pageSize=tableConfig.page.limit || 10;
+        if(!paramsData){
+          paramsData = {
+            currentUserReferModelKey:this.options.currentUserReferModelKey,
+            currentUserReferMethodKey:this.options.currentUserReferMethodKey
+          };
+        }else{
+          paramsData['currentUserReferModelKey'] = this.options.currentUserReferModelKey;
+          paramsData['currentUserReferMethodKey'] = this.options.currentUserReferMethodKey;
+        }
+        if(this.options.tableConfig && this.options.tableConfig.cols && this.options.tableConfig.cols.length>0) {
+          //璇存槑浼犻�掍簡鐨�
+          this.option.column= this.options.tableConfig.cols.map(item => {
+            if (item.field != 'LAY_TABLE_INDEX' && item.field != 'LAY_CHECKED') {
+              return {
+                ...item,
+                label: item.title,
+                prop: item.field,
+                search: true
+              }
+            }
+          })
+        }
+        if(this.options.isTreeGrid){
+          //琛ㄦ牸鏍戝姞涓婇厤缃�
+        }
+      }
+      this.params=paramsData;
+    },
+    setValue(){
+      if(this.selectionList.length==0){
+        this.$message.error( '娌℃湁閫夋嫨鏁版嵁');
+        return false;
+      }else if(this.selectionList.length>1 && !this.isMuti){
+        this.$message.error( '姣忔鍙兘閫夋嫨涓�鏉℃暟鎹�');
+        return false;
+      }
+
+      var value = [];
+      var text = [];
+      var isMutiValue = (this.props.value.indexOf(",")>-1);
+      var isMutiRaw = (this.props.label.indexOf(",")>-1);
+      var _that=this
+      this.selectionList.forEach((item,_index) =>{
+        if(isMutiValue){
+          var valueFieldArray = _that.props.value.split(",");
+          valueFieldArray.forEach((_indexField,_itemField)=>{
+            value.push( item[_itemField] + (_that.referConfig.valueSep?_that.referConfig.valueSep:' '));
+          })
+        }else {
+          value.push(item[_that.props.value]);
+        }
+        if(isMutiRaw) {
+          var rawFieldArray = _that.props.label.split(",");
+          rawFieldArray.forEach((_indexField,_itemField)=>{
+            text.push(item[_itemField] + (_that.referConfig.textSep?_that.referConfig.textSep:' ')) ;
+          })
+        }else{
+          text.push(item[_that.props.label]);
+        }
       })
+
+      this.value=value.join(',');
+      this.text=text.join(',')
+      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList});
+      this.visible=false;
+    },
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    currentChange(currentPage){
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize){
+      this.page.pageSize = pageSize;
+    },
+    selectionChange(list) {
+      if (!this.isMuti && list.length > 1) {
+        const nowVal = list.shift();
+        this.$refs.referCrud.toggleRowSelection(nowVal, false);
+      }
+      this.selectionList = list
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.referCrud.toggleSelection();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    onLoad(page, params = this.params) {
+      if(this.url){
+        this.loading = true;
+        getList(Object.assign(params, this.query),page.currentPage, page.pageSize, this.url).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+
     }
   }
 }
 </script>
 
 <style scoped>
-
+.valueInfo{
+  float: left;
+  border: 1px solid #E9E7E7;
+  display: inline-block;
+  vertical-align: middle;
+  padding: 9px 15px;
+  line-height: 1;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
index 4180372..d5f82cb 100644
--- a/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
+++ b/Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -1,27 +1,31 @@
 <template>
-  <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>
+  <avue-input-tree ref="referTree" :props="props" :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>
 import {getTree,getLazyTree} from "@/api/refer/tree";
+import {validatenull} from "@/util/validate";
 
 export default {
   name: "vciWebReferTree",
-  props:["referConfig","value","text"],
+  props:["referConfig","value","text","title"],
   data() {
     return {
       options: this.referConfig.options,
       lazy: this.referConfig.options.loadType == 'node',
-      isMuti: this.referConfig.isMuti,
-      placeholder: this.referConfig.placeholder || '璇烽�夋嫨鍐呭',
+      isMuti:("true" == this.referConfig.options.isMuti || this.referConfig.options.isMuti == true || this.referConfig.options.muti == true) ? true : false,
       props: {
-        value: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
-        label: this.referConfig.textField || this.referConfig.options.textField || "name"
-        //value:"value",
-        //label:"title"
+        value: 'oid',
+        label: "name"
       },
-      treeUrl: this.referConfig.options.url || '/api/ubcs-code/codeClassify/treeCodeClassify',
+      config:{
+        valueField: this.referConfig.valueField || this.referConfig.options.valueField || 'oid',
+        textField:this.referConfig.textField || this.referConfig.options.textField || "name",
+        textSep:this.referConfig.textSep || ' '
+      },
+      treeUrl: this.referConfig.options.url || '/api/ubcs-code/mdmEngineController/defaultReferTree',
       treeData: [],
+      selectionList: [],
       currentNode:{},
       params: {},
       loadType: {'all': 'all', 'node': 'node'},
@@ -42,6 +46,7 @@
       }
     }
   },
+  computed:{},
   methods: {
     getParams:function (){
       var queryParams = {};
@@ -56,10 +61,10 @@
         }
       }
       queryParams['referBo'] = this.options['referBo'] || this.options['referType'];
+      queryParams['referType']= queryParams['referBo']
       queryParams['selectAllLevel'] = (this.options.loadType == this.loadType.all?true:false);//true鏃跺悗鍙颁細鎶ラ敊
-      if(queryParams.isMuti =="true"){
-        queryParams.muti =true;
-      }
+
+      queryParams.muti =this.isMuti;
       if(queryParams.isQueryAllColumn =="true"){
         queryParams.isQueryAllColumn = true;
       }
@@ -143,12 +148,54 @@
         }))
       });
     },
-    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});
+    nodeClick(data, node, nodeComp){
+      if(!this.isMuti) {
+        //涓嶈鐢╳atch鐩戝惉value鍊硷紝浼氭壘涓嶅埌text
+        this.value = data[this.config.valueField];
+        this.text = data[this.config.textField];
+        this.currentNode = data;
+        this.$emit("setValue", {
+          field: this.referConfig.field,
+          showField: this.referConfig.showField,
+          value: this.value,
+          text: this.text,
+          rawData: [this.currentNode]
+        });
+      }
+     },
+    checked:(checkedNode, checkedData)=> {
+      debugger;
+      /*
+      * this鐢ㄦ椂濮嬬粓瑕佹姤閿欙紝鍙兘鍏堟敞閲�
+      var value = [];
+      var text = [];
+      const textSep =this.config.textSep;
+      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[this.config.valueField] || item[this.config.valueField])
+        value.push(v);
+        var tempRaw = [];
+        var textFieldArray = this.config.textField.split(",");
+        for (var i = 0; i < textFieldArray.length; i++) {//鏄剧ず鐨勫瓧娈靛彲鑳芥湁澶氫釜
+          if (!validatenull(textFieldArray[i])) {
+            var t=textFieldArray[i].indexOf("attribute.")>=0?item.attributes[textFieldArray[i].replace("attribute.","")]:(item.attributes[textFieldArray[i]] || item[textFieldArray[i]])
+            tempRaw.push(t);
+          }
+        }
+        text.push(tempRaw.join(textSep));
+      }
+      this.value = value.join(',');
+      this.text = text.join(',')*/
+
+      this.value=checkedData.checkedKeys;
+      this.$emit("setValue", {
+        field: this.referConfig.field,
+        showField: this.referConfig.showField,
+        value: this.value,
+        text: this.text,
+        isTreeMuti:true,
+        rawData: checkedData.checkedNodes
+      });
     }
   },
   watch:{

--
Gitblit v1.9.3