From f0b8ba57ff66a7343d89fb635111aebaaddf5124 Mon Sep 17 00:00:00 2001 From: yangbin <1796443586@qq.com> Date: Wed, 26 Aug 2026 11:43:37 +0800 Subject: [PATCH] =?UTF-8?q?=20=E8=AF=BE=E8=A1=A8=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=B0=8F=E5=8D=A1=E7=89=87=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teachBusiness/timetableAdjust/index.vue | 65 +++++++++++++++---- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/frontend/src/views/teachBusiness/timetableAdjust/index.vue b/frontend/src/views/teachBusiness/timetableAdjust/index.vue index 3e1f24096..eee2dd889 100644 --- a/frontend/src/views/teachBusiness/timetableAdjust/index.vue +++ b/frontend/src/views/teachBusiness/timetableAdjust/index.vue @@ -360,7 +360,7 @@ export default { { label: '已发回', value: 2 }, { label: '已拒绝', value: 3 } ], - statCards: [], + statCards: this.createStatCards([0, 0, 0, 0]), // 新增申请 addVisible: false, addLoading: false, @@ -389,7 +389,10 @@ export default { } }, created() { - this.loadYearOptions().then(() => this.loadList()) + this.loadYearOptions().then(() => { + this.loadStatistics() + this.loadList() + }) }, methods: { /* ---------- 年度下拉(数据来自 /semester/all) ---------- */ @@ -450,12 +453,10 @@ export default { const data = response.data || {} this.tableData = data.records || [] this.total = data.total || 0 - this.refreshStatCards() this.loading = false }).catch(() => { this.tableData = [] this.total = 0 - this.refreshStatCards() this.loading = false }) }, @@ -473,18 +474,56 @@ export default { } this.loadList() }, - refreshStatCards() { - const list = this.tableData - this.statCards = [ - { title: '本页申请', value: list.length, gradient: 'linear-gradient(135deg, #00875a 0%, #00b877 100%)', filter: undefined }, - { title: '教研室待审批', value: list.filter(i => i.jyspzzt === 0).length, gradient: 'linear-gradient(135deg, #e6a23c 0%, #f8b04c 100%)', filter: 0 }, - { title: '教研室已同意', value: list.filter(i => i.jyspzzt === 1).length, gradient: 'linear-gradient(135deg, #409eff 0%, #66b1ff 100%)', filter: 1 }, - { title: '教研室已拒绝', value: list.filter(i => i.jyspzzt === 3).length, gradient: 'linear-gradient(135deg, #f56c6c 0%, #f78989 100%)', filter: 3 } + loadStatistics() { + const baseParams = { + nd: this.defaultNd, + pageNum: 1, + pageSize: 1 + } + const statusFilters = [undefined, 0, 1, 3] + const requests = statusFilters.map(status => { + const params = Object.assign({}, baseParams) + if (status !== undefined) { + params.jyspzzt = status + } + return listScheduleAdjust(params) + .then(response => Number((response.data && response.data.total) || 0)) + .catch(() => 0) + }) + return Promise.all(requests).then(counts => { + this.statCards = this.createStatCards(counts) + }) + }, + createStatCards(counts) { + return [ + { + title: '本页申请', + value: counts[0], + gradient: 'linear-gradient(135deg, #00875a 0%, #00b877 100%)', + filter: undefined + }, + { + title: '教研室待审批', + value: counts[1], + gradient: 'linear-gradient(135deg, #e6a23c 0%, #f8b04c 100%)', + filter: 0 + }, + { + title: '教研室已同意', + value: counts[2], + gradient: 'linear-gradient(135deg, #409eff 0%, #66b1ff 100%)', + filter: 1 + }, + { + title: '教研室已拒绝', + value: counts[3], + gradient: 'linear-gradient(135deg, #f56c6c 0%, #f78989 100%)', + filter: 3 + } ] }, handleStatClick(card) { - if (card.filter === undefined) return - this.queryParams.jyspzzt = this.queryParams.jyspzzt === card.filter ? undefined : card.filter + this.queryParams.jyspzzt = card.filter this.handleQuery() }, /* ---------- 新增申请 ---------- */