xiangpei
2025-02-27 c482628d3daf21dafba7e2b9eaba6e46ffda0fdb
src/views/flowable/task/myProcess/send/index.vue
@@ -16,13 +16,15 @@
                <div v-if="formDataObj.current">
                  <!--     当前节点可协同、转办等操作         -->
                  <div class="op-list">
                    <el-button size="small" type="primary" :disabled="submitLoading" v-loading="submitLoading" @click="submitForm">确认并提交</el-button>
                    <el-button size="small" type="primary" :disabled="formDataObj.taskStatus === '挂起' || submitLoading" v-loading="submitLoading" @click="submitForm">确认并提交</el-button>
                    <el-button size="small" type="primary" disabled @click="submitForm">协同办理(功能开发中)</el-button>
                    <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">转办</el-button>
                    <el-button v-if="formDataObj.canJump" size="small" type="primary" @click="jumpTask()">跳过</el-button>
                    <el-button v-if="formDataObj.canWait" size="small" type="primary" >容缺</el-button>
                    <el-button size="small" type="primary" :disabled="formDataObj.taskStatus === '挂起'" @click="openDelegation(formDataList[0].beforeNodeName)">转办</el-button>
                    <el-button v-if="formDataObj.canJump" :disabled="formDataObj.taskStatus === '挂起'" size="small" type="primary" @click="jumpTask()">跳过</el-button>
                    <el-button v-if="formDataObj.canWait" :disabled="formDataObj.taskStatus === '挂起'" size="small" type="primary" >容缺</el-button>
                    <el-button v-if="formDataObj.canHangup && formDataObj.taskStatus !== '挂起'" size="small" type="primary" @click="hangup">挂起</el-button>
                    <el-button v-if="formDataObj.canHangup && formDataObj.taskStatus === '挂起'" size="small" type="primary" @click="cancelHangup">结束挂起</el-button>
                  </div>
                  <div class="current">当前阶段:<span>{{formDataObj.beforeNodeName}}</span></div>
                  <div class="current">当前阶段:<span>{{formDataObj.beforeNodeName}}</span><span v-if="formDataObj.taskStatus === 'HANGUP'">(挂起中)</span></div>
                </div>
                <div v-else-if="formDataList.length > 1">
                  <!--     前置节点可驳回         -->
@@ -175,7 +177,7 @@
import { flowTaskForm } from "@/api/flowable/todo";
import {getNextFlowNodeByStart} from "@/api/flowable/todo";
import {rejectTask} from "@/api/flowable/process";
import {taskDelegation, taskJump} from "@/api/projectProcess/projectProcess";
import {cancelTaskHangup, taskDelegation, taskHangup, taskJump} from "@/api/projectProcess/projectProcess";
export default {
  name: "Record",
@@ -266,6 +268,7 @@
    this.deployId = this.$route.query && this.$route.query.deployId;
    this.taskId = this.$route.query && this.$route.query.taskId;
    this.projectName = this.$route.query && this.$route.query.projectName;
    this.projectId = this.$route.query && this.$route.query.projectId;
    this.flowName = this.$route.query && this.$route.query.flowName;
    // 初始化表单
    this.procDefId  = this.$route.query && this.$route.query.procDefId;
@@ -275,6 +278,50 @@
    this.getFlowFormData(this.taskId);
  },
  methods: {
    // 挂起任务
    hangup() {
      this.$prompt('备注说明', '确定要挂起此任务吗', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputType: 'textarea'
        // inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
        // inputErrorMessage: '邮箱格式不正确'
      }).then(({ value }) => {
        let hangupForm = {
          taskId: this.taskId,
          projectId: this.projectId,
          processInsId: this.procInsId,
          reason: value
        }
        taskHangup(hangupForm).then(res => {
          this.$message.success("操作成功")
          this.goBack()
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消挂起操作'
        });
      });
    },
    // 挂起任务
    cancelHangup() {
      this.$confirm('确定要取消挂起吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        let cancelHangupForm = {
          taskId: this.taskId,
          projectId: this.projectId,
          processInsId: this.procInsId
        }
        cancelTaskHangup(cancelHangupForm).then(res => {
          this.$message.success("操作成功")
          this.goBack()
        })
      })
    },
    // 跳过任务
    jumpTask() {
      this.$prompt('备注说明', '确定要跳过此任务吗', {
@@ -286,7 +333,7 @@
      }).then(({ value }) => {
        let jumpForm = {
          taskId: this.taskId,
          projectId: this.goBackParams.projectId,
          projectId: this.projectId,
          processInsId: this.procInsId,
          desc: value
        }
@@ -344,7 +391,7 @@
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            this.delegationForm.projectId = this.goBackParams.projectId
            this.delegationForm.projectId = this.projectId
            this.delegationForm.processInsId = this.procInsId
            this.delegationButLoading = true
            taskDelegation(this.delegationForm).then(res => {
@@ -506,7 +553,7 @@
    handleClick(tab, event) {
      if (tab.name === '2'){
        this.imgLoading = true
        flowXmlAndNode({procInsId:this.procInsId,deployId:this.deployId}).then(res => {
        flowXmlAndNode({processInsId:this.procInsId,deployId:this.deployId}).then(res => {
          this.imgLoading = false
          this.flowData = res.data;
        })
@@ -564,7 +611,7 @@
      this.$router.push({
        path: '/projectFlow/detail',
        query: {
          projectId: this.goBackParams.projectId,
          projectId: this.projectId,
          processDefId: this.goBackParams.processDefId,
          processName: this.goBackParams.processName
        }
@@ -577,10 +624,10 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.submitLoading = true
        let that = this
        if (eval("that.$refs.form" +0)) {
          eval("that.$refs.form" +0)[0].getFormData().then(formData => {
            this.submitLoading = true
            this.formData = formData
            const param = {
              formJson:  this.formJson,
@@ -602,48 +649,6 @@
            this.goBack();
          })
        }
        // let that = this
        // eval("that.$refs.form" +0)[0].getFormData().then(formData => {
        //   // 根据当前任务或者流程设计配置的下一步节点 todo 暂时未涉及到考虑网关、表达式和多节点情况
        //   getNextFlowNodeByStart({deploymentId: this.deployId, variables: formData}).then(res => {
        //     const data = res.data;
        //     if (data) {
        //       this.formData = formData;
        //       if (data.dataType === 'dynamic') {
        //         if (data.type === 'assignee') { // 指定人员
        //           this.checkSendUser = true;
        //           this.checkType = "single";
        //         } else if (data.type === 'candidateUsers') {  // 候选人员(多个)
        //           this.checkSendUser = true;
        //           this.checkType = "multiple";
        //         } else if (data.type === 'candidateGroups') { // 指定组(所属角色接收任务)
        //           this.checkSendRole = true;
        //         } else { // 会签
        //           // 流程设计指定的 elementVariable 作为会签人员列表
        //           this.multiInstanceVars = data.vars;
        //           this.checkSendUser = true;
        //           this.checkType = "multiple";
        //         }
        //         this.taskOpen = true;
        //         this.taskTitle = "选择任务接收";
        //       } else {
        //         if (this.procDefId) {
        //           const param = {
        //             formJson:  this.formJson,
        //           }
        //           // 复制对象的属性值给新的对象
        //           Object.assign(param, formData);
        //           // 完成任务
        //           completeSubmitFormTask(this.taskId, param).then(res => {
        //             this.$modal.msgSuccess(res.msg);
        //             this.goBack();
        //           })
        //         }
        //       }
        //     }
        //   })
        // })
      }).catch((err) => {
        console.log(err)
        this.$message({