修改用户缓存结构.

This commit is contained in:
lijiahangmax
2023-11-21 00:39:15 +08:00
parent 6c056cecff
commit 8fe105fc8a
14 changed files with 108 additions and 72 deletions

View File

@@ -1,3 +1,4 @@
import type { MenuQueryResponse } from '@/api/system/menu';
import axios from 'axios';
/**
@@ -15,6 +16,22 @@ export interface LoginResponse {
token: string;
}
/**
* 用户权限响应
*/
export interface UserPermissionResponse {
user: {
id: number;
username: string;
nickname: string;
avatar: string;
systemPreference: Record<string, any>;
tippedKeys: Array<string>;
};
roles: Array<string>;
permissions: Array<string>;
}
/**
* 登录
*/
@@ -33,12 +50,12 @@ export function logout() {
* 获取用户信息
*/
export function getUserPermission() {
return axios.get('/infra/permission/user');
return axios.get<UserPermissionResponse>('/infra/permission/user');
}
/**
* 获取菜单列表
*/
export function getMenuList() {
return axios.get('/infra/permission/menu');
return axios.get<Array<MenuQueryResponse>>('/infra/permission/menu');
}

View File

@@ -58,7 +58,7 @@ export default function usePermission() {
* 是否有角色
*/
hasAnyRole(role: string[]) {
return userStore.roles?.includes('*') ||
return userStore.roles?.includes('admin') ||
role.map(s => userStore.roles?.includes(s))
.filter(Boolean).length > 0;
}

View File

@@ -28,8 +28,8 @@
<!-- 传输框 -->
<a-transfer v-model="value"
:data="data"
:source-input-search-props="{ placeholder:'请输入主机名称/编码/IP' }"
:target-input-search-props="{ placeholder:'请输入主机名称/编码/IP' }"
:source-input-search-props="{ placeholder: '请输入主机名称/编码/IP' }"
:target-input-search-props="{ placeholder: '请输入主机名称/编码/IP' }"
:disabled="!group.key"
show-search
one-way>

View File

@@ -80,7 +80,7 @@
type="warning"
@ok="toggleRoleStatus(record)">
<a-button v-permission="['infra:system-role:delete']"
:disabled="record.code === 'admin'"
:disabled="record.code === AdminCode"
:status="toggleDictValue(roleStatusKey, record.status, 'status')"
type="text"
size="mini">
@@ -89,7 +89,7 @@
</a-popconfirm>
<!-- 分配菜单 -->
<a-button v-permission="['infra:system-role:grant-menu']"
:disabled="record.code === 'admin'"
:disabled="record.code === AdminCode"
type="text"
size="mini"
@click="emits('openGrant', record)">
@@ -108,7 +108,7 @@
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['infra:system-role:delete']"
:disabled="record.code === 'admin'"
:disabled="record.code === AdminCode"
type="text"
size="mini"
status="danger">
@@ -134,7 +134,7 @@
import { Message } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { roleStatusKey } from '../types/const';
import { roleStatusKey, AdminCode } from '../types/const';
import { usePagination } from '@/types/table';
import { useDictStore } from '@/store';

View File

@@ -1,3 +1,6 @@
// 管理员角色编码
export const AdminCode = 'admin';
// 角色状态
export const RoleStatus = {
// 停用