ludc
2023-11-14 2be0ef348c881796d66e112463f62be5ef374527
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -5,19 +5,20 @@
        <div class="testbox" style="">
          <div>
          </div>
          <el-row style="width: 100%;margin-bottom: 20px">
            <div>
              <el-button v-for="(item, index) in masterVrBtnList"
                         v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
                         :key="index" plain size="small"
                         type="primary"
                         @click="handelBtnClick(item)">{{
                  item.name
                }}
              </el-button>
          <el-row style="width: 100%;margin-bottom: 10px">
            <div style="margin-bottom: 10px" >
                <el-button v-for="(item, index) in masterVrBtnList"
                           v-if="!['PREVIEW', 'DELETEFILE', 'revisefile', 'DOWNLOADFILE', 'UPLOADFILE'].includes(item.uniqueFlag)"
                           :key="index" plain size="small"
                           type="primary"
                           @click="handleBtnClick(item)">{{
                    item.name
                  }}
                </el-button>
              <span v-if="tableHeadFindData.length > 0">
              <el-select v-model="keyWordFind" slot="prepend" placeholder="请选择" size="small">
                <el-option v-for="item in tableHeadFindData" :label="item.label" :value="item.prop"></el-option>
              <el-select slot="prepend" v-model="keyWordFind" placeholder="请选择" size="small">
                <el-option v-for="item in tableHeadFindData" :key="item.id" :label="item.label"
                           :value="item.prop"></el-option>
              </el-select>
              <el-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"
@@ -34,26 +35,50 @@
                <el-option label="审核中" value="Auditing"></el-option>
              </el-select></span>
            </div>
            <el-table ref="dataTable" v-loading="isLoading" :data="tableData"
                      :height="tableHeight"
                      @select="handleSelection" @cell-click="handleCellClick" @row-click="handleRowClick"
                      @select-all="handleSelectionAll" @selection-change="handleSelectionChange"
                      @sort-change="sortChange">
              <el-table-column v-if="tableData.length != 0" fixed type="selection" width="55"></el-table-column>
              <el-table-column v-if="tableData.length != 0" fixed label="序号" type="index" width="55">
              </el-table-column>
              <el-table-column v-for="item in this.tableHeadFindData" :key="item.id" :formatter="item.formatter"
                               :label="item.label"
                               :prop="item.prop" :show-overflow-tooltip="true"
                               :sortable="item.sortable"
                               :width="item.width"
                               align="center">
              </el-table-column>
            </el-table>
            <div class="custom-table">
              <el-table class="cus-table" ref="dataTable" v-loading="isLoading" :data="tableData"
                        :height="tableHeight"  border
                        @select="handleSelection" @cell-click="handleCellClick" @row-click="handleRowClick"
                        @select-all="handleSelectionAll" @selection-change="handleSelectionChange"
                        @sort-change="sortChange">
                <el-table-column v-if="tableData.length != 0" fixed type="selection" width="55"></el-table-column>
                <el-table-column v-if="tableData.length != 0" fixed label="序号" type="index" width="55">
                </el-table-column>
                <!--              生命周期-->
                <el-table-column v-for="(item,index) in lcstatusArray" key="index" v-if=" lcstatusArray.length !== 0 && !item.hidden" label="生命周期值" prop="lcstatus"
                                 :show-overflow-tooltip="true" :sortable="item.sortable" :width="item.width"
                                 align="center">
                  <template slot-scope="scope">
                    <span>{{ scope.row.lcstatus_text }}</span>
                  </template>
                </el-table-column>
                <!--              编号-->
                <el-table-column  v-for="(item, index) in CodeArray" key="index" v-if="CodeArray.length !== 0 && !item.hidden" :label="item.label" :prop="item.prop"
                                  :show-overflow-tooltip="true" :sortable="item.sortable" :width="item.width"
                                  align="center">
                  <template slot-scope="scope">
                    <el-link type="primary" @click="CodeLinkHandler(scope.row)">
                      {{ scope.row[item.prop] }}
                    </el-link>
                  </template>
                </el-table-column>
                <el-table-column v-for="item in this.tableHeadFindData" v-if="!item.hidden && item.prop !== 'id' && item.prop !== 'lcstatus'"
                                 :key="item.id"
                                 :formatter="item.formatter"
                                 :label="item.label" :prop="item.prop"
                                 :show-overflow-tooltip="true"
                                 :sortable="item.sortable"
                                 :width="item.width"
                                 align="center">
                </el-table-column>
              </el-table>
            </div>
          </el-row>
          <!--          新增-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible"
          <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
                              :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
                              :visible.sync="addvisible"
                              type="add"
                              @submit="AddSumbit">
          </FormTemplateDialog>
@@ -62,12 +87,18 @@
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="editvisible"
                              type="edit" @submit="EditSumbit"></FormTemplateDialog>
          <!--          数据详情-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                               :rowOid="this.LinkObject.oid" :templateOid="templateOid"
                              :title="'数据详情'"
                              :visible.sync="LinkVisible"
                              type="detail"></FormTemplateDialog>
          <!--          已发布数据修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid"
                              :title="'已发布数据更改'"
                              type="edit"
                              :visible.sync="DataVisible"></FormTemplateDialog>
                              :visible.sync="DataVisible"
                              type="edit" @submit="updataSumbit"></FormTemplateDialog>
          <!--          发布-->
          <set-personnel :parameter="this.parameter" :title="title" :visible.sync="visibleFlow"
                         @onLoad="onLoad"></set-personnel>
@@ -92,7 +123,7 @@
          <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                               :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
          <div class="block" style="display: flex; justify-content: flex-end">
            <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
            <el-pagination :current-page="page.currentPage" :page-size="page.pageSize" :page-sizes="page.pageSizes"
                           :total="page.total" layout="total, sizes, prev, pager, next, jumper"
                           @size-change="handleSizeChange"
                           @current-change="handleCurrentChange">
@@ -116,7 +147,17 @@
  </basic-container>
</template>
<script>
import {MasterTable, TableData, FindData, addSaveCode, editSaveCode, deleteCode} from "@/api/GetItem";
import {
  MasterTable,
  TableData,
  FindData,
  addSaveCode,
  editSaveCode,
  deleteCode,
  upSaveCode,
  applyGroupCode,
  receiveEditApply
} from "@/api/GetItem";
import {processTS, changeStatus} from "@/api/template/setPersonnel"
import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
import integrationTransfer from "@/views/integration/integrationTransfer";
@@ -126,6 +167,7 @@
import {validatenull} from "@/util/validate";
import fileInHtml from "@/components/file/inHtml.vue";
import {getUserInfo} from "@/api/system/user";
import func from "@/util/func";
export default {
  components: {
@@ -154,6 +196,10 @@
    tableDataArray: {
      type: Array,
    },
    TreeValue: {
      type: String,
      default: "",
    },
    total: {
      type: String,
      default: "",
@@ -175,29 +221,37 @@
    tableHeadBtnData: {
      type: Array,
    },
    Treedata:{
      type:Array
    }
    Treedata: {
      type: Array
    },
  },
  data() {
    return {
      LinkVisible: false,
      LinkObject: {}, // 编码数据
      LinkList: [],
      isCodeArrayPushed: false, // 编码数组添加标识变量
      CodeArray: [],
      lcstatusArray:[],
      islcstatusPushed:false,
      // 状态搜索
      statusSelect: "all",
      // 关键字查询
      keyWordFind:"",
      keyWordFind: "",
      searchResults: [],
      //首页右侧搜索
      WupinFindValue: "",
      //相似项查询
      similarVisible: false,
      //发布
      //启动流程
      parameter: {
        ids: [],
        btmtype:'',
        btmtype: '',
        code: "",
        type: '',
        // this.visibleDeactivate ?'ENABLE':this.visibleEnable ? 'DISABLE' :this.visibleRecovery ? 'ROLLBACK' :'PUBLIC'
        template: "",
        processName: "",
        vars: {
          codeClassifyOid: "",
          templateOid: ""
@@ -242,7 +296,7 @@
        datetime: "datetime",
      },
      tableData: [],
      tableHeight: 'calc(100vh - 330px)',
      tableHeight: 'calc(100vh - 350px)',
      DataVisible: false,
      tableHeadData: [],
      items: {},
@@ -263,18 +317,26 @@
        fileDocClassifyName: '',
        hasDownload: true,
        hasUpload: true,
        height: 100
        height: 110
      },
      result: ''
      result: '',
      elapsedTime:'',
    };
  },
  computed: {},
  computed: {
    oids() {
      let oids = [];
      this.selectRow.forEach(ele => {
        oids.push(ele.oid);
      });
      return oids;
    },
  },
  created() {
    // const index = this.$route.query.id.indexOf('@name=') + '@name='.length;
    // this.result = this.$route.query.id.substring(index);
    getUserInfo().then(res=>{
      console.log(res.data.data)
      this.result=res.data.data.realName
    getUserInfo().then(res => {
      this.result = res.data.data.realName
    })
  },
  mounted() {
@@ -294,7 +356,6 @@
    codeClassifyOid: {
      handler(newval, oldval) {
        this.codeClassifyOid = newval;
        this.parameter.vars.codeClassifyOid = newval
      },
      deep: true,
    },
@@ -308,7 +369,7 @@
    tableHeadFindData: {
      handler(newval, oldval) {
        newval.forEach((record, _index) => {
          if (record.field == 'id' && validatenull(record.templet)) {
          if (record.queryField == 'id' && validatenull(record.templet)) {
            //企业编码的默认添加超链接,暂未实现
            record.formatter = '';
          } else {
@@ -322,12 +383,32 @@
            }
          }
          if(_index==0){
            this.keyWordFind=record.field
          if (_index == 0) {
            this.keyWordFind = record.queryField
          }
        })
        this.tableHeadFindDatas = newval;
        this.WupinFindValue=''
        // console.log('new',newval)
        if (!this.isCodeArrayPushed) {
          if (newval.find(item => item.prop === 'id')) {
            this.CodeArray.push(newval.find(item => item.prop === 'id'));
          } else {
            this.CodeArray.push([]);
          }
          // console.log('CodeArray', this.CodeArray);
          this.isCodeArrayPushed = true;
        }
        if (!this.islcstatusPushed) {
          if (newval.find(item => item.prop === 'lcstatus')) {
            this.lcstatusArray.push(newval.find(item => item.prop === 'lcstatus'));
          } else {
            this.lcstatusArray.push([]);
          }
          // console.log('lcstatusArray', this.lcstatusArray);
          this.islcstatusPushed = true;
        }
        // console.log('new',newval)
        this.WupinFindValue = ''
      },
    },
    total: {
@@ -337,22 +418,25 @@
    },
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid = "0";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
    },
    tableHeadBtnData: {
      handler(newval) {
        if (newval.length !== 0) {
          this.masterVrBtnList = newval
        }
      },
      deep: true
    },
  },
  methods: {
    CodeLinkHandler(row) {
      this.LinkObject = row;
      this.LinkVisible = true;
      this.LinkList = Object.keys(row).map(property => property)
      // console.log(result);
      // console.log(this.LinkObject)
    },
    //状态搜索
    cellSelectHandler(row) {
      if (row === 'all') {
@@ -369,7 +453,6 @@
        limit: this.page.pageSize,
        'conditionMap[lcstatus]': lcstatus
      }).then(res => {
        console.log(res)
        this.tableData = res.data.data
      })
    },
@@ -379,17 +462,17 @@
        this.tableHeight = 'calc(100vh - 630px)';
        this.$refs.dataTable.doLayout()
      } else {
        this.tableHeight = 'calc(100vh - 330px)';
        this.tableHeight = 'calc(100vh - 350px)';
        this.$refs.dataTable.doLayout()
      }
    },
    openVis(visible) {
      this[visible] = true
    },
    handelBtnClick(event) {
    handleBtnClick(event) {
      const {uniqueFlag} = event
      this.$nextTick(() => {
        if (uniqueFlag === 'CODEADD') return this.addvisible = true
        if (uniqueFlag === 'CODEADD') return this.addSaveHandler()
        if (uniqueFlag === 'CODEEDIT') return this.editHandler()
        if (uniqueFlag === 'CODEBATCHADD') return this.openBatchImport('batchImportApply')
        if (uniqueFlag === 'CODEIMPORTHISTORY') return this.openBatchImport('historyImport')
@@ -408,9 +491,64 @@
        if (uniqueFlag === 'CODERECYCLE') return this.Recovery()
        //删除
        if (uniqueFlag === 'CODEDELETE') return this.enumDeleteRow()
        //申请集团码数据
        if (uniqueFlag === 'applyGroupCode') return this.applyGroupCode()
        //更新集团码数据
        if (uniqueFlag === 'receiveEditApply') return this.receiveEditApply()
        //  相似项查询
        //  if(uniqueFlag === 'CODEEDIT') return this.similarHandler()
        //  标准申请
        if (uniqueFlag === 'CODEAPPLY') return this.codeApplyHandler()
        //  标准修订
        if (uniqueFlag === 'CODEAMEND') return this.codeAMENDHandler()
      });
    },
    //标准申请
    codeApplyHandler(){
      console.log('1')
    },
    //标准修订
    codeAMENDHandler(){
      console.log('2')
    },
    addSaveHandler(){
      this.$nextTick(() => {
        this.addvisible = true;
      });
    },
    //申请集团码数据
    applyGroupCode() {
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据模板!')
      } else {
        // const requestData = this.selectRow.forEach(item => {
        //   return { oids: item.oid, btmName: item.btmname };
        // });
        const oids = this.selectRow.map(item => item.oid).join(',');
        applyGroupCode({oids, btmName: this.selectRow[0].btmname}).then(res => {
          if (res.data.code == 200) {
            this.$message.success('申请成功')
          }
          this.onLoad()
        })
      }
    },
    //更新集团码数据
    receiveEditApply() {
      if (this.selectRow.length <= 0) {
        this.$message.warning('请选择一条数据模板!')
      } else {
        // const requestData = this.selectRow.forEach(item => {
        //   return { oids: item.oid, btmName: item.btmname };
        // });
        const oids = this.selectRow.map(item => item.oid).join(',');
        receiveEditApply({oids, btmName: this.selectRow[0].btmname}).then(res => {
          if (res.data.code == 200) {
            this.$message.success('更新成功')
            this.onLoad()
          }
        });
      }
    },
    openD() {
      this.getListCodeByClassId();
@@ -426,240 +564,163 @@
        this.transferData = data;
      }
    },
    handelTransferSave(val) {
      console.log('发布', val)
    },
    rend() {
      this.tableData = this.tableHeadData;
    },
    // 发布
    setHandler() {
      console.log('Treedata',this.Treedata)
      if (this.selectRow.length > 0) {
        let hasEditing = this.selectRow.some(item => item.lcstatus !== 'Editing');
        let showMessage = true;
        this.selectRow.forEach(item => {
          if (this.selectRow.length === 1 && item.lcstatus !== "Editing" && showMessage) {
            this.$message.warning('只有状态是【编辑中】的数据才可以发起流程');
            showMessage = false;
          } else if (hasEditing && showMessage) {
            this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程');
            showMessage = false;
          } else if (showMessage) {
            processTS({templateId: this.templateOid, buttonTypeKey: 'PUBLIC'}).then(res => {
              if (res.data.data.records && res.data.data.records.length != 0) {
                this.parameter.processName = this.result + '-申请[' + this.Treedata[0].name + '-' + this.selectRow[0].name + ']';
                this.parameter.type = 'PUBLIC';
                this.parameter.code = this.templateOid;
                this.parameter.btmtype=this.selectRow[0].btmname || this.selectRow[0].btmtype;
                this.title = '流程审批'
                this.visibleFlow = true;
              } else {
                this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  type: 'warning'
                }).then(() => {
                  const oid = this.selectRow.map(obj => obj.oid).join(",");
                  changeStatus({oid: oid, btmname: this.selectRow[0].btmname, lcStatus: 'Released'}).then(res => {
                    if (res.data.code == 200) {
                      this.$message.success('发布成功')
                      this.onLoad()
                    }
                  });
                }).catch(() => {
                  this.$message({
                    type: 'info',
                    message: '已取消'
                  });
                })
              }
            })
          }
        });
      } else {
        this.$message.warning('请至少选择一条数据')
      var options = {
        processUse: 'PUBLIC',
        processUseText: '申请',
        allowStatus: 'Editing',
        allowStatusText: '已编辑',
        startStatus: 'Auditing',
        resetStatus: 'Editing',
        batchTitle: '批量提交编码数据到流程审批',
        title: '提交编码数据到流程审批'
      }
      this.checkStatusAndSubmitProcess(options, 'Released');
    },
    //停用
    Deactivate() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        let hasEditing = this.selectRow.every(item => item.lcstatus == 'Released');
        let showMessage = true;
        this.selectRow.forEach(item => {
          if (this.selectRow.length === 1 && item.lcstatus === "Disabled" && showMessage) {
            this.$message.warning('选择的数据中状态无需再执行当前操作');
            showMessage = false;
          } else if (this.selectRow.length > 1 && !hasEditing && showMessage) {
            this.$message.warning('您选择的数据全部为【发布状态】才可以发起流程');
            showMessage = false;
          } else if (this.selectRow.length >= 1 && hasEditing && showMessage) {
            processTS({templateId: this.templateOid, buttonTypeKey: 'DISABLE'}).then(res => {
              if (res.data.records != [] && res.data.data.records.length != 0) {
                this.parameter.processName = this.result + '-停用[' + this.Treedata[0].name + '-' + this.selectRow[0].name + ']';
                this.parameter.type = 'DISABLE';
                this.parameter.code = this.templateOid
                this.parameter.btmtype=this.selectRow[0].btmname || this.selectRow[0].btmtype;
                this.title = '停用(冻结)编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                    changeStatus({oid: oid, btmname: this.selectRow[0].btmname, lcStatus: 'Disabled'}).then(res => {
                      if (res.data.code == 200) {
                        this.$message.success('停用成功')
                        this.onLoad()
                      }
                    });
                  }).catch(() => {
                    this.$message({
                      type: 'info',
                      message: '已取消'
                    });
                  });
                }
              }
            });
          } else if(this.selectRow.length == 1 && !hasEditing && showMessage ) {
            this.$message.warning('您选择的数据为【发布状态】才可以发起流程')
          }
        });
      var options = {
        processUse: 'DISABLE',
        processUseText: '停用',
        allowStatus: 'Released',
        allowStatusText: '已发布',
        resetStatus: 'Released',
        batchTitle: '批量停用(冻结)的编码数据',
        title: '停用(冻结)编码数据',
        confirmMsg: '是否要停用这些数据'
      }
      this.checkStatusAndSubmitProcess(options, 'Disabled');
    },
    //启用
    Enable() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        let hasEditing = this.selectRow.every(item => item.lcstatus == 'Disabled');
        let showMessage = true;
        this.selectRow.forEach(item => {
          if (this.selectRow.length === 1 && item.lcstatus !== "Disabled" && showMessage) {
            this.$message.warning('选择的数据中状态无需再执行当前操作');
            showMessage = false;
          } else if (this.selectRow.length >= 1 && hasEditing && showMessage) {
            processTS({templateId: this.templateOid, buttonTypeKey: 'ENABLE'}).then(res => {
              if (res.data.data.records && res.data.data.records.length != 0) {
                this.parameter = res.data.data.records[0]
                this.parameter.processName = this.result + '-启用[' + this.Treedata[0].name + '-' + this.selectRow[0].name + ']';
                this.parameter.type = 'Released';
                this.parameter.code = this.templateOid
                this.parameter.btmtype=this.selectRow[0].btmname || this.selectRow[0].btmtype;
                this.title = '启用编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                    changeStatus({oid: oid, btmname: this.selectRow[0].btmname, lcStatus: 'Released'}).then(res => {
                      if (res.data.code == 200) {
                        this.$message.success('启用成功')
                        this.onLoad()
                      }
                    });
                  }).catch(() => {
                    this.$message({
                      type: 'info',
                      message: '已取消'
                    });
                  });
                }
              }
            });
          } else if (this.selectRow.length > 1 && !hasEditing && showMessage) {
            this.$message.warning('您选择的数据全部为【停用状态】才可以发起流程');
            showMessage = false;
          }
        });
      var options = {
        processUse: 'ENABLE',
        processUseText: '启用',
        allowStatus: 'Disabled',
        allowStatusText: '已停用',
        resetStatus: 'Disabled',
        batchTitle: '批量启用(解冻)的编码数据',
        title: '启用(解冻)编码数据',
        confirmMsg: '是否要启用(解冻)这些数据'
      }
      this.checkStatusAndSubmitProcess(options, 'Released');
    },
    //回收
    Recovery() {
      var options = {
        processUse: 'ROLLBACK',
        processUseText: '回收',
        allowStatus: 'Released,Disabled',
        allowStatusText: '已发布,已停用',
        batchTitle: '批量回收的编码数据',
        title: '回收编码数据',
        confirmMsg: '是否要回收这些数据',
      }
      this.checkStatusAndSubmitProcess(options, 'TakeBack');
    },
    checkStatusAndSubmitProcess(options, targetLcstatus) {
      // 编辑中-只能发布,不能回收
      // 审核中-什么都不能做
      // 已发布-停用、回收
      // 停用-只能启用、回收
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
        this.$message.warning("请选择数据");
      } else if (this.selectRow.length > 1000) {
        this.$message.warning("每次提交到流程的数量请不要超过1000条");
      } else {
        // 编辑中-只能发布,不能回收
        // 审核中-什么都不能做
        // 已发布-停用、回收
        // 停用-只能启用、回收
        const disabledCount = this.selectRow.filter(item => item.lcstatus === 'Disabled').length;
        const releasedCount = this.selectRow.filter(item => item.lcstatus === 'Released').length;
        let showMessage = true;
        this.selectRow.forEach(item => {
          if (this.selectRow.length === 1 && item.lcstatus == "TakeBack" && showMessage) {
            this.$message.warning('选择的数据中状态无需再执行当前操作');
            showMessage = false;
          } else if (this.selectRow.length >= 1 && (disabledCount === this.selectRow.length || releasedCount === this.selectRow.length) || (disabledCount > 0 && releasedCount > 0) && showMessage) {
            //disabledCount 和 releasedCount 中任意一个等于 this.selectRow 数组的长度则表示全部是同一种状态,返回 true 如果disabledCount 和 releasedCount 都大于0,则表示既有Disabled也有Released返回 true
            processTS({templateId: this.templateOid, buttonTypeKey: 'ROLLBACK'}).then(res => {
              if (res.data.records != [] && res.data.data.records.length != 0) {
                this.parameter.processName = this.result + '-回收[' + this.selectRow[0].btmname + '-' + this.selectRow[0].name + ']';
                this.parameter.type = 'TakeBack';
                this.parameter.code = this.templateOid
                this.parameter.btmtype=this.selectRow[0].btmname || this.selectRow[0].btmtype;
                this.title = '回收编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                    changeStatus({oid: oid, btmname: this.selectRow[0].btmname, lcStatus: 'TakeBack'}).then(res => {
                      if (res.data.code == 200) {
                        this.$message.success('回收成功')
                        this.onLoad()
                      }
                    });
                  }).catch(() => {
                    this.$message({
                      type: 'info',
                      message: '已取消'
                    });
                  });
        //审批的数据的状态必须相同
        var lcstatus = this.selectRow[0].lcstatus;
        let hasDiff = this.selectRow.every(item => item.lcstatus == lcstatus);
        if (!hasDiff) {
          this.$message.warning("您选择的数据的状态不相同");
          return false;
        }
        if (lcstatus == targetLcstatus) {
          this.$message.warning("选择的数据中状态无需再执行当前操作");
          return false;
        }
        if (options.processUseText == '申请' && !validatenull(this.selectRow[0].copyfromversion)) {
          options.processUseText = '修改'
          options.processUse = 'EDIT'
        }
        let checkStatus = this.selectRow.every(item => options.allowStatus.indexOf(item.lcstatus) != -1);
        if (!checkStatus) {
          this.$message.warning('只有状态是【' + options.allowStatusText + '】的数据才可以发起流程');
          return false;
        }
        processTS({templateId: this.templateOid, buttonTypeKey: options.processUse}).then(res => {
          if (res.data.data.records && res.data.data.records.length != 0) {
            this.parameter.ids = this.oids;
            this.parameter.processName = this.result + '-' + options.processUseText + '[' + this.Treedata[0].name + '-' + this.selectRow[0].name + ']';
            this.parameter.type = options.processUse;
            this.parameter.code = this.templateOid
            this.parameter.btmtype = this.selectRow[0].btmname || this.selectRow[0].btmtype;
            this.parameter.vars = {
              codeClassifyOid: this.codeClassifyOid,
              templateOid: this.templateOid
            };
            this.title = this.selectRow.length > 1 ? options.batchTitle : options.title;
            this.visibleDeactivate = true;
          } else {
            this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              changeStatus({
                oid: this.oids.join(','),
                btmname: this.selectRow[0].btmname,
                lcStatus: targetLcstatus
              }).then(res => {
                if (res.data.code == 200) {
                  this.$message.success(options.processUseText + '成功')
                  this.onLoad()
                }
              }
              });
            }).catch(() => {
              this.$message({
                type: 'info',
                message: '已取消'
              });
            });
          } else if (showMessage && this.selectRow.length > 1 && !(disabledCount === this.selectRow.length || releasedCount === this.selectRow.length) || (disabledCount > 0 && releasedCount > 0)) {
            this.$message.warning('您选择的数据全部为【停用状态或发布状态】才可以发起流程');
            showMessage = false;
          } else if (showMessage) {
            this.$message.warning('您选择的数据为【停用状态或发布状态】才可以发起流程')
          }
        });
      }
    },
    handleSizeChange(val) {
      this.isLoading = true;
      setTimeout(() => {
        this.page.pageSize = val;
        this.$emit("pageSize", val);
        this.CrudRend();
      }, 3000);
    async CrudRend() {
      this.elapsedTime = 0;
      const startTime = performance.now();
      const res = await TableData({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      });
      const endTime = performance.now();
      this.elapsedTime = Math.floor(endTime - startTime) * 1;
      this.page.total = res.data.total;
      this.data = res.data.data;
      this.tableData = res.data.data;
    },
    handleCurrentChange(val) {
    async handleSizeChange(val) {
      this.page.pageSize = val;
      this.$emit("pageSize", val);
      this.isLoading = true;
      setTimeout(() => {
        this.page.currentPage = val;
        this.$emit("currentPage", val);
        this.CrudRend();
      }, 3000);
      await this.CrudRend();
      this.isLoading = false;
    },
    async handleCurrentChange(val) {
      this.page.currentPage = val;
      this.$emit("currentPage", val);
      this.isLoading = true;
      await this.CrudRend();
      this.isLoading = false;
    },
    // 监听单元格点击事件并存储正在编辑的行
    handleCellClick(row, column) {
@@ -684,7 +745,6 @@
          list.push(item.oid)
        })
        deleteCode({codeClassifyOid: this.codeClassifyOid, oidList: list}).then(res => {
          console.log(res)
          if (res.data.code === 200) {
            this.$message({
              type: 'success',
@@ -712,45 +772,9 @@
        }
      })
    },
    //表格头渲染
    CrudHeaderRend() {
      if (this.codeClassifyOid != "") {
        MasterTable({
          codeClassifyOid: this.codeClassifyOid
        }).then((res) => {
          this.options = res.data.tableDefineVO.seniorQueryColumns;
          this.List = res.data.tableDefineVO.cols[0];
          this.List.forEach((item) => {
            let columnItem = {
              label: item.title,
              prop: item.field,
              type: this.columnType[item.type],
              sortable: item.sort,
              width: item.minWidth,
            };
            this.option.column.push(columnItem);
            this.option.column = this.tableHeadData;
            this.templateOid = res.data.tableDefineVO.oid;
            this.$emit("templateOid", this.templateOid);
          });
        });
      }
    },
    //表格数据
    CrudRend() {
      TableData({
        templateOid: this.templateOid,
        codeClassifyOid: this.codeClassifyOid,
        page: this.page.currentPage,
        limit: this.page.pageSize,
      }).then((res) => {
        this.page.total = res.data.total;
        this.data = res.data.data;
        this.tableData = res.data.data;
      });
    },
    // 排序
    sortChange(val) {
      // console.log(val)
      this.isLoading = true;
      let order = "";
      if (val.order == "ascending") {
@@ -787,11 +811,6 @@
    //多选
    handleSelectionChange(list) {
      this.selectRow = list;
      console.log(this.selectRow)
      this.parameter.ids = [];
      list.forEach((item) => {
        this.parameter.ids.push(item.oid);
      });
    },
    //选择
    handleSelection(list, row) {
@@ -852,21 +871,42 @@
        this.$message.warning("只有状态为已发布的数据才能进行数据更改");
      } else {
        this.DataVisible = true;
        this.rowOid = this.selectRow[0]['oid']
      }
    },
    //增加保存
    AddSumbit(val) {
      this.addvisible = false;
      // console.log('val',val)
      if(func.notEmpty(val.ts)) {
        val.ts = func.formattedDateTime(val.ts);
        //console.log(val.ts);
      }
      addSaveCode(val).then(res => {
        this.$nextTick(() => {
          this.addvisible = false;
          this.$message.success("保存成功");
          this.onLoad()
        })
      })
    },
    //修改回调
    EditSumbit(val) {
      this.editvisible = false;
      editSaveCode(val).then(res => {
        this.$nextTick(() => {
          this.editvisible = false;
          this.$message.success("保存成功");
          this.onLoad()
        })
      })
    },
    //数据更改回调
    updataSumbit(val) {
      val.copyFromVersion = this.rowOid;
      val.oid = '';
      upSaveCode(val).then(res => {
        this.$nextTick(() => {
          this.DataVisible = false;
          this.$message.success("保存成功");
          this.onLoad()
        })
      })
@@ -887,9 +927,10 @@
        codeClassifyOid: this.codeClassifyOid,
        page: this.page.currentPage,
        limit: this.page.pageSize,
        [ 'conditionMap[' + this.keyWordFind + ']']: '*' + this.WupinFindValue + '*'
        ['conditionMap[' + this.keyWordFind + ']']: '*' + this.WupinFindValue + '*'
      }).then(res => {
        this.tableData = res.data.data
        this.tableData = res.data.data;
        // this.page.total = res.data.data.total;
      })
    }
@@ -898,18 +939,33 @@
</script>
<style lang="scss" scoped>
.testbox {
  .el-table--scrollable-x .el-table__body-wrapper {
    overflow: auto !important;
  }
//固定列高度
/deep/ .el-table__fixed {
  height: calc(100vh - 370px)!important;
}
// 滚动条样式修改
// 滚动条的宽度
/deep/ .el-table__body-wrapper::-webkit-scrollbar {
  height: 15px; // 纵向滚动条 必写
  background: white;
  border: white;
  width: 10px;
  .el-table__fixed-right-patch {
    background-color: #f5f7fa !important;
  }
}
// 滚动条的滑块
/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
  background-color: #ececec;
  border-radius: 20px;
  border: #ececec;
}
/deep/ .el-button {
.el-button {
  margin: 0 10px 10px 0;
}
/deep/ .dialog-footer .el-button {
  margin: 0 10px 0 0;
}
.main {
@@ -925,11 +981,10 @@
}
.bottom {
  margin-top: 20px;
  overflow-y: scroll;
  margin-top: 10px;
}
.el-collapse-item__content {
  padding-bottom: 0;
 .el-table__body-wrapper{
  height: calc(100% - 44px) !important;
}
</style>