From fa528baf33eeb958aa113522317ba5215aaa594d Mon Sep 17 00:00:00 2001 From: biss Date: Sun, 9 Aug 2026 14:20:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8E=92=E8=AF=BE=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/BaseDataView.vue | 40 +++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/web/src/views/BaseDataView.vue b/web/src/views/BaseDataView.vue index 164cf4f..2106aa8 100644 --- a/web/src/views/BaseDataView.vue +++ b/web/src/views/BaseDataView.vue @@ -90,6 +90,12 @@ const filteredRows = computed(() => { .filter(Boolean).some((value) => String(value).toLowerCase().includes(q)), ) }) +const currentPage = ref(1) +const pageSize = ref(20) +const pagedRows = computed(() => filteredRows.value.slice( + (currentPage.value - 1) * pageSize.value, + currentPage.value * pageSize.value, +)) const venueNatureOptions = [ { value: 1, label: '普通教室' }, { value: 2, label: '实验室' }, @@ -99,8 +105,17 @@ const venueNatureOptions = [ { value: 32, label: '体育场地' }, { value: 64, label: '艺术场地' }, ] -const venueNatureLabel = (value: number) => venueNatureOptions - .filter((item) => (Number(value) & item.value) !== 0) +const venueNatureValue = (value: unknown) => { + if (typeof value === 'number') return value + if (typeof value !== 'string') return 0 + const names: Record = { + GeneralClassroom: 1, Laboratory: 2, TrainingRoom: 4, ComputerLab: 8, + LanguageLab: 16, SportsVenue: 32, ArtsVenue: 64, + } + return value.split(',').reduce((sum, name) => sum | (names[name.trim()] ?? 0), 0) +} +const venueNatureLabel = (value: unknown) => venueNatureOptions + .filter((item) => (venueNatureValue(value) & item.value) !== 0) .map((item) => item.label) .join('、') || '未设置' @@ -116,7 +131,7 @@ function resetForm(row?: Row) { capacity: 60, roomType: '普通教室', teachingVenueNatures: [1], equipment: '', }, row ?? {}) if (active.value === 'classrooms') { - const value = Number((row as any)?.teachingVenueNature ?? 1) + const value = venueNatureValue((row as any)?.teachingVenueNature ?? 1) form.teachingVenueNatures = venueNatureOptions .filter((item) => (value & item.value) !== 0) .map((item) => item.value) @@ -125,6 +140,7 @@ function resetForm(row?: Row) { async function load() { loading.value = true + currentPage.value = 1 try { rows.value = (await http.get(`/base-data/${active.value}`)).data } catch (error) { @@ -290,6 +306,11 @@ onMounted(async () => { await Promise.all([load(), loadReferences()]) }) +watch( + () => keyword.value, + () => { currentPage.value = 1 }, +) + watch( () => route.meta.baseGroup, async () => { @@ -363,7 +384,7 @@ watch(
@@ -406,7 +427,7 @@ watch( +