| | |
| | | |
| | | export const add = (row) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateTask/submit', |
| | | // url: '/evaluate/evaluateTask/sava', |
| | | // url: '/evaluate/evaluateTask/submit', |
| | | url: '/evaluate/evaluateTask/save', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | |
| | | }) |
| | | } |
| | | |
| | | // 获取候选人列表 |
| | | export const getCandidateList = (current, size, params) => { |
| | | export const getEcList = (current, size, evaluateTaskId ) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateCandidate/list', |
| | | url: '/evaluate/evaluateTaskCategory/list', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | current, |
| | | current, |
| | | size, |
| | | evaluateTaskId |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 添加候选人 |
| | | export const addCandidate = (data) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateCandidate/submit', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | // 删除候选人 |
| | | export const removeCandidate = (ids) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateCandidate/remove', |
| | | method: 'post', |
| | | params: { |
| | | ids, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 获取单个候选人的评定人 |
| | | export const getAssessorList = (current, size, evaluateCandidateId) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateCandidateAssessor/list', |
| | | method: 'get', |
| | | params: { |
| | | current, |
| | | size, |
| | | evaluateCandidateId |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | // 添加评定人 |
| | | export const addAssessorSubmit = (data) => { |
| | | return request({ |
| | | url: '/evaluate/evaluateCandidateAssessor/submit', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | |
| | | // 获取最终结果 |
| | | // url: '/evaluate/evaluateCandidate/page', |
| | |
| | | minWidth: '120px' |
| | | }, |
| | | { |
| | | label: "任务类别", |
| | | prop: "taskType", |
| | | type: "input", |
| | | minWidth: '100px' |
| | | }, |
| | | { |
| | | label: "认定标准描述", |
| | | prop: "remark", |
| | | type: "input", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "候选人数量", |
| | | prop: "candidateNum", |
| | | type: "textarea", |
| | | span: 24, |
| | | minWidth: '100px', |
| | | // prop: { |
| | | // label: "title", |
| | | // }, |
| | | formatter: (row, value) => { |
| | | return value |
| | | }, |
| | | }, |
| | | { |
| | | label: "类型", |
| | | label: "任务类型", |
| | | prop: 'type', |
| | | type: 'select', |
| | | hide: true, |
| | | dicData: [{ |
| | | label: '个人评优', |
| | | value: 0, |
| | | }, |
| | | { |
| | | label: '部门评优', |
| | | value: 1, |
| | | }] |
| | | type: 'input', |
| | | minWidth: '120px', |
| | | formatter: (row, value) => { |
| | | return value ? '部门评优' : '员工评优' |
| | | } |
| | | }, |
| | | { |
| | | label: "第一轮状态", |
| | |
| | | type: "input", |
| | | minWidth: '170px', |
| | | isSlot: true |
| | | }, |
| | | { |
| | | label: "评优数量", |
| | | prop: "evaluateNum", |
| | | type: "input", |
| | | minWidth: '100px' |
| | | }, |
| | | { |
| | | label: "第二轮状态", |
| | |
| | | labelWidth: '120', |
| | | column: [ |
| | | { |
| | | label: "主键", |
| | | prop: "id", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "租户ID", |
| | | prop: "tenantId", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "任务名称", |
| | | prop: "taskName", |
| | | type: "input", |
| | |
| | | minWidth: '120px' |
| | | }, |
| | | { |
| | | label: "任务类别", |
| | | prop: "taskType", |
| | | type: "input", |
| | | minWidth: '100px' |
| | | }, |
| | | { |
| | | label: "认定标准描述", |
| | | prop: "remark", |
| | | type: "input", |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "评定人数量", |
| | | prop: "candidateNum", |
| | | type: "textarea", |
| | | span: 24, |
| | | minWidth: '100px', |
| | | slot: 'true', |
| | | formatter: (row, value) => { |
| | | |
| | | return 0 |
| | | }, |
| | | }, |
| | | { |
| | | label: "类型", |
| | | label: "任务类型", |
| | | prop: 'type', |
| | | type: 'select', |
| | | hide: true, |
| | | dicData: [{ |
| | | label: '个人评优', |
| | | value: 0, |
| | | }, |
| | | { |
| | | label: '部门评优', |
| | | value: 1, |
| | | }] |
| | | }, |
| | | { |
| | | label: "评优数量", |
| | | prop: "evaluateNum", |
| | | type: "input", |
| | | minWidth: '100px' |
| | | type: 'input', |
| | | minWidth: '120px', |
| | | formatter: (row, value) => { |
| | | return value ? '部门评优' : '员工评优' |
| | | } |
| | | }, |
| | | { |
| | | label: "评选状态", |
| | |
| | | label: "截止时间", |
| | | prop: "candidateCutoffTimeEnd", |
| | | minWidth: '200px' |
| | | }, |
| | | { |
| | | label: "创建人", |
| | | prop: "createUser", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "创建部门", |
| | | prop: "createDept", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "修改人", |
| | | prop: "updateUser", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "修改时间", |
| | | prop: "updateTime", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "状态", |
| | | prop: "status", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | { |
| | | label: "是否已删除", |
| | | prop: "isDeleted", |
| | | type: "input", |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: false, |
| | | hide: true, |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | |
| | | <template> |
| | | <el-dialog v-model="params.visible" title="评优任务发布" width="50%" @open="openDialog" @close="dialogClose"> |
| | | <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"> |
| | |
| | | <script> |
| | | import _ from 'lodash'; |
| | | import { getDict } from '@/api/dict' |
| | | import { getEcList } from '@/api/evaluate/evaluateTask' |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | candidateCutoffTimeEnd: [ |
| | | { required: true, message: '请选择任务开始时间', trigger: 'click' }, |
| | | ] |
| | | }, |
| | | page: { |
| | | current: 1, |
| | | size: 10, |
| | | total: 0 |
| | | } |
| | | } |
| | | }, |
| | |
| | | }, |
| | | 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 => { |
| | |
| | | <el-form-item label="任务名称" prop="taskName"> |
| | | <el-input v-model="form.taskName" placeholder="请输入任务名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="任务类别" prop="taskType"> |
| | | <el-form-item label="任务类别" prop="categoryEntities"> |
| | | <ul class="type-list"> |
| | | <li class="type-item"> |
| | | <div class="title">类别</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> |
| | | <li class="type-item" v-for="(item, index) in form.categoryEntities" :key="index"> |
| | | <div class="title">{{ item.categoryName }}</div> |
| | | <el-tooltip effect="dark" placement="top"> |
| | | <template #content> |
| | | <p style="width: 500px;">{{ item.introduction }}</p> |
| | | <p style="max-width: 500px;">{{ item.standard }}</p> |
| | | </template> |
| | | <div class="introduction"> |
| | | {{ item.introduction }} |
| | | {{ item.standard }} |
| | | </div> |
| | | </el-tooltip> |
| | | |
| | | <div class="number">{{ item.number }}</div> |
| | | <div class="number">{{ item.peopleNum }}</div> |
| | | <div class="tool"> |
| | | <el-popconfirm title="是否确认删除当前评优类别?" @confirm="deleteTaskType(index)"> |
| | | <template #reference> |
| | |
| | | <!-- 添加类别弹窗 --> |
| | | <el-dialog v-model="innerVisible" width="40%" title="添加评优类别" append-to-body @close="innerDialogClose"> |
| | | <el-form :model="taskTypeForm" :rules="taskTypeRules" ref="taskTypeFormRef" label-width="80px"> |
| | | <el-form-item label="类别" prop="title"> |
| | | <el-input v-model="taskTypeForm.title" placeholder="请输入类别名称"></el-input> |
| | | <el-form-item label="类别" prop="categoryName"> |
| | | <el-input v-model="taskTypeForm.categoryName" placeholder="请输入类别名称"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="认定标准" prop="introduction"> |
| | | <el-input type="textarea" v-model="taskTypeForm.introduction" placeholder="请输入认定标准"></el-input> |
| | | <el-form-item label="认定标准" prop="standard"> |
| | | <el-input type="textarea" v-model="taskTypeForm.standard" placeholder="请输入认定标准"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="名额" prop="number"> |
| | | <el-input v-model="taskTypeForm.number" placeholder="请输入名额数量"></el-input> |
| | | <el-form-item label="名额" prop="peopleNum"> |
| | | <el-input v-model="taskTypeForm.peopleNum" placeholder="请输入名额数量"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | </div> |
| | | <template #footer> |
| | | <el-button @click="() => params.visible = false">取消</el-button> |
| | | <el-button type="primary">确定</el-button> |
| | | <el-button type="primary" @click="addEvaluateTask">确定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import _ from 'lodash'; |
| | | import { add } from '@/api/evaluate/evaluateTask' |
| | | |
| | | export default { |
| | | inject: ['type'], |
| | | props: { |
| | | params: { |
| | | type: Object, |
| | |
| | | return { |
| | | form: { |
| | | taskName: '', |
| | | taskType: [], |
| | | categoryEntities: [], |
| | | candidateCutoffTimeStart: '', |
| | | candidateCutoffTimeEnd: '' |
| | | }, |
| | | taskTypeForm: { |
| | | title: '', |
| | | introduction: '', |
| | | number: '' |
| | | categoryName: '', |
| | | standard: '', |
| | | peopleNum: '' |
| | | }, |
| | | rules: { |
| | | taskName: [ |
| | | { required: true, message: '请输入任务名称', trigger: 'click' }, |
| | | ], |
| | | taskType: [ |
| | | categoryEntities: [ |
| | | { required: true, message: '任务类别不可为空', trigger: 'click' }, |
| | | ], |
| | | candidateCutoffTimeStart: [ |
| | |
| | | ] |
| | | }, |
| | | taskTypeRules: { |
| | | title: [ |
| | | categoryName: [ |
| | | { required: true, message: '请输入类别', trigger: 'click' } |
| | | ], |
| | | introduction: [ |
| | | standard: [ |
| | | { required: true, message: '请输入认定标准', trigger: 'click' } |
| | | ], |
| | | number: [ |
| | | peopleNum: [ |
| | | { required: true, message: '请输入名额', trigger: 'click' } |
| | | ] |
| | | }, |
| | |
| | | }, |
| | | deleteTaskType(index) { |
| | | try { |
| | | this.form.taskType.splice(index, 1) |
| | | this.form.categoryEntities.splice(index, 1) |
| | | this.$message.success('删除当前评优类别成功') |
| | | } catch (error) { |
| | | this.$message.error('删除当前评优类别失败') |
| | |
| | | this.$refs.taskTypeFormRef.validate(vaild => { |
| | | if (!vaild) return |
| | | const curValue = _.cloneDeep(this.taskTypeForm) |
| | | this.form.taskType.push(curValue) |
| | | console.log(curValue); |
| | | this.form.categoryEntities.push(curValue) |
| | | console.log(this.form.categoryEntities); |
| | | this.innerVisible = false |
| | | }) |
| | | }, |
| | | addEvaluateTask() { |
| | | this.$refs.formRef.validate(valid => { |
| | | if (!valid) return |
| | | const data = { |
| | | ..._.cloneDeep(this.form), |
| | | type: this.type() |
| | | } |
| | | add(this.form).then(res => { |
| | | // if () |
| | | console.log(res); |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template #candidateCutoffTimeEnd="{ row }"> |
| | | {{ row.candidateCutoffTimeStart}} |
| | | <div style="text-align: center;">-</div> |
| | | {{ row.candidateCutoffTimeEnd}} |
| | | <div class="time-box"> |
| | | {{ row.candidateCutoffTimeStart }} |
| | | <div>-</div> |
| | | {{ row.candidateCutoffTimeEnd }} |
| | | </div> |
| | | </template> |
| | | <template #evaluateCutoffTimeEnd="{ row }"> |
| | | {{ row.evaluateCutoffTimeStart}} |
| | | <div style="text-align: center;">-</div> |
| | | {{ row.candidateCutoffTimeEnd}} |
| | | <div class="time-box"> |
| | | {{ row.evaluateCutoffTimeStart }} |
| | | <div>-</div> |
| | | {{ row.evaluateCutoffTimeEnd }} |
| | | </div> |
| | | </template> |
| | | <template #menu-left> |
| | | <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增评优任务</el-button> |
| | |
| | | </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="primary" v-if="!row.type" text plain icon="el-icon-position" |
| | | @click="taskPublicDialog(row)">发布</el-button> |
| | | <el-button type="danger" text plain icon="el-icon-delete" @click="rowDel(row)">删除</el-button> |
| | | </template> |
| | | </avue-crud> |
| | |
| | | // 更改option |
| | | !n ? (this.option = option) : (this.option = sectionOption) |
| | | this.page.currentPage = 1; |
| | | // this.onLoad(this.page, params); |
| | | this.onLoad(this.page, params); |
| | | }, |
| | | immediate: true, |
| | | }, |
| | |
| | | } |
| | | }, |
| | | taskPublicDialog(row) { |
| | | console.log(row); |
| | | this.taskPublicParams = { |
| | | visible: true, |
| | | data: row |
| | |
| | | |
| | | let values = { |
| | | ...this.query, |
| | | ...params, |
| | | taskName_like: taskName, |
| | | ...params |
| | | }; |
| | | getList(page.currentPage, page.pageSize, values).then(res => { |
| | | const data = res.data.data; |
| | |
| | | }; |
| | | </script> |
| | | |
| | | <style></style> |
| | | <style lang="scss" scoped> |
| | | .time-box { |
| | | display: inline-block; |
| | | text-align: center; |
| | | } |
| | | </style> |