From 673ed0ce6809aecc7b1bdb1c8bb5f6018047105f Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 05 十二月 2024 17:09:09 +0800
Subject: [PATCH] 分角色展示项目计划,实现不同角色的功能
---
src/views/projectManage/progress/progressRecord.vue | 227 +++++++++++++++++++++++++++++++++++++++++++++-----------
src/views/projectManage/plan/planInfoCheck.vue | 2
src/api/projectManage/progress/index.js | 8 ++
3 files changed, 190 insertions(+), 47 deletions(-)
diff --git a/src/api/projectManage/progress/index.js b/src/api/projectManage/progress/index.js
index 63e83f8..c531f27 100644
--- a/src/api/projectManage/progress/index.js
+++ b/src/api/projectManage/progress/index.js
@@ -75,5 +75,13 @@
})
}
+export function reply(data) {
+ return request({
+ url: '/api/project-plan-examine-record/reply',
+ method: 'post',
+ data: data
+ })
+}
+
diff --git a/src/views/projectManage/plan/planInfoCheck.vue b/src/views/projectManage/plan/planInfoCheck.vue
index 04cd7f1..6fcd2cd 100644
--- a/src/views/projectManage/plan/planInfoCheck.vue
+++ b/src/views/projectManage/plan/planInfoCheck.vue
@@ -17,7 +17,7 @@
</el-table-column>
<el-table-column prop="taskName" label="浜嬮」鍚嶇О" width="500" align="center">
<template #default="scope">
- <el-input type="textarea" v-model="scope.row.title" placeholder="璇疯緭鍏�" rows="3" readonly />
+ <el-input type="textarea" v-model="scope.row.title" placeholder="璇疯緭鍏�" rows="3" :readonly="scope.row.planStatus !== 1" />
</template>
</el-table-column>
<el-table-column prop="startTime" label="璁″垝寮�濮嬫椂闂�" width="160" align="center" >
diff --git a/src/views/projectManage/progress/progressRecord.vue b/src/views/projectManage/progress/progressRecord.vue
index c07558c..a7fafb1 100644
--- a/src/views/projectManage/progress/progressRecord.vue
+++ b/src/views/projectManage/progress/progressRecord.vue
@@ -24,16 +24,22 @@
<el-table-column prop="title" label="浜嬮」鍚嶇О" align="center" />
<el-table-column prop="progressStatus" label="杩涘害鎯呭喌" align="center">
<template slot-scope="scope">
- {{ scope.row.progressStatus === 0 ? '鏈畬鎴�' : scope.row.progressStatus === 1 ? '寰呭鏍�' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : '宸插畬鎴�'}}
+ {{ scope.row.progressStatus === 3 ? '宸查�氳繃' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : scope.row.progressStatus === 1 ?'鏈鏍�' : '鏈紑濮�'}}
</template>
</el-table-column>
<el-table-column prop="startTime" label="璁″垝寮�濮嬫椂闂�" align="center" />
<el-table-column prop="endTime" label="璁″垝瀹屾垚鏃堕棿" align="center" />
<el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
- <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">瀹℃牳</el-button>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">瀹℃牳</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2 || scope.row.progressStatus === 3" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
+ </div>
</template>
</el-table-column>
</el-table>
@@ -53,16 +59,21 @@
<el-table-column prop="title" label="浜嬮」鍚嶇О" align="center" />
<el-table-column prop="progressStatus" label="杩涘害鎯呭喌" align="center">
<template slot-scope="scope">
- {{ scope.row.progressStatus === 0 ? '鏈畬鎴�' : scope.row.progressStatus === 1 ? '寰呭鏍�' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : '宸插畬鎴�'}}
+ {{ scope.row.progressStatus === 3 ? '宸查�氳繃' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : scope.row.progressStatus === 1 ?'鏈鏍�' : '鏈紑濮�'}}
</template>
</el-table-column>
<el-table-column prop="startTime" label="璁″垝寮�濮嬫椂闂�" align="center" />
<el-table-column prop="endTime" label="璁″垝瀹屾垚鏃堕棿" align="center" />
<el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
- <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">瀹℃牳</el-button>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">瀹℃牳</el-button>
+ </div>
</template>
</el-table-column>
</el-table>
@@ -82,16 +93,21 @@
<el-table-column prop="title" label="浜嬮」鍚嶇О" align="center" />
<el-table-column prop="progressStatus" label="杩涘害鎯呭喌" align="center">
<template slot-scope="scope">
- {{ scope.row.progressStatus === 0 ? '鏈畬鎴�' : scope.row.progressStatus === 1 ? '寰呭鏍�' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : '宸插畬鎴�'}}
+ {{ scope.row.progressStatus === 3 ? '宸查�氳繃' : scope.row.progressStatus === 2 ? '宸查┏鍥�' : scope.row.progressStatus === 1 ?'鏈鏍�' : '鏈紑濮�'}}
</template>
</el-table-column>
<el-table-column prop="startTime" label="璁″垝寮�濮嬫椂闂�" align="center" />
<el-table-column prop="endTime" label="璁″垝瀹屾垚鏃堕棿" align="center" />
<el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
- <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
- <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">瀹℃牳</el-button>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button>
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button>
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">瀹℃牳</el-button>
+ </div>
</template>
</el-table-column>
</el-table>
@@ -119,7 +135,7 @@
</div>
</el-row>
- <el-dialog :title=" checkFlag ? '杩涘害鏌ョ湅' : '杩涘害涓婃姤' " :visible.sync="dialogFormVisible" custom-class="custom-dialog" :close-on-click-modal="false" @close="handleCancel">
+ <el-dialog :title=" dialogFlag === 1 ? '杩涘害鏌ョ湅' : '杩涘害涓婃姤' " :visible.sync="dialogFormVisible" custom-class="custom-dialog" :close-on-click-modal="false" @close="handleCancel">
<el-form :model="progressReportData">
<el-form-item label="鎶ュ憡鏈燂細" :label-width="formLabelWidth">
<el-input :value="progressReportData.planTime + (progressReportData.planTimeFlag === 0 ? '鏈堝害' : progressReportData.planTimeFlag === 1 ? '瀛e害' : '骞村害')" readonly />
@@ -133,12 +149,28 @@
<el-date-picker v-model="progressReportData.endTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" readonly/>
</el-form-item>
<el-form-item label="瀹為檯瀹屾垚鏃堕棿锛�" :label-width="formLabelWidth">
- <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/>
+ <el-date-picker
+ v-model="progressReportData.actualStartTime"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ size="small"
+ style="width: 130px"
+ :readonly="projectInfoData.managerFlag || dialogFlag !== 0"/>
鑷�
- <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/>
+ <el-date-picker
+ v-model="progressReportData.actualEndTime"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ size="small"
+ style="width: 130px"
+ :readonly="projectInfoData.managerFlag || dialogFlag !== 0"/>
</el-form-item>
<el-form-item label="杩涘害鎯呭喌锛�" :label-width="formLabelWidth">
- <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag && projectInfoData.managerFlag" />
+ <el-input
+ type="textarea"
+ v-model="progressReportData.progressStatusStr"
+ placeholder="璇疯緭鍏�" rows="3"
+ :readonly="projectInfoData.managerFlag || dialogFlag !== 0" />
</el-form-item>
<el-form-item label="宸ョ▼杩涘害闄勪欢锛�" :label-width="formLabelWidth">
<file-upload v-model="progressReportData.fileList"
@@ -146,45 +178,119 @@
:isShowTip="false"/>
</el-form-item>
<el-form-item label="鎴鏈姤鍛婂畬鎴愭姇璧勶細" :label-width="formLabelWidth">
- <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag && projectInfoData.managerFlag" />
+ <el-input
+ v-model="progressReportData.actualInvest"
+ type="number"
+ :readonly="projectInfoData.managerFlag || dialogFlag !== 0" />
</el-form-item>
<el-form-item label="涓婄骇瀹℃牳锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.departmentExamine === 0 ? '鍚屾剰' : progressReportData.departmentExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly />
- <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentExamine" placeholder="璇烽�夋嫨" size="small" clearable>
- <el-option label="鍚屾剰" :value="0"></el-option>
- <el-option label="椹冲洖" :value="1"></el-option>
- <el-option label="璇烽�夋嫨" :value="null"></el-option>
- </el-select>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input
+ :value="progressReportData.departmentExamine === 0 ? '鍚屾剰' : progressReportData.departmentExamine === 1 ? '椹冲洖' : '鏈鏍�'"
+ readonly />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-select
+ v-model="progressReportData.departmentExamine"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ :disabled="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
+ clearable>
+ <el-option label="鍚屾剰" :value="0"></el-option>
+ <el-option label="椹冲洖" :value="1"></el-option>
+ <el-option label="璇烽�夋嫨" :value="null"></el-option>
+ </el-select>
+ </div>
</el-form-item>
<el-form-item label="涓婄骇鎵瑰锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" readonly />
- <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" />
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input v-model="progressReportData.departmentApproval" readonly />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-input
+ v-model="progressReportData.departmentApproval"
+ :readonly="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"/>
+ </div>
</el-form-item>
<el-form-item label="涓婄骇鎵瑰鍥炲锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="璇疯緭鍏�" rows="3" />
- <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" />
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input
+ type="textarea"
+ v-model="progressReportData.departmentApprovalReply"
+ :readonly="dialogFlag === 0 || progressReportData.progressStatusInt === 1"
+ placeholder="璇疯緭鍏�"
+ rows="3" />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-input
+ type="textarea"
+ v-model="progressReportData.departmentApprovalReply"
+ placeholder="璇疯緭鍏�"
+ rows="3"
+ readonly/>
+ </div>
</el-form-item>
<el-form-item label="涓荤閮ㄩ棬瀹℃牳锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.manageExamine === 0 ? '鍚屾剰' : progressReportData.manageExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly />
- <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.manageExamine" placeholder="璇烽�夋嫨" size="small" clearable>
- <el-option label="璇烽�夋嫨" :value="null"></el-option>
- <el-option label="鍚屾剰" :value="0"></el-option>
- <el-option label="椹冲洖" :value="1"></el-option>
- </el-select>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input
+ :value="progressReportData.manageExamine === 0 ? '鍚屾剰' : progressReportData.manageExamine === 1 ? '椹冲洖' : '鏈鏍�'"
+ readonly />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-select
+ v-model="progressReportData.manageExamine"
+ placeholder="璇烽�夋嫨"
+ size="small"
+ :disabled="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
+ clearable>
+ <el-option label="璇烽�夋嫨" :value="null"></el-option>
+ <el-option label="鍚屾剰" :value="0"></el-option>
+ <el-option label="椹冲洖" :value="1"></el-option>
+ </el-select>
+ </div>
</el-form-item>
- <el-form-item label="涓荤閮ㄩ棬瀹℃牳鎵瑰锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.manageApproval" readonly />
- <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.manageApproval" />
+ <el-form-item label="涓荤閮ㄩ棬鎵瑰锛�" :label-width="formLabelWidth">
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input
+ v-model="progressReportData.manageApproval"
+ readonly />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-input
+ :readonly="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
+ v-model="progressReportData.manageApproval" />
+ </div>
</el-form-item>
<el-form-item label="涓荤閮ㄩ棬鎵瑰鍥炲锛�" :label-width="formLabelWidth">
- <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="璇疯緭鍏�" rows="3" />
- <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" />
+ <div v-if="!projectInfoData.managerFlag">
+ <el-input
+ type="textarea"
+ v-model="progressReportData.manageApprovalReply"
+ :readonly="dialogFlag === 0 || progressReportData.progressStatusInt === 1"
+ placeholder="璇疯緭鍏�"
+ rows="3" />
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-input
+ type="textarea"
+ v-model="progressReportData.manageApprovalReply"
+ placeholder="璇疯緭鍏�"
+ rows="3"
+ readonly/>
+ </div>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag && !projectInfoData.managerFlag">涓� 鎶�</el-button>
- <el-button type="primary" @click="handleExamine" v-if="projectInfoData.managerFlag">瀹� 鎵�</el-button>
- <el-button @click="handleCancel">鍙� 娑�</el-button>
+ <div v-if="!projectInfoData.managerFlag">
+ <el-button type="primary" @click="handleRecordSubmit" v-if="dialogFlag === 0">涓� 鎶�</el-button>
+ <el-button @click="handleReply" v-if="isShowReplyBtn && (progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3)">鍥� 澶�</el-button>
+
+ <el-button @click="handleCancel">鍙� 娑�</el-button>
+ </div>
+ <div v-if="projectInfoData.managerFlag">
+ <el-button type="primary" @click="handleExamine" v-if="dialogFlag === 2">瀹� 鎵�</el-button>
+ <el-button @click="handleCancel">鍙� 娑�</el-button>
+ </div>
</div>
</el-dialog>
</el-card>
@@ -194,7 +300,7 @@
</template>
<script>
-import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine } from "@/api/projectManage/progress/index";
+import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine, reply } from "@/api/projectManage/progress/index";
import progressRecord from "./progressRecord.vue";
export default {
@@ -215,7 +321,9 @@
dialogFormVisible: false,
// 鏌ョ湅鏄剧ず
- checkFlag: false,
+ dialogFlag: 0,// 涓婃姤銆侀噸鏂颁笂鎶ワ細0锛屾煡鐪嬶細1锛屽鏍革細2
+ // 鏄惁灞曠ず鍥炲鎸夐挳
+ isShowReplyBtn: true,
progressReportData: {},
formLabelWidth: '150px',
@@ -257,6 +365,16 @@
},
// 杩涘害涓婃姤
handleProgressReport(row) {
+ this.dialogFlag = 0;
+ this.dialogFormVisible = true;
+ getProgressReport(row.id).then(res => {
+ this.progressReportData = res.data;
+ })
+ },
+ // 閲嶆柊涓婃姤
+ handleReportAgain(row) {
+ this.dialogFlag = 0;
+ this.isShowReplyBtn = false;
this.dialogFormVisible = true;
getProgressReport(row.id).then(res => {
this.progressReportData = res.data;
@@ -270,6 +388,14 @@
this.search();
})
},
+ // 鍥炲
+ handleReply() {
+ reply(this.progressReportData).then(res => {
+ // this.dialogFormVisible = false;
+ this.$message.success('鍥炲鎴愬姛');
+ this.search();
+ })
+ },
// 瀹℃壒
handleExamine() {
examine(this.progressReportData).then(res => {
@@ -278,10 +404,18 @@
this.search();
})
},
- // 鏌ョ湅杩涘害
+ // 鎵撳紑鏌ョ湅杩涘害寮圭獥
handleCheckProgress(row) {
this.dialogFormVisible = true;
- this.checkFlag = true;
+ this.dialogFlag = 1;
+ getProgressReport(row.id).then(res => {
+ this.progressReportData = res.data;
+ })
+ },
+ // 鎵撳紑瀹℃牳寮圭獥
+ handleOpenExamine(row) {
+ this.dialogFormVisible = true;
+ this.dialogFlag = 2;
getProgressReport(row.id).then(res => {
this.progressReportData = res.data;
})
@@ -289,7 +423,8 @@
// 鍏抽棴寮圭獥
handleCancel() {
this.dialogFormVisible = false;
- this.checkFlag = false;
+ this.isShowReplyBtn = true;
+ this.dialogFlag = 0;
},
// 淇濆瓨
handleSave() {
--
Gitblit v1.8.0