From bd63da40b4f5a5130bbb73fc654e7aaa25cacce6 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期二, 10 十二月 2024 18:11:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/Process/panel/PropertiesPanel.vue                    |   88 ++++-
 src/views/projectEngineering/projectLibrary/index.vue               |    9 
 src/assets/styles/index.scss                                        |    4 
 src/store/modules/user.js                                           |    6 
 src/views/flowable/task/myProcess/detail/index.vue                  |   70 ++++-
 vue.config.js                                                       |    2 
 src/layout/components/Navbar.vue                                    |    2 
 .env.staging                                                        |    4 
 src/utils/request.js                                                |    2 
 .env.development                                                    |    4 
 src/views/flowable/task/myProcess/send/index.vue                    |   23 +
 src/views/flowable/task/myProcess/detail/index1.vue                 |  201 +++++++++++++++
 src/api/flowable/todo.js                                            |    7 
 src/views/login.vue                                                 |    4 
 src/views/projectEngineering/projectLibrary/component/BasicInfo.vue |    4 
 package.json                                                        |    2 
 .env.production                                                     |    4 
 src/layout/components/AppMain.vue                                   |    4 
 src/views/projectEngineering/abnormalProject/index.vue              |    2 
 src/views/projectEngineering/projectLibrary/projectDetails.vue      |   83 +++--
 src/views/projectProcess/detail/index.vue                           |  246 +++++++++---------
 src/views/projectProcess/index.vue                                  |    2 
 22 files changed, 542 insertions(+), 231 deletions(-)

diff --git a/.env.development b/.env.development
index b573e4e..17348f4 100644
--- a/.env.development
+++ b/.env.development
@@ -1,10 +1,10 @@
 # 椤甸潰鏍囬
-VUE_APP_TITLE = 灏勬椽椤圭洰绠$悊绯荤粺
+VUE_APP_TITLE = 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺
 
 # 寮�鍙戠幆澧冮厤缃�
 ENV = 'development'
 
-# 灏勬椽椤圭洰绠$悊绯荤粺/寮�鍙戠幆澧�
+# 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺/寮�鍙戠幆澧�
 VUE_APP_BASE_API = '/dev-api'
 
 # 璺敱鎳掑姞杞�
diff --git a/.env.production b/.env.production
index 8332f47..7519423 100644
--- a/.env.production
+++ b/.env.production
@@ -1,10 +1,10 @@
 # 椤甸潰鏍囬
-VUE_APP_TITLE = 灏勬椽椤圭洰绠$悊绯荤粺
+VUE_APP_TITLE = 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺
 
 # 鐢熶骇鐜閰嶇疆
 ENV = 'production'
 
-# 灏勬椽椤圭洰绠$悊绯荤粺/鐢熶骇鐜
+# 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺/鐢熶骇鐜
 VUE_APP_BASE_API = '/prod-api'
 
 # 寮�鎵撴柊鐨則ab鐨剈rl鍓嶇紑
diff --git a/.env.staging b/.env.staging
index fc69d39..2042b60 100644
--- a/.env.staging
+++ b/.env.staging
@@ -1,5 +1,5 @@
 # 椤甸潰鏍囬
-VUE_APP_TITLE = 灏勬椽椤圭洰绠$悊绯荤粺
+VUE_APP_TITLE = 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺
 
 BABEL_ENV = production
 
@@ -8,5 +8,5 @@
 # 娴嬭瘯鐜閰嶇疆
 ENV = 'staging'
 
-# 灏勬椽椤圭洰绠$悊绯荤粺/娴嬭瘯鐜
+# 灏勬椽鏅烘収椤圭洰绠$悊绯荤粺/娴嬭瘯鐜
 VUE_APP_BASE_API = '/stage-api'
diff --git a/package.json b/package.json
index 22b2295..e8042cf 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "3.8.8",
-  "description": "灏勬椽椤圭洰绠$悊绯荤粺",
+  "description": "灏勬椽鏅烘収椤圭洰绠$悊绯荤粺",
   "author": "灏勬椽椤圭洰",
   "license": "MIT",
   "scripts": {
diff --git a/src/api/flowable/todo.js b/src/api/flowable/todo.js
index 276977b..6354aeb 100644
--- a/src/api/flowable/todo.js
+++ b/src/api/flowable/todo.js
@@ -131,3 +131,10 @@
     params: query
   })
 }
+// 娴佺▼鑺傜偣鏌ョ湅璇︽儏琛ㄥ崟
+export function flowTaskFormDetail(taskId) {
+  return request({
+    url: '/flowable/task/detail/' + taskId,
+    method: 'get',
+  })
+}
diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss
index 61bf7ef..074c329 100644
--- a/src/assets/styles/index.scss
+++ b/src/assets/styles/index.scss
@@ -139,6 +139,10 @@
 //main-container鍏ㄥ眬鏍峰紡
 .app-container {
   padding: 20px;
+  height: calc(100vh - 96px);
+  display: flex;
+  flex-direction: column;
+  box-sizing: border-box;
 }
 
 // search闈㈡澘鏍峰紡
diff --git a/src/components/Process/panel/PropertiesPanel.vue b/src/components/Process/panel/PropertiesPanel.vue
index 5a4f9f1..959fc1a 100644
--- a/src/components/Process/panel/PropertiesPanel.vue
+++ b/src/components/Process/panel/PropertiesPanel.vue
@@ -6,28 +6,36 @@
       <el-table-column label="灞炴�у��" prop="value" min-width="100px" show-overflow-tooltip />
       <el-table-column label="鎿嶄綔" width="90px">
         <template slot-scope="{ row, $index }">
-          <el-button size="mini" type="text" @click="openAttributesForm(row, $index)">缂栬緫</el-button>
-          <el-divider direction="vertical" />
           <el-button size="mini" type="text" style="color: #ff4d4f" @click="removeAttributes(row, $index)">绉婚櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
     <div class="element-drawer__button">
-      <el-button size="mini" type="primary" icon="el-icon-plus" @click="openAttributesForm(null, -1)">娣诲姞灞炴��</el-button>
+      <el-button size="mini" type="primary" icon="el-icon-setting" @click="openAttributesForm(null, -1)">灞炴�ц缃�</el-button>
     </div>
 
     <el-dialog :visible.sync="propertyFormModelVisible" title="灞炴�ч厤缃�" width="600px" append-to-body destroy-on-close>
-      <el-form :model="propertyForm" label-width="80px" size="mini" ref="attributeFormRef" @submit.native.prevent>
-        <el-form-item label="灞炴�у悕锛�" prop="name">
-          <el-input v-model="propertyForm.name" clearable />
-        </el-form-item>
-        <el-form-item label="灞炴�у�硷細" prop="value">
-          <el-input v-model="propertyForm.value" clearable />
-        </el-form-item>
-      </el-form>
+      <div v-for="item in canConfigPropertyList">
+        <div v-if="item.vueType === 'switch'">
+          <el-switch
+              v-model="item.value"
+              :inactive-text="item.name"
+              @change="(val) => item.method(item.name, val === true ? '鏄�' : '鍚�')"
+              active-color="#13ce66"
+              inactive-color="#ff4949">
+          </el-switch>
+        </div>
+      </div>
+<!--      <el-form :model="propertyForm" label-width="80px" size="mini" ref="attributeFormRef" @submit.native.prevent>-->
+<!--        <el-form-item label="灞炴�у悕锛�" prop="name">-->
+<!--          <el-input v-model="propertyForm.name" clearable />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="灞炴�у�硷細" prop="value">-->
+<!--          <el-input v-model="propertyForm.value" clearable />-->
+<!--        </el-form-item>-->
+<!--      </el-form>-->
       <template slot="footer">
-        <el-button size="mini" @click="propertyFormModelVisible = false">鍙� 娑�</el-button>
-        <el-button size="mini" type="primary" @click="saveAttribute">纭� 瀹�</el-button>
+        <el-button size="mini" @click="propertyFormModelVisible = false">鍏� 闂�</el-button>
       </template>
     </el-dialog>
   </div>
@@ -46,7 +54,19 @@
   },
   data() {
     return {
-      elementPropertyList: [],
+      canConfigPropertyList: [
+        {
+          name: '璇ヨ妭鐐规槸瀹℃壒鑺傜偣',
+          value: false,
+          vueType: 'switch',
+          method: (name, value) => {
+            this.propertyForm.name = name
+            this.propertyForm.value = value
+            this.saveAttribute()
+          }
+        }
+      ], // 鍙互閰嶇疆鐨勫睘鎬у垪琛�
+      elementPropertyList: [], // 鎵╁睍灞炴�у垪琛�
       otherExtensionList: [],
       propertyForm: {},
       editingPropertyIndex: -1,
@@ -74,10 +94,20 @@
           }
           return ex.$type === `flowable:Properties`;
         }) ?? [];
-
       // 淇濆瓨鎵�鏈夌殑 鎵╁睍灞炴�у瓧娈�
       this.bpmnElementPropertyList = this.bpmnElementProperties.reduce((pre, current) => pre.concat(current.values), []);
-      // 澶嶅埗 鏄剧ず
+
+      // 鍥炴樉
+      this.canConfigPropertyList.forEach(item => {
+        const find = this.bpmnElementPropertyList.find(el => el.name === item.name);
+        if (find) {
+          if (item.vueType === 'switch') {
+            item.value = find.value === '鏄�' ? true : false
+          }
+
+        }
+      })
+      console.log(this.canConfigPropertyList, "杩欐槸浠�涔堥")
       this.elementPropertyList = JSON.parse(JSON.stringify(this.bpmnElementPropertyList ?? []));
     },
     openAttributesForm(attr, index) {
@@ -114,15 +144,25 @@
           value
         });
       } else {
-        // 鏂板缓灞炴�у瓧娈�
-        const newPropertyObject = this.modelerStore.moddle.create(`flowable:Property`, { name, value });
-        // 鏂板缓涓�涓睘鎬у瓧娈电殑淇濆瓨鍒楄〃
-        const propertiesObject = this.modelerStore.moddle.create(`flowable:Properties`, {
-          values: this.bpmnElementPropertyList.concat([newPropertyObject])
-        });
-        this.updateElementExtensions(propertiesObject);
+        // 濡傛灉宸茬粡瀛樺湪杩欎釜灞炴��,灏卞仛淇敼
+        const find = this.bpmnElementPropertyList.find(item => item.name === name);
+        if (find) {
+          this.modelerStore.modeling.updateModdleProperties(this.bpmnElement, this.bpmnElementPropertyList[this.bpmnElementPropertyList.indexOf(find)], {
+            name,
+            value
+          });
+        } else {
+          // 鏂板缓灞炴�у瓧娈�
+          const newPropertyObject = this.modelerStore.moddle.create(`flowable:Property`, { name, value });
+          // 鏂板缓涓�涓睘鎬у瓧娈电殑淇濆瓨鍒楄〃
+          const propertiesObject = this.modelerStore.moddle.create(`flowable:Properties`, {
+            values: this.bpmnElementPropertyList.concat([newPropertyObject])
+          });
+          this.updateElementExtensions(propertiesObject);
+        }
       }
-      this.propertyFormModelVisible = false;
+      // this.propertyFormModelVisible = false;
+      this.$message.success("鎿嶄綔鎴愬姛")
       this.resetAttributesList();
     },
     updateElementExtensions(properties) {
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index a25c562..9366fa8 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -29,7 +29,7 @@
 <style lang="scss" scoped>
 .app-main {
   /* 50= navbar  50  */
-  min-height: calc(100vh - 50px);
+  // min-height: calc(100vh - 50px);
   width: 100%;
   position: relative;
   overflow: hidden;
@@ -42,7 +42,7 @@
 .hasTagsView {
   .app-main {
     /* 84 = navbar + tags-view = 50 + 34 */
-    min-height: calc(100vh - 84px);
+    min-height: calc(100vh - 96px);
   }
 
   .fixed-header + .app-main {
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 9a5141b..1155780 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -2,7 +2,7 @@
     <div class="navbar">
         <div class="ruoyi-logo">
             <img src="@/assets/logo/logo.png" alt="" />
-            <span>灏勬椽椤圭洰绠$悊绯荤粺</span>
+            <span>灏勬椽鏅烘収椤圭洰绠$悊绯荤粺</span>
         </div>
         <div class="right-menu flex align-center">
             <template>
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index cdbab1e..115cb18 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -7,6 +7,7 @@
     id: '',
     name: '',
     avatar: '',
+    deptId: null,
     roles: [],
     permissions: []
   },
@@ -26,6 +27,9 @@
     },
     SET_ROLES: (state, roles) => {
       state.roles = roles
+    },
+    SET_DEPT: (state, deptId) => {
+      state.deptId = deptId
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
@@ -64,7 +68,9 @@
           }
           commit('SET_ID', user.userId)
           commit('SET_NAME', user.userName)
+          commit('SET_DEPT', user.deptId)
           commit('SET_AVATAR', avatar)
+
           resolve(res)
         }).catch(error => {
           reject(error)
diff --git a/src/utils/request.js b/src/utils/request.js
index ffb0d21..a7a9c08 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -17,7 +17,7 @@
   // axios涓姹傞厤缃湁baseURL閫夐」锛岃〃绀鸿姹俇RL鍏叡閮ㄥ垎
   baseURL: process.env.VUE_APP_BASE_API,
   // 瓒呮椂
-  timeout: 10000
+  timeout: 50000
 })
 
 // request鎷︽埅鍣�
diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue
index f655c72..c797cb2 100644
--- a/src/views/flowable/task/myProcess/detail/index.vue
+++ b/src/views/flowable/task/myProcess/detail/index.vue
@@ -2,14 +2,18 @@
   <div class="app-container">
     <el-card class="box-card" >
       <div slot="header" class="clearfix">
-        <span class="el-icon-document">宸插彂浠诲姟</span>
+        <span class="el-icon-document">宸插畬鎴愪换鍔�</span>
         <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 :span="16" :offset="4" v-if="formDataList && formDataList.length > 0">
+            <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp">
+              <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">褰撳墠闃舵锛�<span style="color: red">{{formDataObj.beforeNodeName}}</span></div>
+              <div v-else style="margin-bottom: 15px;color: #409eff">鍓嶇疆闃舵锛�<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div>
+              <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
+            </div>
          </el-col>
         </el-tab-pane>
         <!--娴佺▼娴佽浆璁板綍-->
@@ -70,6 +74,7 @@
 <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 "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
@@ -83,12 +88,14 @@
     return {
       // 妯″瀷xml鏁版嵁
       flowData: {},
+      formDataList: [],  // 琛ㄥ崟鍒楄〃
       activeName: '1',
       // 鏌ヨ鍙傛暟
       queryParams: {},
       // 閬僵灞�
       loading: true,
       flowRecordList: [], // 娴佺▼娴佽浆鏁版嵁
+      goBackParams: {},
       taskForm:{
         multiple: false,
         comment:"", // 鎰忚鍐呭
@@ -104,6 +111,7 @@
     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.processVariables( this.taskForm.taskId)
     this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId);
@@ -144,28 +152,47 @@
     processVariables(taskId) {
       if (taskId) {
         // 鎻愪氦娴佺▼鐢宠鏃跺~鍐欑殑琛ㄥ崟瀛樺叆浜嗘祦绋嬪彉閲忎腑鍚庣画浠诲姟澶勭悊鏃堕渶瑕佸睍绀�
-        getProcessVariables(taskId).then(res => {
-          this.$nextTick(() => {
-            // 鍥炴樉琛ㄥ崟
-            this.$refs.vFormRef.setFormJson(res.data.formJson);
+        flowTaskFormDetail(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
+                console.log(eval("that.$refs.form" + index)[0])
+                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.$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.$router.push({
+        path: '/projectFlow/detail',
+        query: this.goBackParams
+      })
     },
   }
 };
@@ -198,4 +225,13 @@
 .my-label {
   background: #E1F3D8;
 }
+
+.form-warp {
+  padding: 20px;
+  margin-bottom: 20px;
+  box-shadow:
+    inset 0 -3em 3em rgba(0, 0, 0, 0.1),
+    0 0 0 2px rgb(239, 239, 239),
+    0.3em 0.3em 1em rgba(0, 0, 0, 0.3);
+}
 </style>
diff --git a/src/views/flowable/task/myProcess/detail/index1.vue b/src/views/flowable/task/myProcess/detail/index1.vue
new file mode 100644
index 0000000..f655c72
--- /dev/null
+++ b/src/views/flowable/task/myProcess/detail/index1.vue
@@ -0,0 +1,201 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card" >
+      <div slot="header" class="clearfix">
+        <span class="el-icon-document">宸插彂浠诲姟</span>
+        <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-tab-pane>
+        <!--娴佺▼娴佽浆璁板綍-->
+        <el-tab-pane label="娴佽浆璁板綍" name="2">
+          <el-col :span="16" :offset="4" >
+            <div class="block">
+              <el-timeline>
+                <el-timeline-item
+                  v-for="(item,index ) in flowRecordList"
+                  :key="index"
+                  :icon="setIcon(item.finishTime)"
+                  :color="setColor(item.finishTime)"
+                >
+                  <p style="font-weight: 700">{{item.taskName}}</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">
+                        <template slot="label"><i class="el-icon-user"></i>鍔炵悊浜�</template>
+                        {{item.assigneeName}}
+                        <el-tag type="info" size="mini">{{item.deptName}}</el-tag>
+                      </el-descriptions-item>
+                      <el-descriptions-item v-if="item.candidate" label-class-name="my-label">
+                        <template slot="label"><i class="el-icon-user"></i>鍊欓�夊姙鐞�</template>
+                        {{item.candidate}}
+                      </el-descriptions-item>
+                      <el-descriptions-item label-class-name="my-label">
+                        <template slot="label"><i class="el-icon-date"></i>鎺ユ敹鏃堕棿</template>
+                        {{item.createTime}}
+                      </el-descriptions-item>
+                      <el-descriptions-item v-if="item.finishTime" label-class-name="my-label">
+                        <template slot="label"><i class="el-icon-date"></i>澶勭悊鏃堕棿</template>
+                        {{item.finishTime}}
+                      </el-descriptions-item>
+                      <el-descriptions-item v-if="item.duration"  label-class-name="my-label">
+                        <template slot="label"><i class="el-icon-time"></i>鑰楁椂</template>
+                        {{item.duration}}
+                      </el-descriptions-item>
+                      <el-descriptions-item v-if="item.comment" label-class-name="my-label">
+                        <template slot="label"><i class="el-icon-tickets"></i>澶勭悊鎰忚</template>
+                        {{item.comment.comment}}
+                      </el-descriptions-item>
+                    </el-descriptions>
+                  </el-card>
+                </el-timeline-item>
+              </el-timeline>
+            </div>
+          </el-col>
+        </el-tab-pane>
+        <!--娴佺▼鍥�-->
+        <el-tab-pane label="娴佺▼鍥�" name="3">
+          <bpmn-viewer :flowData="flowData" :procInsId="taskForm.procInsId"/>
+        </el-tab-pane>
+    </el-tabs>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {flowRecord} from "@/api/flowable/finished";
+import {getProcessVariables, flowXmlAndNode} from "@/api/flowable/definition";
+import BpmnViewer from '@/components/Process/viewer';
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Record",
+  components: {
+    BpmnViewer
+  },
+  props: {},
+  data() {
+    return {
+      // 妯″瀷xml鏁版嵁
+      flowData: {},
+      activeName: '1',
+      // 鏌ヨ鍙傛暟
+      queryParams: {},
+      // 閬僵灞�
+      loading: true,
+      flowRecordList: [], // 娴佺▼娴佽浆鏁版嵁
+      taskForm:{
+        multiple: false,
+        comment:"", // 鎰忚鍐呭
+        procInsId: "", // 娴佺▼瀹炰緥缂栧彿
+        instanceId: "", // 娴佺▼瀹炰緥缂栧彿
+        deployId: "",  // 娴佺▼瀹氫箟缂栧彿
+        taskId: "" ,// 娴佺▼浠诲姟缂栧彿
+        procDefId: "",  // 娴佺▼缂栧彿
+      },
+    };
+  },
+  created() {
+    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.processVariables( this.taskForm.taskId)
+    this.getFlowRecordList(this.taskForm.procInsId, this.taskForm.deployId);
+  },
+  methods: {
+    handleClick(tab, event) {
+      if (tab.name === '3'){
+        flowXmlAndNode({procInsId:this.taskForm.procInsId,deployId:this.taskForm.deployId}).then(res => {
+          this.flowData = res.data;
+        })
+      }
+    },
+    setIcon(val) {
+      if (val) {
+        return "el-icon-check";
+      } else {
+        return "el-icon-time";
+      }
+    },
+    setColor(val) {
+      if (val) {
+        return "#2bc418";
+      } else {
+        return "#b3bdbb";
+      }
+    },
+    /** 娴佺▼娴佽浆璁板綍 */
+    getFlowRecordList(procInsId, deployId) {
+      const that = this
+      const params = {procInsId: procInsId, deployId: deployId}
+      flowRecord(params).then(res => {
+        that.flowRecordList = res.data.flowList;
+      }).catch(res => {
+        this.goBack();
+      })
+    },
+    /** 鑾峰彇娴佺▼鍙橀噺鍐呭 */
+    processVariables(taskId) {
+      if (taskId) {
+        // 鎻愪氦娴佺▼鐢宠鏃跺~鍐欑殑琛ㄥ崟瀛樺叆浜嗘祦绋嬪彉閲忎腑鍚庣画浠诲姟澶勭悊鏃堕渶瑕佸睍绀�
+        getProcessVariables(taskId).then(res => {
+          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()
+    },
+  }
+};
+</script>
+<style lang="scss" scoped>
+.test-form {
+  margin: 15px auto;
+  width: 800px;
+  padding: 15px;
+}
+
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+}
+.clearfix:after {
+  clear: both
+}
+
+.box-card {
+  width: 100%;
+  margin-bottom: 20px;
+}
+
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+
+.my-label {
+  background: #E1F3D8;
+}
+</style>
diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue
index d0b86cd..b235359 100644
--- a/src/views/flowable/task/myProcess/send/index.vue
+++ b/src/views/flowable/task/myProcess/send/index.vue
@@ -10,7 +10,10 @@
         <el-tab-pane label="琛ㄥ崟淇℃伅" name="1">
           <!--鍒濆鍖栨祦绋嬪姞杞借〃鍗曚俊鎭�-->
           <el-col :span="16" :offset="4" v-if="formDataList && formDataList.length > 0">
-            <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp">
+            <div v-for="(formDataObj, index) in formDataList" :key="index" class="form-warp" style="position: relative">
+              <div v-if="!formDataObj.current" style="position: absolute; top: 2px; right: 2px">
+                <el-button type="danger" disabled>椹冲洖(鍔熻兘寮�鍙戜腑)</el-button>
+              </div>
               <div v-if="formDataObj.current" style="margin-bottom: 15px;color: #409eff">褰撳墠闃舵锛�<span style="color: red">{{formDataObj.beforeNodeName}}</span></div>
               <div v-else style="margin-bottom: 15px;color: #409eff">鍓嶇疆闃舵锛�<span style="color: #d5904b">{{formDataObj.beforeNodeName}}</span></div>
               <v-form-render  :form-data="formDataObj.formJson" :ref="'form' + index"/>
@@ -19,8 +22,8 @@
 <!--            <v-form-render :form-data="formRenderData" ref="vFormRef"/>-->
             <div style="display: flex;justify-content: center; align-items: center; margin: 20px 0">
               <el-button type="primary" @click="submitForm">纭骞舵彁浜�</el-button>
-              <el-button type="primary" @click="submitForm">鍗忓悓鍔炵悊</el-button>
-              <el-button type="primary" @click="submitForm">杞氦浠栦汉鍔炵悊</el-button>
+              <el-button type="primary" disabled @click="submitForm">鍗忓悓鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button>
+              <el-button type="primary" disabled @click="submitForm">杞氦浠栦汉鍔炵悊(鍔熻兘寮�鍙戜腑)</el-button>
 <!--              <el-button type="primary" @click="resetForm">閲� 缃�</el-button>-->
             </div>
           </el-col>
@@ -62,7 +65,8 @@
   props: {},
   data() {
     return {
-      formDataList: [],
+      goBackParams: {},
+      formDataList: [],  // 琛ㄥ崟鍒楄〃
       taskId: '',
       processName: '',
       // 妯″瀷xml鏁版嵁
@@ -96,6 +100,7 @@
     this.taskId = this.$route.query && this.$route.query.taskId;
     // 鍒濆鍖栬〃鍗�
     this.procDefId  = this.$route.query && this.$route.query.procDefId;
+    this.goBackParams  = this.$route.query && this.$route.query.goBackParams;
     // this.getNextFlowNodeByStart(this.deployId);
     this.getFlowFormData(this.taskId);
   },
@@ -112,8 +117,6 @@
       const params = {taskId: taskId}
       flowTaskForm(params).then(res => {
         this.formDataList = res.data
-        // this.formRenderDataList = res.data.map(item => item.formJson)
-        // console.log("琛ㄥ崟鏁版嵁鍒楄〃", this.formRenderDataList)
         if (this.formDataList && this.formDataList.length > 0) {
           this.$nextTick(() => {
             this.formDataList.forEach((formDataObj, index) => {
@@ -154,10 +157,10 @@
     },
     /** 杩斿洖椤甸潰 */
     goBack() {
-      // // 鍏抽棴褰撳墠鏍囩椤靛苟杩斿洖涓婁釜椤甸潰
-      // const obj = { path: "/task/process", query: { t: Date.now()} };
-      // this.$tab.closeOpenPage(obj);
-      this.$tab.closePage()
+      this.$router.push({
+        path: '/projectFlow/detail',
+        query: this.goBackParams
+      })
     },
     /** 鐢宠娴佺▼琛ㄥ崟鏁版嵁鎻愪氦 */
     submitForm() {
diff --git a/src/views/login.vue b/src/views/login.vue
index e1f97cb..1794448 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -2,11 +2,11 @@
     <div class="login">
         <div class="nav">
             <img alt="" src="../assets/images/bj.png" />
-            <div class="ml-[10px]">灏勬椽甯傞」鐩鐞嗙郴缁�</div>
+            <div class="ml-[10px]">灏勬椽鏅烘収椤圭洰绠$悊绯荤粺</div>
         </div>
         <div class="conter">
             <div class="left">
-                <div class="title">灏勬椽甯傞」鐩鐞嗙郴缁�</div>
+                <div class="title">灏勬椽鏅烘収椤圭洰绠$悊绯荤粺</div>
                 <div>
                     杩愮敤绯荤粺鐨勮鐐广�佹柟娉曞拰鐞嗚锛屽椤圭洰娑夊強鐨勫叏閮ㄥ伐浣滆繘琛屾湁鏁堝湴绠$悊
                 </div>
diff --git a/src/views/projectEngineering/abnormalProject/index.vue b/src/views/projectEngineering/abnormalProject/index.vue
index 3e8245b..4118f26 100644
--- a/src/views/projectEngineering/abnormalProject/index.vue
+++ b/src/views/projectEngineering/abnormalProject/index.vue
@@ -182,7 +182,7 @@
       v-loading="loading"
       :data="projectInfoList"
       @selection-change="handleSelectionChange"
-      height="60vh"
+      height="100%"
       sortable="custom"
       :show-overflow-tooltip="true">
       <el-table-column type="selection" width="55" align="center"/>
diff --git a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
index 7b6c23b..0dade99 100644
--- a/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
+++ b/src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
@@ -304,6 +304,7 @@
 import {approvalList} from "@/api/system/dept";
 
 export default {
+  name: 'BasicInfo',
   dicts: ['sys_funding_type', 'sys_investment_type', 'sys_project_type', 'sys_project_status', 'sys_competent_department'
     , 'sys_administrative_divisions', 'sys_centralized_management', 'sys_approval_type', 'sys_key_categories', 'sys_annual_plan'],
   components: {
@@ -428,9 +429,10 @@
         this.approvalList = res.data;
       });
     },
-    submit() {
+    submit(usedStatus) {
       this.$refs["projectForm"].validate(valid => {
         if (valid) {
+          this.projectForm.usedStatus = usedStatus;
           if (this.projectForm.id) {
             updateProject(this.projectForm).then(response => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue
index 0cb0ff6..f21bbdb 100644
--- a/src/views/projectEngineering/projectLibrary/index.vue
+++ b/src/views/projectEngineering/projectLibrary/index.vue
@@ -196,13 +196,14 @@
       v-loading="loading"
       :data="projectInfoList"
       @selection-change="handleSelectionChange"
-      height="60vh"
+      height="100%"
       sortable="custom"
       :show-overflow-tooltip="true">
       <el-table-column type="selection" width="55" align="center"/>
       <!-- 鍔ㄦ�佸垪 -->
       <el-table-column
         v-for="item in columns"
+        :key="item.id"
         v-if="item.visible"
         :prop="item.id"
         :label="item.label"
@@ -274,7 +275,7 @@
     <pagination
       v-show="total>0"
       :total="total"
-      :page.sync="queryParams.pageNum"
+      :page.sync="queryParams.currentPage"
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
@@ -338,7 +339,7 @@
       timeRange: [],
       // 鏌ヨ鍙傛暟
       queryParams: {
-        pageNum: 1,
+        currentPage: 1,
         pageSize: 10,
         projectName: null,
         projectCode: null,
@@ -532,7 +533,7 @@
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
+      this.queryParams.currentPage = 1;
       this.getList();
     },
     /** 閲嶇疆鎸夐挳鎿嶄綔 */
diff --git a/src/views/projectEngineering/projectLibrary/projectDetails.vue b/src/views/projectEngineering/projectLibrary/projectDetails.vue
index 6494775..46e1b6b 100644
--- a/src/views/projectEngineering/projectLibrary/projectDetails.vue
+++ b/src/views/projectEngineering/projectLibrary/projectDetails.vue
@@ -1,5 +1,5 @@
 <template>
-  <el-card class="card-container" >
+  <el-card class="card-container">
     <div class="flex-container mb-4">
       <el-tabs v-model="currentTab" @tab-click="handleClick" v-show="isShow">
         <el-tab-pane
@@ -24,7 +24,16 @@
       class="full-width custom-height"
     />
     <div v-if="!disabled" class="button-container">
-      <el-button class="save-button" type="primary" @click="submit">淇濆瓨</el-button>
+      <el-button
+        v-if="componentName.name == 'BasicInfo'"
+        class="save-button"
+        type="primary"
+        @click="submit(0)"
+        >鑽夌</el-button
+      >
+      <el-button class="save-button" type="primary" @click="submit(1)"
+        >淇濆瓨</el-button
+      >
       <el-button class="reset-button" @click="reset">閲嶇疆</el-button>
       <!-- <el-button v-else class="cancel-button" @click="cancel">鍙栨秷</el-button> -->
     </div>
@@ -32,53 +41,53 @@
 </template>
 
 <script>
-import BasicInfo from '@/views/projectEngineering/projectLibrary/component/BasicInfo';
-import InvestInfo from '@/views/projectEngineering/projectLibrary/component/InvestInfo';
-import InvestmentFunds from '@/views/projectEngineering/projectLibrary/component/investmentFunds';
-import LegalPerson from '@/views/projectEngineering/projectLibrary/component/legalPerson';
-import PolicyInfo from '@/views/projectEngineering/projectLibrary/component/PolicyInfo';
-import DocumentsInfo from '@/views/projectEngineering/projectLibrary/component/DocumentsInfo';
+import BasicInfo from "@/views/projectEngineering/projectLibrary/component/BasicInfo";
+import InvestInfo from "@/views/projectEngineering/projectLibrary/component/InvestInfo";
+import InvestmentFunds from "@/views/projectEngineering/projectLibrary/component/investmentFunds";
+import LegalPerson from "@/views/projectEngineering/projectLibrary/component/legalPerson";
+import PolicyInfo from "@/views/projectEngineering/projectLibrary/component/PolicyInfo";
+import DocumentsInfo from "@/views/projectEngineering/projectLibrary/component/DocumentsInfo";
 
 export default {
-  name: 'ProjectDetails',
+  name: "ProjectDetails",
   data() {
     return {
       isShow: false,
-      currentTab: '椤圭洰绠$悊鍩虹淇℃伅',
+      currentTab: "椤圭洰绠$悊鍩虹淇℃伅",
       disabled: false,
-      projectForm:{},
+      projectForm: {},
       componentName: BasicInfo,
       TABS_DATA: [
         {
-          label: '椤圭洰绠$悊鍩虹淇℃伅',
-          value: '椤圭洰绠$悊鍩虹淇℃伅',
-          componentName: BasicInfo
+          label: "椤圭洰绠$悊鍩虹淇℃伅",
+          value: "椤圭洰绠$悊鍩虹淇℃伅",
+          componentName: BasicInfo,
         },
         {
-          label: '鎶曡祫绠$悊鍩虹淇℃伅',
-          value: '鎶曡祫绠$悊鍩虹淇℃伅',
-          componentName: InvestInfo
+          label: "鎶曡祫绠$悊鍩虹淇℃伅",
+          value: "鎶曡祫绠$悊鍩虹淇℃伅",
+          componentName: InvestInfo,
         },
         {
-          label: '椤圭洰鎶曡祫鍙婅祫閲戞潵婧�',
-          value: '椤圭洰鎶曡祫鍙婅祫閲戞潵婧�',
-          componentName: InvestmentFunds
+          label: "椤圭洰鎶曡祫鍙婅祫閲戞潵婧�",
+          value: "椤圭洰鎶曡祫鍙婅祫閲戞潵婧�",
+          componentName: InvestmentFunds,
         },
         {
-          label: '椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅',
-          value: '椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅',
-          componentName: LegalPerson
+          label: "椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅",
+          value: "椤圭洰(娉曚汉)鍗曚綅鐧昏淇℃伅",
+          componentName: LegalPerson,
         },
         {
-          label: '鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌',
-          value: '鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌',
-          componentName: PolicyInfo
+          label: "鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌",
+          value: "鎶曡祫椤圭洰浜т笟鏀跨瓥绗﹀悎鎯呭喌",
+          componentName: PolicyInfo,
         },
         {
-          label: '鐩稿叧鏂囦功',
-          value: '鐩稿叧鏂囦功',
-          componentName: DocumentsInfo
-        }
+          label: "鐩稿叧鏂囦功",
+          value: "鐩稿叧鏂囦功",
+          componentName: DocumentsInfo,
+        },
       ],
       childRef: null,
     };
@@ -88,29 +97,29 @@
       this.isShow = newValue;
     },
     handleClick(tabTarget) {
-        this.componentName = this.TABS_DATA[tabTarget.index].componentName;
+      this.componentName = this.TABS_DATA[tabTarget.index].componentName;
+      
     },
     changeTable(index) {
       this.componentName = this.TABS_DATA[index].componentName;
       this.currentTab = this.TABS_DATA[index].value;
     },
-    submit() {
-      this.$refs.childRef.submit();
+    submit(usedStatus) {
+      this.$refs.childRef.submit(usedStatus);
     },
     reset() {
       this.$refs.childRef.reset();
     },
   },
   mounted() {
-    if(this.$route.query.disabled){
-      this.disabled = true
+    if (this.$route.query.disabled) {
+      this.disabled = true;
     }
-  }
+  },
 };
 </script>
 
 <style scoped>
-
 ::v-deep .el-tabs__nav-wrap::after {
   background-color: rgba(0, 0, 0, 0) !important;
 }
diff --git a/src/views/projectProcess/detail/index.vue b/src/views/projectProcess/detail/index.vue
index 31d5d71..37167c0 100644
--- a/src/views/projectProcess/detail/index.vue
+++ b/src/views/projectProcess/detail/index.vue
@@ -1,103 +1,104 @@
 <template>
-  <div class="app-container" v-loading.fullscreen.lock="loading">
-    <div class="top">
-      <div class="project-title">
-        <h2>椤圭洰鍚嶇О锛歿{detailData.projectName}}</h2>
-      </div>
-      <div class="project-info">
-        <div class="project-info-item"></div>
-        <div class="project-info-item">椤圭洰浠g爜锛歿{detailData.projectCode}}</div>
-        <div class="project-info-item">
-          <div style="color: black">
-            <div>涓璧勯噾</div>
-            <div>甯傞噸鐐归」鐩�</div>
+  <div class="app-container">
+    <div v-loading="loading">
+      <div class="top">
+        <div class="project-title">
+          <h2>椤圭洰鍚嶇О锛歿{detailData.projectName}}</h2>
+        </div>
+        <div class="project-info">
+          <div class="project-info-item"></div>
+          <div class="project-info-item">椤圭洰浠g爜锛歿{detailData.projectCode}}</div>
+          <div class="project-info-item">
+            <div style="color: black">
+              <div>涓璧勯噾</div>
+              <div>甯傞噸鐐归」鐩�</div>
+            </div>
           </div>
         </div>
       </div>
-    </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(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>
-      <div @click="changeTab(6, 'overtime')" :class="{'item-warm': true, 'overtime-color': true, 'active': 6 === selectTabId}">瓒呮椂浜嬮」锛�0锛�</div>
-      <div @click="changeTab(7, 'willOvertime')" :class="{'item-warm': true, 'willOvertime-color': true, 'active': 7 === selectTabId}">涓存湡浜嬮」锛�0锛�</div>
-      <div @click="changeTab(8, 'urge')" :class="{'item-warm': true, 'urge-color': true, 'active': 8 === selectTabId}">鐫e姙浜嬮」锛�0锛�</div>
-    </div>
-    <div style="display: flex;justify-content: center;align-items: center;margin-top: 20px">
-      <el-form :inline="true" :model="queryParams" class="demo-form-inline">
-        <el-form-item label="浠诲姟鍚嶇О">
-          <el-input v-model="queryParams.taskName" placeholder="浠诲姟鍚嶇О"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" @click="getList">鏌ヨ</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <div class="table">
-      <el-table
-        v-loading="tableLoading"
-        :data="taskList"
-        border
-        style="width: 100%">
-        <el-table-column
-          prop="taskName"
-          label="浠诲姟鍚嶇О"
-         >
-        </el-table-column>
-        <el-table-column
-          prop="processName"
-          label="娴佺▼鍚嶇О"
-         >
-        </el-table-column>
-        <el-table-column
-          prop="promoterName"
-          label="鍙戣捣浜�"
-        >
-        </el-table-column>
-        <el-table-column
-          prop="promoterUnitName"
-          label="鍙戣捣鍗曚綅"
-        >
-        </el-table-column>
-        <el-table-column
-          prop="handlerUnitName"
-          label="澶勭悊鍗曚綅"
-        >
-        </el-table-column>
-        <el-table-column
-          prop="handlerName"
-          label="瀹為檯澶勭悊浜�"
-        >
-        </el-table-column>
-        <el-table-column
-          prop="taskStatus"
-          label="浠诲姟鐘舵��"
-        >
-        </el-table-column>
-        <el-table-column
-          fixed="right"
-          label="鎿嶄綔"
-          width="100">
-          <template slot-scope="scope">
-            <el-button v-if="scope.row.taskStatus !== '鏈紑濮�'" @click="goToProcessDetail(scope.row)" type="text" size="small">鏌ョ湅</el-button>
-            <el-button v-if="showHandle(scope.row)" @click="goToDo(scope.row)" type="text" size="small">鍔炵悊</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <div class="table" style="margin-top: 15px">
-      <el-pagination
-        v-if="total > queryParams.pageSize"
-        @size-change="getList"
-        @current-change="getList"
-        :current-page.sync="queryParams.currentPage"
-        :page-sizes="[5, 10, 20]"
-        :page-size="100"
-        layout="sizes, prev, pager, next"
-        :total="total">
-      </el-pagination>
+      <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(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>
+        <div @click="changeTab(6, 'overtime')" :class="{'item-warm': true, 'overtime-color': true, 'active': 6 === selectTabId}">瓒呮椂浜嬮」锛�0锛�</div>
+        <div @click="changeTab(7, 'willOvertime')" :class="{'item-warm': true, 'willOvertime-color': true, 'active': 7 === selectTabId}">涓存湡浜嬮」锛�0锛�</div>
+        <div @click="changeTab(8, 'urge')" :class="{'item-warm': true, 'urge-color': true, 'active': 8 === selectTabId}">鐫e姙浜嬮」锛�0锛�</div>
+      </div>
+      <div style="display: flex;justify-content: center;align-items: center;margin-top: 20px">
+        <el-form :inline="true" :model="queryParams" class="demo-form-inline">
+          <el-form-item label="浠诲姟鍚嶇О">
+            <el-input v-model="queryParams.taskName" placeholder="浠诲姟鍚嶇О"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="search">鏌ヨ</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="table">
+        <el-table
+          v-loading="tableLoading"
+          :data="taskList"
+          border
+          style="width: 100%">
+          <el-table-column
+            prop="taskName"
+            label="浠诲姟鍚嶇О"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="processName"
+            label="娴佺▼鍚嶇О"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="promoterUnitName"
+            label="鍙戣捣鍗曚綅"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="promoterName"
+            label="鍙戣捣浜�"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="handlerUnitName"
+            label="澶勭悊鍗曚綅"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="handlerName"
+            label="瀹為檯澶勭悊浜�"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="taskStatus"
+            label="浠诲姟鐘舵��"
+          >
+          </el-table-column>
+          <el-table-column
+            fixed="right"
+            label="鎿嶄綔"
+            width="100">
+            <template slot-scope="scope">
+              <el-button v-if="scope.row.taskStatus !== '鏈紑濮�'" @click="goToProcessDetail(scope.row)" type="text" size="small">鏌ョ湅</el-button>
+              <el-button v-if="showHandle(scope.row)" @click="goToDo(scope.row)" type="text" size="small">鍔炵悊</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="table" style="margin-top: 15px">
+        <el-pagination
+          @size-change="sizeChange"
+          @current-change="pageChange"
+          :current-page.sync="queryParams.currentPage"
+          :page-sizes="[5, 10, 20]"
+          :page-size="100"
+          layout="sizes, prev, pager, next"
+          :total="total">
+        </el-pagination>
+      </div>
     </div>
   </div>
 </template>
@@ -142,7 +143,9 @@
         if (row.handlerType === "USER") {
           return this.$store.state.user.id === row.handlerId
         } else if (row.handlerType === "DEPT") {
-          return this.$store.state.user.id === row.handlerId
+          console.log(this.$store.state.user.deptId, "閮ㄩ棬id", row.handlerUnitId)
+          return this.$store.state.user.deptId === row.handlerUnitId
+          // return this.$store.state.user.name === '甯傚彂灞曟敼闈╁' || this.$store.state.user.name === '甯備綇寤哄眬'
         } else if (row.handlerType === "ROLE") {
           return this.$auth.hasRole(row.handlerUnitName)
         }
@@ -151,47 +154,46 @@
       }
     },
     goToDo(row) {
-      // TODO 杩欓噷鐨勫垽鏂潯浠舵牴鎹疄闄呮儏鍐佃缃�
-      // let params = {
-      //   processDefId: row.processDefId,
-      //   taskId: row.taskId
-      // }
-      // getTaskIsAuditing(params).then(res => {
-      //
-      // })
-      // if (this.showHandle(row)) {
-        console.log("zhe")
+      // 鏌ヨ璇ヤ换鍔℃槸鍚﹂厤缃簡闇�瑕佸鎵�
+      let params = {
+        processDefId: row.processDefId,
+        taskId: row.taskId
+      }
+      getTaskIsAuditing(params).then(res => {
         this.$router.push({
           path: '/flowable/task/myProcess/send/index',
           query: {
             deployId: row.deployId,
             procDefId: row.processDefId,
             processName: row.taskName,
-            taskId: row.taskId
+            taskId: row.taskId,
+            showAuditing: res.data,
+            goBackParams: this.queryParams
           }
         })
-      // } else {
-      //   this.$router.push({
-      //     path: '/flowable/task/todo/detail/index',
-      //     query: {
-      //       taskName: row.taskName,
-      //       startUser: row.promoterName,
-      //       deployId: row.deployId,
-      //       taskId: row.taskId,
-      //       procInsId: row.processInsId,
-      //       executionId: row.executionId
-      //     }
-      //   })
-      // }
+      })
     },
     goToProcessDetail(row) {
       this.$router.push({ path: '/flowable/task/myProcess/detail/index',
         query: {
           procInsId: row.processInsId,
           deployId: row.deployId,
-          taskId: row.taskId
+          taskId: row.taskId,
+          goBackParams: this.queryParams
         }})
     },
+    search() {
+      this.queryParams.currentPage = 1;
+      this.getList()
+    },
+    sizeChange(pageSize) {
+      this.queryParams.pageSize = pageSize;
+      this.getList()
+    },
+    pageChange(pageNum) {
+      this.queryParams.currentPage = pageNum;
+      this.getList()
+    },
     getList() {
       // 鑾峰彇浠诲姟鍒楄〃
       getProjectProcessDetailTaskList(this.queryParams).then(res => {
diff --git a/src/views/projectProcess/index.vue b/src/views/projectProcess/index.vue
index 675c7bb..969ae34 100644
--- a/src/views/projectProcess/index.vue
+++ b/src/views/projectProcess/index.vue
@@ -185,7 +185,7 @@
       v-loading="loading"
       :data="projectInfoList"
       @selection-change="handleSelectionChange"
-      height="60vh"
+      height="100%"
       sortable="custom"
       :show-overflow-tooltip="true">
       <el-table-column type="selection" width="55" align="center"/>
diff --git a/vue.config.js b/vue.config.js
index 76eafd1..8b2ced5 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -7,7 +7,7 @@
 
 const CompressionPlugin = require('compression-webpack-plugin')
 
-const name = process.env.VUE_APP_TITLE || '灏勬椽椤圭洰绠$悊绯荤粺' // 缃戦〉鏍囬
+const name = process.env.VUE_APP_TITLE || '灏勬椽鏅烘収椤圭洰绠$悊绯荤粺' // 缃戦〉鏍囬
 
 const port = process.env.port || process.env.npm_config_port || 80 // 绔彛
 

--
Gitblit v1.8.0