Browse Source

chore: 支持解析路由占位符

master
wangxiang 2 years ago
parent
commit
872f92fa9b
  1. 15
      src/components/SimpleMenu/src/SimpleMenu.vue
  2. 3
      src/layouts/default/menu/index.vue
  3. 14
      src/router/index.ts

15
src/components/SimpleMenu/src/SimpleMenu.vue

@ -32,9 +32,7 @@
import { isFunction, isUrl } from '/@/utils/is'; import { isFunction, isUrl } from '/@/utils/is';
import { openWindow } from '/@/utils'; import { openWindow } from '/@/utils';
import { useOpenKeys } from './useOpenKeys'; import { useOpenKeys } from './useOpenKeys';
import { formatUrlParamsMenu } from '/@/router/helper/menuHelper'; import { formatRouterPlaceholder } from '/@/router';
import { useUserStore } from '/@/store/modules/user';
import { User } from '/@/api/platform/core/entity/user'
export default defineComponent({ export default defineComponent({
name: 'SimpleMenu', name: 'SimpleMenu',
@ -62,7 +60,6 @@
setup(props, { attrs, emit }) { setup(props, { attrs, emit }) {
const currentActiveMenu = ref(''); const currentActiveMenu = ref('');
const isClickGo = ref(false); const isClickGo = ref(false);
const userStore = useUserStore();
const menuState = reactive<MenuState>({ const menuState = reactive<MenuState>({
activeName: '', activeName: '',
@ -133,15 +130,7 @@
async function handleSelect(key: string) { async function handleSelect(key: string) {
if (isUrl(key)) { if (isUrl(key)) {
// openWindow(formatRouterPlaceholder(key));
formatUrlParamsMenu(key, {
user: userStore.getUserInfo,
accessToken: userStore.getAccessToken,
refreshToken: userStore.getRefreshToken,
roleIds: userStore.getRoleIds,
permissions: userStore.getPermissions
});
openWindow(key);
return; return;
} }
const { beforeClickFn } = props; const { beforeClickFn } = props;

3
src/layouts/default/menu/index.vue

@ -15,6 +15,7 @@
import { useRootSetting } from '/@/hooks/setting/useRootSetting'; import { useRootSetting } from '/@/hooks/setting/useRootSetting';
import { useAppInject } from '/@/hooks/web/useAppInject'; import { useAppInject } from '/@/hooks/web/useAppInject';
import { useDesign } from '/@/hooks/web/useDesign'; import { useDesign } from '/@/hooks/web/useDesign';
import { formatRouterPlaceholder } from '/@/router';
export default defineComponent({ export default defineComponent({
name: 'LayoutMenu', name: 'LayoutMenu',
@ -118,7 +119,7 @@
if (!isUrl(path)) { if (!isUrl(path)) {
return true; return true;
} }
openWindow(path); openWindow(formatRouterPlaceholder(path));
return false; return false;
} }

14
src/router/index.ts

@ -9,6 +9,9 @@ import type { RouteRecordRaw } from 'vue-router';
import type { App } from 'vue'; import type { App } from 'vue';
import { createRouter, createWebHashHistory } from 'vue-router'; import { createRouter, createWebHashHistory } from 'vue-router';
import { basicRoutes } from './routes'; import { basicRoutes } from './routes';
import { formatUrlParamsMenu } from '/@/router/helper/menuHelper';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
/** 固定路由,设置基础路由不需要被重置掉 */ /** 固定路由,设置基础路由不需要被重置掉 */
const WHITE_NAME_LIST: string[] = []; const WHITE_NAME_LIST: string[] = [];
@ -39,3 +42,14 @@ export function resetRouter() {
export function setupRouter(app: App<Element>) { export function setupRouter(app: App<Element>) {
app.use(router); app.use(router);
} }
/** 解析格式化路由占位符 */
export function formatRouterPlaceholder(path: string) {
return formatUrlParamsMenu(path, {
user: userStore.getUserInfo,
accessToken: userStore.getAccessToken,
refreshToken: userStore.getRefreshToken,
roleIds: userStore.getRoleIds,
permissions: userStore.getPermissions
});
}

Loading…
Cancel
Save