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' ) }