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