🔨 修改聚合配置.
This commit is contained in:
@@ -93,5 +93,5 @@ export function deleteMenu(id: number) {
|
||||
* 刷新缓存
|
||||
*/
|
||||
export function refreshCache() {
|
||||
return axios.put('/infra/user-permission/refresh-cache');
|
||||
return axios.put('/infra/system-menu/refresh-cache');
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
import type { MenuQueryResponse } from '@/api/system/menu';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 用户权限响应
|
||||
*/
|
||||
export interface UserPermissionResponse {
|
||||
user: UserBaseResponse;
|
||||
roles: Array<string>;
|
||||
permissions: Array<string>;
|
||||
systemPreference: Record<string, any>;
|
||||
tippedKeys: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户基础信息
|
||||
*/
|
||||
export interface UserBaseResponse {
|
||||
id: number;
|
||||
username: string;
|
||||
nickname: string;
|
||||
avatar: string;
|
||||
passwordUpdateStatus: number;
|
||||
passwordUpdateReason: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
export function getUserPermission() {
|
||||
return axios.get<UserPermissionResponse>('/infra/user-permission/user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单列表
|
||||
*/
|
||||
export function getUserMenuList() {
|
||||
return axios.get<Array<MenuQueryResponse>>('/infra/user-permission/menu');
|
||||
}
|
||||
46
orion-visor-ui/src/api/user/user-aggregate.ts
Normal file
46
orion-visor-ui/src/api/user/user-aggregate.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type { MenuQueryResponse } from '@/api/system/menu';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 用户聚合信息
|
||||
*/
|
||||
export interface UserAggregateResponse {
|
||||
user: UserBaseResponse;
|
||||
roles: Array<string>;
|
||||
updatePassword?: UserUpdatePasswordResponse;
|
||||
permissions: Array<string>;
|
||||
systemPreference: Record<string, any>;
|
||||
tippedKeys: Array<string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户基础信息
|
||||
*/
|
||||
export interface UserBaseResponse {
|
||||
id: number;
|
||||
username: string;
|
||||
nickname: string;
|
||||
avatar: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户更新密码响应
|
||||
*/
|
||||
export interface UserUpdatePasswordResponse {
|
||||
updatePasswordStatus: number;
|
||||
updatePasswordReason: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户聚合信息
|
||||
*/
|
||||
export function getUserAggregateInfo() {
|
||||
return axios.get<UserAggregateResponse>('/infra/user-aggregate/user');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户菜单列表
|
||||
*/
|
||||
export function getUserMenuList() {
|
||||
return axios.get<Array<MenuQueryResponse>>('/infra/user-aggregate/menu');
|
||||
}
|
||||
@@ -22,8 +22,8 @@ body {
|
||||
--color-panel-gradient-end: rgba(218, 218, 218, 0);
|
||||
--color-button-bg: #E3E3E3;
|
||||
--color-button-bg-active: var(--color-sidebar-icon-checked);
|
||||
--search-bg-focus: rgba(234, 234, 234, .75);
|
||||
--search-bg: rgba(234, 234, 234, .95);
|
||||
--search-bg-focus: rgba(234, 234, 234, .95);
|
||||
--search-bg: rgba(234, 234, 234, .75);
|
||||
--search-color-text: #0E0E0E;
|
||||
--search-color-text-focus: #0F0F0F;
|
||||
--search-bg-icon-hover: rgba(12, 12, 12, .04);
|
||||
|
||||
@@ -90,7 +90,12 @@
|
||||
editor?.setValue(value);
|
||||
};
|
||||
|
||||
defineExpose({ getValue, setValue });
|
||||
// 聚焦
|
||||
const focus = () => {
|
||||
editor?.focus();
|
||||
};
|
||||
|
||||
defineExpose({ getValue, setValue, focus });
|
||||
|
||||
// 监听主题变更
|
||||
watch(() => appStore.theme, (v) => {
|
||||
|
||||
@@ -6,8 +6,15 @@ function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
|
||||
const permission = usePermission();
|
||||
if (Array.isArray(value)) {
|
||||
if (value.length > 0) {
|
||||
if (!permission.hasAnyPermission(value) && el.parentNode) {
|
||||
el.parentNode.removeChild(el);
|
||||
const parentNode = el.parentNode as Element;
|
||||
if (!permission.hasAnyPermission(value) && parentNode) {
|
||||
if (parentNode.classList.contains('arco-space-item')) {
|
||||
// 如果是 arco-space-item 则移除父节点
|
||||
parentNode.parentNode?.removeChild(parentNode);
|
||||
} else {
|
||||
// 只移除当前元素
|
||||
parentNode.removeChild(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -32,17 +32,15 @@ export default function usePermission() {
|
||||
* 是否有权限
|
||||
*/
|
||||
hasPermission(permission: string) {
|
||||
return userStore.permission?.includes('*') ||
|
||||
userStore.permission?.includes(permission);
|
||||
return userStore.permission?.includes(permission);
|
||||
},
|
||||
|
||||
/**
|
||||
* 是否有权限
|
||||
*/
|
||||
hasAnyPermission(permission: string[]) {
|
||||
return userStore.permission?.includes('*') ||
|
||||
permission.map(s => userStore.permission?.includes(s))
|
||||
.filter(Boolean).length > 0;
|
||||
return permission.map(s => userStore.permission?.includes(s))
|
||||
.filter(Boolean).length > 0;
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,11 +19,11 @@ export default function setupUserLoginInfoGuard(router: Router) {
|
||||
try {
|
||||
// 获取用户信息
|
||||
const info = await userStore.getUserInfo();
|
||||
if (info.user.passwordUpdateStatus === 1) {
|
||||
if (info.updatePassword?.updatePasswordStatus === 1) {
|
||||
// 跳转到修改密码页面
|
||||
next({
|
||||
name: UPDATE_PASSWORD_ROUTE_NAME,
|
||||
query: { reason: info.user.passwordUpdateReason },
|
||||
query: { reason: info.updatePassword?.updatePasswordReason },
|
||||
} as RouteLocationRaw);
|
||||
} else {
|
||||
// 跳转
|
||||
|
||||
@@ -5,7 +5,7 @@ import router from '@/router';
|
||||
import { defineStore } from 'pinia';
|
||||
import { Notification } from '@arco-design/web-vue';
|
||||
import { EnabledStatus } from '@/types/const';
|
||||
import { getUserMenuList } from '@/api/user/permission';
|
||||
import { getUserMenuList } from '@/api/user/user-aggregate';
|
||||
|
||||
export default defineStore('menu', {
|
||||
state: (): MenuState => ({
|
||||
|
||||
@@ -5,7 +5,7 @@ import { md5 } from '@/utils';
|
||||
import { defineStore } from 'pinia';
|
||||
import { clearToken, setToken } from '@/utils/auth';
|
||||
import { removeRouteListener } from '@/utils/route-listener';
|
||||
import { getUserPermission } from '@/api/user/permission';
|
||||
import { getUserAggregateInfo } from '@/api/user/user-aggregate';
|
||||
import { useAppStore, useCacheStore, useMenuStore, useTabBarStore, useTipsStore } from '@/store';
|
||||
|
||||
export default defineStore('user', {
|
||||
@@ -32,7 +32,7 @@ export default defineStore('user', {
|
||||
|
||||
// 获取用户信息
|
||||
async getUserInfo() {
|
||||
const { data } = await getUserPermission();
|
||||
const { data } = await getUserAggregateInfo();
|
||||
// 设置用户信息
|
||||
this.setUserInfo({
|
||||
id: data.user.id,
|
||||
|
||||
Reference in New Issue
Block a user