diff --git a/src/views/system/user/form/role.vue b/src/views/system/user/form/role.vue index 19adc5b..5381b7e 100644 --- a/src/views/system/user/form/role.vue +++ b/src/views/system/user/form/role.vue @@ -41,9 +41,9 @@ const newFormInline = ref(props.formInline); v-for="(item, index) in newFormInline.roleOptions" :key="index" :value="item.id" - :label="item.name" + :label="item.roleName" > - {{ item.name }} + {{ item.roleName }} diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index e43fd21..00efe88 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -139,7 +139,7 @@ const { ref="tableRef" row-key="id" adaptive - :adaptiveConfig="{ offsetBottom: 108 }" + :adaptiveConfig="{ offsetBottom: 10 }" align-whole="center" table-layout="auto" :loading="loading" diff --git a/src/views/system/user/utils/hook.tsx b/src/views/system/user/utils/hook.tsx index 00f338d..642fc3a 100644 --- a/src/views/system/user/utils/hook.tsx +++ b/src/views/system/user/utils/hook.tsx @@ -16,7 +16,12 @@ import { hideTextAtIndex, deviceDetection } from "@pureadmin/utils"; -import { getUserRoleIds, getUserList, getAllRoleList } from "@/api/system"; +import { + getUserRoleIds, + getUserList, + getAllRoleList, + assignUserRoles +} from "@/api/system"; import { syncFeishuUsers } from "@/api/feishu"; import { ElForm, @@ -86,15 +91,15 @@ export function useUser(tableRef: Ref) { }, { label: "性别", - prop: "sex", + prop: "gender", minWidth: 90, cellRenderer: ({ row, props }) => ( - {row.sex === 1 ? "女" : "男"} + {row.gender === 1 ? "男" : "女"} ) }, @@ -429,7 +434,10 @@ export function useUser(tableRef: Ref) { /** 分配角色 */ async function handleRole(row) { - // 选中的角色列表 + // 获取所有角色列表 + const rolesRes = await getAllRoleList(); + const roleList = rolesRes.data ?? []; + // 获取用户当前的角色列表 const ids = (await getUserRoleIds(row.id)).data ?? []; addDialog({ title: `分配 ${row.username} 用户的角色`, @@ -437,7 +445,7 @@ export function useUser(tableRef: Ref) { formInline: { username: row?.username ?? "", nickname: row?.nickname ?? "", - roleOptions: roleOptions.value ?? [], + roleOptions: roleList, ids } }, @@ -447,11 +455,17 @@ export function useUser(tableRef: Ref) { fullscreenIcon: true, closeOnClickModal: false, contentRenderer: () => h(roleForm), - beforeSure: (done, { options }) => { + beforeSure: async (done, { options }) => { const curData = options.props.formInline as RoleFormItemProps; - console.log("curIds", curData.ids); - // 根据实际业务使用curData.ids和row里的某些字段去调用修改角色接口即可 - done(); // 关闭弹框 + try { + const { code } = await assignUserRoles(row.id, curData.ids); + if (code === 200) { + message(`已成功为 ${row.username} 分配角色`, { type: "success" }); + done(); // 关闭弹框 + } + } catch { + message("分配角色失败", { type: "error" }); + } } }); } diff --git a/src/views/system/user/utils/types.ts b/src/views/system/user/utils/types.ts index c5ab88c..1b6218c 100644 --- a/src/views/system/user/utils/types.ts +++ b/src/views/system/user/utils/types.ts @@ -1,3 +1,5 @@ +import type { SysRole } from "@/api/system"; + interface FormItemProps { id?: number; /** 用于判断是`新增`还是`修改` */ @@ -25,9 +27,9 @@ interface RoleFormItemProps { username: string; nickname: string; /** 角色列表 */ - roleOptions: any[]; + roleOptions: SysRole[]; /** 选中的角色列表 */ - ids: Record[]; + ids: number[]; } interface RoleFormProps { formInline: RoleFormItemProps;