xiejun
2023-08-17 5a9b31f9dbd1ce22fe385f624a833228f01f319c
Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -1,6 +1,6 @@
<template>
<div>
  <el-button  @click="HandlerSave" v-if="hasEditor" size="small" type="primary" style="margin-bottom: 20px">保存</el-button>
  <el-button  @click="HandlerSave" v-if="hasEditor" size="small" type="primary" style="margin-bottom: 10px">保存</el-button>
  <el-table
    v-loading="isLoading"
    :data="tableData"
@@ -17,31 +17,39 @@
      :prop="item.prop"
      :sortable="item.sortable"
      :formatter="item.formatter"
      :width="item.label.length >=4 ?'150':item.label.length==3 ?'120':'90'"
      :width="item.width"
      :show-overflow-tooltip="true"
      align="center"
    >
      <template slot-scope="{ row }">
        <el-input v-if="editingRow === row && editShow== item.prop && item.edit == 'text'" v-model="row[item.prop]"
        <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]"
        <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-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.dictValue"
            :label="optionItem.dictValue"
            :value="optionItem.dictValue">
            :key="optionItem.key"
            :label="optionItem.value"
            :value="optionItem.key">
          </el-option>
        </el-select>
        <el-switch
          v-if="item.edit === 'switch' || item.edit === 'truefalse'" v-model="row[item.prop]" active-value="true"
          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 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]"
          :text="row[item.referConfig.showField]" :disabled="item.disabled" :display="item.display"
          @setReferValue="setReferValue"
        ></vciWebRefer>
        <span v-else  v-html="formatter(row,item)"></span>
@@ -119,8 +127,9 @@
          return newitem;
        })
        batchUpdateCode(datas).then(res => {
          if (res.data.data.success) {
          if (res.data.success) {
            this.$message.success("修改成功");
            this.BuinseseRend()
          }
        })
      }
@@ -143,7 +152,7 @@
          this.List = res.data.tableDefineVO.cols[0];
          this.tableHeadData=[];
          this.List.forEach((item) => {
            let editAttr=this.stageAttrs.filter(stageitem => stageitem.attrId == item.field);
            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,
@@ -165,24 +174,26 @@
            }
            if(editAttr.length>0) {
              editAttr=editAttr[0]
              columnItem.edit= 'text';//this.columnType[editAttr.edit]
              if (typeof editAttr.editConfig == "string") {
                columnItem.editConfig = eval("(" + item.editConfig + ")");
              } else {
                columnItem.editConfig = item.editConfig
              }
              if (item.edit == 'select') {
              columnItem.edit= this.columnType[item.fieldType]
              if (columnItem.edit == 'select') {
                //需要获取下拉框数据
                columnItem.dicData = columnItem.editConfig.comboxConfig.data || this.geDictData(columnItem.editConfig.comboxConfig.comboxKey)
                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 (item.edit == 'refer') {
              if (columnItem.edit == 'refer') {
                columnItem.referConfig = {
                  title: item.title,
                  showField: item.showField || item.field,
                  field: item.field,
                  options:  columnItem.editConfig.referConfig
                  field: item.sortField || item.field,
                  options:  item.referConfig
                }
                columnItem.display=!item.hidden;
                columnItem.disabled=item.readOnly
              }
            }
@@ -229,6 +240,9 @@
        this.editingRow[data.field] = data.value || "";
        this.editingRow[data.showField] = data.text || "";
      }
    },
    changeSelect(data){
      this.editingRow[this.editShow.replace('Text','')] = data;
    }
  }
}