|
@@ -1,10 +1,48 @@
|
|
|
|
|
+import {getRoleMenu} from '@apis';
|
|
|
import {HOME_PATH} from '@routes';
|
|
import {HOME_PATH} from '@routes';
|
|
|
import {menuStore} from '@stores';
|
|
import {menuStore} from '@stores';
|
|
|
-import {ParseMenuType} from '@utils';
|
|
|
|
|
|
|
+import {useQuery} from '@tanstack/react-query';
|
|
|
|
|
+import {ParseMenuType, sortMenu} from '@utils';
|
|
|
import {useEffect, useState} from 'react';
|
|
import {useEffect, useState} from 'react';
|
|
|
import {useLocation, useNavigate} from 'react-router-dom';
|
|
import {useLocation, useNavigate} from 'react-router-dom';
|
|
|
import {useStore} from 'zustand';
|
|
import {useStore} from 'zustand';
|
|
|
|
|
|
|
|
|
|
+export function useMenu() {
|
|
|
|
|
+ const setMenus = useStore(menuStore, state => state.setMenu);
|
|
|
|
|
+
|
|
|
|
|
+ const {data} = useQuery(
|
|
|
|
|
+ [getRoleMenu.name],
|
|
|
|
|
+ async function() {
|
|
|
|
|
+ const data = await getRoleMenu();
|
|
|
|
|
+
|
|
|
|
|
+ if (data.msg === '200') {
|
|
|
|
|
+ const finalMenu = [
|
|
|
|
|
+ {
|
|
|
|
|
+ id: '-1',
|
|
|
|
|
+ name: '首页',
|
|
|
|
|
+ url: HOME_PATH,
|
|
|
|
|
+ pId: '0',
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ limit: 0,
|
|
|
|
|
+ orderBy: '0',
|
|
|
|
|
+ },
|
|
|
|
|
+ ...data.data,
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ setMenus(finalMenu);
|
|
|
|
|
+ return sortMenu(finalMenu);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ throw new Error(data.errMsg);
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ suspense: true,
|
|
|
|
|
+ },
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ return data!;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
export function useOpenKey(menus: ParseMenuType[]) {
|
|
export function useOpenKey(menus: ParseMenuType[]) {
|
|
|
const navigate = useNavigate();
|
|
const navigate = useNavigate();
|
|
|
const {pathname} = useLocation();
|
|
const {pathname} = useLocation();
|