wangting
2023-08-08 22119b6c5128b773d4e72a0a6ca1f736d0def087
修改流程启动,流程执行
已修改4个文件
337 ■■■■■ 文件已修改
Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/work/BusinessWork.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/wel/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/work/process/leave/handle.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
Source/UBCS-WEB/src/components/work/BusinessWork.vue
@@ -61,7 +61,7 @@
export default {
  name: "BusinessWork",
  components: { vciWebRefer },
  props:['ids','templateId',"taskId","modelKey","codeClassifyOid"],
  props:['ids','templateId',"taskId","modelKey","codeClassifyOid",'stageAttrs'],
  data() {
    return {
      BuinessOids:[],
@@ -92,9 +92,13 @@
        this.BuinseseRend()
      },
      deep:true
    },
    stageAttrs(newval,oldval){
      this.hasEditor=newval.length>0;
    }
  },
  created() {
  },
  mounted() {
  },
@@ -124,18 +128,17 @@
          'modelKey': this.modelKey,
          'codeClassifyOid': this.codeClassifyOid
        }).then((res) => {
          this.hasEditor=res.data.tableDefineVO.hasEditor;
          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);
            let columnItem = {
              label: item.title,
              prop: item.field,
              type: this.columnType[item.type],
              sortable: item.sort,
              width: item.minWidth,
              edit:this.columnType[item.edit]
              width: item.minWidth
            };
            if(item.field == 'id' && validatenull(item.templet)){
              //企业编码的默认添加超链接,暂未实现
@@ -150,8 +153,11 @@
              }
            }
            if(!validatenull(item.edit)) {
              if (typeof item.editConfig == "string") {
            if(editAttr.length>0) {
              debugger;
              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
Source/UBCS-WEB/src/views/wel/index.vue
@@ -267,7 +267,7 @@
        })
      },
      cellHandle(row, column, cell, event) {
        if (column.property == 'name') {
        if (column.property == 'taskName') {
          this.gotodo(row)
        }
      },
Source/UBCS-WEB/src/views/work/process/leave/handle.vue
@@ -5,7 +5,7 @@
        <el-card class="dialogwarp_tab_card">
          <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="业务数据信息" name="first">
              <businesswork ref="businesswork":ids="ids" :templateId="templateId" :taskId="taskId" :modelKey="modelKey" :codeClassifyOid="codeClassifyOid"></businesswork>
              <businesswork ref="businesswork" :ids="ids" :templateId="templateId" :taskId="taskId" :modelKey="modelKey" :codeClassifyOid="codeClassifyOid" :stageAttrs="stageAttrs"></businesswork>
            </el-tab-pane>
            <el-tab-pane label="流程跟踪" name="second">
              <avue-crud :data="flowList" :option="option" ref="crud">
@@ -82,6 +82,7 @@
      codeClassifyOid:'',
      businessId: '',
      processInstanceId: '',
      stageAttrs:[],
      src: '',
      flowList: [],
      btnList: [],
@@ -147,9 +148,9 @@
      this.modelKey=res.data.variables.modelKey;
      this.codeClassifyOid=res.data.variables.codeClassifyOid;
      this.title=res.data.variables.processName;
      this.stageAttrs=res.data.stageAttrs;
      //this.taskId=res.data.variables.taskId;
      if (res.success) {
        console.log(res)
        this.btnList = res.data.toTasks;
      }
    },