4 files modified
1 files renamed
2 files added
5 files deleted
| New file |
| | |
| | | import request from '@/axios'; |
| | | |
| | | export const getDict = (code) => { |
| | | return request({ |
| | | url: '/blade-system/dict/dictionary', |
| | | method: 'get', |
| | | params: { |
| | | code |
| | | } |
| | | }) |
| | | }; |
| | |
| | | index: false, |
| | | viewBtn: false, |
| | | delBtn: false, |
| | | editBtn: false, |
| | | editBtn: true, |
| | | selection: true, |
| | | menuWidth: 250, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | // { |
| | |
| | | prop: "assessmentNo", |
| | | type: "input", |
| | | search: true, |
| | | width: 100, |
| | | minWidth: 100, |
| | | disabled: true, |
| | | rules: [ |
| | | { |
| | |
| | | label: "考核种类", |
| | | prop: "assessmentPurpose", |
| | | type: "select", |
| | | minWidth: 100, |
| | | overHidden: true, |
| | | dicData: [ |
| | | { |
| | | label: '月度考核', |
| | |
| | | disabled: true, |
| | | format: "YYYY-MM-DD HH:mm:ss", |
| | | // valueFormat: "YYYY-MM-DD HH:mm:ss", |
| | | width: 200, |
| | | minWidth: 200, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | type: "date", |
| | | format: "YYYY-MM-DD HH:mm:ss", |
| | | valueFormat: "YYYY-MM-DD HH:mm:ss", |
| | | width: 200, |
| | | minWidth: 200, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | { |
| | | label: "备注", |
| | | prop: "remark", |
| | | type: "textarea" |
| | | type: "textarea", |
| | | overHidden: true, |
| | | minWidth: 300 |
| | | }, |
| | | { |
| | | label: "任务状态", |
| | |
| | | // ], |
| | | // }, |
| | | { |
| | | label: '员工类型', |
| | | prop: 'employeeType', |
| | | type: 'select', |
| | | dicUrl: '/blade-system/dict/dictionary?code=employee_type', |
| | | props: { |
| | | label: 'dictValue', |
| | | value: 'dictKey', |
| | | }, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择员工类型', |
| | | trigger: 'click', |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | label: '所属部门', |
| | | prop: 'deptId', |
| | | type: 'tree', |
| | |
| | | // label: "title", |
| | | // }, |
| | | formatter: (row, value) => { |
| | | return 0 |
| | | return value |
| | | }, |
| | | }, |
| | | { |
| File was renamed from src/views/evaluate/components/addDialog.vue |
| | |
| | | <template> |
| | | <el-dialog v-model="params.visible" :title="params.title" width="50%" @close="dialogClose"> |
| | | <div class="content"> |
| | | <el-form :model="form" ref="formRef" :rules="rules" label-width="120px" label-position="top"> |
| | | <el-form-item label="任务名称:" prop="taskName"> |
| | | <el-form :model="form" ref="formRef" :rules="rules" label-position="top"> |
| | | <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="taskType"> |
| | | <ul class="type-list"> |
| | | <li class="type-item"> |
| | | <div class="title">类别</div> |
| | |
| | | </li> |
| | | </ul> |
| | | </el-form-item> |
| | | <el-form-item label="第一轮任务结束时间:" required> |
| | | <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%;" /> |
| | | 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%;" /> |
| | | value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%;" /> |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: '新增', |
| | | title: '添加个人评优任务', |
| | | isEdit: false, |
| | | type: 0, |
| | | addForm: {}, |
| | | }; |
| | | }, |
| New file |
| | |
| | | <template> |
| | | <el-dialog v-model="params.visible" :title="params.title" width="50%" @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> |
| | | <el-form-item label="认定标准描述" prop="remark"> |
| | | <el-input v-model="form.remark" 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"> |
| | | {{ 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="请选择任务开始时间" |
| | | 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> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <template #footer> |
| | | <el-button @click="() => params.visible = false">取消</el-button> |
| | | <el-button type="primary" @click="submit">确定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getDict } from '@/api/dict' |
| | | import _ from 'lodash'; |
| | | |
| | | export default { |
| | | props: { |
| | | params: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: '新增部门评优任务', |
| | | isEdit: false, |
| | | addForm: {}, |
| | | }; |
| | | }, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | form: { |
| | | taskName: '', |
| | | awards: '', |
| | | remark: '', |
| | | employees: [], |
| | | candidateCutoffTimeStart: '', |
| | | candidateCutoffTimeEnd: '' |
| | | }, |
| | | rules: { |
| | | taskName: [ |
| | | { required: true, message: '请输入任务名称', trigger: 'click' }, |
| | | ], |
| | | awards: [ |
| | | { required: true, message: '请输入评优奖项', trigger: 'click' }, |
| | | ], |
| | | remark: [ |
| | | { required: true, message: '请输入认定标准', trigger: 'click' }, |
| | | ], |
| | | employees: [ |
| | | { required: true, message: '请选择评定人员', trigger: 'click' }, |
| | | ], |
| | | candidateCutoffTimeStart: [ |
| | | { required: true, message: '请选择任务开始时间', trigger: 'click' }, |
| | | ], |
| | | candidateCutoffTimeEnd: [ |
| | | { required: true, message: '请选择任务开始时间', trigger: 'click' }, |
| | | ] |
| | | }, |
| | | employeeDict: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | dialogClose() { |
| | | this.$refs.formRef.resetFields() |
| | | }, |
| | | submit() { |
| | | this.$refs.formRef.validate(vaild => { |
| | | console.log(this.form); |
| | | }) |
| | | }, |
| | | initDict() { |
| | | getDict('employee_type').then(res => { |
| | | const { code, data } = res.data |
| | | if (code !== 200) { |
| | | return this.$message.error('人员类型字典加载失败') |
| | | } |
| | | this.employeeDict = data |
| | | }) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initDict() |
| | | } |
| | | }; |
| | | </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); |
| | | } |
| | | } |
| | | </style> |
| | |
| | | :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 || '开始时间未完善' }} |
| | | <div style="text-align: center;">-</div> |
| | |
| | | {{ row.candidateCutoffTimeEnd || '结束时间未完善' }} |
| | | </template> |
| | | <template #menu-left> |
| | | <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button> |
| | | <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增评优任务</el-button> |
| | | <el-button type="danger" icon="el-icon-delete" plain v-if="permission.evaluateTask_delete" |
| | | @click="handleDelete">删除</el-button> |
| | | <!-- <el-button type="warning" plain icon="el-icon-download" @click="handleExport">导出</el-button> --> |
| | | </template> |
| | | <template #menu="{ size, row, index }"> |
| | | <el-button type="primary" text plain icon="el-icon-setting" @click="taskSettingDialog(row)">任务配置</el-button> |
| | | <el-button type="primary" text plain icon="el-icon-view" @click="viewDateilDialog(row)">详情</el-button> |
| | | <!-- <el-button type="primary" text plain icon="el-icon-edit" @click="editDialog(row)">编辑</el-button> --> |
| | | <!-- v-if="row.candidateState === 2 && row.evaluateState === 0" --> |
| | | <el-button type="primary" text plain icon="el-icon-position" @click="taskPublicHandler(row)" |
| | | >发布</el-button> |
| | | <!-- <el-button type="primary" text plain icon="el-icon-download">导出</el-button> --> |
| | | <el-button type="danger" text plain icon="el-icon-delete" @click="rowDel(row)">删除</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <!-- 新增编辑弹窗 --> |
| | | <add-dialog :params="addParams" @refreshTable="this.onLoad" /> |
| | | <!-- 候选人添加及配置 --> |
| | | <task-setting :params="taskSettingParams" /> |
| | | <!-- 新增个人评优任务弹窗 --> |
| | | <addIndividualTask :params="addIndividualParams" @refreshTable="this.onLoad" /> |
| | | <addSectionTask :params="addSectionParams" @refreshTable="this.onLoad" /> |
| | | <!-- 预览 --> |
| | | <viewEvaluateDetail :params="viewEvaluateDetailParams" /> |
| | | <!-- 发布 --> |
| | | <taskPublic :params="taskPublicParams"></taskPublic> |
| | | </basic-container> |
| | | </template> |
| | | |
| | |
| | | import { dateNow } from '@/utils/date'; |
| | | import NProgress from 'nprogress'; |
| | | import 'nprogress/nprogress.css'; |
| | | import addDialog from './components/addDialog.vue';; |
| | | import addIndividualTask from './components/addIndividualTask.vue'; |
| | | import addSectionTask from './components/addSectionTask.vue'; |
| | | import viewEvaluateDetail from './components/viewEvaluateDetail.vue'; |
| | | import taskSetting from './components/taskSetting.vue'; |
| | | import taskPublic from './components/taskPublic.vue'; |
| | | |
| | | export default { |
| | | components: { |
| | | addDialog, |
| | | taskSetting, |
| | | viewEvaluateDetail, |
| | | taskPublic |
| | | addIndividualTask, |
| | | addSectionTask, |
| | | viewEvaluateDetail |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | selectionList: [], |
| | | option: option, |
| | | data: [], |
| | | isAddDialogVisible: false, |
| | | addParams: {}, |
| | | addIndividualParams: {}, |
| | | addSectionParams: {}, |
| | | viewParams: {}, |
| | | depts: [], |
| | | // 考核结果参数 |
| | |
| | | }, |
| | | ], |
| | | }, |
| | | // 任务设置参数 |
| | | taskSettingParams: {}, |
| | | // 信息预览弹窗 |
| | | viewEvaluateDetailParams: {}, |
| | | // 发布 |
| | | taskPublicParams: {}, |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | // 更改option |
| | | !n ? (this.option = option) : (this.option = sectionOption) |
| | | this.page.currentPage = 1; |
| | | this.onLoad(this.page, params); |
| | | // this.onLoad(this.page, params); |
| | | }, |
| | | immediate: true, |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | handleAdd() { |
| | | this.addParams = { |
| | | if (!this.defaultTaskType) { |
| | | this.addIndividualParams = { |
| | | visible: true, |
| | | title: '添加个人评优任务' |
| | | } |
| | | return |
| | | } |
| | | this.addSectionParams = { |
| | | visible: true, |
| | | title: '添加', |
| | | isEdit: false, |
| | | type: this.defaultTaskType, |
| | | addForm: {}, |
| | | }; |
| | | title: '添加部门评优任务' |
| | | } |
| | | }, |
| | | rowSave(row, done, loading) { |
| | | add(row).then( |
| | |
| | | window.console.log(error); |
| | | } |
| | | ); |
| | | }, |
| | | editDialog(row) { |
| | | this.addParams = { |
| | | visible: true, |
| | | title: '编辑', |
| | | isEdit: true, |
| | | type: this.defaultTaskType, |
| | | addForm: { |
| | | ...row, |
| | | }, |
| | | }; |
| | | }, |
| | | viewDateilDialog(row) { |
| | | this.viewEvaluateDetailParams = { |
| | |
| | | }, |
| | | tabChange(value) { |
| | | this.defaultTaskType = value.prop; |
| | | }, |
| | | taskSettingDialog(row) { |
| | | this.taskSettingParams = { |
| | | visible: true, |
| | | type: this.defaultTaskType, |
| | | task: row |
| | | } |
| | | }, |
| | | taskPublicHandler(row) { |
| | | this.taskPublicParams = { |
| | | visible: true, |
| | | data: row |
| | | } |
| | | } |
| | | }, |
| | | provide() { |