wangting
2023-08-08 22119b6c5128b773d4e72a0a6ca1f736d0def087
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -190,14 +190,14 @@
      WupinFindValue: "",
      //相似项查询
      similarVisible: false,
      //发布
      //启动流程
      parameter: {
        ids: [],
        btmtype:'',
        code: "",
        type: '',
        // this.visibleDeactivate ?'ENABLE':this.visibleEnable ? 'DISABLE' :this.visibleRecovery ? 'ROLLBACK' :'PUBLIC'
        template: "",
        processName: "",
        vars: {
          codeClassifyOid: "",
          templateOid: ""
@@ -268,12 +268,19 @@
      result: ''
    };
  },
  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
    })
  },
@@ -294,7 +301,6 @@
    codeClassifyOid: {
      handler(newval, oldval) {
        this.codeClassifyOid = newval;
        this.parameter.vars.codeClassifyOid = newval
      },
      deep: true,
    },
@@ -337,9 +343,7 @@
    },
    templateOid: {
      handler(newval, oldval) {
        this.parameter.code = newval;
        this.fileOptions.ownbizOid = "0";
        this.parameter.vars.templateOid = newval
      },
      deep: true,
    },
@@ -434,213 +438,120 @@
    },
    // 发布
    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('您选择的数据为【停用状态或发布状态】才可以发起流程')
          }
        });
      }
@@ -787,11 +698,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) {