<template>
|
<el-dialog v-model="params.visible" title="发布评优任务" width="50%" @open="openDialog" @close="dialogClose">
|
<div class="content">
|
<el-form :model="form" ref="formRef" :rules="rules" label-position="top">
|
<el-form-item label="任务类别" prop="taskType">
|
<ul class="type-list">
|
<li class="type-item">
|
<div class="title">类别</div>
|
<div class="introduction">认定标准</div>
|
<div class="number">名额</div>
|
<div class="tool">操作</div>
|
</li>
|
<li class="type-item" v-for="(item, index) in form.taskType" :key="index">
|
<div class="title">{{ item.title }}</div>
|
<el-tooltip effect="dark" placement="top">
|
<template #content>
|
<p style="width: 500px;">{{ item.introduction }}</p>
|
</template>
|
<div class="introduction">
|
{{ item.introduction }}
|
</div>
|
</el-tooltip>
|
|
<div class="number">{{ item.number }}</div>
|
<div class="tool">
|
<el-button type="primary" icon="el-icon-plus" text>添加候选人</el-button>
|
</div>
|
</li>
|
</ul>
|
</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">
|
{{ item.dictValue }}
|
</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="请选择任务开始时间"
|
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="请选择任务结束时间"
|
value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
|
</el-form-item>
|
</el-form-item>
|
</el-form>
|
</div>
|
<template #footer>
|
<el-button @click="() => params.visible = false">取消</el-button>
|
<el-button type="primary">确定发布</el-button>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script>
|
import _ from 'lodash';
|
import { getDict } from '@/api/dict'
|
import { getEcList } from '@/api/evaluate/evaluateTask'
|
|
export default {
|
props: {
|
params: {
|
type: Object,
|
default: () => {
|
return {
|
visible: false,
|
data: {}
|
};
|
},
|
},
|
},
|
data() {
|
return {
|
employeeDict: [],
|
form: {
|
taskType: [],
|
employees: [],
|
candidateCutoffTimeStart: '',
|
candidateCutoffTimeEnd: ''
|
},
|
rules: {
|
taskType: [
|
{ required: true, message: '任务类别不可为空', trigger: 'click' },
|
],
|
employees: [
|
{ required: true, message: '请选择评定人员', trigger: 'click' },
|
],
|
candidateCutoffTimeStart: [
|
{ required: true, message: '请选择任务开始时间', trigger: 'click' },
|
],
|
candidateCutoffTimeEnd: [
|
{ required: true, message: '请选择任务开始时间', trigger: 'click' },
|
]
|
},
|
page: {
|
current: 1,
|
size: 10,
|
total: 0
|
}
|
}
|
},
|
methods: {
|
dialogClose() {
|
this.$refs.formRef.resetFields()
|
},
|
openDialog() {
|
this.initDict()
|
const { id } = this.params.data
|
const { current, size } = this.page
|
getEcList(current, size, id).then(ecResult => {
|
const { code, data } = ecResult.data
|
console.log(data);
|
})
|
},
|
initDict() {
|
getDict('employee_type').then(res => {
|
const { code, data } = res.data
|
if (code !== 200) {
|
return this.$message.error('人员类型字典加载失败')
|
}
|
this.employeeDict = data
|
})
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
$borderColor: var(--el-border-color);
|
|
.content {
|
max-height: 400px;
|
overflow-y: auto;
|
|
.time-span {
|
margin: 0 10px;
|
}
|
|
.time-box {
|
width: calc(100% / 2 - 20px);
|
}
|
|
.type-list {
|
margin: 0;
|
padding: 0;
|
list-style-type: none;
|
width: 100%;
|
border: 1px solid $borderColor;
|
border-radius: var(--el-border-radius-base);
|
box-sizing: border-box;
|
|
.type-item {
|
display: flex;
|
height: 40px;
|
line-height: 40px;
|
text-align: center;
|
|
div {
|
border-bottom: 1px solid $borderColor;
|
flex-shrink: 0;
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
}
|
|
.title {
|
flex: 2;
|
}
|
|
.introduction {
|
flex: 5;
|
flex-shrink: 0;
|
|
border: {
|
right: 1px solid $borderColor;
|
left: 1px solid $borderColor;
|
}
|
}
|
|
.number {
|
flex: 1;
|
}
|
|
.tool {
|
flex: 2;
|
border-left: 1px solid $borderColor;
|
}
|
|
&:last-child {
|
div {
|
border-bottom: 0;
|
}
|
}
|
}
|
}
|
}
|
</style>
|