fix(shopOrder): 修复初次加载订单状态筛选问题
- 提取 getStatusFilterByTab 函数实现 tab key 与 statusFilter 的映射 - datasource 函数中当 statusFilter 未设置时,自动根据 activeKey 推导赋值 - onTabs 函数简化为复用 getStatusFilterByTab 函数,减少重复代码 - 确保初次加载时待发货等状态的 tab 能正确筛选订单数据
This commit is contained in:
7
.workbuddy/memory/2026-07-15.md
Normal file
7
.workbuddy/memory/2026-07-15.md
Normal file
@@ -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`
|
||||||
@@ -435,6 +435,23 @@
|
|||||||
const { enabled: notifyEnabled, toggle: onNotifyToggle, testNotify: onTestNotify } = useOrderNotify({
|
const { enabled: notifyEnabled, toggle: onNotifyToggle, testNotify: onTestNotify } = useOrderNotify({
|
||||||
onNewOrder: () => reload()
|
onNewOrder: () => reload()
|
||||||
});
|
});
|
||||||
|
// 根据tab key获取对应的statusFilter值
|
||||||
|
// undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除,8已关闭
|
||||||
|
const getStatusFilterByTab = (key: string): number | undefined => {
|
||||||
|
const filterMap: Record<string, number> = {
|
||||||
|
unpaid: 0,
|
||||||
|
undelivered: 1,
|
||||||
|
unverified: 2,
|
||||||
|
unreceived: 3,
|
||||||
|
unevaluated: 4,
|
||||||
|
completed: 5,
|
||||||
|
refunded: 6,
|
||||||
|
deleted: 7,
|
||||||
|
cancelled: 8
|
||||||
|
};
|
||||||
|
return filterMap[key];
|
||||||
|
};
|
||||||
|
|
||||||
// 表格数据源
|
// 表格数据源
|
||||||
const datasource: DatasourceFunction = ({
|
const datasource: DatasourceFunction = ({
|
||||||
page,
|
page,
|
||||||
@@ -447,6 +464,10 @@
|
|||||||
where.status = filters.status;
|
where.status = filters.status;
|
||||||
}
|
}
|
||||||
where.type = 0;
|
where.type = 0;
|
||||||
|
// 确保初次加载时也按当前tab筛选(statusFilter未设置时从activeKey推导)
|
||||||
|
if (where.statusFilter === undefined) {
|
||||||
|
where.statusFilter = getStatusFilterByTab(activeKey.value);
|
||||||
|
}
|
||||||
return pageShopOrder({
|
return pageShopOrder({
|
||||||
...where,
|
...where,
|
||||||
...orders,
|
...orders,
|
||||||
@@ -527,54 +548,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onTabs = () => {
|
const onTabs = () => {
|
||||||
// 使用statusFilter进行筛选,这是后端专门为订单状态筛选设计的字段
|
|
||||||
const filterParams: Record<string, any> = {};
|
const filterParams: Record<string, any> = {};
|
||||||
|
const sf = getStatusFilterByTab(activeKey.value);
|
||||||
// 根据后端 statusFilter 的值对应:
|
if (sf !== undefined) {
|
||||||
// undefined全部,0待付款,1待发货,2待核销,3待收货,4待评价,5已完成,6已退款,7已删除
|
filterParams.statusFilter = sf;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reload(filterParams);
|
reload(filterParams);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user