From ded6e8d2312e139e8ce770c7f1d5830bf2db4af6 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期三, 19 七月 2023 11:39:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/components/work/BusinessWork.vue |  147 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 120 insertions(+), 27 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/work/BusinessWork.vue b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
index 4f0b688..e30e6dd 100644
--- a/Source/UBCS-WEB/src/components/work/BusinessWork.vue
+++ b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -1,6 +1,6 @@
 <template>
 <div>
-  <el-button  @click="HandlerRend" size="small" type="primary">淇濆瓨</el-button>
+  <el-button  @click="HandlerSave" v-if="hasEditor" size="small" type="primary" style="margin-bottom: 20px">淇濆瓨</el-button>
   <el-table
     v-loading="isLoading"
     :data="tableData"
@@ -8,7 +8,6 @@
     style=""
     @cell-click="handleCellClick"
   >
-    <el-table-column fixed type="selection" width="55"> </el-table-column>
     <el-table-column fixed label="搴忓彿" type="index" width="55">
     </el-table-column>
     <el-table-column
@@ -22,17 +21,31 @@
       :show-overflow-tooltip="true"
       align="center"
     >
-      <!-- 缂栬緫鍜屽睍绀洪�昏緫 -->
-      <!--              <template slot-scope="{ row }">-->
-      <!--                <el-input v-if="editingRow === row && editShow== item.prop" v-model="row[item.prop]" @blur="saveRow"></el-input>-->
-      <!--                <span v-else>{{row[item.prop]}}</span>-->
-      <!--                <el-switch-->
-      <!--                  v-if="editShow === 'true'"-->
-      <!--                  v-model="row[item.prop]"-->
-      <!--                  active-color="#13ce66"-->
-      <!--                  inactive-color="#ff4949">-->
-      <!--                </el-switch>-->
-      <!--              </template>-->
+      <template slot-scope="{ row }">
+        <el-input v-if="editingRow === row && editShow== item.prop && item.edit == 'text'" v-model="row[item.prop]"
+                  @blur="editingRows=null"></el-input>
+        <el-input-number size="small" controls-position="right" v-if="editingRow === row && editShow== item.prop && item.edit == 'number'" v-model="row[item.prop]"
+                         @blur="editingRows=null" :style="{width:(item.width-10)+'px'}"></el-input-number>
+        <el-select v-model="row[item.prop]" filterable  allow-create  default-first-option slot="prepend" v-if="editingRow === row && editShow== item.prop && item.edit == 'select' " @blur="editingRows=null">
+          <el-option
+            v-for="optionItem in item.dicData"
+            :key="optionItem.dictValue"
+            :label="optionItem.dictValue"
+            :value="optionItem.dictValue">
+          </el-option>
+        </el-select>
+        <el-switch
+          v-if="item.edit === 'switch' || item.edit === 'truefalse'" v-model="row[item.prop]" active-value="true"
+          inactive-value="false">
+        </el-switch>
+        <vciWebRefer v-if="editingRow === row && editShow== item.prop && item.edit == 'refer'"
+          :referConfig="item.referConfig || {}"
+          :value="row[item.referConfig.field] || row[item.prop]"
+          :text="row[item.referConfig.showField]"
+          @setReferValue="setReferValue"
+        ></vciWebRefer>
+        <span v-else  v-html="formatter(row,item)"></span>
+      </template>
     </el-table-column>
   </el-table>
 </div>
@@ -40,11 +53,15 @@
 
 <script>
 import {businese} from '@/api/work/businese'
-import {MasterTable} from "@/api/GetItem";
+import {FlowTable, batchUpdateCode} from "@/api/GetItem";
 import {validatenull} from "@/util/validate";
+import {getDictionary} from "@/api/system/dict";
+import vciWebRefer from "../refer/vciWebRefer.vue";
+
 export default {
   name: "BusinessWork",
-  props:['ids','templateId'],
+  components: { vciWebRefer },
+  props:['ids','templateId',"taskId","modelKey","codeClassifyOid"],
   data() {
     return {
       BuinessOids:[],
@@ -53,16 +70,26 @@
       tableData:[],
       editingRow: null,
       editShow: "",
-      editAttr: ""
+      editAttr: "",
+      hasEditor:false,
+      columnType: {
+        text: "input",
+        combox: "select",
+        truefalse: "switch",
+        number: "number",
+        textarea: "textarea",
+        datetime: "datetime",
+        date: "date",
+        refer: "refer"
+      }
     }
   },
   watch:{
     ids:{
       handler(newval,oldval){
         this.BuinessOids=newval;
+        this.CrudHeaderRend()
         this.BuinseseRend()
-        console.log(newval)
-        console.log(this.BuinessOids)
       },
       deep:true
     }
@@ -72,16 +99,32 @@
   mounted() {
   },
   methods:{
-    HandlerRend(){
+    HandlerSave(){
       this.editingRow = null;
+      //淇濆瓨
+      batchUpdateCode(this.tableData).then(res => {
+        console.log(res)
+        if(res.data.data.success){
+          this.$message.success("淇濆瓨鎴愬姛");
+        }
+
+      })
     },
     //琛ㄦ牸澶存覆鏌�
     CrudHeaderRend() {
       if (this.codeClassifyOid != "") {
-        MasterTable({
-          codeClassifyOid: this.codeClassifyOid,
-          functionId: 5,
+        var data=new FormData()
+        data.append('templateId', this.templateId)
+        data.append('taskId', this.taskId)
+        data.append('modelKey', this.modelKey)
+        data.append('codeClassifyOid', this.codeClassifyOid)
+        FlowTable({
+          'templateId': this.templateId,
+          'taskId': this.taskId,
+          'modelKey': this.modelKey,
+          'codeClassifyOid': this.codeClassifyOid
         }).then((res) => {
+          this.hasEditor=res.data.tableDefineVO.hasEditor;
           this.options = res.data.tableDefineVO.seniorQueryColumns;
           this.List = res.data.tableDefineVO.cols[0];
           this.tableHeadData=[];
@@ -91,18 +134,43 @@
               prop: item.field,
               type: this.columnType[item.type],
               sortable: item.sort,
-              width: item.minWidth
+              width: item.minWidth,
+              edit:this.columnType[item.edit]
             };
             if(item.field == 'id' && validatenull(item.templet)){
               //浼佷笟缂栫爜鐨勯粯璁ゆ坊鍔犺秴閾炬帴,鏆傛湭瀹炵幇
               columnItem.formatter = '';
             }else {
-              if (item.templet && typeof (item.templet) == 'string' && !validatenull(item.templet) && item.templet.indexOf("function(row,column)")>-1) {
+              if (item.templet && typeof (item.templet) == 'string' && !validatenull(item.templet) && item.templet.indexOf("function(row,column)") > -1) {
                 columnItem.formatter = eval("(" + item.templet + ")");
-                //function(row,column){return row[column.property]=='true'?'鏄�':'鍚�'}
+              } else if (item.fieldType == "truefalse") {
+                columnItem.formatter = function (row, column) {
+                  return row[column.property] == 'true' || row[column.property] == '1' ? '鏄�' : '鍚�'
+                }
+              }
+
+            }
+            if(validatenull(item.edit)) {
+              if (typeof item.editConfig == "string") {
+                columnItem.editConfig = eval("(" + item.editConfig + ")");
+              } else {
+                columnItem.editConfig = item.editConfig
+              }
+              if (item.edit == 'select') {
+                //闇�瑕佽幏鍙栦笅鎷夋鏁版嵁
+                columnItem.dicData = columnItem.editConfig.comboxConfig.data || this.geDictData(columnItem.editConfig.comboxConfig.comboxKey)
+              }
+              if (item.edit == 'refer') {
+                columnItem.referConfig = {
+                  title: item.title,
+                  showField: item.showField || item.field,
+                  field: item.field,
+                  options:  columnItem.editConfig.referConfig
+                }
               }
             }
-            this.tableHeadData.push(columnItem)
+
+            this.tableHeadData.push(Object.assign(item, columnItem))
           });
         });
       }
@@ -116,11 +184,36 @@
         this.tableData = res.data.data;
       })
     },
+    // 寮傛鑾峰彇瀛楀吀鏁版嵁
+    geDictData(dictKey) {
+      getDictionary({code: dictKey}).then((res) => {
+        if (res.data && res.data.code === 200) {
+          return (res.data.data || []).map((itm) => {
+            itm.value = itm.dictValue;
+            itm.key = itm.dictKey;
+            return itm;
+          });
+        }
+      });
+    },
     // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝e湪缂栬緫鐨勮
-    handleCellClick(row, column) {
+    handleCellClick(row, column, cell, event) {
       this.editingRow = row;
       this.editShow = column.property;
     },
+    formatter(row, column){
+      if(column.formatter){
+        return column.formatter(row,column)
+      }else{
+        return row[column.prop]
+      }
+    },
+    setReferValue(data) {
+      if (data.field) {
+        this.editingRow[data.field] = data.value || "";
+        this.editingRow[data.showField] = data.text || "";
+      }
+    }
   }
 }
 </script>

--
Gitblit v1.9.3