fix(dealer): 优化经销商模块文字显示和加载逻辑

- 将"佣金统计"改为"资金统计"
- 将"提现申请"改为"申请提现"
- 将"我的邀请"改为"我的团队"
- 将"我的邀请码"改为"实名认证"并调整跳转路径
- 在经销商用户钩子中添加加载状态控制
- 防止快速点击导致的路由错误
- 优化用户登录状态检测逻辑
- 改进初始化加载时的数据处理流程
This commit is contained in:
2026-02-07 12:26:06 +08:00
parent 8751be5fb4
commit 9e780e369c
3 changed files with 27 additions and 16 deletions

View File

@@ -129,7 +129,7 @@ const DealerIndex: React.FC = () => {
{dealerUser && (
<View className="mx-4 -mt-6 rounded-xl p-4 relative z-10" style={cardGradients.elevated}>
<View className="mb-4">
<Text className="font-semibold text-gray-800"></Text>
<Text className="font-semibold text-gray-800"></Text>
</View>
<View className="grid grid-cols-3 gap-3">
<View className="text-center p-3 rounded-lg flex flex-col" style={{
@@ -217,7 +217,7 @@ const DealerIndex: React.FC = () => {
</View>
</Grid.Item>
<Grid.Item text={'提现申请'} onClick={() => navigateToPage('/dealer/withdraw/index')}>
<Grid.Item text={'申请提现'} onClick={() => navigateToPage('/dealer/withdraw/index')}>
<View className="text-center">
<View className="w-12 h-12 bg-green-50 rounded-xl flex items-center justify-center mx-auto mb-2">
<Purse color="#10b981" size="20"/>
@@ -225,7 +225,7 @@ const DealerIndex: React.FC = () => {
</View>
</Grid.Item>
<Grid.Item text={'我的邀请'} onClick={() => navigateToPage('/dealer/team/index')}>
<Grid.Item text={'我的团队'} onClick={() => navigateToPage('/dealer/team/index')}>
<View className="text-center">
<View className="w-12 h-12 bg-purple-50 rounded-xl flex items-center justify-center mx-auto mb-2">
<People color="#8b5cf6" size="20"/>
@@ -233,7 +233,7 @@ const DealerIndex: React.FC = () => {
</View>
</Grid.Item>
<Grid.Item text={'我的邀请码'} onClick={() => navigateToPage('/dealer/qrcode/index')}>
<Grid.Item text={'实名认证'} onClick={() => navigateToPage('/user/userVerify/index')}>
<View className="text-center">
<View className="w-12 h-12 bg-orange-50 rounded-xl flex items-center justify-center mx-auto mb-2">
<Dongdong color="#f59e0b" size="20"/>

View File

@@ -22,17 +22,20 @@ export interface UseDealerUserReturn {
*/
export const useDealerUser = (): UseDealerUserReturn => {
const [dealerUser, setDealerUser] = useState<ShopDealerUser | null>(null)
const [loading, setLoading] = useState(false)
const [error, setError] = useState<string | null>(null)
const rawUserId = Taro.getStorageSync('UserId')
const userId = Number(rawUserId)
const hasUser = Number.isFinite(userId) && userId > 0
const userId = Taro.getStorageSync('UserId');
// If user is logged in, start in loading state to avoid "click too fast" mis-routing.
const [loading, setLoading] = useState<boolean>(hasUser)
const [error, setError] = useState<string | null>(null)
// 获取经销商用户数据
const fetchDealerData = useCallback(async () => {
if (!userId) {
console.log('🔍 用户未登录,提前返回')
if (!hasUser) {
setDealerUser(null)
setLoading(false)
return
}
@@ -55,7 +58,7 @@ export const useDealerUser = (): UseDealerUserReturn => {
} finally {
setLoading(false)
}
}, [userId])
}, [hasUser, userId])
// 刷新数据
const refresh = useCallback(async () => {
@@ -64,13 +67,14 @@ export const useDealerUser = (): UseDealerUserReturn => {
// 初始化加载数据
useEffect(() => {
if (userId) {
console.log('🔍 调用 fetchDealerData')
if (hasUser) {
fetchDealerData()
} else {
console.log('🔍 用户ID不存在不调用 fetchDealerData')
setDealerUser(null)
setError(null)
setLoading(false)
}
}, [fetchDealerData, userId])
}, [fetchDealerData, hasUser])
return {
dealerUser,

View File

@@ -6,12 +6,13 @@ import {useUser} from '@/hooks/useUser'
import {useDealerUser} from "@/hooks/useDealerUser";
import {useThemeStyles} from "@/hooks/useTheme";
import { useConfig } from "@/hooks/useConfig"; // 使用新的自定义Hook
import Taro from '@tarojs/taro'
const IsDealer = () => {
const themeStyles = useThemeStyles();
const { config } = useConfig(); // 使用新的Hook
const {isSuperAdmin} = useUser();
const {dealerUser} = useDealerUser()
const {dealerUser, loading: dealerLoading} = useDealerUser()
/**
* 管理中心
@@ -80,7 +81,13 @@ const IsDealer = () => {
</View>
}
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => navTo('/dealer/apply/add', true)}
onClick={() => {
if (dealerLoading) {
Taro.showToast({ title: '正在加载身份信息,请稍等...', icon: 'none' })
return
}
navTo('/dealer/apply/add', true)
}}
/>
</View>
</>