feat: rbac接入完成,file接入完成

This commit is contained in:
Blizzard
2026-05-01 12:57:26 +08:00
parent e3e38800aa
commit 8ca5aa3148
10 changed files with 491 additions and 30 deletions
+16 -9
View File
@@ -10,7 +10,7 @@ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, D
import { Label } from '@/components/ui/label'
import { Checkbox } from '@/components/ui/checkbox'
import { getUserList, createUser, updateUser, deleteUser } from '@/api/system/user'
import { getUserList, createUser, updateUser, deleteUser, getUserDetail, assignUserRoles } from '@/api/system/user'
import { getRoleList } from '@/api/system/role'
import type { SystemUser, SystemRole } from '@/api/system'
@@ -64,20 +64,26 @@ export default function UserManage() {
setDialogOpen(true)
}
const openEditDialog = (user: SystemUser) => {
const openEditDialog = async (user: SystemUser) => {
setEditingUser(user)
setFormData({
account: user.account, name: user.name, phone: user.phone || '', clientId: '',
roleIds: user.roles || []
roleIds: []
})
setDialogOpen(true)
const detail = await getUserDetail(user.id)
if (detail) {
setFormData(prev => ({ ...prev, roleIds: detail.roleIds || [] }))
}
}
const handleSave = async () => {
if (editingUser) {
await updateUser({ id: editingUser.id, ...formData })
await updateUser({ id: editingUser.id, account: formData.account, name: formData.name, phone: formData.phone })
await assignUserRoles({ userId: editingUser.id, roleIds: formData.roleIds })
} else {
await createUser({ ...formData, password: '123' }) // 默认密码
await createUser({ ...formData, password: '123' })
}
setDialogOpen(false)
fetchUsers()
@@ -172,11 +178,12 @@ export default function UserManage() {
<TableCell>{user.phone || '-'}</TableCell>
<TableCell>
<div className="flex gap-1 flex-wrap">
{user.roles?.map(code => {
const role = allRoles.find(r => r.code === code)
{user.roles?.map(roleObj => {
const name = typeof roleObj === 'string' ? roleObj : roleObj.name
const key = typeof roleObj === 'string' ? roleObj : roleObj.id
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 key={key} variant="default" className="text-[10px] h-5 font-normal bg-emerald-500 hover:bg-emerald-600 text-white">
{name}
</Badge>
)
}) || <span className="text-muted-foreground text-xs"></span>}