From aa4f1615ce08ea84ea7270e43fc4c542aa7995df Mon Sep 17 00:00:00 2001 From: clz Date: Tue, 3 Mar 2026 20:50:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E5=90=84=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B4=A6=E5=8D=95=E5=88=86=E7=B1=BB=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bills 和 review 页面改从 $lib/data/categories 导入分类列表, 删除本地重复硬编码的旧版 13 项分类。 BillDetailDrawer 的 categories prop 类型改为 readonly string[] 以兼容 as const 导出的元组类型。 --- web/src/lib/components/analysis/BillDetailDrawer.svelte | 2 +- web/src/routes/bills/+page.svelte | 8 ++------ web/src/routes/review/+page.svelte | 8 ++------ 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/web/src/lib/components/analysis/BillDetailDrawer.svelte b/web/src/lib/components/analysis/BillDetailDrawer.svelte index da790c1..b0564ad 100644 --- a/web/src/lib/components/analysis/BillDetailDrawer.svelte +++ b/web/src/lib/components/analysis/BillDetailDrawer.svelte @@ -25,7 +25,7 @@ interface Props { open?: boolean; record?: UIBill | null; - categories?: string[]; + categories?: readonly string[]; title?: string; viewDescription?: string; diff --git a/web/src/routes/bills/+page.svelte b/web/src/routes/bills/+page.svelte index a1567a6..e400c2f 100644 --- a/web/src/routes/bills/+page.svelte +++ b/web/src/routes/bills/+page.svelte @@ -14,6 +14,7 @@ import ManualBillInput from '$lib/components/bills/ManualBillInput.svelte'; import BillDetailDrawer from '$lib/components/analysis/BillDetailDrawer.svelte'; import { cleanedBillToUIBill, type UIBill } from '$lib/models/bill'; + import { categories } from '$lib/data/categories'; import { formatLocalDate, formatDateTime } from '$lib/utils'; import Loader2 from '@lucide/svelte/icons/loader-2'; import AlertCircle from '@lucide/svelte/icons/alert-circle'; @@ -89,12 +90,7 @@ applyFilters(); } - // 分类列表(硬编码常用分类) - const categories = [ - '餐饮美食', '交通出行', '生活服务', '日用百货', - '服饰美容', '医疗健康', '通讯话费', '住房缴费', - '文化娱乐', '金融理财', '教育培训', '人情往来', '其他' - ]; + async function loadBills() { isLoading = true; diff --git a/web/src/routes/review/+page.svelte b/web/src/routes/review/+page.svelte index 2244f23..da0a06a 100644 --- a/web/src/routes/review/+page.svelte +++ b/web/src/routes/review/+page.svelte @@ -8,6 +8,7 @@ import BillDetailDrawer from '$lib/components/analysis/BillDetailDrawer.svelte'; import { cleanedBillToUIBill, type UIBill } from '$lib/models/bill'; import { updateBill } from '$lib/api'; + import { categories } from '$lib/data/categories'; import Loader2 from '@lucide/svelte/icons/loader-2'; import AlertCircle from '@lucide/svelte/icons/alert-circle'; import AlertTriangle from '@lucide/svelte/icons/alert-triangle'; @@ -80,12 +81,7 @@ let drawerOpen = $state(false); let selectedBill = $state(null); - // 分类列表(用于编辑选择) - const categories = [ - '餐饮美食', '交通出行', '生活服务', '日用百货', - '服饰美容', '医疗健康', '通讯话费', '住房缴费', - '文化娱乐', '金融理财', '教育培训', '人情往来', '其他' - ]; + // 点击行打开详情 function handleRowClick(record: CleanedBill) {