GuLiMmo
2024-01-15 730b4e1b8737e86ca08cfebb066249baaf46e869
提交
3 files modified
1 files added
247 ■■■■■ changed files
src/api/assessment/assessmentScore.js 22 ●●●●● patch | view | raw | blame | history
src/option/assessmentTask/assessmentTask.js 31 ●●●● patch | view | raw | blame | history
src/views/assessment/assessmentTask.vue 29 ●●●● patch | view | raw | blame | history
src/views/assessment/components/assessorDialog.vue 165 ●●●●● patch | view | raw | blame | history
src/api/assessment/assessmentScore.js
@@ -24,4 +24,26 @@
            // size,
        }
    })
}
export const getAsserorDetailList = (current, size, params) => {
    return request({
        url: '/assessment/assessmentScore/list',
        method: 'get',
        params: {
            ...params,
            current,
            size,
        }
    })
}
export const sendBackAsseror = (ids) => {
    return request({
        url: '/assessment/assessmentScore/remove',
        method: 'post',
        params: {
            ids
        }
    })
}
src/option/assessmentTask/assessmentTask.js
@@ -18,7 +18,7 @@
  index: false,
  viewBtn: false,
  delBtn: false,
  editBtn: true,
  editBtn: false,
  selection: true,
  menuWidth: 250,
  dialogClickModal: false,
@@ -112,15 +112,26 @@
      label: "开始时间",
      prop: "startTime",
      type: "date",
      value: getNowDate(),
      disabled: true,
      // disabled: true,
      format: "YYYY-MM-DD HH:mm:ss",
      // valueFormat: "YYYY-MM-DD HH:mm:ss",
      valueFormat: "YYYY-MM-DD HH:mm:ss",
      minWidth: 200,
      rules: [
        {
          required: true,
          message: '请选择开始时间',
          trigger: 'click',
        },
        {
          validator: (rule, value, callback) => {
            const nowDate = new Date().getTime() - (24*60*60*1000)
            const selectDate = new Date(value).getTime()
            if (selectDate < nowDate) {
              callback(new Error('选择的时候不能小于当前时间'))
            } else {
              callback()
            }
          },
          trigger: 'click',
        },
      ],
@@ -138,6 +149,18 @@
          message: '请选择结束时间',
          trigger: 'click',
        },
        {
          validator: (rule, value, callback) => {
            const nowDate = new Date().getTime() - (24*60*60*1000)
            const selectDate = new Date(value).getTime()
            if (selectDate < nowDate) {
              callback(new Error('选择的时候不能小于当前时间'))
            } else {
              callback()
            }
          },
          trigger: 'click',
        },
      ],
    },
    {
src/views/assessment/assessmentTask.vue
@@ -19,12 +19,19 @@
            导出
          </el-button> -->
        </template>
        <template #menu="{ row }">
        <template #menu="{ row, index, size }">
          <el-button type="primary" icon="el-icon-setting" text @click="handleTaskSetting(row)">
            考核设置
          </el-button>
          <el-button type="primary" icon="el-icon-view" text @click="handleAssessorDetails(row)">
            考核结果
          </el-button>
          <el-button type="primary" icon="el-icon-view" text @click="handleAssessorList(row)">
            考核任务人员详情
          </el-button>
          <el-button type="success" icon="el-icon-edit" text v-if="row.isAssessmentOk === -1"
            @click="$refs.crud.rowEdit(row,index)">
            编辑
          </el-button>
          <!-- <el-button type="primary" icon="el-icon-view" text @click="handleTaskResult(row)">
            考核结果
@@ -41,8 +48,10 @@
    <!-- <template v-else>
      <taskResult :params="resultParams" @changeIs="changeIs" />
    </template> -->
    <!-- 考核人员详情 -->
    <!-- 考核结果详情 -->
    <assessorDetails :params="detailsParams" />
    <!-- 考核人员详情 -->
    <assessorDialog :params="assessorDialogParams" />
  </basic-container>
</template>
@@ -60,13 +69,15 @@
import addTaskDialog from "./components/addTaskDialog.vue";
import assessmentTaskSetting from "./components/assessmentTaskSetting.vue";
import assessorDetails from "./components/assessorDetails.vue";
import assessorDialog from "./components/assessorDialog.vue";
export default {
  components: {
    taskResult,
    addTaskDialog,
    assessmentTaskSetting,
    assessorDetails
    assessorDetails,
    assessorDialog
  },
  data() {
    return {
@@ -98,8 +109,8 @@
          }
        ]
      },
      // 人员详情参数
      detailsParams: {}
      detailsParams: {},
      assessorDialogParams: {}
    };
  },
  watch: {
@@ -324,7 +335,7 @@
        },
        '0': {
          text: '进行中',
          type: 'primary'
          type: ''
        },
        '1': {
          text: '已完成',
@@ -338,6 +349,12 @@
        visible: true,
        data: row
      }
    },
    handleAssessorList(row) {
      this.assessorDialogParams = {
        visible: true,
        data: row
      }
    }
  }
};
src/views/assessment/components/assessorDialog.vue
New file
@@ -0,0 +1,165 @@
<template>
    <el-dialog v-model="params.visible" :title="params.data?.assessmentNo ? `考核编号(${params.data.assessmentNo})` : '考核人员详情'"
        width="65%" @open="dialogOpen">
        <avue-crud :option="option" :table-loading="loading" :data="data" v-model:page="page" @search-change="searchChange"
            @search-reset="searchReset" @current-change="currentChange" @size-change="sizeChange"
            @refresh-change="refreshChange" @on-load="onLoad">
            <template #menu="{ row }">
                <el-button type="warning" icon="el-icon-warning" text @click="sendBack(row)">驳回</el-button>
            </template>
        </avue-crud>
    </el-dialog>
</template>
<script>
import { getAsserorDetailList, sendBackAsseror } from '@/api/assessment/assessmentScore'
export default {
    props: {
        params: {
            type: Object,
            default: () => {
                return {
                    visible: false,
                    data: {}
                }
            }
        }
    },
    data() {
        return {
            loading: true,
            query: {},
            data: [],
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 0
            },
            option: {
                height: '400',
                calcHeight: 30,
                tip: false,
                searchShow: true,
                searchMenuSpan: 6,
                border: true,
                index: true,
                viewBtn: false,
                addBtn: false,
                editBtn: false,
                delBtn: false,
                viewBtn: false,
                menuWidth: 150,
                dialogClickModal: false,
                column: [
                    {
                        label: "工号",
                        prop: 'code',
                        type: "input",
                    },
                    {
                        label: "考核人",
                        prop: "scoreUserName",
                        type: "input",
                        search: true,
                    },
                    {
                        label: "部门",
                        prop: "scoreDeptName",
                        type: "select",
                        // dicUrl: '/api/blade-system/dept/lazy-list?parentId=1737282385453543425',
                        // search: true,
                        // props: {
                        //     label: 'deptName',
                        //     value: 'fullName'
                        // },
                        overHidden: true
                    },
                    {
                        label: "职务",
                        prop: "scorePostName",
                        type: "input",
                    },
                    {
                        label: "被考核人",
                        prop: "userName",
                        type: "input",
                    },
                    {
                        label: "考核分",
                        prop: "scoreVal",
                        type: "input",
                    }
                ]
            },
            detailParams: {}
        }
    },
    methods: {
        searchReset() {
            this.query = {};
            this.onLoad(this.page, { type: this.defaultTaskType });
        },
        searchChange(params, done) {
            this.query = {
                ...params,
            };
            this.page.currentPage = 1;
            this.onLoad(this.page, params);
            done();
        },
        currentChange(currentPage) {
            this.page.currentPage = currentPage;
        },
        sizeChange(pageSize) {
            this.page.pageSize = pageSize;
        },
        refreshChange() {
            this.onLoad(this.page, this.query);
        },
        onLoad(page, params = {}) {
            this.loading = true;
            const { id } = this.params.data
            const {
            } = this.query;
            let values = {
                ...this.query,
                ...params,
                assessmentTaskId: id
            };
            getAsserorDetailList(page.currentPage, page.pageSize, values).then(res => {
                const data = res.data.data;
                this.page.total = data.total;
                this.data = data.records;
                this.loading = false;
            });
        },
        dialogOpen() {
            this.onLoad(this.page)
        },
        sendBack(row) {
            this.$confirm("是否驳回当前记录?", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            }).then(res => {
                const { id } = row
                sendBackAsseror(id).then(res => {
                    if (res.data.code !== 200) return this.$message.error(res.data.msg)
                    this.$message({
                        type: "success",
                        message: "驳回成功!"
                    });
                    this.onLoad(this.page);
                })
            })
        }
    }
}
</script>
<style lang="scss" scoped></style>