From 6ae0fcef149ddbe614746023a58a3885b3ac4bde Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期二, 25 三月 2025 11:31:04 +0800 Subject: [PATCH] Merge branch 'dev' --- src/views/projectManage/progress/progressRecord.vue | 373 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 302 insertions(+), 71 deletions(-) diff --git a/src/views/projectManage/progress/progressRecord.vue b/src/views/projectManage/progress/progressRecord.vue index 566a7e9..0cdb3a4 100644 --- a/src/views/projectManage/progress/progressRecord.vue +++ b/src/views/projectManage/progress/progressRecord.vue @@ -24,15 +24,44 @@ <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 type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> - <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + <div v-if="!projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 0" + @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 2" + @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button> + <el-button + type="text" + size="medium" + icon="el-icon-view" + v-if="scope.row.progressStatus !== 0" + @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + </div> + <div v-if="projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 1" + @click="handleOpenExamine(scope.row)">瀹℃牳</el-button> + <el-button + type="text" + size="medium" + icon="el-icon-view" + v-if="scope.row.progressStatus === 2 || scope.row.progressStatus === 3" + @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + </div> </template> </el-table-column> </el-table> @@ -52,15 +81,38 @@ <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 type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> - <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + <div v-if="!projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 0" + @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 2" + @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button> + <el-button + type="text" + size="medium" + icon="el-icon-view" + v-if="scope.row.progressStatus !== 0" + @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + </div> + <div v-if="projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 1" + @click="handleOpenExamine(scope.row)">瀹℃牳</el-button> + </div> </template> </el-table-column> </el-table> @@ -80,15 +132,38 @@ <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 type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> - <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + <div v-if="!projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 0" + @click="handleProgressReport(scope.row)">杩涘害涓婃姤</el-button> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 2" + @click="handleReportAgain(scope.row)">閲嶆柊涓婃姤</el-button> + <el-button + type="text" + size="medium" + icon="el-icon-view" + v-if="scope.row.progressStatus !== 0" + @click="handleCheckProgress(scope.row)">鏌ョ湅</el-button> + </div> + <div v-if="projectInfoData.managerFlag"> + <el-button + type="text" + size="medium" + v-if="scope.row.progressStatus === 1" + @click="handleOpenExamine(scope.row)">瀹℃牳</el-button> + </div> </template> </el-table-column> </el-table> @@ -116,57 +191,175 @@ </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 /> - </el-form-item> - <el-form-item label="璁″垝浜嬮」锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.title" readonly /> - </el-form-item> - <el-form-item label="璁″垝鏃堕棿锛�" :label-width="formLabelWidth"> - <el-date-picker v-model="progressReportData.startTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" readonly/> - 鑷� - <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"/> - 鑷� - <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 130px" :readonly="checkFlag"/> - </el-form-item> - <el-form-item label="杩涘害鎯呭喌锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> - </el-form-item> - <el-form-item prop="fileList" label="宸ョ▼杩涘害闄勪欢锛�" :label-width="formLabelWidth"> - <file-upload v-model="progressReportData.fileList" - :fileType="accept" - :isShowTip="false"/> - </el-form-item> - <el-form-item label="鎴鏈姤鍛婂畬鎴愭姇璧勶細" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag" /> - </el-form-item> - <el-form-item label="涓婄骇瀹℃牳锛�" :label-width="formLabelWidth"> - <el-input :value="progressReportData.departmentExamine === 0 ? '鍚屾剰' : progressReportData.departmentExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly /> - </el-form-item> - <el-form-item label="涓婄骇鎵瑰锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.departmentApproval" readonly /> - </el-form-item> - <el-form-item label="涓婄骇鎵瑰鍥炲锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> - </el-form-item> - <el-form-item label="涓荤閮ㄩ棬瀹℃牳锛�" :label-width="formLabelWidth"> - <el-input :value="progressReportData.manageExamine === 0 ? '鍚屾剰' : progressReportData.manageExamine === 1 ? '椹冲洖' : '鏈鏍�'" readonly /> - </el-form-item> - <el-form-item label="涓荤閮ㄩ棬瀹℃牳鎵瑰锛�" :label-width="formLabelWidth"> - <el-input v-model="progressReportData.manageApproval" readonly /> - </el-form-item> - <el-form-item label="涓荤閮ㄩ棬鎵瑰鍥炲锛�" :label-width="formLabelWidth"> - <el-input type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="璇疯緭鍏�" rows="3" :readonly="checkFlag" /> - </el-form-item> + <el-row> + <el-col :span="12"> + <el-form-item label="鎶ュ憡鏈燂細" :label-width="formLabelWidth"> + <el-input :value="progressReportData.planTime + (progressReportData.planTimeFlag === 0 ? '鏈堝害' : progressReportData.planTimeFlag === 1 ? '瀛e害' : '骞村害')" readonly /> + </el-form-item> + <el-form-item label="璁″垝浜嬮」锛�" :label-width="formLabelWidth"> + <el-input v-model="progressReportData.title" readonly /> + </el-form-item> + <el-form-item label="璁″垝鏃堕棿锛�" :label-width="formLabelWidth"> + <el-date-picker v-model="progressReportData.startTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="medium" style="width: 130px" readonly/> + 鑷� + <el-date-picker v-model="progressReportData.endTime" type="date" placeholder="閫夋嫨鏃ユ湡" size="medium" style="width: 130px" readonly/> + </el-form-item> + <el-form-item label="瀹為檯瀹屾垚鏃堕棿锛�" :label-width="formLabelWidth"> + <el-date-picker + v-model="progressReportData.actualStartTime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + value-format="yyyy-MM-dd HH:mm:ss" + size="medium" + style="width: 130px" + :readonly="projectInfoData.managerFlag || dialogFlag !== 0"/> + 鑷� + <el-date-picker + v-model="progressReportData.actualEndTime" + type="date" + placeholder="閫夋嫨鏃ユ湡" + value-format="yyyy-MM-dd HH:mm:ss" + size="medium" + 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.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" + :fileType="accept" + :isShowTip="false"/> + </el-form-item> + <el-form-item label="鎴鏈姤鍛婂畬鎴愭姇璧勶細" :label-width="formLabelWidth"> + <el-input + v-model="progressReportData.actualInvest" + type="number" + :readonly="projectInfoData.managerFlag || dialogFlag !== 0" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="涓婄骇瀹℃牳锛�" :label-width="formLabelWidth"> + <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="medium" + :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"> + <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"> + <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"> + <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="medium" + :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"> + <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"> + <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-col> + </el-row> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag">涓� 鎶�</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> @@ -176,11 +369,11 @@ </template> <script> -import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm } 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 { - name: "ProgressRecord", + name: "progressRecord", computed: { progressRecord() { return progressRecord @@ -197,7 +390,9 @@ dialogFormVisible: false, // 鏌ョ湅鏄剧ず - checkFlag: false, + dialogFlag: 0,// 涓婃姤銆侀噸鏂颁笂鎶ワ細0锛屾煡鐪嬶細1锛屽鏍革細2 + // 鏄惁灞曠ず鍥炲鎸夐挳 + isShowReplyBtn: true, progressReportData: {}, formLabelWidth: '150px', @@ -213,18 +408,20 @@ accept: ['pdf','jpg','mp4'], } }, + created() { + this.getProjectInfoData() + }, methods: { search() { - this.getProjectInfoData() this.getProjectProgressForm(this.projectInfoData.id); + this.getProgressInfoList(this.projectInfoData.id); + this.progressReportData = {}; }, // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏 getProjectInfoData() { // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁 - if (this.$route.query.data) { this.projectInfoData = JSON.parse(this.$route.query.data); - this.getProgressInfoList(this.projectInfoData.id); - } + this.search(); }, getProjectProgressForm(id) { getProjectProgressForm(id).then(res => { @@ -241,6 +438,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; @@ -254,10 +461,34 @@ this.search(); }) }, - // 鏌ョ湅杩涘害 + // 鍥炲 + handleReply() { + reply(this.progressReportData).then(res => { + this.dialogFormVisible = false; + this.$message.success('鍥炲鎴愬姛'); + this.search(); + }) + }, + // 瀹℃壒 + handleExamine() { + examine(this.progressReportData).then(res => { + this.dialogFormVisible = false; + this.$message.success('瀹℃壒鎴愬姛'); + 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; }) @@ -265,7 +496,9 @@ // 鍏抽棴寮圭獥 handleCancel() { this.dialogFormVisible = false; - this.checkFlag = false; + this.isShowReplyBtn = true; + this.dialogFlag = 0; + this.progressReportData = {}; }, // 淇濆瓨 handleSave() { @@ -277,9 +510,7 @@ }) } }, - created() { - this.search(); - }, + }; </script> @@ -291,7 +522,7 @@ } .custom-dialog { - max-height: 70vh; /* 璁剧疆鏈�澶ч珮搴� */ + max-height: 60vh; /* 璁剧疆鏈�澶ч珮搴� */ overflow-y: auto; /* 鍏佽鍨傜洿婊氬姩 */ } </style> -- Gitblit v1.8.0