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/evaluate/components/addSectionTask.vue | 165 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 136 insertions(+), 29 deletions(-)
diff --git a/src/views/evaluate/components/addSectionTask.vue b/src/views/evaluate/components/addSectionTask.vue
index 54669e0..398174d 100644
--- a/src/views/evaluate/components/addSectionTask.vue
+++ b/src/views/evaluate/components/addSectionTask.vue
@@ -1,32 +1,35 @@
<template>
- <el-dialog v-model="params.visible" :title="params.title" width="50%" @close="dialogClose">
+ <el-dialog v-model="params.visible" :title="params.title" width="50%" @open="openDialog" @close="dialogClose">
<div class="content">
<el-form :model="form" ref="formRef" :rules="rules" label-width="130px">
<el-form-item label="任务名称" prop="taskName">
<el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input>
</el-form-item>
- <el-form-item label="评优奖项" prop="awards">
- <el-input v-model="form.awards" placeholder="请输入评优奖项"></el-input>
+ <el-form-item label="评优奖项" prop="evaluateAwards">
+ <el-input v-model="form.evaluateAwards" placeholder="请输入评优奖项"></el-input>
</el-form-item>
- <el-form-item label="认定标准描述" prop="remark">
- <el-input v-model="form.remark" type="textarea" placeholder="请输入认定标准描述"></el-input>
+ <el-form-item label="认定标准描述" prop="identificationStandard">
+ <el-input v-model="form.identificationStandard" type="textarea" placeholder="请输入认定标准描述"></el-input>
</el-form-item>
- <el-form-item label="投票人员" prop="employees">
- <el-checkbox-group v-model="form.employees">
- <el-checkbox v-for="item in employeeDict" :key="item.id" :label="item.dictKey">
+ <el-form-item label="投票人员" prop="pollingPersons">
+ <el-checkbox-group v-model="form.pollingPersons">
+ <el-checkbox v-for="item in employeeDict" :key="item.id" :label="item.dictKey"
+ @change="checkBoxChange($event, item)">
{{ item.dictValue }}
+ <el-button type="primary" icon="el-icon-edit" text
+ @click="selectionHandler(item)">设置人员</el-button>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="投票时间" required>
- <el-form-item class="time-box" prop="candidateCutoffTimeStart">
- <el-date-picker v-model="form.candidateCutoffTimeStart" type="datetime" placeholder="请选择任务开始时间"
- style="width: 100%;" />
+ <el-form-item class="time-box" prop="evaluateCutoffTimeStart">
+ <el-date-picker v-model="form.evaluateCutoffTimeStart" type="datetime" placeholder="请选择任务开始时间"
+ value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
</el-form-item>
<span class="time-span">至</span>
- <el-form-item class="time-box" prop="candidateCutoffTimeEnd">
- <el-date-picker v-model="form.candidateCutoffTimeEnd" type="datetime" placeholder="请选择任务结束时间"
- style="width: 100%;" />
+ <el-form-item class="time-box" prop="evaluateCutoffTimeEnd">
+ <el-date-picker v-model="form.evaluateCutoffTimeEnd" type="datetime" placeholder="请选择任务结束时间"
+ value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
</el-form-item>
</el-form-item>
</el-form>
@@ -35,14 +38,22 @@
<el-button @click="() => params.visible = false">取消</el-button>
<el-button type="primary" @click="submit">确定</el-button>
</template>
+ <!-- 人员选择 -->
+ <selectionDialog :params="selectionParams" @addEvaluateParams="addEvaluateParams" />
</el-dialog>
</template>
<script>
import { getDict } from '@/api/dict'
+import { update, getEmployeeLevelList } from '@/api/evaluate/evaluateTask'
import _ from 'lodash';
+import selectionDialog from './selectionDialog.vue';
export default {
+ inject: ['type'],
+ components: {
+ selectionDialog
+ },
props: {
params: {
type: Object,
@@ -60,42 +71,89 @@
return {
form: {
taskName: '',
- awards: '',
- remark: '',
- employees: [],
- candidateCutoffTimeStart: '',
- candidateCutoffTimeEnd: ''
+ evaluateAwards: '',
+ identificationStandard: '',
+ pollingPersons: [],
+ votePersonObjInfo: [],
+ evaluateCutoffTimeStart: '',
+ evaluateCutoffTimeEnd: ''
},
rules: {
taskName: [
{ required: true, message: '请输入任务名称', trigger: 'click' },
],
- awards: [
+ evaluateAwards: [
{ required: true, message: '请输入评优奖项', trigger: 'click' },
],
- remark: [
+ identificationStandard: [
{ required: true, message: '请输入认定标准', trigger: 'click' },
],
- employees: [
+ pollingPersons: [
{ required: true, message: '请选择评定人员', trigger: 'click' },
],
- candidateCutoffTimeStart: [
+ evaluateCutoffTimeStart: [
{ required: true, message: '请选择任务开始时间', trigger: 'click' },
+ {
+ validator: (rule, value, callback) => {
+ if (value) {
+ const startTime = new Date(value).getTime()
+ const endTime = new Date(this.form.candidateCutoffTimeEnd).getTime()
+ const nowTime = new Date().getTime()
+ // if (nowTime > startTime) {
+ // callback(new Error('开始时间不能早于当前时间'))
+ // } else
+ if (startTime >= endTime) {
+ callback(new Error('结束时间不能早于等于开始时间'))
+ } else {
+ callback()
+ }
+ }
+ }, trigger: 'click'
+ }
],
- candidateCutoffTimeEnd: [
+ evaluateCutoffTimeEnd: [
{ required: true, message: '请选择任务开始时间', trigger: 'click' },
+ {
+ validator: (rule, value, callback) => {
+ if (value) {
+ const startTime = new Date(this.form.candidateCutoffTimeStart).getTime()
+ const endTime = new Date(value).getTime()
+ const nowTime = new Date().getTime()
+ // if (nowTime > endTime) {
+ // callback(new Error('结束时间不能早于等于当前时间'))
+ // } else
+ if (startTime >= endTime) {
+ callback(new Error('结束时间不能早于等于开始时间'))
+ } else {
+ callback()
+ }
+ }
+ }, trigger: 'click'
+ }
]
},
- employeeDict: []
+ employeeDict: [],
+ selectionParams: {}
}
},
methods: {
dialogClose() {
this.$refs.formRef.resetFields()
},
+ openDialog() {
+ this.initDict()
+ },
submit() {
this.$refs.formRef.validate(vaild => {
- console.log(this.form);
+ if (!vaild) return
+ const data = _.cloneDeep(this.form)
+ data.pollingPersons = data.pollingPersons.join(',')
+ data.type = this.type()
+ update(data).then(res => {
+ if (res.data.code !== 200) return
+ this.params.visible = false
+ this.$emit('refreshTable', { currentPage: 1, pageSize: 10 })
+ })
})
},
initDict() {
@@ -106,10 +164,59 @@
}
this.employeeDict = data
})
+ },
+ selectionHandler(row) {
+ const obj = this.form.votePersonObjInfo.find(item => item.employeeType === row.dictKey) || {}
+ this.selectionParams = {
+ visible: true,
+ data: row,
+ values: obj
+ }
+ },
+ checkBoxChange(e, { dictKey }) {
+ const index = this.form.votePersonObjInfo.findIndex(item => item.employeeType === dictKey)
+ if (!e) {
+ this.form.votePersonObjInfo.splice(index, 1)
+ return
+ }
+ getEmployeeLevelList(dictKey).then((res) => {
+ const { code, data } = res.data
+ if (code !== 200) return this.$message.error('当前级别人员加载失败,请重试!!')
+ const participateInList = data.map(item => {
+ const { id, name, deptId, deptName, postId, postName } = item
+ return { id, name, deptId, deptName, postId, postName }
+ })
+ const params = {
+ employeeType: dictKey,
+ participateIn: participateInList,
+ notParticipateIn: []
+ }
+ if (index === -1) {
+ this.form.votePersonObjInfo.push(params)
+ } else {
+ this.form.votePersonObjInfo[index] = params
+ }
+ })
+ },
+ addEvaluateParams(params) {
+ const { participateIn, employeeType } = params
+ const index = this.form.votePersonObjInfo.findIndex(item => item.employeeType === employeeType)
+ const typeIndex = this.form.pollingPersons.findIndex(item => item === employeeType)
+
+ if (index === -1) {
+ if (participateIn.length > 0) {
+ this.form.votePersonObjInfo.push(params)
+ this.form.pollingPersons.push(params.employeeType)
+ }
+ } else {
+ if (participateIn.length > 0) {
+ this.form.votePersonObjInfo[index] = params
+ } else {
+ this.form.votePersonObjInfo.splice(index, 1)
+ this.form.pollingPersons.splice(typeIndex, 1)
+ }
+ }
}
- },
- mounted() {
- this.initDict()
}
};
</script>
--
Gitblit v1.9.3