feat: 侧边菜单栏增加外链支持
This commit is contained in:
parent
741524ffac
commit
a240985ee7
@ -4,6 +4,8 @@ import { useRouter } from 'vue-router'
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { usePermissionStore } from '@/store/modules/permission'
|
import { usePermissionStore } from '@/store/modules/permission'
|
||||||
|
|
||||||
|
import { isExternal } from '@/utils/is'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const permissionStore = usePermissionStore()
|
const permissionStore = usePermissionStore()
|
||||||
|
|
||||||
@ -14,10 +16,11 @@ const menuOptions = computed(() => {
|
|||||||
return generateOptions(routes, '')
|
return generateOptions(routes, '')
|
||||||
})
|
})
|
||||||
|
|
||||||
function resolvePath(...pathes) {
|
function resolvePath(basePath, path) {
|
||||||
|
if (isExternal(path)) return path
|
||||||
return (
|
return (
|
||||||
'/' +
|
'/' +
|
||||||
pathes
|
[basePath, path]
|
||||||
.filter((path) => !!path && path !== '/')
|
.filter((path) => !!path && path !== '/')
|
||||||
.map((path) => path.replace(/(^\/)|(\/$)/g, ''))
|
.map((path) => path.replace(/(^\/)|(\/$)/g, ''))
|
||||||
.join('/')
|
.join('/')
|
||||||
@ -49,7 +52,11 @@ function generateOptions(routes, basePath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleMenuSelect(key, item) {
|
function handleMenuSelect(key, item) {
|
||||||
|
if (isExternal(item.path)) {
|
||||||
|
window.open(item.path)
|
||||||
|
} else {
|
||||||
router.push(item.path)
|
router.push(item.path)
|
||||||
|
}
|
||||||
|
|
||||||
// 通过path重定向
|
// 通过path重定向
|
||||||
// router.push({
|
// router.push({
|
||||||
|
@ -86,6 +86,31 @@ export const basicRoutes = [
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'EXTERNAL-LINK',
|
||||||
|
path: '/external-link',
|
||||||
|
component: Layout,
|
||||||
|
meta: {
|
||||||
|
title: '外链',
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
name: 'LINK-GITHUB-SRC',
|
||||||
|
path: 'https://github.com/zclzone/vue-naive-admin',
|
||||||
|
meta: {
|
||||||
|
title: '源码 - github',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'LINK-GITEE-SRC',
|
||||||
|
path: 'https://gitee.com/zclzone/vue-naive-admin',
|
||||||
|
meta: {
|
||||||
|
title: '源码 - gitee',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
export const NOT_FOUND_ROUTE = {
|
export const NOT_FOUND_ROUTE = {
|
||||||
|
@ -97,6 +97,14 @@ export function isUrl(path) {
|
|||||||
return reg.test(path)
|
return reg.test(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} path
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
export function isExternal(path) {
|
||||||
|
return /^(https?:|mailto:|tel:)/.test(path)
|
||||||
|
}
|
||||||
|
|
||||||
export const isServer = typeof window === 'undefined'
|
export const isServer = typeof window === 'undefined'
|
||||||
|
|
||||||
export const isClient = !isServer
|
export const isClient = !isServer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user