feat(user): 添加角色权限控制与显示逻辑
- 引入 useUser hook 获取用户信息 - 实现 hasRole 方法检查用户角色 - 根据角色动态显示用户身份标签 - 限制特定角色操作按钮的显示条件 - 移除旧的角色名称存储逻辑- 更新用户卡片中的角色显示方式为动态获取
This commit is contained in:
@@ -57,8 +57,11 @@ const Location = () => {
|
|||||||
getHjmCarByCode(keywords).then(data => {
|
getHjmCarByCode(keywords).then(data => {
|
||||||
console.log('执行搜索', data)
|
console.log('执行搜索', data)
|
||||||
setItem(data)
|
setItem(data)
|
||||||
setLatitude(data.latitude)
|
// setLatitude(data.latitude)
|
||||||
setLongitude(data.longitude)
|
// setLongitude(data.longitude)
|
||||||
|
// wgs48坐标转gcj02坐标代
|
||||||
|
|
||||||
|
|
||||||
setKeywords(data.code)
|
setKeywords(data.code)
|
||||||
if (data.fence) {
|
if (data.fence) {
|
||||||
// 方法2:使用实际的 fence 数据(如果是字符串格式)
|
// 方法2:使用实际的 fence 数据(如果是字符串格式)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import navTo from "@/utils/common";
|
|||||||
function UserCard() {
|
function UserCard() {
|
||||||
const [IsLogin, setIsLogin] = useState<boolean>(false)
|
const [IsLogin, setIsLogin] = useState<boolean>(false)
|
||||||
const [userInfo, setUserInfo] = useState<User>()
|
const [userInfo, setUserInfo] = useState<User>()
|
||||||
const [roleName, setRoleName] = useState<string>('注册用户')
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -51,11 +50,6 @@ function UserCard() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 判断身份
|
|
||||||
const roleName = Taro.getStorageSync('RoleName');
|
|
||||||
if(roleName){
|
|
||||||
setRoleName(roleName)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
console.log('未登录')
|
console.log('未登录')
|
||||||
@@ -98,6 +92,44 @@ function UserCard() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 获取用户显示的角色(同步版本)
|
||||||
|
const getRoleName = () => {
|
||||||
|
if(hasRole('superAdmin')){
|
||||||
|
return '超级管理员';
|
||||||
|
}
|
||||||
|
if(hasRole('admin')){
|
||||||
|
return '管理员';
|
||||||
|
}
|
||||||
|
if(hasRole('jiaojing')){
|
||||||
|
return '交警';
|
||||||
|
}
|
||||||
|
if(hasRole('youzheng')){
|
||||||
|
return '邮政协会/管局';
|
||||||
|
}
|
||||||
|
if(hasRole('Installer')){
|
||||||
|
return '安装人员';
|
||||||
|
}
|
||||||
|
if(hasRole('kuaidi')){
|
||||||
|
return '快递公司';
|
||||||
|
}
|
||||||
|
if(hasRole('zhandian')){
|
||||||
|
return '快递站点';
|
||||||
|
}
|
||||||
|
if(hasRole('kuaidiyuan')){
|
||||||
|
return '快递员';
|
||||||
|
}
|
||||||
|
return '注册用户';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 检查是否有特定角色
|
||||||
|
const hasRole = (roleCode: string) => {
|
||||||
|
if (!userInfo || !userInfo.roles) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return userInfo.roles.some(role => role.roleCode === roleCode);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={'p-4'}>
|
<div className={'p-4'}>
|
||||||
@@ -127,7 +159,7 @@ function UserCard() {
|
|||||||
{IsLogin ? (
|
{IsLogin ? (
|
||||||
<Space className={'grade text-xs py-1'}>
|
<Space className={'grade text-xs py-1'}>
|
||||||
<Tag type="success" round>
|
<Tag type="success" round>
|
||||||
<div className={'p-1'}>{roleName || '注册用户'}</div>
|
<div className={'p-1'}>{getRoleName()}</div>
|
||||||
</Tag>
|
</Tag>
|
||||||
{/*{*/}
|
{/*{*/}
|
||||||
{/* userInfo?.organizationName && (*/}
|
{/* userInfo?.organizationName && (*/}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {UserVerify} from "@/api/system/userVerify/model";
|
|||||||
import {pageUserVerify, updateUserVerify} from "@/api/system/userVerify";
|
import {pageUserVerify, updateUserVerify} from "@/api/system/userVerify";
|
||||||
import {listUserRole, updateUserRole} from "@/api/system/userRole";
|
import {listUserRole, updateUserRole} from "@/api/system/userRole";
|
||||||
import {listOrganizations} from "@/api/system/organization";
|
import {listOrganizations} from "@/api/system/organization";
|
||||||
|
import {useUser} from "@/hooks/useUser";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,7 +25,9 @@ const UserVerifyAdmin: React.FC = () => {
|
|||||||
const [keywords, setKeywords] = useState<string>('')
|
const [keywords, setKeywords] = useState<string>('')
|
||||||
// const [showTextArea, setShowTextArea] = useState<boolean>(false)
|
// const [showTextArea, setShowTextArea] = useState<boolean>(false)
|
||||||
const [refreshing, setRefreshing] = useState<boolean>(false)
|
const [refreshing, setRefreshing] = useState<boolean>(false)
|
||||||
|
const {user} = useUser()
|
||||||
console.log(refreshing)
|
console.log(refreshing)
|
||||||
|
|
||||||
// 获取状态显示
|
// 获取状态显示
|
||||||
const getStatusDisplay = (status?: number) => {
|
const getStatusDisplay = (status?: number) => {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
@@ -92,6 +95,15 @@ const UserVerifyAdmin: React.FC = () => {
|
|||||||
setKeywords(value)
|
setKeywords(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查是否有特定角色
|
||||||
|
const hasRole = (roleCode: string) => {
|
||||||
|
if (!user || !user.roles) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return user.roles.some(role => role.roleCode === roleCode);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const onPass = async (item: UserVerify) => {
|
const onPass = async (item: UserVerify) => {
|
||||||
const role = await listUserRole({roleId: 1701,userId: item.userId})
|
const role = await listUserRole({roleId: 1701,userId: item.userId})
|
||||||
const userRole = role[0];
|
const userRole = role[0];
|
||||||
@@ -305,12 +317,12 @@ const UserVerifyAdmin: React.FC = () => {
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
{Taro.getStorageSync('kuaidi') && (
|
||||||
<Space className={'pt-4 flex justify-end'}>
|
<Space className={'pt-4 flex justify-end'}>
|
||||||
<Button type="success" onClick={() => onPass(item)}>通过</Button>
|
<Button type="success" onClick={() => onPass(item)}>通过</Button>
|
||||||
<Button type="warning" onClick={() => onReject(item)}>驳回</Button>
|
<Button type="warning" onClick={() => onReject(item)}>驳回</Button>
|
||||||
</Space>
|
</Space>
|
||||||
|
)}
|
||||||
|
|
||||||
{/*{showTextArea && (*/}
|
{/*{showTextArea && (*/}
|
||||||
{/* <TextArea*/}
|
{/* <TextArea*/}
|
||||||
|
|||||||
Reference in New Issue
Block a user