GuLiMmo
2023-12-15 2d0c55111e964ac78f5698410475112b28af7f3b
考核结果、考核权重设置页面修改
5 files modified
141 ■■■■■ changed files
src/api/assessment/assessmentScore.js 16 ●●●● patch | view | raw | blame | history
src/option/assessmentTask/assessmentTask.js 2 ●●●●● patch | view | raw | blame | history
src/views/assessment/assessmentTaskSetting.vue 1 ●●●● patch | view | raw | blame | history
src/views/assessment/components/assessmentWeight.vue 84 ●●●● patch | view | raw | blame | history
src/views/assessment/components/taskResult.vue 38 ●●●●● patch | view | raw | blame | history
src/api/assessment/assessmentScore.js
@@ -1,8 +1,20 @@
import request from '@/axios';
export const getList = (current, size, params) => {
// export const getList = (current, size, params) => {
//     return request({
//         url: '/assessment/assessmentScore/list',
//         method: 'get',
//         params: {
//             ...params,
//             current,
//             size,
//         }
//     })
// }
export const getList = (current, size, params, type, assessmentTaskId) => {
    return request({
        url: '/assessment/assessmentScore/list',
        url: `/assessment/assessmentScore/listGroupByTask/${type}/${assessmentTaskId}`,
        method: 'get',
        params: {
            ...params,
src/option/assessmentTask/assessmentTask.js
@@ -57,6 +57,7 @@
      type: "select",
      width: 100,
      disabled: true,
      display: false,
      formatter: (res) => {
        return res.type === 0? '个人考核' : '部门考核';
      },
@@ -118,6 +119,7 @@
      label: "任务状态",
      prop: "isAssessmentOk",
      type: "input",
      display: false,
      width: 100,
      slot: true
    },
src/views/assessment/assessmentTaskSetting.vue
@@ -204,6 +204,7 @@
        handleWeight(row) {
            this.weightParams = { ...row }
            this.defaultTaskType && (this.weightParams = { ...row, isDept: true })
            this.weightParams.type = this.defaultTaskType
            this.isWeight = false
        },
        changeIs(is) {
src/views/assessment/components/assessmentWeight.vue
@@ -3,7 +3,7 @@
        <el-page-header @back="back" class="header">
            <template #content>
                <ul class="info">
                    <li>考核权重</li>
                    <li>{{ !params.type ? '个人考核权重' : '部门考核权重' }}</li>
                    <li v-if="!params.isDept">
                        <el-tag size="large">被考核人:{{ params.name }}</el-tag>
                    </li>
@@ -16,10 +16,11 @@
                </ul>
            </template>
        </el-page-header>
        <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
            :data="data" :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">
        <avue-crud :option="option" v-model:defaults="defaults" v-model:search="search" v-model:page="page" v-model="form"
            :table-loading="loading" :data="data" :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">
        </avue-crud>
    </div>
</template>
@@ -37,7 +38,10 @@
        }
    },
    data() {
        // const validateWeight =
        // const validateRange =
        return {
            defaults: {},
            form: {},
            query: {},
            search: {},
@@ -111,44 +115,24 @@
                            },
                        ],
                    },
                    // {
                    //     label: "被考核人",
                    //     prop: "userName",
                    //     type: "input",
                    //     hide: true,
                    //     value: this.params.name,
                    //     disabled: true,
                    //     rules: [
                    //         {
                    //             required: true,
                    //             message: '请填写被考核人职务',
                    //             trigger: 'click',
                    //         },
                    //     ],
                    // },
                    // {
                    //     label: "被考核人职务",
                    //     prop: "postName",
                    //     hide: true,
                    //     type: "input",
                    //     value: this.params.postName,
                    //     disabled: true,
                    //     rules: [
                    //         {
                    //             required: true,
                    //             message: '请填写被考核人职务',
                    //             trigger: 'click',
                    //         },
                    //     ],
                    // },
                    {
                        label: "权值",
                        prop: "weight",
                        type: "input",
                        rules: [
                            {
                                validator: (rule, value, callback) => {
                                    if (value === '') {
                                        callback(new Error('请输入权值'))
                                    } else {
                                        if (value > this.weightRange) {
                                            callback(new Error('输入的权值不可超过' + this.weightRange))
                                        } else {
                                            callback()
                                        }
                                    }
                                },
                                required: true,
                                message: '请填写权值',
                                trigger: 'click',
                            },
                        ],
@@ -160,8 +144,18 @@
                        placeholder: '评分范围(100分制)±N',
                        rules: [
                            {
                                validator: (rule, value, callback) => {
                                    if (value === '') {
                                        callback(new Error('请填写评分范围'))
                                    } else {
                                        if (value > 100) {
                                            callback(new Error('输入的请填写评分范围不可超过100'))
                                        } else {
                                            callback()
                                        }
                                    }
                                },
                                required: true,
                                message: '请填写评分范围',
                                trigger: 'click',
                            },
                        ],
@@ -173,7 +167,8 @@
                currentPage: 1,
                total: 1,
            },
            selectList: []
            selectList: [],
            weightRange: 100,
        }
    },
    watch: {
@@ -186,6 +181,7 @@
            !this.params.isDept ? row.userId = this.params.id : row.deptId = this.params.id
            const toUser = this.selectList.find(option => option.name === row.toUserName)
            row.toUserId = toUser.id
            console.log(row);
            (this.params.isDept ? addDept(row) : add(row)).then(() => {
                this.onLoad(this.page);
                this.$message({
@@ -325,14 +321,22 @@
                userId: this.params.id
            });
            (this.params.isDept ? getDeptList(page.currentPage, page.pageSize, values) : getList(page.currentPage, page.pageSize, values)).then(res => {
                console.log(res);
                const data = res.data.data;
                this.page.total = data.total;
                this.data = data.records;
                this.loading = false;
                this.setDefaultWeightRange(data.records)
                this.selectionClear();
            });
        }
        },
        setDefaultWeightRange(data) {
            let weightrange = 100
            data.forEach(item => {
                weightrange -= item.weight
            })
            this.weightRange = weightrange
            this.defaults.weight.placeholder = `请输入权重(当前权重最大不可超过${weightrange})`
        },
    },
    mounted() {
    }
src/views/assessment/components/taskResult.vue
@@ -2,11 +2,11 @@
    <div class="container">
        <el-page-header @back="back" class="header">
            <template #content>
                <span>考核结果</span>
                <span>{{ !params.type ? '个人考核结果' : '部门考核结果' }}</span>
            </template>
        </el-page-header>
        <avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
            :data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
            :data="data" :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">
@@ -49,17 +49,10 @@
                menu: false,
                menuWidth: 200,
                column: [
                    // {
                    //     label: "考核编号",
                    //     type: 'select',
                    //     hide: true,
                    //     search: true
                    // },
                    {
                        label: "被考核人",
                        prop: "userName",
                        type: "input",
                        // search: true
                    },
                    {
                        label: "工号",
@@ -75,11 +68,6 @@
                        prop: "postName",
                        type: "input",
                    },
                    // {
                    //     label: "人员类型",
                    //     prop: "personnelType",
                    //     type: "input",
                    // },
                    {
                        label: "考核分",
                        prop: "scoreVal",
@@ -98,8 +86,23 @@
        'params': {
            handler(val) {
                this.rowData = val
                this.query.assessmentTaskId = val.id
                this.query.type = val.type
                // this.query.assessmentTaskId = val.id
                // this.query.type = val.type
                if (val.type) {
                    const column = [
                        {
                            label: "被考核部门",
                            prop: "deptName",
                            type: "input",
                        },
                        {
                            label: "考核分数",
                            prop: "scoreVal",
                            type: "input",
                        }
                    ]
                    this.option.column = column
                }
            },
            deep: true,
            immediate: true,
@@ -248,7 +251,8 @@
                ...params
            };
            getList(page.currentPage, page.pageSize, values).then(res => {
            const { id, type } = this.params
            getList(page.currentPage, page.pageSize, values, type, id).then(res => {
                const data = res.data.data;
                this.page.total = data.total;
                this.data = data.records;