From 36cf6c5a265d3300a286e2aff6058b82bca8227e Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Mon, 25 Dec 2023 10:29:43 +0800
Subject: [PATCH] 评优页面更新

---
 src/views/evaluate/evaluateTask.vue |   65 +++++++++++++++++++++++++-------
 1 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/src/views/evaluate/evaluateTask.vue b/src/views/evaluate/evaluateTask.vue
index 7db0bf3..47dafef 100644
--- a/src/views/evaluate/evaluateTask.vue
+++ b/src/views/evaluate/evaluateTask.vue
@@ -10,12 +10,15 @@
         <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
         <el-button type="danger" icon="el-icon-delete" plain v-if="permission.evaluateTask_delete"
           @click="handleDelete">删除</el-button>
-        <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button>
+        <!-- <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button> -->
       </template>
       <template #menu="{ size, row, index }">
+        <el-button type="primary" text plain icon="el-icon-view" @click="viewDateilDialog(row)">详情</el-button>
         <el-button type="primary" text plain icon="el-icon-edit" @click="editDialog(row)">编辑</el-button>
-        <el-button type="primary" text plain icon="el-icon-position" @click="publicTimeBtn(row)" v-if="row.status === 2">发布</el-button>
-        <el-button type="primary" text plain icon="el-icon-download">导出</el-button>
+        <el-button type="primary" text plain icon="el-icon-position" @click="publicTimeBtn(row)"
+          v-if="row.candidateState === 2 && row.evaluateState === 0">发布</el-button>
+        <el-button type="primary" v-if="row.type === 0 && row.candidateState === 0" text plain icon="el-icon-plus" @click="addCandidateHandle(row)">新增候选人</el-button>
+        <!-- <el-button type="primary" text plain icon="el-icon-download">导出</el-button> -->
       </template>
     </avue-crud>
     <!-- 发布弹窗 -->
@@ -35,6 +38,10 @@
     </el-dialog>
     <!-- 新增编辑弹窗 -->
     <addDialog :params="addParams" @refreshTable="this.onLoad" />
+    <!-- 新增候选人 -->
+    <addCandidate :params="addCandidateParams" @refreshTable="this.onLoad" />
+    <!-- 预览弹窗 -->
+    <viewEvaluateDetail :params="viewEvaluateDetailParams" />
   </basic-container>
 </template>
 
@@ -49,11 +56,15 @@
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import addDialog from './components/addDialog.vue';
+import addCandidate from './components/addCandidate.vue';
+import viewEvaluateDetail from './components/viewEvaluateDetail.vue';
 import { getDeptTree } from '@/api/system/dept';
 
 export default {
   components: {
     addDialog,
+    addCandidate,
+    viewEvaluateDetail
   },
   data() {
     return {
@@ -93,6 +104,10 @@
           },
         ],
       },
+      // 新增候选人params
+      addCandidateParams: {},
+      // 信息预览弹窗
+      viewEvaluateDetailParams: {},
     };
   },
   watch: {
@@ -104,7 +119,7 @@
           type: n,
         };
         // 更改option
-        !n ? (this.option = option) : (this.option = sectionOption) 
+        !n ? (this.option = option) : (this.option = sectionOption)
         this.page.currentPage = 1;
         this.onLoad(this.page, params);
       },
@@ -165,6 +180,12 @@
           ...row,
         },
       };
+    },
+    viewDateilDialog(row) {
+      this.viewEvaluateDetailParams = {
+        visible: true,
+        data: row
+      }
     },
     rowUpdate(row, index, done, loading) {
       update(row).then(
@@ -244,14 +265,13 @@
       if (['edit', 'view'].includes(type)) {
         getDetail(this.form.id).then(res => {
           if (type === 'view') {
-            this.deptData().then(deptRes => {
-              const candidates = [];
-              res.data.data.candidateNum.forEach(item => {
-                const value = deptRes.find(dept => dept.id === item.deptId);
-                candidates.push(`${value.title}: ${item.val || 0}人`);
-              });
-              this.form.candidateNum = candidates.join('、');
-            });
+            const candidates = [];
+            res.data.data.candidateNum.forEach(item => {
+              const users = []
+              item.users.forEach(item => users.push(item.name))
+              candidates.push(`${item.deptName}(${item.val || 0}人): ${users.join('、')}`);
+            })
+            this.form.candidateNum = candidates.join('\n');
           }
           this.form = res.data.data;
         });
@@ -260,10 +280,13 @@
     },
     searchReset() {
       this.query = {};
-      this.onLoad(this.page);
+      this.onLoad(this.page, { type: this.defaultTaskType });
     },
     searchChange(params, done) {
-      this.query = params;
+      this.query = {
+        ...params,
+        type: this.defaultTaskType,
+      };
       this.page.currentPage = 1;
       this.onLoad(this.page, params);
       done();
@@ -321,13 +344,16 @@
       this.rowData = row;
       this.dialogVisible = true;
     },
+    // 发布
     timeSubmit() {
       const { id } = this.rowData;
       const params = {
         id,
+        // candidateState: 1,
+        evaluateState: 1,
         evaluateCutoffTime: this.publicForm.publicData,
       };
-      add(params).then(
+      update(params).then(
         res => {
           this.$message({
             type: 'success',
@@ -344,6 +370,15 @@
       );
       this.dialogVisible = false;
     },
+    addCandidateHandle(row) {
+      this.addCandidateParams = {
+        visible: true,
+        type: 0,
+        data: {
+          ...row
+        }
+      }
+    },
     tabChange(value) {
       this.defaultTaskType = value.prop;
     },

--
Gitblit v1.9.3