From a333fc6d08d6caab706bf40521237aed7f54ff45 Mon Sep 17 00:00:00 2001 From: Yaosanqi137 Date: Sun, 16 Nov 2025 15:13:45 +0800 Subject: [PATCH] feat: add score filter for evaluation list --- .../src/views/EvaluationRecordList.vue | 71 +++++++++++++++++-- 1 file changed, 65 insertions(+), 6 deletions(-) diff --git a/src/fronted/src/views/EvaluationRecordList.vue b/src/fronted/src/views/EvaluationRecordList.vue index ad55a95..82681ea 100644 --- a/src/fronted/src/views/EvaluationRecordList.vue +++ b/src/fronted/src/views/EvaluationRecordList.vue @@ -67,11 +67,34 @@ @change="fetchRecords"> + + + + + + + + + + + + + +
- 人员数:{{ personnelList.length }} - 平均分:{{ averageScore }} + 人员数:{{ filteredPersonnelList.length }} + 平均分:{{ filteredAverageScore }}
@@ -131,11 +154,35 @@ export default { filters: { department: '', personnel: '', - grade: '' + grade: '', + scoreCondition: '', + scoreValue: null } } }, computed: { + filteredPersonnelList() { + let filtered = [...this.personnelList] + + if (this.filters.scoreCondition && this.filters.scoreValue !== null && this.filters.scoreValue !== '') { + const value = Number(this.filters.scoreValue) + filtered = filtered.filter(person => { + const score = Number(person.total_score || 0) + switch (this.filters.scoreCondition) { + case 'gt': + return score > value + case 'eq': + return Math.abs(score - value) < 0.01 + case 'lt': + return score < value + default: + return true + } + }) + } + + return filtered + }, averageScore() { if (!this.personnelList || this.personnelList.length === 0) { return '0.00' @@ -143,6 +190,14 @@ export default { const total = this.personnelList.reduce((sum, item) => sum + Number(item.total_score || 0), 0) const average = total / this.personnelList.length return average.toFixed(2) + }, + filteredAverageScore() { + if (!this.filteredPersonnelList || this.filteredPersonnelList.length === 0) { + return '0.00' + } + const total = this.filteredPersonnelList.reduce((sum, item) => sum + Number(item.total_score || 0), 0) + const average = total / this.filteredPersonnelList.length + return average.toFixed(2) } }, async mounted() { @@ -187,10 +242,14 @@ export default { this.filters = { department: '', personnel: '', - grade: '' + grade: '', + scoreCondition: '', + scoreValue: null } this.fetchRecords() }, + applyScoreFilter() { + }, editPersonnel(row) { this.$router.push({ name: 'EvaluationRecordDetail', @@ -281,7 +340,7 @@ export default { } }, async handleExport() { - if (!this.personnelList.length) { + if (!this.filteredPersonnelList.length) { ElMessage.warning('暂无数据可导出') return }