From cfc606caaeccc27f265bd66228f2d2035fde410e Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Fri, 08 Dec 2023 16:33:10 +0800
Subject: [PATCH] 页面更新

---
 src/views/assessment/components/assessmentWeight.vue |  262 ++++++++++++++++++
 src/option/assessmentTask/assessmentTask.js          |  108 +++---
 yarn.lock                                            |    8 
 package.json                                         |    2 
 src/views/employee/list.vue                          |  259 +++++++++++++++++
 src/views/assessment/assessmentTaskSetting.vue       |   27 -
 src/views/assessment/assessmentTask.vue              |   58 ++-
 src/views/assessment/components/taskResult.vue       |   84 +++--
 8 files changed, 669 insertions(+), 139 deletions(-)

diff --git a/package.json b/package.json
index 562977a..f917326 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
     "@vitejs/plugin-vue": "^1.3.0",
     "@vue/compiler-sfc": "^3.0.5",
     "prettier": "^2.8.7",
-    "sass": "^1.37.5",
+    "sass": "^1.69.5",
     "unplugin-auto-import": "^0.11.2",
     "vite": "^2.9.16",
     "vite-plugin-compression": "^0.5.1",
diff --git a/src/option/assessmentTask/assessmentTask.js b/src/option/assessmentTask/assessmentTask.js
index 3da1114..d1d861f 100644
--- a/src/option/assessmentTask/assessmentTask.js
+++ b/src/option/assessmentTask/assessmentTask.js
@@ -12,18 +12,18 @@
   selection: true,
   dialogClickModal: false,
   column: [
-    {
-      label: "主键",
-      prop: "id",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "租户ID",
-      prop: "tenantId",
-      type: "input",
-      hide: true,
-    },
+    // {
+    //   label: "主键",
+    //   prop: "id",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "租户ID",
+    //   prop: "tenantId",
+    //   type: "input",
+    //   hide: true,
+    // },
     {
       label: "考核编号",
       prop: "assessmentNo",
@@ -54,47 +54,47 @@
       type: "textarea",
       span: 24,
     },
-    {
-      label: "创建人",
-      prop: "createUser",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "创建部门",
-      prop: "createDept",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "创建时间",
-      prop: "createTime",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "修改人",
-      prop: "updateUser",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "修改时间",
-      prop: "updateTime",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "状态",
-      prop: "status",
-      type: "input",
-      hide: true,
-    },
-    {
-      label: "是否已删除",
-      prop: "isDeleted",
-      type: "input",
-      hide: true,
-    },
+    // {
+    //   label: "创建人",
+    //   prop: "createUser",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "创建部门",
+    //   prop: "createDept",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "创建时间",
+    //   prop: "createTime",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "修改人",
+    //   prop: "updateUser",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "修改时间",
+    //   prop: "updateTime",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "状态",
+    //   prop: "status",
+    //   type: "input",
+    //   hide: true,
+    // },
+    // {
+    //   label: "是否已删除",
+    //   prop: "isDeleted",
+    //   type: "input",
+    //   hide: true,
+    // },
   ]
 }
diff --git a/src/views/assessment/assessmentTask.vue b/src/views/assessment/assessmentTask.vue
index 9b5399f..27fc498 100644
--- a/src/views/assessment/assessmentTask.vue
+++ b/src/views/assessment/assessmentTask.vue
@@ -1,23 +1,30 @@
 <template>
   <basic-container>
-    <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
-      :data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
-      @row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
-      @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
-      @refresh-change="refreshChange" @on-load="onLoad">
-      <template #menu-left>
-        <el-button type="danger" icon="el-icon-delete" plain v-if="permission.assessmentTask_delete"
-          @click="handleDelete">删 除
-        </el-button>
-        <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导 出
-        </el-button>
-      </template>
-      <template #menu>
-        <el-button type="primary" icon="el-icon-plus" size="small" @click="handleInfo">
-          考核结果
-        </el-button>
-      </template>
-    </avue-crud>
+    <template v-if="isResult">
+      <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
+        :data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
+        @row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
+        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+        @refresh-change="refreshChange" @on-load="onLoad">
+        <template #menu-left>
+          <el-button type="danger" icon="el-icon-delete" plain v-if="permission.assessmentTask_delete"
+            @click="handleDelete">
+            删除
+          </el-button>
+          <el-button type="warning" plain icon="el-icon-download" @click="handleExport">
+            导出
+          </el-button>
+        </template>
+        <template #menu>
+          <el-button type="primary" icon="el-icon-plus" size="small" @click="handleTaskResult(row)">
+            考核结果
+          </el-button>
+        </template>
+      </avue-crud>
+    </template>
+    <template v-else>
+      <taskResult :params="resultParams" @changeIs="changeIs" />
+    </template>
   </basic-container>
 </template>
 
@@ -31,10 +38,15 @@
 import { dateNow } from "@/utils/date";
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
+import taskResult from './components/taskResult.vue'
 
 export default {
+  components: {
+    taskResult
+  },
   data() {
     return {
+      isResult: true,
       form: {},
       query: {},
       search: {},
@@ -46,7 +58,8 @@
       },
       selectionList: [],
       option: option,
-      data: []
+      data: [],
+      resultParams: {}
     };
   },
   computed: {
@@ -68,6 +81,13 @@
     }
   },
   methods: {
+    handleTaskResult(row) {
+      this.isResult = false;
+      this.resultParams = row
+    },
+    changeIs(is) {
+      this.isResult = is
+    },
     rowSave(row, done, loading) {
       add(row).then(() => {
         this.onLoad(this.page);
diff --git a/src/views/assessment/assessmentTaskSetting.vue b/src/views/assessment/assessmentTaskSetting.vue
index a956ea2..833c5e3 100644
--- a/src/views/assessment/assessmentTaskSetting.vue
+++ b/src/views/assessment/assessmentTaskSetting.vue
@@ -12,13 +12,13 @@
             </avue-crud>
         </template>
         <template v-else>
-            <assessmentWeight :is="isWeight" @changeIs="changeIs" />
+            <assessmentWeight v-model:params="weightParams" @changeIs="changeIs" />
         </template>
     </basic-container>
 </template>
   
 <script>
-import assessmentWeight from './assessmentWeight.vue'
+import assessmentWeight from './components/assessmentWeight.vue'
 import { getList } from '@/api/system/user.js'
 
 export default {
@@ -31,18 +31,8 @@
             form: {},
             query: {},
             search: {},
-            data: [
-                {
-                    id: '1',
-                    assessor: '张三',
-                    jobNumber: '123456',
-                    section: '研发部',
-                    postion: '研发工程师',
-                    personnelType: '普通员工',
-                    partnerType: '',
-                    contact: '123456789'
-                }
-            ],
+            weightParams: {},
+            data: [],
             option: {
                 height: 'auto',
                 calcHeight: 32,
@@ -67,18 +57,18 @@
                     },
                     {
                         label: "被考核人",
-                        prop: "assessor",
+                        prop: "name",
                         type: "input",
                         search: true
                     },
                     {
                         label: "工号",
-                        prop: 'jobNumber',
+                        prop: 'postId',
                         type: "input",
                     },
                     {
                         label: "部门",
-                        prop: "section",
+                        prop: "deptName",
                         type: "input",
                         search: true
                     },
@@ -113,7 +103,8 @@
         }
     },
     methods: {
-        handleWeight(value) {
+        handleWeight(row) {
+            this.weightParams = { ...row }
             this.isWeight = false
         },
         changeIs(is) {
diff --git a/src/views/assessment/components/assessmentWeight.vue b/src/views/assessment/components/assessmentWeight.vue
new file mode 100644
index 0000000..57d6105
--- /dev/null
+++ b/src/views/assessment/components/assessmentWeight.vue
@@ -0,0 +1,262 @@
+<template>
+    <div class="container">
+        <el-page-header @back="back" class="header">
+            <template #content>
+                <span>考核权重</span>
+            </template>
+        </el-page-header>
+        <ul class="info">
+            <li>
+                <el-tag size="large">被考核人:{{ params.name }}</el-tag>
+            </li>
+            <li>
+                <el-tag size="large">部门:{{ params.deptName }}</el-tag>
+            </li>
+            <li>
+                <el-tag size="large">职务:{{ params.postName }}</el-tag>
+            </li>
+        </ul>
+        <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
+            :data="data" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
+            @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+        </avue-crud>
+    </div>
+</template>
+  
+<script>
+import { getList, getDetail, remove, add, update } from '@/api/assessment/assessmentSet'
+
+export default {
+    props: {
+        params: {
+            type: Object,
+            default() {
+                return {}
+            }
+        }
+    },
+    data() {
+        return {
+            form: {},
+            query: {},
+            search: {},
+            loading: true,
+            data: [
+                {
+                    assessor: '张三',
+                    position: '经理',
+                    weight: 50,
+                    ratingRange: 50,
+                }
+            ],
+            option: {
+                height: 'auto',
+                calcHeight: 32,
+                tip: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                addBtn: true,
+                viewBtn: true,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 200,
+                column: [
+                    {
+                        label: "考核人",
+                        prop: "userName",
+                        type: "select",
+
+                    },
+                    {
+                        label: "职务",
+                        prop: "postName",
+                        type: "input",
+                    },
+                    {
+                        label: "权值",
+                        prop: "weight",
+                        type: "input",
+                    },
+                    {
+                        label: "评分范围",
+                        prop: "rangeVal",
+                        type: "input",
+                        placeholder: '评分范围(100分制)±N'
+                    }
+                ]
+            },
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 1,
+            }
+        }
+    },
+    watch: {
+    },
+    methods: {
+        back() {
+            this.$emit('changeIs', true)
+        },
+        rowSave(row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                window.console.log(error);
+            });
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                console.log(error);
+            });
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        handleExport() {
+            let downloadUrl = `/assessmentTask/assessmentTask/export-assessmentTask?${this.website.tokenHeader}=${getToken()}`;
+            const {
+            } = this.query;
+            let values = {
+            };
+            this.$confirm("是否导出数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                NProgress.start();
+                exportBlob(downloadUrl, values).then(res => {
+                    downloadXls(res.data, `考核任务表${dateNow()}.xlsx`);
+                    NProgress.done();
+                })
+            });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then(res => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        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 {
+            } = this.query;
+            let values = {
+                toUserId: this.params.id
+            };
+
+            getList(page.currentPage, page.pageSize, values).then(res => {
+                console.log(res);
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        }
+    },
+    mounted() {
+        
+    }
+}
+</script>
+  
+<style lang="scss" scoped>
+.header {
+    margin-bottom: 20px;
+}
+
+.info {
+    display: flex;
+    list-style-type: none;
+    padding: 0;
+    margin: 0;
+    margin-bottom: 10px;
+
+    li {
+        margin-right: 10px;
+    }
+}
+</style>
+  
\ No newline at end of file
diff --git a/src/views/assessment/assessmentWeight.vue b/src/views/assessment/components/taskResult.vue
similarity index 61%
rename from src/views/assessment/assessmentWeight.vue
rename to src/views/assessment/components/taskResult.vue
index b0f75fc..f47bc01 100644
--- a/src/views/assessment/assessmentWeight.vue
+++ b/src/views/assessment/components/taskResult.vue
@@ -2,16 +2,10 @@
     <div class="container">
         <el-page-header @back="back" class="header">
             <template #content>
-                <span>考核权重</span>
+                <span>考核结果</span>
             </template>
         </el-page-header>
-        <avue-crud ref="crud" v-model="form" v-model:search="search" :option="option" :data="data" v-model:page="page"
-            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
-            <template #menu="{ row, index, size }">
-                <el-button type="danger" text icon="el-icon-delete" @click="delRow(row, index)">
-                    删除
-                </el-button>
-            </template>
+        <avue-crud ref="crud" v-model="form" v-model:search="search" :option="option" :data="data" v-model:page="page">
         </avue-crud>
     </div>
 </template>
@@ -21,15 +15,18 @@
 
 export default {
     props: {
-        is: {
-            type: Boolean,
-            default: false
+        params: {
+            type: Object,
+            default() {
+                return {}
+            }
         }
     },
     data() {
         return {
             form: {},
             search: {},
+            selectionList: [],
             data: [
                 {
                     assessor: '张三',
@@ -46,15 +43,24 @@
                 border: true,
                 index: true,
                 addBtn: true,
-                viewBtn: false,
+                viewBtn: true,
                 editBtn: false,
-                delBtn: false,
+                delBtn: true,
+                selection: true,
+                dialogClickModal: false,
                 menuWidth: 200,
                 column: [
+                    {
+                        label: "考核编号",
+                        type: 'select',
+                        hide: true,
+                        search: true
+                    },
                     {
                         label: "考核人",
                         prop: "assessor",
                         type: "input",
+                        search: true,
                     },
                     {
                         label: "职务",
@@ -67,10 +73,9 @@
                         type: "input",
                     },
                     {
-                        label: "评分范围",
+                        label: "考核分",
                         prop: "ratingRange",
                         type: "input",
-                        placeholder: '评分范围(100分制)±N'
                     }
                 ]
             },
@@ -78,40 +83,49 @@
                 pageSize: 10,
                 currentPage: 1,
                 total: 1,
-            },
+            }
+        }
+    },
+    watch: {
+    },
+    computed: {
+        ids() {
+            let ids = [];
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
         }
     },
     methods: {
         back() {
             this.$emit('changeIs', true)
         },
-        delRow(row, index) {
-            console.log(row,index);
-            ElMessageBox.confirm(
-                '是否删除当前记录?',
-                '警告',
-                {
-                    confirmButtonText: '确定',
-                    cancelButtonText: '关闭',
-                    type: 'warning',
-                }
-            ).then(res => {
-                ElMessage.success('删除成功')
-            }, () => {
-                ElMessage.warning('取消删除')
-            })
-        },
         sizeChange() { },
         refreshChange() { },
         onLoad(page, params = {}) {
         }
+    },
+    mounted() {
+
     }
 }
 </script>
   
-<style scoped>
+<style lang="scss" scoped>
 .header {
     margin-bottom: 20px;
 }
-</style>
-  
\ No newline at end of file
+
+.info {
+    display: flex;
+    list-style-type: none;
+    padding: 0;
+    margin: 0;
+    margin-bottom: 10px;
+
+    li {
+        margin-right: 10px;
+    }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/employee/list.vue b/src/views/employee/list.vue
index ae336cf..dea425f 100644
--- a/src/views/employee/list.vue
+++ b/src/views/employee/list.vue
@@ -1,13 +1,31 @@
 <template>
     <basic-container>
         <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
-            :data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
-            @row-save="rowSave" @row-del="rowDel" @search-change="searchChange">
+            :data="data" :permission="permissionList" ref="crud" @row-update="rowUpdate" @row-save="rowSave"
+            @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+            @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+            <template #menu-left>
+                <el-button type="danger" icon="el-icon-delete" plain v-if="permission.assessmentTask_delete"
+                    @click="handleDelete">删 除
+                </el-button>
+                <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导 出
+                </el-button>
+            </template>
         </avue-crud>
     </basic-container>
 </template>
-
+  
 <script>
+import { getList, add, update, remove } from "@/api/system/user.js";
+import option from "@/option/assessmentTask/assessmentTask";
+import { mapGetters } from "vuex";
+import { exportBlob } from "@/api/common";
+import { getToken } from '@/utils/auth';
+import { downloadXls } from "@/utils/util";
+import { dateNow } from "@/utils/date";
+import NProgress from 'nprogress';
+import 'nprogress/nprogress.css';
+
 export default {
     data() {
         return {
@@ -21,26 +39,251 @@
                 total: 0
             },
             selectionList: [],
-            option: option,
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: false,
+                delBtn: true,
+                editBtn: true,
+                addBtn: true,
+                selection: true,
+                dialogClickModal: false,
+                labelWidth: 120,
+                column: [
+                    {
+                        label: "工号",
+                        prop: "postId",
+                        type: "input",
+                        search: true
+                    },
+                    {
+                        label: "姓名",
+                        prop: "name",
+                        type: "input",
+                        search: true
+                    },
+                    {
+                        label: "部门",
+                        prop: "deptName",
+                        type: "input",
+                    },
+                    {
+                        label: "职务",
+                        prop: "postName",
+                        type: "input",
+                    },
+                    {
+                        label: "人员类型",
+                        type: "input"
+                    },
+                    {
+                        label: "合伙类型",
+                        type: "input"
+                    },
+                    {
+                        label: '企点(数值)',
+                        type: 'input',
+                    },
+                    // {
+                    //     label: "创建人",
+                    //     prop: "createUser",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "创建部门",
+                    //     prop: "createDept",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "创建时间",
+                    //     prop: "createTime",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "修改人",
+                    //     prop: "updateUser",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "修改时间",
+                    //     prop: "updateTime",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "状态",
+                    //     prop: "status",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                    // {
+                    //     label: "是否已删除",
+                    //     prop: "isDeleted",
+                    //     type: "input",
+                    //     hide: true,
+                    // },
+                ]
+            },
             data: []
+        };
+    },
+    computed: {
+        ...mapGetters(["permission"]),
+        permissionList() {
+            return {
+                addBtn: this.validData(this.permission.assessmentTask_add, false),
+                viewBtn: this.validData(this.permission.assessmentTask_view, false),
+                delBtn: this.validData(this.permission.assessmentTask_delete, false),
+                editBtn: this.validData(this.permission.assessmentTask_edit, false)
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
         }
     },
     methods: {
-        onLoad(page, params = {}) {
-            this.loading = true;
+        rowSave(row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                window.console.log(error);
+            });
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                loading();
+                console.log(error);
+            });
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        handleExport() {
+            let downloadUrl = `/blade-system/user/export-user?${this.website.tokenHeader}=${getToken()}`;
             const {
             } = this.query;
             let values = {
             };
+            this.$confirm("是否导出数据?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                NProgress.start();
+                exportBlob(downloadUrl, values).then(res => {
+                    downloadXls(res.data, `考核任务表${dateNow()}.xlsx`);
+                    NProgress.done();
+                })
+            });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        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 {
+            } = this.query;
+
+            let values = {
+            };
 
             getList(page.currentPage, page.pageSize, values).then(res => {
+                console.log(res.data.data.records);
                 const data = res.data.data;
                 this.page.total = data.total;
                 this.data = data.records;
                 this.loading = false;
+                this.selectionClear();
             });
         }
     }
-}
+};
 </script>
-<style></style>
\ No newline at end of file
+  
+<style></style>  
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 2fbd6bf..ada3499 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1435,10 +1435,10 @@
   dependencies:
     queue-microtask "^1.2.2"
 
-sass@^1.37.5:
-  version "1.62.1"
-  resolved "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029"
-  integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==
+sass@^1.69.5:
+  version "1.69.5"
+  resolved "https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde"
+  integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
     immutable "^4.0.0"

--
Gitblit v1.9.3