Commit 2236c587 authored by 张伯涛's avatar 张伯涛

Merge remote-tracking branch 'origin/1.0.0_RBAC' into 1.0.0_RBAC

parents d1514799 d136452f
......@@ -6,9 +6,10 @@ import { useSettingsStore } from "@/store/modules/settings";
import { usePermissionStore } from "@/store/modules/permission";
import { useAppStore } from "@/store/modules/app";
import { storeToRefs } from "pinia";
import { useUserStore } from "@/store/modules/user";
const settingsStore = useSettingsStore();
const permissionStore = usePermissionStore();
const userStore = useUserStore();
const appStore = useAppStore();
const { sidebarLogo } = storeToRefs(settingsStore);
const layout = computed(() => settingsStore.layout);
......@@ -32,7 +33,7 @@ watch(
>
<logo v-if="sidebarLogo" :collapse="!appStore.sidebar.opened" />
<el-scrollbar v-if="showContent">
<LeftMenu :menu-list="permissionStore.routes" base-path="" />
<LeftMenu :menu-list="userStore.menus" base-path="" />
</el-scrollbar>
<NavRight v-if="layout === 'top'" />
</div>
......
......@@ -11,9 +11,14 @@ import { UserInfo } from "@/api/user/types";
import { getToken, setToken } from "@/utils/auth";
import { ref } from "vue";
import { isBoolean } from "lodash";
const Layout = () => import("@/layout/index.vue");
const modules = import.meta.glob("../../views/**/**.vue");
type CustomRoute = RouteRecordRaw & {
hidden?: boolean;
};
export const useUserStore = defineStore("user", () => {
const user = reactive<UserInfo>({
token: getToken(),
......@@ -108,7 +113,7 @@ export const useUserStore = defineStore("user", () => {
// 接口获取所有路由
if (menusList.length > 0) {
// 根据角色获取有访问权限的路由
const accessedRoutes = filterAsyncRoutes(menusList);
const accessedRoutes = filterAsyncRoutes(menusList, 0);
setRoutes(accessedRoutes);
resolve(accessedRoutes);
} else {
......@@ -125,13 +130,17 @@ export const useUserStore = defineStore("user", () => {
* 递归过滤有权限的异步(动态)路由
*
* @param routes 接口返回的异步(动态)路由
* @param upIndex 上一个Index
* @returns 返回用户有权限的异步(动态)路由
*/
function filterAsyncRoutes(routes: RouteRecordRaw[]) {
return routes.filter((route) => {
function filterAsyncRoutes(routes: CustomRoute[], upIndex: number) {
return routes.filter((route, nextIndex) => {
if (route.path[0] !== "/") {
route.path = "/" + route.path;
}
if (route.meta && isBoolean(route.hidden)) {
route.meta.hidden = route.hidden;
}
if (route.component) {
// Layout组件特殊处理
if (route.component?.toString() === "Layout") {
......@@ -141,7 +150,7 @@ export const useUserStore = defineStore("user", () => {
}
}
if (route.children != null && route.children && route.children.length) {
route.children = filterAsyncRoutes(route.children);
route.children = filterAsyncRoutes(route.children, nextIndex);
}
return true;
});
......@@ -149,6 +158,7 @@ export const useUserStore = defineStore("user", () => {
return {
user,
menus,
login,
getUserInfo,
logout,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment