feat: rbac初步对接完成

This commit is contained in:
Blizzard
2026-04-30 22:53:46 +08:00
parent 3ed0b76fc2
commit e3e38800aa
45 changed files with 1637 additions and 467 deletions
+17 -24
View File
@@ -32,9 +32,9 @@ export default function UserManage() {
setLoading(true)
try {
const res = await getUserList({ current: 1, pageSize: 10, ...search })
if (res.data) {
setUsers(res.data.list)
setTotal(res.data.total)
if (res) {
setUsers(res.list)
setTotal(res.total)
}
} finally {
setLoading(false)
@@ -43,7 +43,7 @@ export default function UserManage() {
const fetchRoles = async () => {
const res = await getRoleList({ current: 1, pageSize: 100 })
if (res.data) setAllRoles(res.data.list)
if (res) setAllRoles(res.list)
}
useEffect(() => {
@@ -67,17 +67,17 @@ export default function UserManage() {
const openEditDialog = (user: SystemUser) => {
setEditingUser(user)
setFormData({
account: user.account, name: user.name, phone: user.phone || '', clientId: user.clientId || '',
roleIds: user.roles?.map(r => r.id) || []
account: user.account, name: user.name, phone: user.phone || '', clientId: '',
roleIds: user.roles || []
})
setDialogOpen(true)
}
const handleSave = async () => {
if (editingUser) {
await updateUser(editingUser.id, formData)
await updateUser({ id: editingUser.id, ...formData })
} else {
await createUser(formData)
await createUser({ ...formData, password: '123' }) // 默认密码
}
setDialogOpen(false)
fetchUsers()
@@ -85,7 +85,7 @@ export default function UserManage() {
const handleDelete = async (id: string) => {
if (confirm('确定要删除这个用户吗?')) {
await deleteUser(id)
await deleteUser([id])
fetchUsers()
}
}
@@ -147,7 +147,6 @@ export default function UserManage() {
<TableHead className="w-[100px] pl-6"></TableHead>
<TableHead></TableHead>
<TableHead></TableHead>
<TableHead></TableHead>
<TableHead></TableHead>
<TableHead></TableHead>
<TableHead className="text-right pr-6"></TableHead>
@@ -171,26 +170,20 @@ export default function UserManage() {
<TableCell className="font-medium pl-6">{user.account}</TableCell>
<TableCell>{user.name}</TableCell>
<TableCell>{user.phone || '-'}</TableCell>
<TableCell>
{user.clientId ? (
<Badge variant="outline" className="bg-primary/5 text-primary border-primary/20">
{user.clientId}
</Badge>
) : (
<Badge variant="secondary" className="bg-muted text-muted-foreground">System</Badge>
)}
</TableCell>
<TableCell>
<div className="flex gap-1 flex-wrap">
{user.roles?.map(r => (
<Badge key={r.id} variant="default" className="text-[10px] h-5 font-normal bg-emerald-500 hover:bg-emerald-600 text-white">
{r.name}
{user.roles?.map(code => {
const role = allRoles.find(r => r.code === code)
return (
<Badge key={code} variant="default" className="text-[10px] h-5 font-normal bg-emerald-500 hover:bg-emerald-600 text-white">
{role ? role.name : code}
</Badge>
)) || <span className="text-muted-foreground text-xs"></span>}
)
}) || <span className="text-muted-foreground text-xs"></span>}
</div>
</TableCell>
<TableCell className="text-muted-foreground text-sm">
{new Date(user.createdAt).toLocaleDateString('zh-CN')}
{user.createdAt ? new Date(user.createdAt * 1000).toLocaleDateString('zh-CN') : '-'}
</TableCell>
<TableCell className="text-right pr-6">
<DropdownMenu>