From 730b4e1b8737e86ca08cfebb066249baaf46e869 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Mon, 15 Jan 2024 17:59:31 +0800
Subject: [PATCH] 提交

---
 src/option/assessmentTask/assessmentTask.js        |   31 +++++
 src/views/assessment/components/assessorDialog.vue |  165 +++++++++++++++++++++++++++++++++
 src/api/assessment/assessmentScore.js              |   22 ++++
 src/views/assessment/assessmentTask.vue            |   29 ++++-
 4 files changed, 237 insertions(+), 10 deletions(-)

diff --git a/src/api/assessment/assessmentScore.js b/src/api/assessment/assessmentScore.js
index 771c340..f55a21c 100644
--- a/src/api/assessment/assessmentScore.js
+++ b/src/api/assessment/assessmentScore.js
@@ -24,4 +24,26 @@
             // size,
         }
     })
+}
+
+export const getAsserorDetailList = (current, size, params) => {
+    return request({
+        url: '/assessment/assessmentScore/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const sendBackAsseror = (ids) => {
+    return request({
+        url: '/assessment/assessmentScore/remove',
+        method: 'post',
+        params: {
+            ids
+        }
+    })
 }
\ No newline at end of file
diff --git a/src/option/assessmentTask/assessmentTask.js b/src/option/assessmentTask/assessmentTask.js
index 518d1c3..6172195 100644
--- a/src/option/assessmentTask/assessmentTask.js
+++ b/src/option/assessmentTask/assessmentTask.js
@@ -18,7 +18,7 @@
   index: false,
   viewBtn: false,
   delBtn: false,
-  editBtn: true,
+  editBtn: false,
   selection: true,
   menuWidth: 250,
   dialogClickModal: false,
@@ -112,15 +112,26 @@
       label: "开始时间",
       prop: "startTime",
       type: "date",
-      value: getNowDate(),
-      disabled: true,
+      // disabled: true,
       format: "YYYY-MM-DD HH:mm:ss",
-      // valueFormat: "YYYY-MM-DD HH:mm:ss",
+      valueFormat: "YYYY-MM-DD HH:mm:ss",
       minWidth: 200,
       rules: [
         {
           required: true,
           message: '请选择开始时间',
+          trigger: 'click',
+        },
+        {
+          validator: (rule, value, callback) => {
+            const nowDate = new Date().getTime() - (24*60*60*1000)
+            const selectDate = new Date(value).getTime()
+            if (selectDate < nowDate) {
+              callback(new Error('选择的时候不能小于当前时间'))
+            } else {
+              callback()
+            }
+          },
           trigger: 'click',
         },
       ],
@@ -138,6 +149,18 @@
           message: '请选择结束时间',
           trigger: 'click',
         },
+        {
+          validator: (rule, value, callback) => {
+            const nowDate = new Date().getTime() - (24*60*60*1000)
+            const selectDate = new Date(value).getTime()
+            if (selectDate < nowDate) {
+              callback(new Error('选择的时候不能小于当前时间'))
+            } else {
+              callback()
+            }
+          },
+          trigger: 'click',
+        },
       ],
     },
     {
diff --git a/src/views/assessment/assessmentTask.vue b/src/views/assessment/assessmentTask.vue
index 488db91..5344e2a 100644
--- a/src/views/assessment/assessmentTask.vue
+++ b/src/views/assessment/assessmentTask.vue
@@ -19,12 +19,19 @@
             导出
           </el-button> -->
         </template>
-        <template #menu="{ row }">
+        <template #menu="{ row, index, size }">
           <el-button type="primary" icon="el-icon-setting" text @click="handleTaskSetting(row)">
             考核设置
           </el-button>
           <el-button type="primary" icon="el-icon-view" text @click="handleAssessorDetails(row)">
             考核结果
+          </el-button>
+          <el-button type="primary" icon="el-icon-view" text @click="handleAssessorList(row)">
+            考核任务人员详情
+          </el-button>
+          <el-button type="success" icon="el-icon-edit" text v-if="row.isAssessmentOk === -1"
+            @click="$refs.crud.rowEdit(row,index)">
+            编辑
           </el-button>
           <!-- <el-button type="primary" icon="el-icon-view" text @click="handleTaskResult(row)">
             考核结果
@@ -41,8 +48,10 @@
     <!-- <template v-else>
       <taskResult :params="resultParams" @changeIs="changeIs" />
     </template> -->
-    <!-- 考核人员详情 -->
+    <!-- 考核结果详情 -->
     <assessorDetails :params="detailsParams" />
+    <!-- 考核人员详情 -->
+    <assessorDialog :params="assessorDialogParams" />
   </basic-container>
 </template>
 
@@ -60,13 +69,15 @@
 import addTaskDialog from "./components/addTaskDialog.vue";
 import assessmentTaskSetting from "./components/assessmentTaskSetting.vue";
 import assessorDetails from "./components/assessorDetails.vue";
+import assessorDialog from "./components/assessorDialog.vue";
 
 export default {
   components: {
     taskResult,
     addTaskDialog,
     assessmentTaskSetting,
-    assessorDetails
+    assessorDetails,
+    assessorDialog
   },
   data() {
     return {
@@ -98,8 +109,8 @@
           }
         ]
       },
-      // 人员详情参数
-      detailsParams: {}
+      detailsParams: {},
+      assessorDialogParams: {}
     };
   },
   watch: {
@@ -324,7 +335,7 @@
         },
         '0': {
           text: '进行中',
-          type: 'primary'
+          type: ''
         },
         '1': {
           text: '已完成',
@@ -338,6 +349,12 @@
         visible: true,
         data: row
       }
+    },
+    handleAssessorList(row) {
+      this.assessorDialogParams = {
+        visible: true,
+        data: row
+      }
     }
   }
 };
diff --git a/src/views/assessment/components/assessorDialog.vue b/src/views/assessment/components/assessorDialog.vue
new file mode 100644
index 0000000..06c5298
--- /dev/null
+++ b/src/views/assessment/components/assessorDialog.vue
@@ -0,0 +1,165 @@
+<template>
+    <el-dialog v-model="params.visible" :title="params.data?.assessmentNo ? `考核编号(${params.data.assessmentNo})` : '考核人员详情'"
+        width="65%" @open="dialogOpen">
+        <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" @search-change="searchChange"
+            @search-reset="searchReset" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template #menu="{ row }">
+                <el-button type="warning" icon="el-icon-warning" text @click="sendBack(row)">驳回</el-button>
+            </template>
+        </avue-crud>
+    </el-dialog>
+</template>
+
+<script>
+import { getAsserorDetailList, sendBackAsseror } from '@/api/assessment/assessmentScore'
+
+export default {
+    props: {
+        params: {
+            type: Object,
+            default: () => {
+                return {
+                    visible: false,
+                    data: {}
+                }
+            }
+        }
+    },
+    data() {
+        return {
+            loading: true,
+            query: {},
+            data: [],
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
+            },
+            option: {
+                height: '400',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: false,
+                addBtn: false,
+                editBtn: false,
+                delBtn: false,
+                viewBtn: false,
+                menuWidth: 150,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "工号",
+                        prop: 'code',
+                        type: "input",
+                    },
+                    {
+                        label: "考核人",
+                        prop: "scoreUserName",
+                        type: "input",
+                        search: true,
+                    },
+                    {
+                        label: "部门",
+                        prop: "scoreDeptName",
+                        type: "select",
+                        // dicUrl: '/api/blade-system/dept/lazy-list?parentId=1737282385453543425',
+                        // search: true,
+                        // props: {
+                        //     label: 'deptName',
+                        //     value: 'fullName'
+                        // },
+                        overHidden: true
+                    },
+                    {
+                        label: "职务",
+                        prop: "scorePostName",
+                        type: "input",
+                    },
+                    {
+                        label: "被考核人",
+                        prop: "userName",
+                        type: "input",
+                    },
+                    {
+                        label: "考核分",
+                        prop: "scoreVal",
+                        type: "input",
+                    }
+                ]
+            },
+            detailParams: {}
+        }
+    },
+    methods: {
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page, { type: this.defaultTaskType });
+        },
+        searchChange(params, done) {
+            this.query = {
+                ...params,
+            };
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+
+            const { id } = this.params.data
+
+            const {
+            } = this.query;
+
+            let values = {
+                ...this.query,
+                ...params,
+                assessmentTaskId: id
+            };
+            getAsserorDetailList(page.currentPage, page.pageSize, values).then(res => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+            });
+        },
+        dialogOpen() {
+            this.onLoad(this.page)
+        },
+        sendBack(row) {
+            this.$confirm("是否驳回当前记录?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(res => {
+                const { id } = row
+                sendBackAsseror(id).then(res => {
+                    if (res.data.code !== 200) return this.$message.error(res.data.msg)
+                    this.$message({
+                        type: "success",
+                        message: "驳回成功!"
+                    });
+                    this.onLoad(this.page);
+                })
+            })
+        }
+    }
+}
+
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file

--
Gitblit v1.9.3