GuLiMmo
2023-12-15 1797431da64e65041ea1ae5a17a373925a5da313
页面修改
4 files modified
1 files added
178 ■■■■ changed files
src/api/assessment/assessmentScore.js 26 ●●●● patch | view | raw | blame | history
src/views/assessment/components/assessmentWeight.vue 4 ●●● patch | view | raw | blame | history
src/views/assessment/components/resultDetail.vue 95 ●●●●● patch | view | raw | blame | history
src/views/assessment/components/taskResult.vue 35 ●●●● patch | view | raw | blame | history
src/views/evaluate/components/addDialog.vue 18 ●●●●● patch | view | raw | blame | history
src/api/assessment/assessmentScore.js
@@ -1,17 +1,5 @@
import request from '@/axios';
// 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/listGroupByTask/${type}/${assessmentTaskId}`,
@@ -22,4 +10,18 @@
            size,
        }
    })
}
export const getDetailList = (beId, assessmentTaskId) => {
    return request({
        url: '/assessment/assessmentScore/list',
        method: 'get',
        params: {
            beId,
            assessmentTaskId
            // ...params,
            // current,
            // size,
        }
    })
}
src/views/assessment/components/assessmentWeight.vue
@@ -38,8 +38,6 @@
        }
    },
    data() {
        // const validateWeight =
        // const validateRange =
        return {
            defaults: {},
            form: {},
@@ -165,7 +163,7 @@
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 1,
                total: 0,
            },
            selectList: [],
            weightRange: 100,
src/views/assessment/components/resultDetail.vue
New file
@@ -0,0 +1,95 @@
<template>
    <el-dialog title="详情" v-model="params.visible" width="60%" destroy-on-close>
        <avue-crud :data="data" v-model:page="page" :option="option" @on-load="onLoad" >
        </avue-crud>
    </el-dialog>
</template>
<script setup>
import { onMounted, ref } from 'vue';
import { getDetailList } from '@/api/assessment/assessmentScore'
const option = ref({
    height: '400',
    calcHeight: 32,
    tip: true,
    searchMenuSpan: 6,
    border: true,
    index: true,
    addBtn: false,
    viewBtn: false,
    editBtn: false,
    delBtn: false,
    menu: false,
    menuLeft: false,
    header: false,
    column: [
        {
            label: '参与考核人',
            type: 'input',
            prop: 'userName'
        },
        {
            label: '职务',
            type: 'input',
            prop: 'postName'
        },
        {
            label: '权值',
            type: 'input',
            prop: 'weight'
        },
        {
            label: '考核分数',
            type: 'input',
            prop: 'scoreVal'
        },
        {
            label: '考核评语',
            type: 'input',
            prop: 'remark'
        },
        {
            label: '考核状态',
            type: 'input',
            formatter: () => {
                return '评分完成'
            }
        }
    ]
})
const data = ref([])
const page = ref({
    pageSize: 10,
    currentPage: 1,
    total: 0,
})
const $props = defineProps({
    params: {
        type: Object,
        default: () => {
            return {
                visible: false,
            }
        }
    }
})
const onLoad = () => {
    const { beId, assessmentTaskId, visible } = $props.params
    visible && getDetailList(beId, assessmentTaskId).then(res => {
        data.value = res.data.data.records
        console.log(res.data.data);
    })
}
onMounted(() => {
    onLoad()
})
</script>
<style lang="scss" scoped></style>
src/views/assessment/components/taskResult.vue
@@ -10,13 +10,22 @@
            @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">
            <template #menu="{ row }">
                <el-button type="primary" size="small" @click="handleDetail(row)">查看详情</el-button>
            </template>
        </avue-crud>
        <resultDetail :params="detailParams" />
    </div>
</template>
  
<script>
import { getList } from '@/api/assessment/assessmentScore'
import resultDetail from './resultDetail.vue'
export default {
    components: {
        resultDetail
    },
    props: {
        params: {
            type: Object,
@@ -41,13 +50,12 @@
                border: true,
                index: true,
                addBtn: false,
                viewBtn: true,
                viewBtn: false,
                editBtn: false,
                delBtn: false,
                selection: false,
                dialogClickModal: false,
                menu: false,
                menuWidth: 200,
                menu: true,
                column: [
                    {
                        label: "被考核人",
@@ -79,7 +87,8 @@
                pageSize: 10,
                currentPage: 1,
                total: 1,
            }
            },
            detailParams: {}
        }
    },
    watch: {
@@ -206,12 +215,12 @@
        //     });
        // },
        beforeOpen(done, type) {
            if (["edit", "view"].includes(type)) {
                getDetail(this.form.id).then(res => {
                    this.form = res.data.data;
                });
            }
            done();
            // if (["edit", "view"].includes(type)) {
            //     getDetail(this.form.id).then(res => {
            //         this.form = res.data.data;
            //     });
            // }
            // done();
        },
        searchReset() {
            this.query = {};
@@ -259,6 +268,12 @@
                this.loading = false;
                this.selectionClear();
            });
        },
        handleDetail(row) {
            this.detailParams = {
                visible: true,
                ...row
            }
        }
    },
    mounted() {
src/views/evaluate/components/addDialog.vue
@@ -1,5 +1,5 @@
<template>
    <el-dialog v-model="params.visible" :title="params.title" width="60%" destroyOnClose>
    <el-dialog v-model="params.visible" :title="params.title" width="60%" destroy-on-close>
        <div class="content">
            <el-form :model="addForm" label-width="130px" :rules="rules" ref="addFormRef">
                <el-form-item label="任务名称:" prop="taskName">
@@ -25,8 +25,10 @@
                    <div class="select-list">
                        <el-form-item v-for="content in selectGroup" :key="content.deptId" :label="content.deptName"
                            class="select-item">
                            <el-input-number min="1" :max="content.employees.length" v-model="content.val"
                                controls-position="right" placeholder="请输入候选人数量" class="select-num"></el-input-number>
                            <span v-if="!params.type">
                                <el-input-number min="0" :max="content.employees.length || 0" v-model="content.val"
                                    controls-position="right" placeholder="请输入候选人数量" class="select-num"></el-input-number>
                            </span>
                            <el-select v-model="content.users" value-key="id" multiple placeholder="请输入候选人">
                                <el-option v-for="employee in content.employees" :key="employee.id" :label="employee.name"
                                    :value="employee"></el-option>
@@ -39,7 +41,7 @@
                        format="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;" />
                </el-form-item>
                <el-form-item label="评优数量:" prop="evaluateNum">
                    <el-input-number min="1" :max="maxEvaluateNum" v-model="addForm.evaluateNum" controls-position="right"
                    <el-input-number min="0" :max="maxEvaluateNum || 0" v-model="addForm.evaluateNum" controls-position="right"
                        :placeholder="`请输入评优数量(最多不可大于${maxEvaluateNum}人)`" class="evaluateNum-input"></el-input-number>
                </el-form-item>
                <el-form-item label="评优截止日期:" prop="evaluateCutoffTime">
@@ -137,7 +139,8 @@
        'params.visible': {
            handler(val) {
                val && this.initData(website.tenantId);
                this.addForm.type = this.params.type + '';
                this.addForm = this.params.addForm;
                val && (this.addForm.type = this.params.type + '')
                if (this.params.isEdit) {
                    this.addForm = this.params.addForm;
                    this.addForm.type = this.params.type + '';
@@ -160,7 +163,6 @@
                        });
                    });
                    this.maxEvaluateNum += (item.val * 1);
                    console.log(item.val);
                    this.addForm.candidateNum.push({
                        deptId: item.deptId,
                        deptName: item.deptName,
@@ -252,7 +254,7 @@
                });
        },
        setDefaultValue(depts) {
            const params = _.cloneDeep(this.params.addForm.candidateNum);
            const params = _.cloneDeep(this.params.addForm.candidateNum) || []
            params.forEach(item => {
                const value = depts.find(dept => item.deptId === dept.deptId);
                item.employees = value?.employees || [];
@@ -260,7 +262,6 @@
            this.selectGroup = params;
        },
    },
    mounted() { },
};
</script>
@@ -290,6 +291,7 @@
    .evaluateNum-input {
        width: 100%;
        :deep() {
            .el-input__inner {
                text-align: left;