diff --git a/.workbuddy/memory/2026-07-15.md b/.workbuddy/memory/2026-07-15.md
index 63fdf23..136a9ad 100644
--- a/.workbuddy/memory/2026-07-15.md
+++ b/.workbuddy/memory/2026-07-15.md
@@ -330,3 +330,18 @@
- `src/pages/store/center/index.tsx:218`:数字角标(20x20/11px/加粗)→ ``
- 简化了外层判断:`card.showBadge && getBadgeCount > 0` → `card.showBadge`(Badge 内部已处理 0 不渲染)
- 项目内联角标已全部统一为 Badge 组件,共 3 处(user.tsx / index/index.tsx / store/center/index.tsx)
+
+## tabBar「订单」换「购物车」后的链接修正(2026-07-15 23:31)
+- 背景:tabBar 原「订单」(pages/order/list) 改为「购物车」(pages/shop/cart),order/list 不再是 tabBar 页
+- A. 6 处 `switchTab(order/list)` → `navigateTo`(switchTab 只能跳 tabBar 页,否则失败):
+ - pages/shop/checkout.tsx:304(下单成功跳订单列表)
+ - pages/user/user.tsx:144,149(handleOrderTabClick / handleViewAllOrders)
+ - pages/user/index.tsx:158,175,190(订单概览数/全部订单/订单状态快捷入口)
+- B. 4 处 tabBar 判断列表更新为实际 4 个 tabBar(index/shop/shop-cart/user):
+ - pages/user/index.tsx:11、pages/index/index.tsx:185(tabBarPages)
+ - passport/login.tsx(tabBarUrls,顺带去掉非 tabBar 的 points/index)
+ - passport/auth-flow.ts:12(TABBAR_URLS,原含错误路径 order/order)
+- C. 2 处 isTabBarUrl 修正(原路径 cart/cart、category/index 不存在):
+ - passport/register.tsx:88、passport/sms-login.tsx:36
+- D. pages/order/list.tsx:127 注释更新(去掉"tabBar 页"描述)
+- 遗留(未改,预先存在):pages/user/index.tsx:140 `switchTab(points/index)` 积分页非 tabBar,会失败
diff --git a/.workbuddy/memory/MEMORY.md b/.workbuddy/memory/MEMORY.md
index 451e5cf..c50d4c2 100644
--- a/.workbuddy/memory/MEMORY.md
+++ b/.workbuddy/memory/MEMORY.md
@@ -91,3 +91,9 @@
- 建表 SQL:`/Users/gxwebsoft/JAVA/guilixu-java/sql/shop_goods_browse.sql`
- 后台管理前端:`/Users/gxwebsoft/VUE/guilixu-admin`(Vue3 + Ant Design Vue + Vite,非 RuoYi)
- 注意:`BaseController.success()` 有 `success(IPage)` 重载,泛型方法返回类型用 `ApiResult>` 而非 `ApiResult>`(否则 fail() 分支类型不兼容)
+
+## tabBar 配置(2026-07-15)
+- 当前 4 个 tabBar:`/pages/index/index`(首页)、`/pages/shop/index`(分类)、`/pages/shop/cart`(购物车)、`/pages/user/user`(我的)
+- 「订单」(pages/order/list) 已从 tabBar 移除,改为普通页,所有进入订单列表的地方用 `navigateTo` 而非 `switchTab`
+- 多处 tabBar 判断列表(login/register/sms-login/auth-flow/user/index/index/index)已统一为实际 4 个 tabBar 路径
+- ⚠️ pages/user/index.tsx:140 仍用 `switchTab(points/index)`,积分页非 tabBar,待修
diff --git a/src/pages/index/index.tsx b/src/pages/index/index.tsx
index 4237714..3fb6bf6 100644
--- a/src/pages/index/index.tsx
+++ b/src/pages/index/index.tsx
@@ -182,7 +182,7 @@ const IndexPage: React.FC = () => {
}
// tabBar 页面列表
- const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/order/list', '/pages/user/user']
+ const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/shop/cart', '/pages/user/user']
const handleFeatureClick = (url: string) => {
if (tabBarPages.includes(url)) {
diff --git a/src/pages/order/list.tsx b/src/pages/order/list.tsx
index 3d0c352..0b091a6 100644
--- a/src/pages/order/list.tsx
+++ b/src/pages/order/list.tsx
@@ -124,7 +124,7 @@ const OrderListPage: React.FC = () => {
}
}, [tabIndex, isLoggedIn, user?.userId])
- // 页面每次显示时刷新数据(tabBar 页 switchTab 不会重新挂载组件)
+ // 页面每次显示时刷新数据(覆盖从订单详情页返回等再次显示场景)
const isFirstShow = useRef(true)
Taro.useDidShow(() => {
// 首次显示由 useEffect 处理,跳过
diff --git a/src/pages/shop/cart.tsx b/src/pages/shop/cart.tsx
index 784705a..bcd01dc 100644
--- a/src/pages/shop/cart.tsx
+++ b/src/pages/shop/cart.tsx
@@ -112,7 +112,7 @@ const CartPage: React.FC = () => {
>
@@ -179,7 +179,7 @@ const CartPage: React.FC = () => {
@@ -231,7 +231,7 @@ const CartPage: React.FC = () => {
>
diff --git a/src/pages/shop/checkout.tsx b/src/pages/shop/checkout.tsx
index 59e034b..cddae1e 100644
--- a/src/pages/shop/checkout.tsx
+++ b/src/pages/shop/checkout.tsx
@@ -301,7 +301,7 @@ const CheckoutPage: React.FC = () => {
// 显示成功提示
Taro.showToast({ title: '订单已提交', icon: 'success' })
setTimeout(() => {
- Taro.switchTab({ url: '/pages/order/list' })
+ Taro.navigateTo({ url: '/pages/order/list' })
}, 1500)
} catch (err: any) {
const message = err.message || '提交失败'
diff --git a/src/pages/user/index.tsx b/src/pages/user/index.tsx
index 00c315f..ca05dac 100644
--- a/src/pages/user/index.tsx
+++ b/src/pages/user/index.tsx
@@ -8,7 +8,7 @@ const UserPage: React.FC = () => {
const { user, isLoggedIn } = useUser()
// TabBar 页面列表
- const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/order/list', '/pages/user/user']
+ const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/shop/cart', '/pages/user/user']
const handleNavigate = (url: string) => {
if (tabBarPages.includes(url)) {
@@ -155,7 +155,7 @@ const UserPage: React.FC = () => {
Taro.switchTab({ url: '/pages/order/list' })}
+ onClick={() => Taro.navigateTo({ url: '/pages/order/list' })}
>
0
@@ -172,7 +172,7 @@ const UserPage: React.FC = () => {
我的订单
- Taro.switchTab({ url: '/pages/order/list' })}>
+ Taro.navigateTo({ url: '/pages/order/list' })}>
全部订单 {'>'}
@@ -187,7 +187,7 @@ const UserPage: React.FC = () => {
key={item.status}
className='flex flex-col items-center py-2 rounded-lg'
style={{ background: `${item.color}10` }}
- onClick={() => { Taro.setStorageSync('order_tab', item.status); Taro.switchTab({ url: '/pages/order/list' }) }}
+ onClick={() => { Taro.setStorageSync('order_tab', item.status); Taro.navigateTo({ url: '/pages/order/list' }) }}
>
{item.icon}
{item.label}
diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx
index db65da2..6b8610b 100644
--- a/src/pages/user/user.tsx
+++ b/src/pages/user/user.tsx
@@ -141,12 +141,12 @@ const UserPage: React.FC = () => {
const handleOrderTabClick = (status: number) => {
if (!requireLogin({ action: 'viewOrder', redirect: '/pages/order/list', content: '登录后才能查看订单,是否前往登录?' })) return
Taro.setStorageSync('order_tab', status)
- Taro.switchTab({ url: '/pages/order/list' })
+ Taro.navigateTo({ url: '/pages/order/list' })
}
const handleViewAllOrders = () => {
if (!requireLogin({ action: 'viewOrder', redirect: '/pages/order/list', content: '登录后才能查看订单,是否前往登录?' })) return
- Taro.switchTab({ url: '/pages/order/list' })
+ Taro.navigateTo({ url: '/pages/order/list' })
}
const loading = cardStatsLoading || orderStatsLoading
diff --git a/src/passport/auth-flow.ts b/src/passport/auth-flow.ts
index e172934..14f8dd5 100644
--- a/src/passport/auth-flow.ts
+++ b/src/passport/auth-flow.ts
@@ -9,7 +9,7 @@ import {
trackInviteSource,
} from '@/utils/invite'
-const TABBAR_URLS = ['/pages/index/index', '/pages/order/order', '/pages/user/user']
+const TABBAR_URLS = ['/pages/index/index', '/pages/shop/index', '/pages/shop/cart', '/pages/user/user']
export function decodeRedirect(input?: string): string {
if (!input) return ''
diff --git a/src/passport/login.tsx b/src/passport/login.tsx
index d2952a4..8cbc755 100644
--- a/src/passport/login.tsx
+++ b/src/passport/login.tsx
@@ -144,9 +144,8 @@ const Login = () => {
const tabBarUrls = [
'/pages/index/index',
'/pages/shop/index',
- '/pages/points/index',
'/pages/user/user',
- '/pages/order/list',
+ '/pages/shop/cart',
]
const pure = redirectUrl.split('?')[0]
diff --git a/src/passport/register.tsx b/src/passport/register.tsx
index aab1fa7..9ecbae9 100644
--- a/src/passport/register.tsx
+++ b/src/passport/register.tsx
@@ -89,9 +89,9 @@ function isTabBarUrl(url: string) {
const pure = url.split('?')[0]
return (
pure === '/pages/index/index' ||
- pure === '/pages/cart/cart' ||
- pure === '/pages/user/user' ||
- pure === '/pages/category/index'
+ pure === '/pages/shop/index' ||
+ pure === '/pages/shop/cart' ||
+ pure === '/pages/user/user'
)
}
diff --git a/src/passport/sms-login.tsx b/src/passport/sms-login.tsx
index 147dfda..461af3c 100644
--- a/src/passport/sms-login.tsx
+++ b/src/passport/sms-login.tsx
@@ -37,9 +37,9 @@ const SmsLogin = () => {
const pure = url.split('?')[0]
return (
pure === '/pages/index/index' ||
- pure === '/pages/cart/cart' ||
- pure === '/pages/user/user' ||
- pure === '/pages/category/index'
+ pure === '/pages/shop/index' ||
+ pure === '/pages/shop/cart' ||
+ pure === '/pages/user/user'
)
}