diff --git a/config/env.ts b/config/env.ts index 66f018d..d49548f 100644 --- a/config/env.ts +++ b/config/env.ts @@ -3,18 +3,21 @@ export const ENV_CONFIG = { // 开发环境 development: { API_BASE_URL: 'https://cms-api.websoft.top/api', + // API_BASE_URL: 'http://127.0.0.1:9200/api', APP_NAME: '开发环境', DEBUG: 'true', }, // 生产环境 production: { API_BASE_URL: 'https://cms-api.websoft.top/api', + // API_BASE_URL: 'http://127.0.0.1:9200/api', APP_NAME: '南南佐顿门窗', DEBUG: 'false', }, // 测试环境 test: { API_BASE_URL: 'https://cms-api.websoft.top/api', + // API_BASE_URL: 'http://127.0.0.1:9200/api', APP_NAME: '测试环境', DEBUG: 'true', } diff --git a/src/app.ts b/src/app.ts index af82678..5d3254b 100644 --- a/src/app.ts +++ b/src/app.ts @@ -74,13 +74,13 @@ function App(props: { children: any; }) { trackInviteSource(inviteParams.source || 'unknown', parseInt(inviteParams.inviter || '0')) // 显示邀请提示 - setTimeout(() => { - Taro.showToast({ - title: `检测到邀请信息 ID:${inviteParams.inviter}`, - icon: 'success', - duration: 3000 - }) - }, 1000) + // setTimeout(() => { + // Taro.showToast({ + // title: `检测到邀请信息 ID:${inviteParams.inviter}`, + // icon: 'success', + // duration: 3000 + // }) + // }, 1000) } else { console.log('❌ 未检测到邀请参数') diff --git a/src/dealer/apply/add.tsx b/src/dealer/apply/add.tsx index bd26cd5..983bfed 100644 --- a/src/dealer/apply/add.tsx +++ b/src/dealer/apply/add.tsx @@ -411,9 +411,9 @@ const AddUserAddress = () => { > - - - + {/**/} + {/* */} + {/**/} { const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(true) + // 非分销商不允许查看客户列表 + const {hasRole, loading: userLoading} = useUser() + const canView = hasRole('dealer') + const roleCheckFinished = !userLoading + const noPermissionShownRef = useRef(false) + + useEffect(() => { + if (!roleCheckFinished || canView) return + if (noPermissionShownRef.current) return + noPermissionShownRef.current = true + Taro.showToast({ + title: '没有查看权限', + icon: 'none', + duration: 1500 + }) + }, [roleCheckFinished, canView]) + // Tab配置 const tabList = getStatusOptions(); @@ -330,22 +348,24 @@ const CustomerIndex = () => { }) } - // 初始化数据 + // 初始化统计数据 useEffect(() => { - fetchCustomerData(activeTab, true).then(); + if (!roleCheckFinished || !canView) return; fetchStatusCounts().then(); - }, []); + }, [roleCheckFinished, canView]); // 当activeTab变化时重新获取数据 useEffect(() => { + if (!roleCheckFinished || !canView) return; setList([]); // 清空列表 setPage(1); // 重置页码 setHasMore(true); // 重置加载状态 fetchCustomerData(activeTab, true); - }, [activeTab]); + }, [activeTab, roleCheckFinished, canView]); // 监听页面显示,当从其他页面返回时刷新数据 useDidShow(() => { + if (!roleCheckFinished || !canView) return; // 刷新当前tab的数据和统计信息 setList([]); setPage(1); @@ -543,6 +563,30 @@ const CustomerIndex = () => { ); }; + if (!roleCheckFinished) { + return ( + + + 加载中... + + ); + } + + if (!canView) { + return ( + + + + + ); + } + return ( {/* 搜索栏 */} diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts index 479a0f3..7b7b1b2 100644 --- a/src/hooks/useUser.ts +++ b/src/hooks/useUser.ts @@ -10,6 +10,7 @@ export const useUser = () => { const [user, setUser] = useState(null); const [isLoggedIn, setIsLoggedIn] = useState(false); const [loading, setLoading] = useState(true); + const [userInfo] = useState() // 自动登录(通过OpenID) const autoLoginByOpenId = async () => { @@ -256,23 +257,10 @@ export const useUser = () => { return user?.nickname || user?.realName || user?.username || '未登录'; }; - // 获取用户显示的角色(同步版本) + // 角色名称:优先取用户 roles 数组的第一个角色名称 const getRoleName = () => { - if(hasRole('superAdmin')){ - return '超级管理员'; - } - if(hasRole('admin')){ - return '管理员'; - } - if(hasRole('staff')){ - return '员工'; - } - if(hasRole('vip')){ - return 'VIP会员'; - } - return '注册用户'; + return userInfo?.roles?.[0]?.roleName || userInfo?.roleName || '业务员' } - // 检查用户是否已实名认证 const isCertified = () => { return user?.certification === true; diff --git a/src/pages/user/components/UserCard.tsx b/src/pages/user/components/UserCard.tsx index f337c19..9f4c950 100644 --- a/src/pages/user/components/UserCard.tsx +++ b/src/pages/user/components/UserCard.tsx @@ -1,6 +1,6 @@ import {Button} from '@nutui/nutui-react-taro' -import {Avatar, Tag} from '@nutui/nutui-react-taro' -import {View, Text} from '@tarojs/components' +import {Avatar} from '@nutui/nutui-react-taro' +import {View} from '@tarojs/components' import {Scan} from '@nutui/icons-react-taro'; import {getWxOpenId} from '@/api/layout'; import Taro from '@tarojs/taro'; @@ -8,7 +8,6 @@ import {useEffect} from "react"; import navTo from "@/utils/common"; import {TenantId} from "@/config/app"; import {useUser} from "@/hooks/useUser"; -import {useUserData} from "@/hooks/useUserData"; function UserCard() { const { @@ -17,10 +16,8 @@ function UserCard() { isLoggedIn, loginUser, fetchUserInfo, - getDisplayName, - getRoleName + getDisplayName } = useUser(); - const {data} = useUserData(); useEffect(() => { // Taro.getSetting:获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。 @@ -180,12 +177,10 @@ function UserCard() { {getDisplayName()} {isLoggedIn ? ( - - - - {getRoleName()} - - + + {/**/} + {/* {getRoleName()}*/} + {/**/} ) : ''} @@ -198,27 +193,6 @@ function UserCard() { - {/**/} - {/* navTo('/user/wallet/wallet', true)}>*/} - {/* 余额*/} - {/* {data?.balance || '0.00'}*/} - {/* */} - {/* */} - {/* 积分*/} - {/* {data?.points || 0}*/} - {/* */} - {/* navTo('/user/coupon/index', true)}>*/} - {/* 优惠券*/} - {/* {data?.coupons || 0}*/} - {/* */} - {/* navTo('/user/gift/index', true)}>*/} - {/* 礼品卡*/} - {/* {data?.giftCards || 0}*/} - {/* */} - {/**/}