From d13cebe7fbadd396e91a989af331df8a8e7b40f8 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 21 Jan 2025 11:40:42 +0800
Subject: [PATCH] 考核结果查看详情
---
src/views/assessment/assessmentTask.vue | 330 ++++++++++++++++++++++++++++++++++++------------------
1 files changed, 220 insertions(+), 110 deletions(-)
diff --git a/src/views/assessment/assessmentTask.vue b/src/views/assessment/assessmentTask.vue
index d368871..77f069f 100644
--- a/src/views/assessment/assessmentTask.vue
+++ b/src/views/assessment/assessmentTask.vue
@@ -1,56 +1,115 @@
<template>
<basic-container>
- <template v-if="isResult">
+ <template v-if="curIndex === 0">
<avue-tabs ref="tabs" :option="taskTypeList" @change="tabChange"></avue-tabs>
- <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">
+ <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 #isAssessmentOk="{ row }">
- <el-tag :type="row.isAssessmentOk ? 'success' : ''" effect="dark">{{ row.isAssessmentOk ? '已完成' : '进行中' }}</el-tag>
+ <el-tag :type="setTaskState(row.isAssessmentOk).type" effect="dark">
+ {{ setTaskState(row.isAssessmentOk).text }}
+ </el-tag>
</template>
<template #menu-left>
- <el-button type="danger" icon="el-icon-delete" plain v-if="permission.assessmentTask_delete"
- @click="handleDelete">
+ <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> -->
+ 导出
+ </el-button> -->
</template>
- <template #menu="{ row }">
- <el-button type="primary" icon="el-icon-plus" size="small" @click="handleTaskResult(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)">
+ 考核结果
+ </el-button> -->
+ <el-button type="danger" icon="el-icon-delete" text @click="rowDel(row)">
+ 删除
</el-button>
</template>
</avue-crud>
</template>
- <template v-else>
- <taskResult :params="resultParams" @changeIs="changeIs" />
+ <template v-else-if="curIndex === 1">
+ <assessmentTaskSetting :params="resultParams" @changeIs="changeIs" />
</template>
+ <!-- <template v-else>
+ <taskResult :params="resultParams" @changeIs="changeIs" />
+ </template> -->
+ <!-- 考核结果详情 -->
+ <assessorDetails :params="detailsParams" />
+ <!-- 考核人员详情 -->
+ <assessorDialog :params="assessorDialogParams" />
</basic-container>
</template>
<script>
-import { getList, getDetail, add, update, remove } from "@/api/assessment/assessmentTask";
-import option from "@/option/assessmentTask/assessmentTask";
-import { mapGetters } from "vuex";
-import { exportBlob } from "@/api/common";
+import { getList, getDetail, add, update, remove } from '@/api/assessment/assessmentTask';
+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 { downloadXls } from '@/utils/util';
+import { dateNow } from '@/utils/date';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
-import taskResult from './components/taskResult.vue'
+import taskResult from './components/taskResult.vue';
+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
+ taskResult,
+ addTaskDialog,
+ assessmentTaskSetting,
+ assessorDetails,
+ assessorDialog,
},
data() {
return {
- isResult: true,
+ curIndex: 0,
form: {},
query: {},
search: {},
@@ -58,7 +117,7 @@
page: {
pageSize: 10,
currentPage: 1,
- total: 0
+ total: 0,
},
selectionList: [],
option: option,
@@ -70,46 +129,49 @@
column: [
{
label: '个人考核任务',
- prop: 0
+ prop: 0,
},
{
label: '部门考核任务',
- prop: 1
- }
- ]
- }
+ prop: 1,
+ },
+ ],
+ },
+ detailsParams: {},
+ assessorDialogParams: {},
};
},
watch: {
+
defaultTaskType: {
handler(n) {
- this.query = {}
- this.query['type'] = n
+ this.query = {};
+ this.query['type'] = n;
let params = {
- type: n
- }
+ type: n,
+ };
// 设置默认值
- const column = this.option.column
+ const column = this.option.column;
column.some(item => {
if (item.prop === 'type') {
- item.value = n
- return true
+ item.value = n;
+ return true;
}
- })
+ });
this.page.currentPage = 1;
this.onLoad(this.page, params);
},
immediate: true,
- }
+ },
},
computed: {
- ...mapGetters(["permission"]),
+ ...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)
+ editBtn: this.validData(this.permission.assessmentTask_edit, false),
};
},
ids() {
@@ -117,60 +179,76 @@
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
- return ids.join(",");
- }
+ return ids.join(',');
+ },
+ },
+ provide() {
+ return {
+ type: () => this.defaultTaskType,
+ };
},
methods: {
- handleTaskResult(row) {
- this.isResult = false;
- this.resultParams = row
- this.resultParams.type = this.defaultTaskType
+ handleTaskSetting(row) {
+ this.curIndex = 1;
+ this.resultParams = row;
+ this.resultParams.type = this.defaultTaskType;
},
- changeIs(is) {
- this.isResult = is
+ // handleTaskResult(row) {
+ // this.curIndex = 2;
+ // this.resultParams = row
+ // this.resultParams.type = this.defaultTaskType
+ // },
+ changeIs(num) {
+ this.curIndex = num;
this.$nextTick(() => {
- this.$refs.tabs.active = this.defaultTaskType.toString()
- })
+ this.$refs.tabs.active = this.defaultTaskType.toString();
+ });
},
rowSave(row, done, loading) {
- const {startTime, endTime} = row
- const startDate = new Date(startTime).getTime()
- const endDate = new Date(endTime).getTime()
+ const { startTime, endTime } = row;
+ const startDate = new Date(startTime).getTime();
+ const endDate = new Date(endTime).getTime();
if (startDate >= endDate) {
- this.$message.warning('结束时间不可小于或等于开始时间')
- loading()
- return
- }
- add(row).then(() => {
- this.onLoad(this.page);
- this.$message({
- type: "success",
- message: "操作成功!"
- });
- done();
- }, error => {
+ this.$message.warning('结束时间不可小于或等于开始时间');
loading();
- window.console.log(error);
- });
+ return;
+ }
+ 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);
- });
+ 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"
+ this.$confirm('确定将选择数据删除?', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
})
.then(() => {
return remove(row.id);
@@ -178,20 +256,20 @@
.then(() => {
this.onLoad(this.page);
this.$message({
- type: "success",
- message: "操作成功!"
+ type: 'success',
+ message: '操作成功!',
});
});
},
handleDelete() {
if (this.selectionList.length === 0) {
- this.$message.warning("请选择至少一条数据");
+ this.$message.warning('请选择至少一条数据');
return;
}
- this.$confirm("确定将选择数据删除?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
+ this.$confirm('确定将选择数据删除?', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
})
.then(() => {
return remove(this.ids);
@@ -199,36 +277,37 @@
.then(() => {
this.onLoad(this.page);
this.$message({
- type: "success",
- message: "操作成功!"
+ type: 'success',
+ message: '操作成功!',
});
this.$refs.crud.toggleSelection();
});
},
handleExport() {
- let downloadUrl = `/assessmentTask/assessmentTask/export-assessmentTask?${this.website.tokenHeader}=${getToken()}`;
- const {
- } = this.query;
+ let downloadUrl = `/assessmentTask/assessmentTask/export-assessmentTask?${
+ this.website.tokenHeader
+ }=${getToken()}`;
+ const {} = this.query;
let values = {
- ...this.query
+ ...this.query,
};
- this.$confirm("是否导出数据?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
+ 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 (type === 'add') {
- this.form.assessmentNo = new Date().getFullYear() + '-' + (Number(this.page.total) + 1)
+ this.form.assessmentNo = new Date().getFullYear() + '-' + (Number(this.page.total) + 1);
}
- if (["edit", "view"].includes(type)) {
+ if (['edit', 'view'].includes(type)) {
getDetail(this.form.id).then(res => {
this.form = res.data.data;
});
@@ -240,7 +319,7 @@
this.onLoad(this.page, { type: this.defaultTaskType });
},
searchChange(params, done) {
- params.type = this.defaultTaskType
+ params.type = this.defaultTaskType;
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
@@ -265,12 +344,11 @@
onLoad(page, params = {}) {
this.loading = true;
- const {
- } = this.query;
+ const {} = this.query;
let values = {
...this.query,
- ...params
+ ...params,
};
getList(page.currentPage, page.pageSize, values).then(res => {
@@ -282,9 +360,41 @@
});
},
tabChange(value) {
- this.defaultTaskType = value.prop
- }
- }
+ this.defaultTaskType = value.prop;
+ },
+ setTaskState(state) {
+ const status = {
+ '-1': {
+ text: '未开始',
+ type: 'warning',
+ },
+ 0: {
+ text: '进行中',
+ type: '',
+ },
+ 1: {
+ text: '已完成',
+ type: 'success',
+ },
+ };
+ return status[state];
+ },
+ handleAssessorDetails(row) {
+ this.detailsParams = {
+ visible: true,
+ data: row,
+ };
+ },
+ handleAssessorList(row) {
+ this.assessorDialogParams = {
+ visible: true,
+ data: row,
+ };
+ },
+ handleTemplate() {
+ // 本地资源
+ },
+ },
};
</script>
--
Gitblit v1.9.3