From c78889e71d16d26c03ff59746db47c6d4d2b98e0 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 03 三月 2025 20:41:25 +0800
Subject: [PATCH] Merge branch 'master' into dev

---
 src/views/flowable/task/myProcess/send/index.vue |  154 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 103 insertions(+), 51 deletions(-)

diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue
index 52bda98..f0a549d 100644
--- a/src/views/flowable/task/myProcess/send/index.vue
+++ b/src/views/flowable/task/myProcess/send/index.vue
@@ -16,16 +16,32 @@
                 <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 @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button>
-                    <el-button size="small" type="primary" @click="openDelegation(formDataList[0].beforeNodeName)">杞姙</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" :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">
                   <!--     鍓嶇疆鑺傜偣鍙┏鍥�         -->
                   <div class="reject-but">
                     <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeName)">椹� 鍥�</el-button>
+                    <el-popover
+                      style="margin-left: 10px" v-if="formDataObj.events.length > 0"
+                      placement="right-start"
+                      title="浠诲姟鏃ュ織"
+                      width="600"
+                      trigger="hover"
+                    >
+                      <div v-if="formDataObj.events.length > 0">
+                        <log-view :log-list="formDataObj.events"/>
+                      </div>
+                      <el-button slot="reference">浠诲姟鏃ュ織</el-button>
+                    </el-popover>
                   </div>
                   <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
                 </div>
@@ -172,8 +188,9 @@
 import {completeSubmitFormTask} from "@/api/flowable/process";
 import { flowTaskForm } from "@/api/flowable/todo";
 import {getNextFlowNodeByStart} from "@/api/flowable/todo";
+import LogView from "@/views/projectProcess/components/LogView";
 import {rejectTask} from "@/api/flowable/process";
-import {taskDelegation} from "@/api/projectProcess/projectProcess";
+import {cancelTaskHangup, taskDelegation, taskHangup, taskJump} from "@/api/projectProcess/projectProcess";
 
 export default {
   name: "Record",
@@ -183,10 +200,12 @@
     MyDept,
     SingleUser,
     MultUser,
+    LogView
   },
   props: {},
   data() {
     return {
+      jumpDesc: '', // 璺宠繃璇存槑
       rejectLoading: false, // 椹冲洖鎸夐挳鍔犺浇
       submitLoading: false, // 鎻愪氦鎸夐挳鍔犺浇
       delegationButLoading: false, // 杞姙鎸夐挳鍔犺浇
@@ -217,7 +236,9 @@
         taskId: '',
         peopleType: '',
         targetId: '',
-        taskName: ''
+        taskName: '',
+        processInsId: '',
+        projectId: '',
       },
       delegationShow: false, // 杞姙鏄剧ず
       rejectShow: false, // 椹冲洖鏄剧ず
@@ -261,6 +282,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;
@@ -270,6 +292,76 @@
     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('澶囨敞璇存槑', '纭畾瑕佽烦杩囨浠诲姟鍚�', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        inputType: 'textarea'
+        // inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
+        // inputErrorMessage: '閭鏍煎紡涓嶆纭�'
+      }).then(({ value }) => {
+        let jumpForm = {
+          taskId: this.taskId,
+          projectId: this.projectId,
+          processInsId: this.procInsId,
+          desc: value
+        }
+        taskJump(jumpForm).then(res => {
+          this.$message.success("鎿嶄綔鎴愬姛")
+          this.goBack()
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堣烦杩囨搷浣�'
+        });
+      });
+    },
     removeDept(dept) {
       let index = this.delegationDeptSelect.indexOf(dept);
       if (index !== -1) {
@@ -313,6 +405,8 @@
             cancelButtonText: '鍙栨秷',
             type: 'warning'
           }).then(() => {
+            this.delegationForm.projectId = this.projectId
+            this.delegationForm.processInsId = this.procInsId
             this.delegationButLoading = true
             taskDelegation(this.delegationForm).then(res => {
               this.$message.success("宸插彂璧疯浆鍔炵敵璇�")
@@ -473,7 +567,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;
         })
@@ -531,7 +625,7 @@
       this.$router.push({
         path: '/projectFlow/detail',
         query: {
-          projectId: this.goBackParams.projectId,
+          projectId: this.projectId,
           processDefId: this.goBackParams.processDefId,
           processName: this.goBackParams.processName
         }
@@ -544,10 +638,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,
@@ -569,48 +663,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({

--
Gitblit v1.8.0