From 53605d638044f3129cb622d44bd6c2026b7978cd Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期四, 16 一月 2025 22:41:31 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/project_management-vue

---
 src/views/index.vue                                |   44 ++--
 src/views/flowable/task/myProcess/send/index.vue   |  249 +++++++++++++++++++++---------
 src/views/flowable/task/myProcess/detail/index.vue |   74 ++++++--
 src/views/components/noticeTable.vue               |   19 +
 src/components/Process/panel/taskListener.vue      |    5 
 src/views/projectProcess/detail/index.vue          |   24 ++-
 src/views/flowable/expression/index.vue            |    6 
 src/views/projectProcess/index.vue                 |    1 
 8 files changed, 286 insertions(+), 136 deletions(-)

diff --git a/src/components/Process/panel/taskListener.vue b/src/components/Process/panel/taskListener.vue
index 4d480d8..e1bde2d 100644
--- a/src/components/Process/panel/taskListener.vue
+++ b/src/components/Process/panel/taskListener.vue
@@ -506,6 +506,11 @@
     saveSystemListener() {
       if (this.checkedListenerData.length > 0) {
         this.checkedListenerData.forEach(value => {
+          value.fields.forEach(field => {
+            if (field.name === '寮�濮嬭鏃惰妭鐐�') {
+              field.string = this.modelerStore.element.id;
+            }
+          });
           const listenerObject = createSystemListenerObject(this.modelerStore.moddle, value, true, "flowable");
           this.bpmnElementListeners.push(listenerObject);
           this.elementListenersList.push(changeListenerObject(value));
diff --git a/src/views/components/noticeTable.vue b/src/views/components/noticeTable.vue
index 4789ab9..c7ecb2a 100644
--- a/src/views/components/noticeTable.vue
+++ b/src/views/components/noticeTable.vue
@@ -20,6 +20,7 @@
             </div>
         </div>
         <el-table
+          v-loading="tableLoading"
             :data="tableData"
             :header-cell-style="{
                 background: '#F5F7FC',
@@ -69,12 +70,12 @@
         <div style="width: 100%;display: flex;flex-direction: row-reverse;align-items: center">
           <pagination
             style="width: 100%"
-            v-show="total >= 0"
+            v-show="total > 0"
             :page-sizes="[4]"
             :limit="queryParams.pageSize"
-            :page="queryParams.pageNum"
+            :page="queryParams.currentPage"
             :total="total"
-            @pagination="getList"
+            @pagination="pageChange"
           />
         </div>
       </div>
@@ -86,10 +87,11 @@
 export default {
     data() {
         return {
+            tableLoading: false,
             currentTab: "process",
             total: 0,
             queryParams: {
-                pageNum: 1,
+                currentPage: 1,
                 pageSize: 4,
             },
             tableData: [],
@@ -164,21 +166,26 @@
         this.getList();
     },
     methods: {
+        pageChange(data) {
+          this.queryParams.currentPage = data.page
+          this.getList()
+        },
         async getList() {
             var resp;
-            this.total = 0;
-            this.tableData = [];
+            this.tableLoading = true
             if (this.currentTab == "process") {
                 resp = await getProjectProcessTodo(this.queryParams);
                 if (resp.code === 200) {
                     this.total = resp.total;
                     this.tableData = resp.taskList;
+                    this.tableLoading = false
                 }
             } else {
                 resp = await getProjectPlanToDoList(this.queryParams);
                 if (resp.code === 200) {
                     this.total = resp.total;
                     this.tableData = resp.data;
+                    this.tableLoading = false
                 }
             }
         },
diff --git a/src/views/flowable/expression/index.vue b/src/views/flowable/expression/index.vue
index b570b4b..f381207 100644
--- a/src/views/flowable/expression/index.vue
+++ b/src/views/flowable/expression/index.vue
@@ -73,7 +73,6 @@
 
     <el-table v-loading="loading" :data="expressionList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="涓婚敭" align="center" prop="id" />
       <el-table-column label="鍚嶇О" align="center" prop="name" />
       <el-table-column label="琛ㄨ揪寮忓唴瀹�" align="center" prop="expression" />
       <el-table-column label="鎸囧畾绫诲瀷" align="center" prop="dataType" >
@@ -81,6 +80,7 @@
           <dict-tag :options="dict.type.exp_data_type" :value="scope.row.dataType"/>
         </template>
       </el-table-column>
+      <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" />
       <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -110,7 +110,7 @@
     />
 
     <!-- 娣诲姞鎴栦慨鏀规祦绋嬭揪寮忓璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open" width="500px" :close-on-click-modal="false" :destroy-on-close="true" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="鍚嶇О" prop="name">
           <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ〃杈惧紡鍚嶇О" />
@@ -244,7 +244,7 @@
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "娣诲姞娴佺▼杈惧紡";
+      this.title = "娣诲姞娴佺▼琛ㄨ揪寮�";
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue
index 3bde1b8..ce9cef0 100644
--- a/src/views/flowable/task/myProcess/detail/index.vue
+++ b/src/views/flowable/task/myProcess/detail/index.vue
@@ -10,39 +10,30 @@
         <!--琛ㄥ崟淇℃伅-->
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
           <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
-          <el-col :span="16" :offset="4">
+          <el-col :span="16" :offset="4" v-loading="formLoading" class="tab-min-height">
             <div v-if="formDataList && formDataList.length > 0">
               <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
                 <div v-if="formDataObj.current">
-                  <!--     褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔         -->
-                  <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;">
-                    <el-button size="small" type="primary" @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>
-                  </div>
-                  <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div>
+                  <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
                 </div>
                 <div v-else-if="formDataList.length > 1">
-                  <!--     鍓嶇疆鑺傜偣鍙┏鍥�         -->
-                  <div style="position: absolute; top: 4px; right: 4px">
-                    <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button>
-                  </div>
-                  <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div>
+                  <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
                 </div>
-                <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
-                  <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                <div v-if="formDataObj != null && formDataObj.formJsonObj != null">
+                  <v-form-render  :form-data="formDataObj.formJsonObj.formJson" :ref="'form' + index"/>
                 </div>
                 <div v-else>
                   <el-alert
-                    title="鑺傜偣鏈粦瀹氳〃鍗�"
+                    title="鏈粦瀹氳〃鍗�"
                     type="warning"
                     :closable="false"
                   >
                   </el-alert>
                 </div>
                 <div v-if="formDataList.length <= 1">
+                  <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div>
                   <el-alert
-                    title="涓嶅瓨鍦ㄥ墠缃妭鐐�"
+                    title="涓嶅瓨鍦ㄥ墠缃樁娈�"
                     type="warning"
                     :closable="false"
                   >
@@ -104,7 +95,9 @@
         </el-tab-pane>
         <!--娴佺▼鍥�-->
         <el-tab-pane label="娴佺▼鍥�" name="3">
-          <bpmn-viewer :flowData="flowData" :procInsId="taskForm.procInsId"/>
+          <div class="tab-min-height" v-loading="imgLoading">
+            <bpmn-viewer :flowData="flowData" :procInsId="taskForm.procInsId"/>
+          </div>
         </el-tab-pane>
     </el-tabs>
     </el-card>
@@ -126,6 +119,8 @@
   props: {},
   data() {
     return {
+      formLoading: false, // 鍔犺浇琛ㄥ崟
+      imgLoading: false, // 鍔犺浇娴佺▼鍥�
       projectName: '',
       flowName: '',
       // 妯″瀷xml鏁版嵁
@@ -163,7 +158,9 @@
   methods: {
     handleClick(tab, event) {
       if (tab.name === '3'){
+        this.imgLoading = true
         flowXmlAndNode({procInsId:this.taskForm.procInsId,deployId:this.taskForm.deployId}).then(res => {
+          this.imgLoading = false
           this.flowData = res.data;
         })
       }
@@ -195,6 +192,7 @@
     /** 鑾峰彇娴佺▼鍙橀噺鍐呭 */
     processVariables(taskId) {
       if (taskId) {
+        this.formLoading = true
         // 鎻愪氦娴佺▼鐢宠鏃跺~鍐欑殑琛ㄥ崟瀛樺叆浜嗘祦绋嬪彉閲忎腑鍚庣画浠诲姟澶勭悊鏃堕渶瑕佸睍绀�
         flowTaskFormDetail(taskId).then(res => {
           this.formDataList = res.data
@@ -203,7 +201,6 @@
               this.formDataList.forEach((formDataObj, index) => {
                 console.log("琛ㄥ崟鏁版嵁鍒楄〃", formDataObj.formJson)
                 let that = this
-                console.log(eval("that.$refs.form" + index)[0])
                 if (formDataObj.formJsonObj) {
                   eval("that.$refs.form" + index)[0].setFormJson(formDataObj.formJsonObj.formJson);
 
@@ -216,6 +213,7 @@
               // this.formJson = this.formDataList[0].formJsonObj.formJson
             })
           }
+          this.formLoading = false
           // this.$nextTick(() => {
           //   // 鍥炴樉琛ㄥ崟
           //   this.$refs.vFormRef.setFormJson(res.data.formJson);
@@ -283,4 +281,42 @@
   margin-bottom: 20px;
   box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em;
 }
+.before {
+  span {
+    color: #F56C6C
+  }
+  margin-bottom: 15px;
+  color: #E6A23C
+}
+.before_none {
+  span {
+    color: #F56C6C
+  }
+  margin-bottom: 15px;
+  margin-top: 15px;
+  color: #E6A23C
+}
+.reject-but {
+  position: absolute;
+  top: 4px;
+  right: 4px
+}
+.current {
+  span {
+    color: #409EFF
+  }
+  margin-bottom: 15px;
+  color: #E6A23C
+}
+.op-list {
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.tab-min-height {
+  min-height: 500px;
+}
 </style>
diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue
index 4dfb7be..52bda98 100644
--- a/src/views/flowable/task/myProcess/send/index.vue
+++ b/src/views/flowable/task/myProcess/send/index.vue
@@ -10,39 +10,40 @@
         <!--琛ㄥ崟淇℃伅-->
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
           <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
-          <el-col :span="16" :offset="4">
+          <el-col :span="16" :offset="4" v-loading="formLoading"  class="tab-min-height">
             <div v-if="formDataList && formDataList.length > 0">
               <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
                 <div v-if="formDataObj.current">
                   <!--     褰撳墠鑺傜偣鍙崗鍚屻�佽浆鍔炵瓑鎿嶄綔         -->
-                  <div style="position: absolute; top: 4px; right: 4px; display: flex;justify-content: center; align-items: center;">
-                    <el-button size="small" type="primary" @click="submitForm">纭骞舵彁浜�</el-button>
+                  <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>
                   </div>
-                  <div style="margin-bottom: 15px;color: #E6A23C">褰撳墠闃舵锛�<span style="color: #409EFF">{{formDataObj.beforeNodeName}}</span></div>
+                  <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
                 </div>
                 <div v-else-if="formDataList.length > 1">
                   <!--     鍓嶇疆鑺傜偣鍙┏鍥�         -->
-                  <div style="position: absolute; top: 4px; right: 4px">
-                    <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeDefId)">椹� 鍥�</el-button>
+                  <div class="reject-but">
+                    <el-button type="danger" size="small" @click="openRejectTask(formDataObj.beforeNodeName)">椹� 鍥�</el-button>
                   </div>
-                  <div style="margin-bottom: 15px;color: #E6A23C">鍓嶇疆闃舵锛�<span style="color: #F56C6C">{{formDataObj.beforeNodeName}}</span></div>
+                  <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
                 </div>
-                <div v-if="formDataObj.formJson !== null && formDataObj.formJson !== ''">
-                  <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+                <div v-if="formDataObj != null && formDataObj.formJsonObj != null">
+                  <v-form-render  :form-data="formDataObj.formJsonObj.formJson" :ref="'form' + index"/>
                 </div>
                 <div v-else>
                   <el-alert
-                    title="鑺傜偣鏈粦瀹氳〃鍗�"
+                    title="鏈粦瀹氳〃鍗�"
                     type="warning"
                     :closable="false"
                   >
                   </el-alert>
                 </div>
                 <div v-if="formDataList.length <= 1">
+                  <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div>
                   <el-alert
-                    title="涓嶅瓨鍦ㄥ墠缃妭鐐�"
+                    title="涓嶅瓨鍦ㄥ墠缃樁娈�"
                     type="warning"
                     :closable="false"
                   >
@@ -54,7 +55,9 @@
         </el-tab-pane>
         <!--娴佺▼鍥�-->
         <el-tab-pane label="娴佺▼鍥�" name="2">
-          <bpmn-viewer :flowData="flowData"/>
+          <div v-loading="imgLoading" class="tab-min-height">
+            <bpmn-viewer :flowData="flowData" :procInsId="procInsId"/>
+          </div>
         </el-tab-pane>
       </el-tabs>
       <!--閫夋嫨娴佺▼鎺ユ敹浜�-->
@@ -70,7 +73,7 @@
 
 
     <el-dialog
-      :title="`椹冲洖锛歚 + rejectForm.projectName"
+      :title="`椹冲洖锛歚 + rejectForm.taskName"
       :visible.sync="rejectShow"
       width="950px"
       :destroy-on-close="true"
@@ -85,7 +88,7 @@
         </el-input>
       </div>
       <div class="opBut">
-        <el-button type="danger" size="small" @click="rejectTask">椹冲洖</el-button>
+        <el-button type="danger" size="small" :disabled="rejectLoading" v-loading="rejectLoading" @click="rejectTask">椹冲洖</el-button>
       </div>
     </el-dialog>
 
@@ -152,7 +155,7 @@
         </el-form>
       </div>
       <div class="opBut">
-        <el-button type="danger" size="small" @click="delegation">杞� 鍔�</el-button>
+        <el-button type="danger" size="small" :disabled="delegationButLoading" v-loading="delegationButLoading" @click="delegation">杞� 鍔�</el-button>
       </div>
     </el-dialog>
 
@@ -184,6 +187,11 @@
   props: {},
   data() {
     return {
+      rejectLoading: false, // 椹冲洖鎸夐挳鍔犺浇
+      submitLoading: false, // 鎻愪氦鎸夐挳鍔犺浇
+      delegationButLoading: false, // 杞姙鎸夐挳鍔犺浇
+      formLoading: false,  // 鍔犺浇褰撳墠鍠濆墠缃妭鐐规暟鎹�
+      imgLoading: false,  // 鍔犺浇娴佺▼鍥�
       roleKey: 'role',
       deptKey: 'dept',
       multUserKey: 0,
@@ -228,6 +236,7 @@
       loading: true,
       deployId: "",  // 娴佺▼瀹氫箟缂栧彿
       procDefId: "",  // 娴佺▼瀹炰緥缂栧彿
+      procInsId: "",  // 娴佺▼瀹炰緥缂栧彿
       formRenderData: {},
       formRenderDataList: [],
       variables: [], // 娴佺▼鍙橀噺鏁版嵁
@@ -243,7 +252,7 @@
       rejectForm: {
         comment: '', // 瀹℃牳鎰忚
         taskId: '',
-        // rejectedTaskDefKey: ''  // 琚┏鍥炵殑浠诲姟key
+        taskName: ''  // 琚┏鍥炵殑浠诲姟k
       }
     };
   },
@@ -255,6 +264,7 @@
     this.flowName = this.$route.query && this.$route.query.flowName;
     // 鍒濆鍖栬〃鍗�
     this.procDefId  = this.$route.query && this.$route.query.procDefId;
+    this.procInsId  = this.$route.query && this.$route.query.procInsId;
     this.goBackParams  = this.$route.query && this.$route.query.goBackParams;
     // this.getNextFlowNodeByStart(this.deployId);
     this.getFlowFormData(this.taskId);
@@ -303,8 +313,11 @@
             cancelButtonText: '鍙栨秷',
             type: 'warning'
           }).then(() => {
+            this.delegationButLoading = true
             taskDelegation(this.delegationForm).then(res => {
               this.$message.success("宸插彂璧疯浆鍔炵敵璇�")
+              this.delegationButLoading = false
+              this.delegationShow = false
               this.goBack()
             })
           }).catch(() => {
@@ -432,19 +445,36 @@
       this.delegationShow = true
     },
     rejectTask() {
-      rejectTask(this.rejectForm).then(res => {
-        this.rejectShow = false
-        this.$message.success("椹冲洖鎴愬姛")
-      })
+      this.$confirm(`纭畾瑕侀┏鍥炰换鍔°��${this.rejectForm.taskName}銆戝悧?`, '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.rejectLoading = true
+        rejectTask(this.rejectForm).then(res => {
+          this.rejectShow = false
+          this.$message.success("椹冲洖鎴愬姛")
+          this.goBack()
+        })
+      }).catch((err) => {
+        console.log(err)
+        this.$message({
+          type: 'info',
+          message: '宸插彇椹冲洖浜ゆ搷浣�'
+        });
+      });
+
     },
-    openRejectTask(rejectedTaskDefKey) {
-      // this.rejectForm.rejectedTaskDefKey = rejectedTaskDefKey;
+    openRejectTask(taskName) {
+      this.rejectForm.taskName = taskName;
       this.rejectForm.taskId = this.taskId;
       this.rejectShow = true
     },
     handleClick(tab, event) {
       if (tab.name === '2'){
-        flowXmlAndNode({deployId:this.deployId}).then(res => {
+        this.imgLoading = true
+        flowXmlAndNode({procInsId:this.procInsId,deployId:this.deployId}).then(res => {
+          this.imgLoading = false
           this.flowData = res.data;
         })
       }
@@ -452,13 +482,13 @@
     /** 娴佺▼琛ㄥ崟鏁版嵁 */
     getFlowFormData(taskId) {
       const params = {taskId: taskId}
+      this.formLoading = true
       flowTaskForm(params).then(res => {
         this.formDataList = res.data
         if (this.formDataList && this.formDataList.length > 0) {
           this.$nextTick(() => {
             this.formDataList.forEach((formDataObj, index) => {
               let that = this
-              console.log(eval("that.$refs.form" +index))
               if (eval("that.$refs.form" +index) && formDataObj.formJsonObj) {
                 eval("that.$refs.form" +index)[0].setFormJson(formDataObj.formJsonObj.formJson);
                 eval("that.$refs.form" +index)[0].setFormData(formDataObj.formJsonObj);
@@ -468,8 +498,8 @@
               this.formJson = this.formDataList[0].formJsonObj.formJson
             }
           })
-
         }
+        this.formLoading = false
         // if (res.data.formJson) {
         //   // 鍥炴樉琛ㄥ崟
         //   this.$refs.vFormRef.setFormJson(res.data.formJson);
@@ -509,54 +539,86 @@
     },
     /** 鐢宠娴佺▼琛ㄥ崟鏁版嵁鎻愪氦 */
     submitForm() {
-      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();
-                })
-                // // 鍚姩娴佺▼骞跺皢琛ㄥ崟鏁版嵁鍔犲叆娴佺▼鍙橀噺
-                // definitionStart(this.procDefId, param).then(res => {
-                //   this.$modal.msgSuccess(res.msg);
-                //   this.goBack();
-                // })
-              }
+      this.$confirm(`纭畾瑕佹彁浜や换鍔°��${this.processName}銆戝悧?`, '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        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.formData = formData
+            const param = {
+              formJson:  this.formJson,
             }
-          }
-        })
-      }).catch(error => {
-        // this.$modal.msgError(error)
-      })
+            // 澶嶅埗瀵硅薄鐨勫睘鎬у�肩粰鏂扮殑瀵硅薄
+            Object.assign(param, formData);
+            // 瀹屾垚浠诲姟
+            completeSubmitFormTask(this.taskId, param).then(res => {
+              this.$modal.msgSuccess(res.msg);
+              this.submitLoading = false
+              this.goBack();
+            })
+          })
+        } else {
+          // 娌″叧鑱旇〃鍗曠洿鎺ヤ紶绌�
+          completeSubmitFormTask(this.taskId, {}).then(res => {
+            this.$modal.msgSuccess(res.msg);
+            this.submitLoading = false
+            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({
+          type: 'info',
+          message: '宸插彇娑堟彁浜ゆ搷浣�'
+        });
+      });
+
     },
     /** 閲嶇疆琛ㄥ崟 */
     resetForm() {
@@ -633,7 +695,6 @@
   width: 800px;
   padding: 15px;
 }
-
 .clearfix:before,
 .clearfix:after {
   display: table;
@@ -642,20 +703,16 @@
 .clearfix:after {
   clear: both
 }
-
 .box-card {
   width: 100%;
   margin-bottom: 20px;
 }
-
 .el-tag + .el-tag {
   margin-left: 10px;
 }
-
 .my-label {
   background: #E1F3D8;
 }
-
 .form-warp {
   min-width: 700px;
   padding: 20px;
@@ -663,4 +720,42 @@
   margin-bottom: 20px;
   box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.25em, rgba(90, 125, 188, 0.05) 0px 0.25em 1em;
 }
+.before {
+  span {
+    color: #F56C6C
+  }
+  margin-bottom: 15px;
+  color: #E6A23C
+}
+.before_none {
+  span {
+    color: #F56C6C
+  }
+  margin-bottom: 15px;
+  margin-top: 15px;
+  color: #E6A23C
+}
+.reject-but {
+  position: absolute;
+  top: 4px;
+  right: 4px
+}
+.current {
+  span {
+    color: #409EFF
+  }
+  margin-bottom: 15px;
+  color: #E6A23C
+}
+.op-list {
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.tab-min-height {
+  min-height: 500px;
+}
 </style>
diff --git a/src/views/index.vue b/src/views/index.vue
index 0b72951..d015b96 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -71,7 +71,7 @@
         :countExceptionProjectData="countExceptionProjectData"
       />
     </div>
-    <!-- 浠e姙浜嬮」 -->
+    <!-- 寰呭姙浜嬮」 -->
     <div class="flex">
       <div class="flex_card">
         <el-card>
@@ -117,7 +117,7 @@
               id="DangerSourceId"
               ref="mapRef"
               :is-show-control="true"
-              :list-type="true"
+              :list-type="false"
               :map-list="tableDatas"
               :map-type="true"
               class="w-full h-full border-r border-[#DBDEEA]"
@@ -140,7 +140,6 @@
 import Map from "./components/Map/index.vue";
 import { getCalculatioln, getAbnormalData } from "@/api/login";
 import { searchByKey } from "@/api/projectEngineering/projectInfo";
-
 export default {
   name: "Index",
   data() {
@@ -218,6 +217,25 @@
       this.abnormalData(obj);
     },
 
+    // 鍦板浘鎼滅储
+    searchList() {
+      var _this = this;
+      searchByKey({ wordKey: this.searchForm.name }).then((res) => {
+        if (res.code == 200) {
+          if (res.data.length > 0) {
+            // this.$refs["mapRef"].showProjectInfo(res.data);
+            // _this.tableDatas = res.data;
+            setTimeout(() => {
+              _this.$refs["mapRef"].makeAllMask(res.data);
+            }, 2000);
+          } else {
+            _this.$message.error("鏈煡璇㈠埌瀵瑰簲椤圭洰");
+          }
+        } else {
+          _this.$message.error(res.msg);
+        }
+      });
+    },
     // 鑾峰彇寮傚父鏁版嵁
     async abnormalData(obj) {
       const res = await getAbnormalData(obj);
@@ -248,26 +266,6 @@
       };
       this.timeMerge = [];
       this.handleQuery();
-    },
-
-    // 鍦板浘鎼滅储
-    searchList() {
-      var _this = this;
-      searchByKey({ wordKey: this.searchForm.name }).then((res) => {
-        if (res.code == 200) {
-          if (res.data.length > 0) {
-            // this.$refs["mapRef"].showProjectInfo(res.data);
-            // _this.tableDatas = res.data;
-            setTimeout(() => {
-              _this.$refs["mapRef"].makeAllMask(res.data);
-            }, 2000);
-          } else {
-            _this.$message.error("鏈煡璇㈠埌瀵瑰簲椤圭洰");
-          }
-        } else {
-          _this.$message.error(res.msg);
-        }
-      });
     },
     mapQuery() {},
   },
diff --git a/src/views/projectProcess/detail/index.vue b/src/views/projectProcess/detail/index.vue
index 207b6a4..3c05cf5 100644
--- a/src/views/projectProcess/detail/index.vue
+++ b/src/views/projectProcess/detail/index.vue
@@ -18,7 +18,7 @@
       </div>
       <div class="search-warp">
         <div @click="changeTab(1, 'all')" :class="{'item-warm': true, 'all-color': true, 'active': 1 === selectTabId}">鍏ㄩ儴浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.totalTaskNum}}锛�</span></div>
-        <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">浠e姙浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.todoTaskNum}}锛�</span></div>
+        <div @click="changeTab(2, 'todo')" :class="{'item-warm': true, 'all-color': true, 'active': 2 === selectTabId}">寰呭姙浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.todoTaskNum}}锛�</span></div>
         <div @click="changeTab(3, 'todo')" :class="{'item-warm': true, 'current-color': true, 'active': 3 === selectTabId}">褰撳墠鐜妭</div>
         <div @click="changeTab(4, 'remaining')" :class="{'item-warm': true, 'remaining-color': true, 'active': 4 === selectTabId}">鍓╀綑浜嬮」<span v-if="detailData && detailData.statistics">锛坽{detailData.statistics.remainingTaskNum}}锛�</span></div>
         <div @click="changeTab(5, 'timely')" :class="{'item-warm': true, 'timely-color': true, 'active': 5 === selectTabId}">鎸夋椂瀹屾垚锛�0锛�</div>
@@ -148,9 +148,16 @@
   },
   mounted() {
     console.log(this.$route.query, "鍙傛暟")
-    this.queryParams.projectId = this.$route.query.projectId
-    this.queryParams.processDefId = this.$route.query.processDefId
-    this.queryParams.processName = this.$route.query.processName
+    let params = JSON.parse(sessionStorage.getItem("projectProDetail"))
+    console.log(params, "鍙傛暟")
+    if (!params || ! params.projectId) {
+      this.queryParams.projectId = this.$route.query.projectId
+      this.queryParams.processDefId = this.$route.query.processDefId
+      this.queryParams.processName = this.$route.query.processName
+      sessionStorage.setItem("projectProDetail", JSON.stringify(this.queryParams))
+    } else {
+      this.queryParams = params
+    }
     this.loading = true
     this.getProjectProcessInfo()
   },
@@ -178,7 +185,7 @@
       if (row.taskStatus !== '宸插畬鎴�') {
         return null
       } else {
-        return row.handlerName
+        return row.actualHandlerUserName
       }
     },
     showHandle(row) {
@@ -204,11 +211,13 @@
         taskId: row.taskId
       }
       getTaskIsAuditing(params).then(res => {
+        console.log("row",row)
         this.$router.push({
           path: '/flowable/task/myProcess/send/index',
           query: {
             deployId: row.deployId,
             procDefId: row.processDefId,
+            procInsId: row.processInsId,
             processName: row.taskName,
             flowName: this.queryParams.processName,
             projectName: this.detailData.projectName,
@@ -246,11 +255,12 @@
       this.getList()
     },
     getList() {
+      this.tableLoading = true
       // 鑾峰彇浠诲姟鍒楄〃
       getProjectProcessDetailTaskList(this.queryParams).then(res => {
+        this.tableLoading =false
         this.taskList = res.data
         this.total = res.total
-        this.tableLoading =false
       })
     },
     // 鏌ヨ璇︽儏
@@ -263,14 +273,12 @@
       })
     },
     changeTab(id, event) {
-      this.tableLoading = true
       let beforeId = this.selectTabId
       this.selectTabId = id
       this.queryParams.taskType = event
       if (beforeId !== id) {
         this.getList()
       }
-
     }
   }
 }
diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue
index a71814a..f33fa53 100644
--- a/src/views/projectProcess/index.vue
+++ b/src/views/projectProcess/index.vue
@@ -393,6 +393,7 @@
   methods: {
     // 鏌ョ湅璇︽儏
     lookProcessDetail(row) {
+      sessionStorage.removeItem("projectProDetail")
       this.$router.push({
         path: '/projectFlow/detail',
         query: {

--
Gitblit v1.8.0