Industrial-image-management.../src/views/performance/evaluate.vue

71 lines
2.1 KiB
Vue

<template>
<a-card title="员工绩效评估">
<a-form layout="inline" style="margin-bottom: 16px">
<a-form-item label="绩效周期">
<a-select v-model="query.periodId" placeholder="请选择周期" allow-clear>
<a-option v-for="p in periods" :key="p.id" :value="p.id">{{ p.name }}</a-option>
</a-select>
</a-form-item>
<a-form-item label="维度">
<a-select v-model="query.dimensionId" placeholder="请选择维度" allow-clear>
<a-option v-for="d in dimensions" :key="d.id" :value="d.id">{{ d.name }}</a-option>
</a-select>
</a-form-item>
<a-form-item>
<a-input v-model="query.keyword" placeholder="姓名/工号" />
</a-form-item>
<a-form-item>
<a-button type="primary" @click="load">查询</a-button>
</a-form-item>
</a-form>
<a-table :data="data" :columns="columns" row-key="id">
<template #action="{ record }">
<a-button type="text" @click="openEvaluate(record)">
开始评估
</a-button>
</template>
</a-table>
</a-card>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { getDimensionList, getEvaluatePage, getPeriodList, startEvaluate } from '@/apis/performance'
import type { EvaluateQuery, EvaluateResp } from '@/apis/performance/type'
const periods = ref([])
const dimensions = ref([])
const query = ref<EvaluateQuery>({})
const data = ref<EvaluateResp[]>([])
const columns = [
{ title: '员工', dataIndex: 'userName' },
{ title: '维度', dataIndex: 'dimensionName' },
{ title: '周期', dataIndex: 'periodName' },
{ title: '评分', dataIndex: 'score' },
{ title: '操作', slotName: 'action' },
]
const load = async () => {
data.value = await getEvaluatePage(query.value)
}
onMounted(async () => {
periods.value = await getPeriodList()
dimensions.value = await getDimensionList()
load()
})
const openEvaluate = async (row: EvaluateResp) => {
await startEvaluate({
userId: row.userId,
dimensionId: row.dimensionId,
ruleId: row.ruleId,
periodId: row.periodId,
})
Message.success('评估已启动')
load()
}
</script>