From 5c929cfb5286a31a4e067cbc61e8774f4e7d42ae Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 06 五月 2025 11:25:41 +0800
Subject: [PATCH] 任务查看:任务名称undefined解决

---
 src/views/flowable/task/myProcess/detail/index.vue |  190 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 162 insertions(+), 28 deletions(-)

diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue
index f655c72..2b81579 100644
--- a/src/views/flowable/task/myProcess/detail/index.vue
+++ b/src/views/flowable/task/myProcess/detail/index.vue
@@ -1,16 +1,54 @@
 <template>
   <div class="app-container">
     <el-card class="box-card" >
-      <div slot="header" class="clearfix">
-        <span class="el-icon-document">宸插彂浠诲姟</span>
+      <div slot="header" class="clearfix" style="display: flex">
+        <div style="flex: 1" class="el-icon-document">{{`浠诲姟璇︽儏锛歚 + this.taskName}}</div>
+        <div style="flex: 2; color: #303133">{{projectName + '鈥斺��' + flowName}}</div>
         <el-button style="float: right;" size="mini" type="danger" @click="goBack">鍏抽棴</el-button>
       </div>
       <el-tabs  tab-position="top" v-model="activeName" @tab-click="handleClick">
         <!--琛ㄥ崟淇℃伅-->
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
-          <el-col :span="16" :offset="4">
-            <v-form-render ref="vFormRef"/>
-         </el-col>
+          <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
+          <el-col :span="24" 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">
+                <el-row>
+                  <el-col :span="18">
+                    <div v-if="formDataObj.current">
+                      <div class="current">褰撳墠闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
+                    </div>
+                    <div v-else-if="formDataList.length > 1">
+                      <div class="before">鍓嶇疆闃舵锛�<span>{{formDataObj.beforeNodeName}}</span></div>
+                    </div>
+                    <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="鏈粦瀹氳〃鍗�"
+                        type="warning"
+                        :closable="false"
+                      >
+                      </el-alert>
+                    </div>
+                    <div v-if="formDataList.length <= 1">
+                      <div class="before_none">鍓嶇疆闃舵锛�<span>涓嶅瓨鍦ㄥ墠缃樁娈�</span></div>
+                      <el-alert
+                        title="涓嶅瓨鍦ㄥ墠缃樁娈�"
+                        type="warning"
+                        :closable="false"
+                      >
+                      </el-alert>
+                    </div>
+                  </el-col>
+                  <el-col :span="6">
+                    <log-time-line v-if="formDataObj.events.length > 0" :log-list="formDataObj.events"/>
+                  </el-col>
+                </el-row>
+              </div>
+            </div>
+          </el-col>
         </el-tab-pane>
         <!--娴佺▼娴佽浆璁板綍-->
         <el-tab-pane label="娴佽浆璁板綍" name="2">
@@ -23,7 +61,11 @@
                   :icon="setIcon(item.finishTime)"
                   :color="setColor(item.finishTime)"
                 >
-                  <p style="font-weight: 700">{{item.taskName}}</p>
+                  <p style="font-weight: 700">{{item.taskName}}
+                    <span v-if="item.comment && item.comment.type === '3'" style="color: red">(鎵ц浜嗛┏鍥�)</span>
+                    <span v-if="item.overtime && item.overtime==='red'" style="color: red">(宸茶秴鏃�)</span>
+                    <span v-if="item.overtime && item.overtime==='yellow'" style="color: orange">(鍗冲皢瓒呮椂)</span>
+                  </p>
                   <el-card :body-style="{ padding: '10px' }">
                     <el-descriptions class="margin-top" :column="1" size="small" border>
                       <el-descriptions-item v-if="item.assigneeName" label-class-name="my-label">
@@ -60,7 +102,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>
@@ -70,25 +114,35 @@
 <script>
 import {flowRecord} from "@/api/flowable/finished";
 import {getProcessVariables, flowXmlAndNode} from "@/api/flowable/definition";
+import {flowTaskForm, flowTaskFormDetail} from "@/api/flowable/todo";
 import BpmnViewer from '@/components/Process/viewer';
+import LogView from "@/views/projectProcess/components/LogView";
+import LogTimeLine from "@/views/projectProcess/components/LogTimeLine";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "Record",
   components: {
-    BpmnViewer
+    BpmnViewer, LogView, LogTimeLine
   },
   props: {},
   data() {
     return {
+      taskName: '', // 浠诲姟鍚嶇О
+      formLoading: false, // 鍔犺浇琛ㄥ崟
+      imgLoading: false, // 鍔犺浇娴佺▼鍥�
+      projectName: '',
+      flowName: '',
       // 妯″瀷xml鏁版嵁
       flowData: {},
+      formDataList: [],  // 琛ㄥ崟鍒楄〃
       activeName: '1',
       // 鏌ヨ鍙傛暟
       queryParams: {},
       // 閬僵灞�
       loading: true,
       flowRecordList: [], // 娴佺▼娴佽浆鏁版嵁
+      goBackParams: {},
       taskForm:{
         multiple: false,
         comment:"", // 鎰忚鍐呭
@@ -104,14 +158,20 @@
     this.taskForm.deployId = this.$route.query && this.$route.query.deployId;
     this.taskForm.taskId  = this.$route.query && this.$route.query.taskId;
     this.taskForm.procInsId = this.$route.query && this.$route.query.procInsId;
+    this.goBackParams = this.$route.query && this.$route.query.goBackParams;
+    this.projectName = this.$route.query && this.$route.query.projectName;
+    this.flowName = this.$route.query && this.$route.query.flowName;
+    this.taskName = this.$route.query && this.$route.query.taskName;
     // 娴佺▼浠诲姟閲嶈幏鍙栧彉閲忚〃鍗�
-    this.processVariables( this.taskForm.taskId)
-    this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId);
+    this.processVariables( this.taskForm.taskId, this.taskForm.procInsId)
+    this.getFlowRecordList(this.taskForm.procInsId);
   },
   methods: {
     handleClick(tab, event) {
       if (tab.name === '3'){
-        flowXmlAndNode({procInsId:this.taskForm.procInsId,deployId:this.taskForm.deployId}).then(res => {
+        this.imgLoading = true
+        flowXmlAndNode({processInsId:this.taskForm.procInsId,deployId:this.taskForm.deployId}).then(res => {
+          this.imgLoading = false
           this.flowData = res.data;
         })
       }
@@ -131,9 +191,9 @@
       }
     },
     /** 娴佺▼娴佽浆璁板綍 */
-    getFlowRecordList(procInsId, deployId) {
+    getFlowRecordList(procInsId) {
       const that = this
-      const params = {procInsId: procInsId, deployId: deployId}
+      const params = {procInsId: procInsId}
       flowRecord(params).then(res => {
         that.flowRecordList = res.data.flowList;
       }).catch(res => {
@@ -141,31 +201,57 @@
       })
     },
     /** 鑾峰彇娴佺▼鍙橀噺鍐呭 */
-    processVariables(taskId) {
+    processVariables(taskId, processInsId) {
       if (taskId) {
+        this.formLoading = true
         // 鎻愪氦娴佺▼鐢宠鏃跺~鍐欑殑琛ㄥ崟瀛樺叆浜嗘祦绋嬪彉閲忎腑鍚庣画浠诲姟澶勭悊鏃堕渶瑕佸睍绀�
-        getProcessVariables(taskId).then(res => {
-          this.$nextTick(() => {
-            // 鍥炴樉琛ㄥ崟
-            this.$refs.vFormRef.setFormJson(res.data.formJson);
+        flowTaskFormDetail(processInsId, taskId).then(res => {
+          this.formDataList = res.data
+          if (this.formDataList && this.formDataList.length > 0) {
             this.$nextTick(() => {
-              // 鍔犺浇琛ㄥ崟濉啓鐨勬暟鎹�
-              this.$refs.vFormRef.setFormData(res.data);
-              this.$nextTick(() => {
-                // 琛ㄥ崟绂佺敤
-                this.$refs.vFormRef.disableForm();
+              this.formDataList.forEach((formDataObj, index) => {
+                console.log("琛ㄥ崟鏁版嵁鍒楄〃", formDataObj.formJson)
+                let that = this
+                if (formDataObj.formJsonObj) {
+                  eval("that.$refs.form" + index)[0].setFormJson(formDataObj.formJsonObj.formJson);
+
+                  eval("that.$refs.form" + index)[0].setFormData(formDataObj.formJsonObj);
+                  this.$nextTick(() => {
+                    eval("that.$refs.form" + index)[0].disableForm();
+                  })
+                }
               })
+              // this.formJson = this.formDataList[0].formJsonObj.formJson
             })
-          })
+          }
+          this.formLoading = false
+          // this.$nextTick(() => {
+          //   // 鍥炴樉琛ㄥ崟
+          //   this.$refs.vFormRef.setFormJson(res.data.formJson);
+          //   this.$nextTick(() => {
+          //     // 鍔犺浇琛ㄥ崟濉啓鐨勬暟鎹�
+          //     this.$refs.vFormRef.setFormData(res.data);
+          //     this.$nextTick(() => {
+          //       // 琛ㄥ崟绂佺敤
+          //       this.$refs.vFormRef.disableForm();
+          //     })
+          //   })
+          // })
         });
       }
     },
     /** 杩斿洖椤甸潰 */
     goBack() {
-      // // 鍏抽棴褰撳墠鏍囩椤靛苟杩斿洖涓婁釜椤甸潰
-      // const obj = { path: "/task/process", query: { t: Date.now()} };
-      // this.$tab.closeOpenPage(obj);
-      this.$tab.closePage()
+      // 鍏抽棴褰撳墠鏍囩椤�
+      this.$store.dispatch("tagsView/delView", this.$route);
+      this.$router.push({
+        path: '/projectFlow/detail',
+        query: {
+          projectId: this.goBackParams.projectId,
+          processDefId: this.goBackParams.processDefId,
+          processName: this.goBackParams.processName
+        }
+      })
     },
   }
 };
@@ -198,4 +284,52 @@
 .my-label {
   background: #E1F3D8;
 }
+
+.form-warp {
+  min-width: 700px;
+  padding: 20px;
+  margin-top: 5px;
+  margin-bottom: 20px;
+  margin-left: 3px;
+  margin-right: 3px;
+  box-shadow: rgba(67, 71, 85, 0.27) 0px 0px 0.1em, rgba(90, 125, 188, 0.05) 0px 0.1em 0.5em;
+}
+.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>

--
Gitblit v1.8.0