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 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 181 insertions(+), 46 deletions(-)

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