diff --git a/.workbuddy/memory/2026-07-15.md b/.workbuddy/memory/2026-07-15.md new file mode 100644 index 0000000..55b6007 --- /dev/null +++ b/.workbuddy/memory/2026-07-15.md @@ -0,0 +1,7 @@ +# 2026-07-15 + +## 修复 shopOrder 页面默认待发货tab数据不正确 + +- 根因:`activeKey` 默认为 `'undelivered'`,但 `datasource` 函数只设了 `where.type = 0`,没有设 `statusFilter`。`statusFilter` 只在用户点击 tab 触发 `onTabs` 时才设置。所以页面初次加载时查的是全部订单而非待发货订单。 +- 修复:提取 `getStatusFilterByTab(key)` 公共映射函数,在 `datasource` 中当 `where.statusFilter` 未设置时从 `activeKey` 自动推导。`onTabs` 也简化为复用同一函数。 +- 文件:`src/views/shop/shopOrder/index.vue` diff --git a/src/views/shop/shopOrder/index.vue b/src/views/shop/shopOrder/index.vue index 72eb21c..bb1a39e 100644 --- a/src/views/shop/shopOrder/index.vue +++ b/src/views/shop/shopOrder/index.vue @@ -435,6 +435,23 @@ const { enabled: notifyEnabled, toggle: onNotifyToggle, testNotify: onTestNotify } = useOrderNotify({ onNewOrder: () => reload() }); + // 根据tab key获取对应的statusFilter值 + // undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除,8已关闭 + const getStatusFilterByTab = (key: string): number | undefined => { + const filterMap: Record = { + unpaid: 0, + undelivered: 1, + unverified: 2, + unreceived: 3, + unevaluated: 4, + completed: 5, + refunded: 6, + deleted: 7, + cancelled: 8 + }; + return filterMap[key]; + }; + // 表格数据源 const datasource: DatasourceFunction = ({ page, @@ -447,6 +464,10 @@ where.status = filters.status; } where.type = 0; + // 确保初次加载时也按当前tab筛选(statusFilter未设置时从activeKey推导) + if (where.statusFilter === undefined) { + where.statusFilter = getStatusFilterByTab(activeKey.value); + } return pageShopOrder({ ...where, ...orders, @@ -527,54 +548,11 @@ }; const onTabs = () => { - // 使用statusFilter进行筛选,这是后端专门为订单状态筛选设计的字段 const filterParams: Record = {}; - - // 根据后端 statusFilter 的值对应: - // undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除 - switch (activeKey.value) { - case 'all': - // 全部订单:不传statusFilter参数 - // filterParams.statusFilter = undefined; // 不设置该字段 - break; - case 'unpaid': - // 待付款:pay_status = false - filterParams.statusFilter = 0; - break; - case 'undelivered': - // 待发货:pay_status = true AND delivery_status = 10 - filterParams.statusFilter = 1; - break; - case 'unverified': - // 待核销:pay_status = true AND delivery_status = 10 (与待发货相同) - filterParams.statusFilter = 2; - break; - case 'unreceived': - // 待收货:pay_status = true AND delivery_status = 20 - filterParams.statusFilter = 3; - break; - case 'unevaluated': - // 待评价:order_status = 1 (与已完成相同) - filterParams.statusFilter = 4; - break; - case 'completed': - // 已完成:order_status = 1 - filterParams.statusFilter = 5; - break; - case 'cancelled': - // 已关闭:order_status = 2 - filterParams.statusFilter = 8; - break; - case 'refunded': - // 退款/售后:order_status = 6 - filterParams.statusFilter = 6; - break; - case 'deleted': - // 已删除:deleted = 1 - filterParams.statusFilter = 7; - break; + const sf = getStatusFilterByTab(activeKey.value); + if (sf !== undefined) { + filterParams.statusFilter = sf; } - reload(filterParams); };