| src/views/evaluate/components/IndividualTaskPublic.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/evaluate/components/addSectionTask.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/evaluate/evaluateTask.vue | ●●●●● patch | view | raw | blame | history |
src/views/evaluate/components/IndividualTaskPublic.vue
New file @@ -0,0 +1,188 @@ <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' 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' }, ] } } }, methods: { dialogClose() { this.$refs.formRef.resetFields() }, openDialog() { this.initDict() }, 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> src/views/evaluate/components/addSectionTask.vue
@@ -1,5 +1,5 @@ <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"> @@ -93,6 +93,9 @@ dialogClose() { this.$refs.formRef.resetFields() }, openDialog() { this.initDict() }, submit() { this.$refs.formRef.validate(vaild => { console.log(this.form); @@ -107,9 +110,6 @@ this.employeeDict = data }) } }, mounted() { this.initDict() } }; </script> src/views/evaluate/evaluateTask.vue
@@ -5,17 +5,16 @@ :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" --> @refresh-change="refreshChange" @on-load="onLoad"> <template #candidateCutoffTimeEnd="{ row }"> {{ row.candidateCutoffTimeStart || '开始时间未完善' }} {{ row.candidateCutoffTimeStart}} <div style="text-align: center;">-</div> {{ row.candidateCutoffTimeEnd || '结束时间未完善' }} {{ row.candidateCutoffTimeEnd}} </template> <template #evaluateCutoffTimeEnd="{ row }"> {{ row.evaluateCutoffTimeStart || '开始时间未完善' }} {{ row.evaluateCutoffTimeStart}} <div style="text-align: center;">-</div> {{ row.candidateCutoffTimeEnd || '结束时间未完善' }} {{ row.candidateCutoffTimeEnd}} </template> <template #menu-left> <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增评优任务</el-button> @@ -25,12 +24,15 @@ </template> <template #menu="{ size, row, index }"> <el-button type="primary" text plain icon="el-icon-view" @click="viewDateilDialog(row)">详情</el-button> <el-button type="primary" text plain icon="el-icon-send" @click="taskPublicDialog(row)">发布</el-button> <el-button type="danger" text plain icon="el-icon-delete" @click="rowDel(row)">删除</el-button> </template> </avue-crud> <!-- 新增个人评优任务弹窗 --> <addIndividualTask :params="addIndividualParams" @refreshTable="this.onLoad" /> <addSectionTask :params="addSectionParams" @refreshTable="this.onLoad" /> <!-- 发布 --> <individualTaskPublic :params="taskPublicParams" @refreshTable="this.onLoad" /> <!-- 预览 --> <viewEvaluateDetail :params="viewEvaluateDetailParams" /> </basic-container> @@ -49,11 +51,13 @@ import addIndividualTask from './components/addIndividualTask.vue'; import addSectionTask from './components/addSectionTask.vue'; import viewEvaluateDetail from './components/viewEvaluateDetail.vue'; import individualTaskPublic from './components/IndividualTaskPublic.vue'; export default { components: { addIndividualTask, addSectionTask, individualTaskPublic, viewEvaluateDetail }, data() { @@ -74,7 +78,6 @@ addIndividualParams: {}, addSectionParams: {}, viewParams: {}, depts: [], // 考核结果参数 defaultTaskType: 0, taskTypeList: { @@ -91,6 +94,7 @@ }, // 信息预览弹窗 viewEvaluateDetailParams: {}, taskPublicParams: {} }; }, watch: { @@ -164,6 +168,12 @@ data: row } }, taskPublicDialog(row) { this.taskPublicParams = { visible: true, data: row } }, rowUpdate(row, index, done, loading) { update(row).then( () => {