GuLiMmo
2023-12-26 ceed4eccea0e2d9d51c6906ca214d251d7d22ca4
src/views/evaluate/components/viewEvaluateDetail.vue
@@ -5,8 +5,11 @@
                <div class="label">{{ item.title }}</div>
                <div class="value" v-if="!item.isSlot">{{ item.value }}</div>
                <div class="table" v-else>
                    <avue-crud :option="item.option" :data="item.data" ref="crud" @current-change="currentChange"
                        @size-change="sizeChange" @refresh-change="refreshChange"></avue-crud>
                    <template v-if="item.evaluateState === 2">
                        <avue-crud :option="item.option" :data="item.data" ref="crud" @current-change="currentChange"
                            @size-change="sizeChange" @refresh-change="refreshChange"></avue-crud>
                    </template>
                    <template v-else>当前任务暂未结束</template>
                </div>
            </div>
        </div>
@@ -14,11 +17,15 @@
</template>
<script setup>
import { reactive, watch } from 'vue';
import { reactive, watch, getCurrentInstance, ref } from 'vue';
import {
    getCandidateList,
    getFinallyResult
} from '@/api/evaluate/evaluateTask'
import _ from 'lodash'
const { findObject } = getCurrentInstance().appContext.config.globalProperties;
const props = defineProps({
    params: {
@@ -36,7 +43,9 @@
    total: 0
})
const taskDateil = reactive([
const taskDateil = ref(null)
const personOption = reactive([
    {
        title: '任务名称',
        prop: 'taskName',
@@ -80,6 +89,12 @@
        width: '50%'
    },
    {
        title: '候选人数量',
        prop: 'candidateNum',
        value: '',
        width: '100%'
    },
    {
        title: '候选结果',
        prop: 'candidateResult',
        value: '',
@@ -90,6 +105,7 @@
        prop: 'finallyResult',
        isSlot: true,
        width: '100%',
        evaluateState: 0,
        data: [],
        option: {
            height: 260,
@@ -103,39 +119,114 @@
            menuLeft: false,
            header: false,
            menuFixed: 'right',
            column: [
                {
                    label: '评优项目',
                    prop: 'evaluateTaskName',
                    type: 'input',
                },
                // {
                //     label: '任务类别',
                //     prop: '',
                //     type: 'input',
                // },
                {
                    label: '候选人',
                    prop: 'userName',
                    type: 'input',
                },
                {
                    label: '部门',
                    prop: 'deptName',
                    type: 'input'
                },
                {
                    label: '票数',
                    prop: 'voteNum',
                    type: 'input'
                }
            ]
            column: [{
                label: '评优项目',
                prop: 'evaluateTaskName',
                type: 'input',
            },
            {
                label: '候选人',
                prop: 'userName',
                type: 'input',
            },
            {
                label: '部门',
                prop: 'deptName',
                type: 'input'
            },
            {
                label: '票数',
                prop: 'voteNum',
                type: 'input'
            }],
        }
    }
])
const sectionOption = reactive([
    {
        title: '任务名称',
        prop: 'taskName',
        value: '',
        width: 'calc(100% / 3)'
    },
    {
        title: '任务类别',
        prop: 'taskType',
        value: '',
        width: 'calc(100% / 3)'
    },
    {
        title: '评定标准',
        prop: 'remark',
        value: '',
        width: 'calc(100% / 3)'
    },
    {
        title: '候选人截止日期',
        prop: 'candidateCutoffTime',
        value: '',
        width: '50%'
    },
    {
        title: '评优截止日期',
        prop: 'evaluateCutoffTime',
        value: '',
        width: '50%'
    },
    {
        title: '评优评先状态',
        prop: 'evaluateState',
        value: '',
        width: '100%'
    },
    {
        title: '评优人数量',
        prop: 'candidateNum',
        value: '',
        width: '100%'
    },
    {
        title: '最终评定结果',
        prop: 'finallyResult',
        isSlot: true,
        width: '100%',
        evaluateState: 0,
        data: [],
        option: {
            height: 260,
            calcHeight: 30,
            tip: false,
            searchShow: true,
            border: true,
            index: true,
            dialogClickModal: false,
            menu: false,
            menuLeft: false,
            header: false,
            menuFixed: 'right',
            column: [{
                label: '评优项目',
                prop: 'evaluateTaskName',
                type: 'input',
            },
            {
                label: '部门',
                prop: 'deptName',
                type: 'input'
            },
            {
                label: '票数',
                prop: 'voteNum',
                type: 'input'
            }],
        }
    }
])
watch(() => props.params.visible, (val) => {
    val && initData()
    if (!val) return
    initData()
}, {
    deep: true
})
@@ -151,11 +242,13 @@
}
const getFinallyList = () => {
    const { type } = props.params
    const { id, evaluateNum } = props.params.data
    const params = {
        evaluateTaskId: id,
        current: 1,
        size: evaluateNum
        size: evaluateNum,
        type: !type ? 2 : 1
    }
    return getFinallyResult(params).then(res => {
        return res.data.data.records
@@ -164,17 +257,35 @@
const initData = async () => {
    const data = props.params.data
    taskDateil.value = !props.params.type ? personOption : sectionOption
    const status = {
        0: '未开始',
        1: '进行中',
        2: '已完成'
    }
    for (const item of taskDateil) {
    for (const item of taskDateil.value) {
        item.value = data[item.prop] || '暂未完善'
        if (['candidateState', 'evaluateState'].includes(item.prop)) {
            item.value = status[item.value]
            item.value = status[data[item.prop]]
            if (item.prop === 'evaluateState') {
                const obj = taskDateil.value.find(s => s.prop === 'finallyResult')
                obj.evaluateState = data[item.prop]
            }
        }
        if (item.prop === 'candidateNum') {
            const candidateNumStrArr = []
            const { candidateNum } = _.cloneDeep(data)
            candidateNum.forEach(item => {
                const userList = []
                item.users.forEach(user => {
                    userList.push(user.name)
                })
                candidateNumStrArr.push(`${item.deptName}(${item.users.length}人):${userList.join('、')}`)
            })
            item.value = candidateNumStrArr.join('\n')
        }
        if (item.prop === 'candidateResult') {
@@ -205,11 +316,11 @@
        if (item.prop === 'finallyResult') {
            const res = await getFinallyList()
            item.data = res
            console.log(item.data);
        }
    }
    // 获取当前数据
    console.log(taskDateil.value);
}
</script>
@@ -250,6 +361,7 @@
            background-color: aliceblue;
            border-right: 1px solid #eeeded;
        }
        .value {
            white-space: pre-line;
        }