田源
2023-07-28 dc28e1f365d0fe26017db3e389e4462962c0b380
Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -29,21 +29,28 @@
          </div>
          <el-row style="width: 100%;margin-bottom: 20px">
            <div>
              <el-button v-for="(item, index) in masterVrBtnList" :key="index" plain size="small" type="primary"
              <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-input v-model="WupinFindValue" placeholder="请输入关键字按回车查询"
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"></el-input>
                        size="small" style="width: 180px; margin-left: 5px; margin-top: 10px"
                        @keyup.enter.native="tableFindInp"  v-if="tableData.length != 0"></el-input>
            </div>
            <el-table v-if="tableData.length != 0" v-loading="isLoading" :data="tableData" :height="tableHeight" ref="dataTable"
                      @cell-click="handleCellClick" @row-click="handleRowClick" @select="handleSelection" @select-all="handleSelectionAll" @selection-change="handleSelectionChange" @sort-change="sortChange">
              <el-table-column fixed type="selection" width="55"></el-table-column>
              <el-table-column fixed label="序号" type="index" width="55">
            <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 fixed type="selection" width="55" v-if="tableData.length != 0"></el-table-column>
              <el-table-column fixed label="序号" type="index" width="55" v-if="tableData.length != 0">
              </el-table-column>
              <el-table-column v-for="item in this.tableHeadFindData" :key="item.id" :formatter="item.formatter" :label="item.label"
              <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.label.length >= 4 ? '150' : item.label.length == 3 ? '120' : '90'"
@@ -51,50 +58,57 @@
              </el-table-column>
            </el-table>
          </el-row>
<!--          新增-->
          <!--          新增-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible" type="add"
                              :disabledProp="disabledProp" :templateOid="templateOid" :visible.sync="addvisible"
                              type="add"
                              @submit="AddSumbit">
          </FormTemplateDialog>
<!--          修改-->
          <!--          修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'修改编码信息'"
                              :visible.sync="editvisible"
                              type="edit" @submit="EditSumbit"></FormTemplateDialog>
<!--          已发布数据修改-->
          <!--          已发布数据修改-->
          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'已发布数据更改'"
                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid"
                              :title="'已发布数据更改'"
                              :type="edit"
                              :visible.sync="DataVisible"></FormTemplateDialog>
<!--          发布-->
          <set-personnel :parameter="this.parameter" :visible.sync="visibleFlow" :title="title"></set-personnel>
<!--          停用-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleDeactivate" :title="title"></set-personnel>
<!--          启用-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleEnable" :title="title"></set-personnel>
<!--          回收-->
            <set-personnel :parameter="this.parameter" :visible.sync="visibleRecovery" :title="title"></set-personnel>
<!--          高级查询-->
          <advanced-query :options="this.options" :visible.sync="findvisible" @echoContion="echoContion"></advanced-query>
<!--          导出-->
          <MasterTransfer :visible.sync="dialogPush" :tableHeadData="tableHeadFindData"></MasterTransfer>
<!--          相似项-->
          <!--          发布-->
          <set-personnel :parameter="this.parameter" :title="title" :visible.sync="visibleFlow"></set-personnel>
          <!--          停用-->
          <set-personnel :parameter="this.parameter" :title="title" :visible.sync="visibleDeactivate"></set-personnel>
          <!--          启用-->
          <set-personnel :parameter="this.parameter" :title="title" :visible.sync="visibleEnable"></set-personnel>
          <!--          回收-->
          <set-personnel :parameter="this.parameter" :title="title" :visible.sync="visibleRecovery"></set-personnel>
          <!--          高级查询-->
          <advanced-query :options="this.options" :visible.sync="findvisible"
                          @echoContion="echoContion"></advanced-query>
          <!--          导出-->
          <MasterTransfer :codeClassifyOid="codeClassifyOid" :limit="page.pageSize" :templateOid="templateOid" :selectRow="selectRow"
                          :tableData="tableData" :tableHeadData="tableHeadFindData"
                          :visible.sync="dialogPush"></MasterTransfer>
          <!--          相似项-->
          <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"
                         :total="page.total" layout="total, sizes, prev, pager, next, jumper"
                         @size-change="handleSizeChange"
                         @current-change="handleCurrentChange">
          </el-pagination>
          <div class="block" style="display: flex; justify-content: flex-end">
            <el-pagination :current-page="page.currentPage" :page-size="page.pageSizes" :page-sizes="page.pageSizes"
                           :total="page.total" layout="total, sizes, prev, pager, next, jumper"
                           @size-change="handleSizeChange"
                           @current-change="handleCurrentChange">
            </el-pagination>
          </div>
        </div>
      </div>
      <div>
        <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :visible.sync="batchImportData.visible" :resetTable="CrudRend">
        </BatchImport>
      </div>
      <div class="bottom">
        <el-collapse v-model="visibleNames" @change="handleCollapse">
          <el-collapse-item title="附件列表" name="1">
          <el-collapse-item name="1" title="附件列表">
            <fileInHtml :options="fileOptions"></fileInHtml>
          </el-collapse-item>
        </el-collapse>
@@ -103,7 +117,8 @@
  </basic-container>
</template>
<script>
import {MasterTable, TableData, FindData,addSaveCode,editSaveCode} from "@/api/GetItem";
import {MasterTable, TableData, FindData, addSaveCode, editSaveCode} from "@/api/GetItem";
import {processTS,changeStatus} from "@/api/template/setPersonnel"
import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
import integrationTransfer from "@/views/integration/integrationTransfer";
import SetPersonnel from "@/components/template/SetPersonnel";
@@ -163,6 +178,7 @@
  },
  data() {
    return {
      searchResults: [],
      //首页右侧搜索
      WupinFindValue: "",
      //相似项查询
@@ -176,19 +192,19 @@
        template: "",
        vars: {
          codeClassifyOid: "",
          templateOid:""
          templateOid: ""
        }
      },
      visibleNames:[],
      visibleNames: [],
      //发布
      visibleFlow: false,
      //停用
      visibleDeactivate:false,
      visibleDeactivate: false,
      //启用
      visibleEnable:false,
      visibleEnable: false,
      //回收
      visibleRecovery:false,
      title:'',
      visibleRecovery: false,
      title: '',
      transferData: [],
      transferProps: {
        key: "oid",
@@ -218,7 +234,7 @@
        datetime: "datetime",
      },
      tableData: [],
      tableHeight:'calc(100vh - 330px)',
      tableHeight: 'calc(100vh - 330px)',
      DataVisible: false,
      tableHeadData: [],
      items: {},
@@ -232,14 +248,14 @@
      },
      // 主数据按钮
      masterVrBtnList: [],
      fileOptions:{
        ownbizOid:"0",
        ownbizBtm:"0",
        fileDocClassify:'!=processAuditSuggest',
        fileDocClassifyName:'',
        hasDownload:true,
        hasUpload:true,
        height:100
      fileOptions: {
        ownbizOid: "0",
        ownbizBtm: "0",
        fileDocClassify: '!=processAuditSuggest',
        fileDocClassifyName: '',
        hasDownload: true,
        hasUpload: true,
        height: 100
      }
    };
  },
@@ -247,9 +263,13 @@
  created() {
  },
  mounted() {
  },
  activated() {
    // this.doLayout();
    this.$nextTick(() => {
      this.$refs.dataTable.doLayout()
    })
  },
  watch: {
    tableHeadDataFateher: {
@@ -267,6 +287,7 @@
    tableDataArray: {
      handler(newval, oldval) {
        this.tableData = newval;
        this.searchResults = newval
      },
    },
    tableHeadFindData: {
@@ -297,7 +318,7 @@
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid="0";
        this.fileOptions.ownbizOid = "0";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
@@ -323,7 +344,6 @@
      }
    },
    openVis(visible) {
      console.log(visible)
      this[visible] = true
    },
    handelBtnClick(event) {
@@ -354,7 +374,7 @@
      this.getListCodeByClassId();
    },
    async getListCodeByClassId() {
      this.dialogPush=true;
      this.dialogPush = true;
      this.transferData = [];
      const response = await listCodeAttributeByClassId({
        codeClassifyId: this.codeClassifyOid,
@@ -364,78 +384,226 @@
        this.transferData = data;
      }
    },
    handelTransferSave(val){
      console.log('发布',val)
    handelTransferSave(val) {
      console.log('发布', val)
    },
    rend() {
      this.tableData = this.tableHeadData;
    },
    // 发布
    setHandler() {
      // let EditFlag1=false
      // let EditFlag2=false
      // if(EditFlag1){
      //   this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
      // }else if(EditFlag2){
      //   this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
      // }
      this.selectRow.forEach(item=>{
        if(this.selectRow.length === 1 && item.lcstatus !== "Editing"){
          this.$message.warning('只有状态是【编辑中】的数据才可以发起流程')
        }else if(item.lcstatus !== 'Editing'){
          this.$message.warning('您选择的数据全部为【编辑中】才可以发起流程')
        }else {
          this.userName = localStorage.getItem("username");
          this.parameter.template = this.userName + "-发布" + "[物品]";
          this.parameter.type='PUBLIC'
          this.title='流程审批'
          this.visibleFlow = true;
        }
      })
      // if (this.selectRow.length <= 0) {
      //   this.$message.warning("请选择一条数据");
      // } else {
      //   this.userName = localStorage.getItem("username");
      //   this.parameter.template = this.userName + "-发布" + "[物品]";
      //   this.parameter.type='PUBLIC'
      //   this.title='流程审批'
      //   this.visibleFlow = true;
      // }
      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.records != [] && res.data.code != 200)  {
                this.userName = localStorage.getItem("username");
                this.parameter.template = this.userName + "-发布" + "[物品]";
                this.parameter.type = 'PUBLIC'
                this.title = '流程审批'
                this.visibleFlow = true;
                this.onLoad()
              } else {
                this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  type: 'warning'
                }).then(() => {
                  this.userName = localStorage.getItem("username");
                  this.parameter.template = this.userName + "-发布" + "[物品]";
                  this.parameter.type = 'PUBLIC'
                  this.title = '流程审批'
                  this.visibleFlow = true;
                  this.onLoad()
                }).catch(() => {
                  this.$message({
                    type: 'info',
                    message: '已取消'
                  });
                })
              }
            })
          }
        });
      } else {
        this.$message.warning('请至少选择一条数据')
      }
    },
    //停用
    Deactivate(){
    Deactivate() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      }  else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='DISABLE'
        this.title='停用(冻结)编码数据'
        this.visibleDeactivate=true;
      } 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: 'PUBLIC' }).then(res => {
              if (res.data.records != [] && res.data.code != 200) {
                this.userName = localStorage.getItem("username");
                this.parameter.template = this.userName + "停用" + "[物品]";
                this.parameter.type = 'DISABLE'
                this.title = '停用(冻结)编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const index = this.$route.query.id.indexOf('@');
                    const result = this.$route.query.id.substring(0, index);
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                      changeStatus({ oid: oid, btmname: result, lcStatus: 'Disabled' }).then(res => {
                        console.log(res);
                        if(res.data.code == 200 ){
                          this.$message.success('停用成功')
                          this.onLoad()
                        }
                      });
                  }).catch(() => {
                    this.$message({
                      type: 'info',
                      message: '已取消'
                    });
                  });
                }
              }
            });
          }else {
            this.$message.warning('您选择的数据为【发布状态】才可以发起流程')
          }
        });
      }
    },
    //启用
    Enable(){
    Enable() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ENABLE'
        this.title='启用(解冻)编码数据'
        this.visibleEnable=true;
        let hasEditing = this.selectRow.every(item => item.lcstatus == 'Disabled');
        console.log('hasEditing',hasEditing)
        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: 'PUBLIC' }).then(res => {
              if (res.data.records != [] && res.data.code != 200) {
                this.userName = localStorage.getItem("username");
                this.parameter.template = this.userName + "启用" + "[物品]";
                this.parameter.type = 'Released'
                this.title = '启用编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const index = this.$route.query.id.indexOf('@');
                    const result = this.$route.query.id.substring(0, index);
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                    changeStatus({ oid: oid, btmname: result, lcStatus: 'Released' }).then(res => {
                      console.log(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;
          }
        });
      }
    },
    //回收
    Recovery(){
    Recovery() {
      if (this.selectRow.length <= 0) {
        this.$message.warning("请选择一条数据");
      } else {
        this.userName = localStorage.getItem("username");
        this.parameter.template = this.userName + "-发布" + "[物品]";
        this.parameter.type='ROLLBACK'
        this.title='回收编码数据'
        this.visibleRecovery=true;
        // 编辑中-只能发布,不能回收
        // 审核中-什么都不能做
        // 已发布-停用、回收
        // 停用-只能启用、回收
        const disabledCount = this.selectRow.filter(item => item.lcstatus === 'Disabled').length;
        const releasedCount = this.selectRow.filter(item => item.lcstatus === 'Released').length;
        console.log('hasEditing',disabledCount,releasedCount)
        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: 'PUBLIC' }).then(res => {
              if (res.data.records != [] && res.data.code != 200) {
                this.userName = localStorage.getItem("username");
                this.parameter.template = this.userName + "回收" + "[物品]";
                this.parameter.type = 'TakeBack'
                this.title = '回收编码数据'
                this.visibleDeactivate = true;
              } else {
                if (showMessage) {
                  showMessage = false; // 标记已执行过操作
                  this.$confirm('当前分类没有添加流程模板,是否不用流程审批直接执行?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                  }).then(() => {
                    const index = this.$route.query.id.indexOf('@');
                    const result = this.$route.query.id.substring(0, index);
                    const oid = this.selectRow.map(obj => obj.oid).join(",");
                    changeStatus({ oid: oid, btmname: result, lcStatus: 'TakeBack' }).then(res => {
                      console.log(res);
                      if(res.data.code == 200 ){
                        this.$message.success('回收成功')
                        this.onLoad()
                      }
                    });
                  }).catch(() => {
                    this.$message({
                      type: 'info',
                      message: '已取消'
                    });
                  });
                }
              }
            });
          } else if (this.selectRow.length >=1 && !(disabledCount === this.selectRow.length || releasedCount === this.selectRow.length) || (disabledCount > 0 && releasedCount > 0)  && showMessage) {
            this.$message.warning('您选择的数据全部为【停用状态或发布状态】才可以发起流程');
            showMessage = false;
          }
        });
      }
    },
    handleSizeChange(val) {
@@ -557,6 +725,7 @@
      list.forEach((item) => {
        this.parameter.ids.push(item.oid);
      });
      console.log(this.selectRow)
    },
    //选择
    handleSelection(list, row) {
@@ -568,7 +737,6 @@
    handleSelectionAll() {
      this.fileOptions.ownbizOid = '0';
      this.fileOptions.ownbizBtm = '0';
    },
    //编辑
    editHandler() {
@@ -646,7 +814,22 @@
      this.batchImportData.visible = true
      this.batchImportData.type = type
      this.batchImportData.codeClassifyOid = this.codeClassifyOid
    },
    //输入回车搜索
    tableFindInp() {
      if (this.WupinFindValue.trim() === '') {
        this.$message.warning('输入值不能为空')
        return;
      }
      this.tableData = this.searchResults.filter(item => {
        if (typeof item.name === 'string') {
          return item.name.includes(this.WupinFindValue);
        } else {
          return false; // item.name不是字符串类型,返回false
        }
      });
    }
  }
};
</script>
@@ -672,6 +855,7 @@
  height: calc(100vh - 150px);
  min-height: 400px;
}
.top {
  overflow-y: scroll;
  min-height: 55%;
@@ -682,7 +866,7 @@
  overflow-y: scroll;
}
.el-collapse-item__content{
.el-collapse-item__content {
  padding-bottom: 0;
}
</style>