diff --git a/apps/vue/src/api/platform/menu.ts b/apps/vue/src/api/platform/menu.ts index 3656d3bd4..2f493fe03 100644 --- a/apps/vue/src/api/platform/menu.ts +++ b/apps/vue/src/api/platform/menu.ts @@ -17,9 +17,11 @@ enum Api { GetList = '/api/platform/menus', GetAll = '/api/platform/menus/all', GetUserMenus = '/api/platform/menus/by-user/{userId}/{framework}', - SetUserMenus = 'api/platform/menus/by-user', + SetUserMenus = '/api/platform/menus/by-user', + SetUserStartup = '/api/platform/menus/startup/{id}/by-user', GetRoleMenus = '/api/platform/menus/by-role/{role}/{framework}', SetRoleMenus = '/api/platform/menus/by-role', + SetRoleStartup = '/api/platform/menus/startup/{id}/by-role', GetMyMenus = '/api/platform/menus/by-current-user', Create = '/api/platform/menus', Delete = '/api/platform/menus/{id}', @@ -85,9 +87,27 @@ export const setUserMenu = (input: UserMenu) => { }); }; +export const setUserStartupMenu = (userId: string, menuId: string) => { + return defHttp.put({ + url: format(Api.SetUserStartup, { id: menuId }), + data: { + userId: userId, + }, + }); +}; + export const setRoleMenu = (input: RoleMenu) => { return defHttp.put({ url: Api.SetRoleMenus, data: input, }); }; + +export const setRoleStartupMenu = (roleName: string, menuId: string) => { + return defHttp.put({ + url: format(Api.SetRoleStartup, { id: menuId }), + data: { + roleName: roleName, + }, + }); +}; diff --git a/apps/vue/src/api/platform/model/menuModel.ts b/apps/vue/src/api/platform/model/menuModel.ts index 55b29e314..43874d700 100644 --- a/apps/vue/src/api/platform/model/menuModel.ts +++ b/apps/vue/src/api/platform/model/menuModel.ts @@ -46,7 +46,8 @@ export class Menu extends Route { component!: string; framework = ''; parentId?: string; - isPublic!: boolean; + isPublic = false; + startup = false; children = new Array(); } diff --git a/apps/vue/src/api/sys/model/menuModel.ts b/apps/vue/src/api/sys/model/menuModel.ts index 4ffa6146e..72ac1d796 100644 --- a/apps/vue/src/api/sys/model/menuModel.ts +++ b/apps/vue/src/api/sys/model/menuModel.ts @@ -11,6 +11,7 @@ export interface RouteItem { children?: RouteItem[]; fullPath?: string; props?: any; + startup: boolean; } /** diff --git a/apps/vue/src/store/modules/permission.ts b/apps/vue/src/store/modules/permission.ts index f9b7e49a5..4adf84c68 100644 --- a/apps/vue/src/store/modules/permission.ts +++ b/apps/vue/src/store/modules/permission.ts @@ -256,6 +256,13 @@ export const usePermissionStore = defineStore({ if (menu.children) { r.children = this.filterDynamicRoutes(menu.children); } + // 修改用户首页 + if (menu.startup) { + const userStore = useUserStore(); + const userInfo = userStore.getUserInfo; + userInfo.homePath = menu.path; + userStore.setUserInfo(userInfo); + } routeList.push(r); }); diff --git a/apps/vue/src/store/modules/user.ts b/apps/vue/src/store/modules/user.ts index 2271e2bb0..47515223a 100644 --- a/apps/vue/src/store/modules/user.ts +++ b/apps/vue/src/store/modules/user.ts @@ -140,7 +140,7 @@ export const useUserStore = defineStore({ async afterLoginAction(goHome?: boolean): Promise { if (!this.getToken) return null; // get user info - const userInfo = await this.getUserInfoAction(); + await this.getUserInfoAction(); const sessionTimeout = this.sessionTimeout; if (sessionTimeout) { @@ -155,9 +155,9 @@ export const useUserStore = defineStore({ router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw); permissionStore.setDynamicAddedRoute(true); } - goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME)); + goHome && (await router.replace(this.userInfo?.homePath || PageEnum.BASE_HOME)); } - return userInfo; + return this.userInfo; }, async getUserInfoAction(): Promise { const abpStore = useAbpStoreWithOut(); diff --git a/apps/vue/src/views/identity/components/MenuModal.vue b/apps/vue/src/views/identity/components/MenuModal.vue index e4ef2302f..52decf67c 100644 --- a/apps/vue/src/views/identity/components/MenuModal.vue +++ b/apps/vue/src/views/identity/components/MenuModal.vue @@ -13,6 +13,14 @@