🔨 修改聚合配置.

This commit is contained in:
lijiahangmax
2024-12-16 20:37:17 +08:00
parent 985091f42b
commit 6d74b4379e
24 changed files with 403 additions and 349 deletions

View File

@@ -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');
}

View File

@@ -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');
}

View 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');
}

View File

@@ -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);

View File

@@ -90,7 +90,12 @@
editor?.setValue(value);
};
defineExpose({ getValue, setValue });
// 聚焦
const focus = () => {
editor?.focus();
};
defineExpose({ getValue, setValue, focus });
// 监听主题变更
watch(() => appStore.theme, (v) => {

View File

@@ -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 {

View File

@@ -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;
},
/**

View File

@@ -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 {
// 跳转

View File

@@ -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 => ({

View File

@@ -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,