GuLiMmo
2024-01-04 0ee82baedf5e7611b978040f7285ddfbc436bc34
评优任务页面修改
4 files modified
1 files renamed
2 files added
5 files deleted
1336 ■■■■ changed files
src/api/dict.js 11 ●●●●● patch | view | raw | blame | history
src/option/assessmentTask/assessmentTask.js 15 ●●●●● patch | view | raw | blame | history
src/option/employee/list.js 17 ●●●●● patch | view | raw | blame | history
src/option/evaluate/evaluateTask.js 2 ●●● patch | view | raw | blame | history
src/views/evaluate/components/addAssessors.vue 169 ●●●●● patch | view | raw | blame | history
src/views/evaluate/components/addCandidate.vue 253 ●●●●● patch | view | raw | blame | history
src/views/evaluate/components/addIndividualTask.vue 15 ●●●● patch | view | raw | blame | history
src/views/evaluate/components/addSectionTask.vue 132 ●●●●● patch | view | raw | blame | history
src/views/evaluate/components/selectAssessor.vue 226 ●●●●● patch | view | raw | blame | history
src/views/evaluate/components/taskPublic.vue 196 ●●●●● patch | view | raw | blame | history
src/views/evaluate/components/taskSetting.vue 218 ●●●●● patch | view | raw | blame | history
src/views/evaluate/evaluateTask.vue 82 ●●●● patch | view | raw | blame | history
src/api/dict.js
New file
@@ -0,0 +1,11 @@
import request from '@/axios';
export const getDict = (code) => {
  return request({
    url: '/blade-system/dict/dictionary',
    method: 'get',
    params: {
        code
    }
  })
};
src/option/assessmentTask/assessmentTask.js
@@ -18,8 +18,9 @@
  index: false,
  viewBtn: false,
  delBtn: false,
  editBtn: false,
  editBtn: true,
  selection: true,
  menuWidth: 250,
  dialogClickModal: false,
  column: [
    // {
@@ -39,7 +40,7 @@
      prop: "assessmentNo",
      type: "input",
      search: true,
      width: 100,
      minWidth: 100,
      disabled: true,
      rules: [
        {
@@ -54,6 +55,8 @@
      label: "考核种类",
      prop: "assessmentPurpose",
      type: "select",
      minWidth: 100,
      overHidden: true,
      dicData: [
        {
          label: '月度考核',
@@ -113,7 +116,7 @@
      disabled: true,
      format: "YYYY-MM-DD HH:mm:ss",
      // valueFormat: "YYYY-MM-DD HH:mm:ss",
      width: 200,
      minWidth: 200,
      rules: [
        {
          required: true,
@@ -128,7 +131,7 @@
      type: "date",
      format: "YYYY-MM-DD HH:mm:ss",
      valueFormat: "YYYY-MM-DD HH:mm:ss",
      width: 200,
      minWidth: 200,
      rules: [
        {
          required: true,
@@ -140,7 +143,9 @@
    {
      label: "备注",
      prop: "remark",
      type: "textarea"
      type: "textarea",
      overHidden: true,
      minWidth: 300
    },
    {
      label: "任务状态",
src/option/employee/list.js
@@ -257,6 +257,23 @@
                //     ],
                // },
                {
                    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',
src/option/evaluate/evaluateTask.js
@@ -68,7 +68,7 @@
      //   label: "title",
      // },
      formatter: (row, value) => {
       return 0
       return value
      },
    },
    {
src/views/evaluate/components/addAssessors.vue
File was deleted
src/views/evaluate/components/addCandidate.vue
File was deleted
src/views/evaluate/components/addIndividualTask.vue
File was renamed from src/views/evaluate/components/addDialog.vue
@@ -1,11 +1,11 @@
<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>
@@ -38,15 +38,15 @@
                        </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>
@@ -86,9 +86,8 @@
            default: () => {
                return {
                    visible: false,
                    title: '新增',
                    title: '添加个人评优任务',
                    isEdit: false,
                    type: 0,
                    addForm: {},
                };
            },
src/views/evaluate/components/addSectionTask.vue
New file
@@ -0,0 +1,132 @@
<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>
src/views/evaluate/components/selectAssessor.vue
File was deleted
src/views/evaluate/components/taskPublic.vue
File was deleted
src/views/evaluate/components/taskSetting.vue
File was deleted
src/views/evaluate/evaluateTask.vue
@@ -5,7 +5,8 @@
      :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>
@@ -17,30 +18,21 @@
        {{ 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>
@@ -54,17 +46,15 @@
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 {
@@ -81,8 +71,8 @@
      selectionList: [],
      option: option,
      data: [],
      isAddDialogVisible: false,
      addParams: {},
      addIndividualParams: {},
      addSectionParams: {},
      viewParams: {},
      depts: [],
      // 考核结果参数
@@ -99,12 +89,8 @@
          },
        ],
      },
      // 任务设置参数
      taskSettingParams: {},
      // 信息预览弹窗
      viewEvaluateDetailParams: {},
      // 发布
      taskPublicParams: {},
    };
  },
  watch: {
@@ -118,7 +104,7 @@
        // 更改option
        !n ? (this.option = option) : (this.option = sectionOption)
        this.page.currentPage = 1;
        this.onLoad(this.page, params);
        // this.onLoad(this.page, params);
      },
      immediate: true,
    },
@@ -143,13 +129,17 @@
  },
  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(
@@ -166,17 +156,6 @@
          window.console.log(error);
        }
      );
    },
    editDialog(row) {
      this.addParams = {
        visible: true,
        title: '编辑',
        isEdit: true,
        type: this.defaultTaskType,
        addForm: {
          ...row,
        },
      };
    },
    viewDateilDialog(row) {
      this.viewEvaluateDetailParams = {
@@ -325,19 +304,6 @@
    },
    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() {