import { VStack, HStack, Button, Box, Table, Thead, Tr, Th, Tbody, Td, } from "@hope-ui/solid" import { useT, useRouter } from "~/hooks" import { For, createSignal, onMount } from "solid-js" import { getRoleList, Permission, deleteRole } from "~/utils/api" import { handleResp, notify, r } from "~/utils" import { DeletePopover } from "~/pages/manage/common/DeletePopover" interface Role { id: number name: string description: string permission_scopes: [] } interface RoleResponse { content: Role[] } interface PermissionResponse { content: Permission[] } const Role = () => { const t = useT() const { to } = useRouter() const [roles, setRoles] = createSignal([]) const [permissions, setPermissions] = createSignal([]) const [loading, setLoading] = createSignal(false) const [deleting, setDeleting] = createSignal(null) const refresh = async () => { setLoading(true) try { const [rolesResp] = await Promise.all([getRoleList()]) handleResp(rolesResp, (data) => { setRoles(data.content) }) } finally { setLoading(false) } } // 组件挂载时加载数据 onMount(() => { refresh() }) const getPermissionName = (id: number) => { const permission = permissions().find((p) => p.id === id) return permission?.name || `ID: ${id}` } const handleDelete = async (role: Role) => { setDeleting(role.id) try { const resp = await deleteRole(role.id) handleResp(resp, () => { notify.success(t("global.delete_success")) refresh() }) } finally { setDeleting(null) } } // 判断角色是否应该被禁用操作(id 为 1 和 2 的角色) const isRoleDisabled = (roleId: number) => { return roleId === 1 || roleId === 2 } const isRoleEdited = (roleId: number) => { return roleId === 2 } return ( {(title) => } {(role) => ( )}
{t(`permissions.role.${title}`)} {t("global.operations")}
{role.name} {role.description} handleDelete(role)} />
) } export default Role