From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示

---
 Source/UBCS-WEB/src/components/work/BusinessWork.vue |  257 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 225 insertions(+), 32 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/work/BusinessWork.vue b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
index 97e3f18..6a65f49 100644
--- a/Source/UBCS-WEB/src/components/work/BusinessWork.vue
+++ b/Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -1,54 +1,250 @@
 <template>
 <div>
-  <el-button @click="add"></el-button>
-  <el-table :data="data">
-    <el-table-column
-      fixed
-      type="selection"
-      width="55">
+  <el-button  @click="HandlerSave" v-if="hasEditor" size="small" type="primary" style="margin-bottom: 10px">淇濆瓨</el-button>
+  <el-table
+    v-loading="isLoading"
+    :data="tableData"
+    max-height="700"
+    style=""
+    @cell-click="handleCellClick"
+  >
+    <el-table-column fixed label="搴忓彿" type="index" width="55">
     </el-table-column>
     <el-table-column
-      fixed
-      label="搴忓彿"
-      type="index"
-      width="55">
+      v-for="item in this.tableHeadData"
+      :key="item.id"
+      :label="item.label"
+      :prop="item.prop"
+      :sortable="item.sortable"
+      :formatter="item.formatter"
+      :width="item.width"
+      :show-overflow-tooltip="true"
+      align="center"
+    >
+      <template slot-scope="{ row }">
+        <el-input
+          v-if="editingRow === row && editShow== item.prop && item.edit == 'input'" 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 filterable  default-first-option slot="prepend" @change="changeSelect"
+                   v-if="editingRow === row && editShow== item.prop && item.edit == 'select' "  v-model="row[item.prop]" @blur="editingRows=null">
+          <el-option
+            v-for="optionItem in item.dicData"
+            :key="optionItem.key"
+            :label="optionItem.value"
+            :value="optionItem.key">
+          </el-option>
+        </el-select>
+        <el-switch
+          v-if="editingRow === row && editShow== item.prop && (item.edit === 'switch' || item.edit === 'truefalse')" v-model="row[item.prop]" active-value="true"
+          inactive-value="false">
+        </el-switch>
+        <el-date-picker
+          v-if="editingRow === row && editShow== item.prop && (item.edit == 'date' || item.edit == 'datetime') "  v-model="row[item.prop]" @blur="editingRows=null"
+          :type="item.edit" :format="item.dateFormate" :value-format="item.dateFormate"
+          placeholder="閫夋嫨鏃ユ湡">
+        </el-date-picker>
+        <vciWebRefer
+          :key="item.prop" :data-key="item.prop"
+          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]" :disabled="item.disabled" :display="item.display"
+          @setReferValue="setReferValue"
+        ></vciWebRefer>
+        <span v-else  v-html="formatter(row,item)"></span>
+      </template>
     </el-table-column>
   </el-table>
 </div>
 </template>
 
 <script>
-import {businese,add} from '@/api/work/businese'
+import {businese} from '@/api/work/businese'
+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:['oid','templateId'],
+  components: { vciWebRefer },
+  props:['ids','templateId',"taskId","modelKey","codeClassifyOid",'stageAttrs'],
   data() {
     return {
-      data:[
-        {
-          label:'app'
-        }
-      ]
+      BuinessOids:[],
+      isLoading:false,
+      tableHeadData:[],
+      tableData:[],
+      editingRow: null,
+      editShow: "",
+      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()
+      },
+      deep:true
+    },
+    stageAttrs(newval,oldval){
+      this.hasEditor=newval.length>0;
     }
   },
   created() {
-    businese({oid: this.oid,
-      templateOid: this.templateId}).then(res=>{
-      console.log(res)
-    })
+
+  },
+  mounted() {
   },
   methods:{
-    add(){
-      // businese({oid: this.oid[2],
-      //   templateOid: this.templateId}).then(res=>{
-      //   console.log(res)
-      // })
-      add({
+    HandlerSave(){
+      if(!validatenull(this.editingRow)) {
+        this.editingRow = null;
+        //淇濆瓨
+        let datas = this.tableData.map(item => {
+          let newitem = {
+            codeClassifyOid: item.codeclsfid,
+            templateOid: this.templateId,
+            editInProcess: true,
+            data: item,
+            oid: item.oid,
+            ts: item.ts
+          }
+          return newitem;
+        })
+        batchUpdateCode(datas).then(res => {
+          if (res.data.success) {
+            this.$message.success("淇敼鎴愬姛");
+            this.BuinseseRend()
+          }
+        })
+      }
+    },
+    //琛ㄦ牸澶存覆鏌�
+    CrudHeaderRend() {
+      if (this.codeClassifyOid != "") {
+        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.options = res.data.tableDefineVO.seniorQueryColumns;
+          this.List = res.data.tableDefineVO.cols[0];
+          this.tableHeadData=[];
+          this.List.forEach((item) => {
+            let editAttr=this.stageAttrs.filter(stageitem => stageitem.attrId == item.field || (item.fieldType=='combox' && stageitem.attrId+'Text' == item.field)|| (item.fieldType=='refer' && stageitem.attrId+'name' == item.field));
+            let columnItem = {
+              label: item.title,
+              prop: item.field,
+              type: this.columnType[item.type],
+              sortable: item.sort,
+              width: item.minWidth
+            };
+            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) {
+                columnItem.formatter = eval("(" + item.templet + ")");
+              } else if (item.fieldType == "truefalse") {
+                columnItem.formatter = function (row, column) {
+                  return row[column.property] == 'true' || row[column.property] == '1' ? '鏄�' : '鍚�'
+                }
+              }
+
+            }
+            if(editAttr.length>0) {
+              columnItem.edit= this.columnType[item.fieldType]
+              if (columnItem.edit == 'select') {
+                //闇�瑕佽幏鍙栦笅鎷夋鏁版嵁
+                columnItem.dicData = item.data || this.geDictData(item.comboxKey)
+                columnItem.formatter = function (row, column) {
+                  let d=column.dicData.find((value, keys, arr) => {
+                    return value.key == row[column.prop.replace('Text','')];
+                  })
+                  return row[column.prop] =(d && d.value) || row[column.prop]
+                }
+              }
+              if (columnItem.edit == 'refer') {
+                columnItem.referConfig = {
+                  title: item.title,
+                  showField: item.showField || item.field,
+                  field: item.sortField || item.field,
+                  options:  item.referConfig
+                }
+                columnItem.display=!item.hidden;
+                columnItem.disabled=item.readOnly
+              }
+            }
+
+            this.tableHeadData.push(Object.assign(item, columnItem))
+          });
+        });
+      }
+    },
+    //琛ㄦ牸鏁版嵁
+    BuinseseRend(){
+      businese({
         btmType:'wupin',
-        'conditionMap[oid]':'D49A28F3-3740-D0EF-A3C6-5A71CA6978CC'
+        'conditionMap[oid]':this.BuinessOids.toString()
       }).then(res=>{
-        console.log(res)
+        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, 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 || "";
+      }
+    },
+    changeSelect(data){
+      this.editingRow[this.editShow.replace('Text','')] = data;
     }
   }
 }
@@ -57,6 +253,3 @@
 <style scoped>
 
 </style>
-
-<!--mdmEngineController/getTableDataByOids?page=1&limit=-1&btmType=wupin&conditionMap%5B%27oid%27%5D=90DC514B-396D-9664-67D0-1587640FE15E&_=1687773044552-->
-<!--mdmEngineController/getTableDataByOids?conditionMap%5Boid%5D=D49A28F3-3740-D0EF-A3C6-5A71CA6978CC-->

--
Gitblit v1.9.3