feat(dealer): 更新经销商申请功能
- 将页面标题从"注册会员"改为"成为经销商" - 在经销商注册成功后触发dealerUser:changed事件以通知其他页面刷新 - 优化API响应处理,当用户未注册为分销商时返回null而不是抛出错误 - 使用useDidShow钩子在页面显示时自动刷新经销商数据 - 添加事件监听器支持通过dealerUser:changed事件主动触发数据刷新
This commit is contained in:
@@ -95,8 +95,9 @@ export async function getShopDealerUser(userId: number) {
|
|||||||
const res = await request.get<ApiResult<ShopDealerUser>>(
|
const res = await request.get<ApiResult<ShopDealerUser>>(
|
||||||
'/shop/shop-dealer-user/' + userId
|
'/shop/shop-dealer-user/' + userId
|
||||||
);
|
);
|
||||||
if (res.code === 0 && res.data) {
|
if (res.code === 0) {
|
||||||
return res.data;
|
// 未注册为分销商时,后端可能返回 data=null,这里用 null 表示“没有分销商信息”
|
||||||
|
return res.data || null;
|
||||||
}
|
}
|
||||||
return Promise.reject(new Error(res.message));
|
return Promise.reject(new Error(res.message));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export default definePageConfig({
|
export default definePageConfig({
|
||||||
navigationBarTitleText: '注册会员',
|
navigationBarTitleText: '成为经销商',
|
||||||
navigationBarTextStyle: 'black'
|
navigationBarTextStyle: 'black'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -212,6 +212,9 @@ const AddUserAddress = () => {
|
|||||||
refereeId: Number(values.refereeId) || Number(FormData?.refereeId)
|
refereeId: Number(values.refereeId) || Number(FormData?.refereeId)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 通知其他页面(如“我的”页、分销中心页)刷新经销商信息
|
||||||
|
Taro.eventCenter.trigger('dealerUser:changed')
|
||||||
|
|
||||||
// 角色为空时这里会导致“注册成功但没有角色”,这里做一次兜底写入默认 user 角色
|
// 角色为空时这里会导致“注册成功但没有角色”,这里做一次兜底写入默认 user 角色
|
||||||
try {
|
try {
|
||||||
// 1) 先尝试通过 roleCode=user 查询角色ID(避免硬编码)
|
// 1) 先尝试通过 roleCode=user 查询角色ID(避免硬编码)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {useState, useEffect, useCallback} from 'react'
|
import {useState, useEffect, useCallback} from 'react'
|
||||||
import Taro from '@tarojs/taro'
|
import Taro, { useDidShow } from '@tarojs/taro'
|
||||||
import {getShopDealerUser} from '@/api/shop/shopDealerUser'
|
import {getShopDealerUser} from '@/api/shop/shopDealerUser'
|
||||||
import type {ShopDealerUser} from '@/api/shop/shopDealerUser/model'
|
import type {ShopDealerUser} from '@/api/shop/shopDealerUser/model'
|
||||||
|
|
||||||
@@ -76,6 +76,23 @@ export const useDealerUser = (): UseDealerUserReturn => {
|
|||||||
}
|
}
|
||||||
}, [fetchDealerData, hasUser])
|
}, [fetchDealerData, hasUser])
|
||||||
|
|
||||||
|
// 页面返回/切换到前台时刷新一次,避免“注册成为经销商后,页面不更新”
|
||||||
|
useDidShow(() => {
|
||||||
|
fetchDealerData()
|
||||||
|
})
|
||||||
|
|
||||||
|
// 允许业务侧通过事件主动触发刷新(例如:注册成功后触发)
|
||||||
|
useEffect(() => {
|
||||||
|
const handler = () => {
|
||||||
|
fetchDealerData()
|
||||||
|
}
|
||||||
|
// 事件名尽量语义化;后续可在注册成功处 trigger
|
||||||
|
Taro.eventCenter.on('dealerUser:changed', handler)
|
||||||
|
return () => {
|
||||||
|
Taro.eventCenter.off('dealerUser:changed', handler)
|
||||||
|
}
|
||||||
|
}, [fetchDealerData])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
dealerUser,
|
dealerUser,
|
||||||
loading,
|
loading,
|
||||||
|
|||||||
Reference in New Issue
Block a user