From 4951c3202d45c9563ffc726077b2d4ed8f80b7cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 9 Feb 2026 22:00:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(dealer):=20=E6=9B=B4=E6=96=B0=E7=BB=8F?= =?UTF-8?q?=E9=94=80=E5=95=86=E7=94=B3=E8=AF=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将页面标题从"注册会员"改为"成为经销商" - 在经销商注册成功后触发dealerUser:changed事件以通知其他页面刷新 - 优化API响应处理,当用户未注册为分销商时返回null而不是抛出错误 - 使用useDidShow钩子在页面显示时自动刷新经销商数据 - 添加事件监听器支持通过dealerUser:changed事件主动触发数据刷新 --- src/api/shop/shopDealerUser/index.ts | 5 +++-- src/dealer/apply/add.config.ts | 2 +- src/dealer/apply/add.tsx | 3 +++ src/hooks/useDealerUser.ts | 19 ++++++++++++++++++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/api/shop/shopDealerUser/index.ts b/src/api/shop/shopDealerUser/index.ts index 0f673a1..df82b27 100644 --- a/src/api/shop/shopDealerUser/index.ts +++ b/src/api/shop/shopDealerUser/index.ts @@ -95,8 +95,9 @@ export async function getShopDealerUser(userId: number) { const res = await request.get>( '/shop/shop-dealer-user/' + userId ); - if (res.code === 0 && res.data) { - return res.data; + if (res.code === 0) { + // 未注册为分销商时,后端可能返回 data=null,这里用 null 表示“没有分销商信息” + return res.data || null; } return Promise.reject(new Error(res.message)); } diff --git a/src/dealer/apply/add.config.ts b/src/dealer/apply/add.config.ts index 72f9e1e..f165569 100644 --- a/src/dealer/apply/add.config.ts +++ b/src/dealer/apply/add.config.ts @@ -1,4 +1,4 @@ export default definePageConfig({ - navigationBarTitleText: '注册会员', + navigationBarTitleText: '成为经销商', navigationBarTextStyle: 'black' }) diff --git a/src/dealer/apply/add.tsx b/src/dealer/apply/add.tsx index 24dcfc3..81365ee 100644 --- a/src/dealer/apply/add.tsx +++ b/src/dealer/apply/add.tsx @@ -212,6 +212,9 @@ const AddUserAddress = () => { refereeId: Number(values.refereeId) || Number(FormData?.refereeId) }) + // 通知其他页面(如“我的”页、分销中心页)刷新经销商信息 + Taro.eventCenter.trigger('dealerUser:changed') + // 角色为空时这里会导致“注册成功但没有角色”,这里做一次兜底写入默认 user 角色 try { // 1) 先尝试通过 roleCode=user 查询角色ID(避免硬编码) diff --git a/src/hooks/useDealerUser.ts b/src/hooks/useDealerUser.ts index 172c722..3195eb6 100644 --- a/src/hooks/useDealerUser.ts +++ b/src/hooks/useDealerUser.ts @@ -1,5 +1,5 @@ import {useState, useEffect, useCallback} from 'react' -import Taro from '@tarojs/taro' +import Taro, { useDidShow } from '@tarojs/taro' import {getShopDealerUser} from '@/api/shop/shopDealerUser' import type {ShopDealerUser} from '@/api/shop/shopDealerUser/model' @@ -76,6 +76,23 @@ export const useDealerUser = (): UseDealerUserReturn => { } }, [fetchDealerData, hasUser]) + // 页面返回/切换到前台时刷新一次,避免“注册成为经销商后,页面不更新” + useDidShow(() => { + fetchDealerData() + }) + + // 允许业务侧通过事件主动触发刷新(例如:注册成功后触发) + useEffect(() => { + const handler = () => { + fetchDealerData() + } + // 事件名尽量语义化;后续可在注册成功处 trigger + Taro.eventCenter.on('dealerUser:changed', handler) + return () => { + Taro.eventCenter.off('dealerUser:changed', handler) + } + }, [fetchDealerData]) + return { dealerUser, loading,