diff --git a/src/layout/header-aside/components/mixin/menu.js b/src/layout/header-aside/components/mixin/menu.js index 3cf2c84d..78316f3a 100644 --- a/src/layout/header-aside/components/mixin/menu.js +++ b/src/layout/header-aside/components/mixin/menu.js @@ -1,8 +1,12 @@ +import util from '@/libs/util.js' + export default { methods: { handleMenuSelect (index, indexPath) { if (/^d2-menu-empty-\d+$/.test(index)) { this.$message.warning('临时菜单') + } else if (/^https:\/\/|http:\/\//.test(index)) { + util.open(index) } else { this.$router.push({ path: index diff --git a/src/libs/util.js b/src/libs/util.js index 4fc81800..6d36dc1b 100644 --- a/src/libs/util.js +++ b/src/libs/util.js @@ -17,6 +17,20 @@ util.title = function (titleText) { window.document.title = `${process.env.VUE_APP_TITLE}${titleText ? ` | ${titleText}` : ''}` } +/** + * @description 打开新页面 + * @param {String} url 地址 + */ +util.open = function (url) { + var a = document.createElement('a') + a.setAttribute('href', url) + a.setAttribute('target', '_blank') + a.setAttribute('id', 'd2admin-menu-link') + document.body.appendChild(a) + a.click() + document.body.removeChild(document.getElementById('d2admin-menu-link')) +} + /** * @description 判断是否在其内 * @param {*} ele element diff --git a/src/main.js b/src/main.js index df4e164c..f7f09724 100644 --- a/src/main.js +++ b/src/main.js @@ -20,7 +20,6 @@ import pluginLog from '@/plugin/log' import pluginError from '@/plugin/error' import pluginImport from '@/plugin/import' import pluginExport from '@/plugin/export' -import pluginOpen from '@/plugin/open' // 菜单和路由设置 import router from './router' @@ -34,7 +33,6 @@ Vue.use(pluginLog) Vue.use(pluginError) Vue.use(pluginImport) Vue.use(pluginExport) -Vue.use(pluginOpen) Vue.use(vueJsonTreeView) Vue.config.productionTip = false @@ -42,6 +40,8 @@ Vue.config.productionTip = false Vue.prototype.$env = process.env.NODE_ENV Vue.prototype.$baseUrl = process.env.BASE_URL +Vue.prototype.$open = util.open + new Vue({ router, store, diff --git a/src/menu/index.js b/src/menu/index.js index 75ae0482..b21b7ef2 100644 --- a/src/menu/index.js +++ b/src/menu/index.js @@ -37,6 +37,18 @@ export const menuHeader = [ demoCharts, demoPlugins, demoPlayground, + { + title: '跳转外部链接', + icon: 'link', + children: [ + { path: 'https://github.com/d2-projects/d2-admin', title: 'D2Admin Github', icon: 'github' }, + { path: 'https://juejin.im/user/57a48b632e958a006691b946/posts', title: '掘金', icon: 'globe' }, + { path: 'https://my.oschina.net/u/3871516', title: '开源中国', icon: 'globe' }, + { path: 'https://www.zhihu.com/people/fairy-ever/activities', title: '知乎', icon: 'globe' }, + { path: 'https://segmentfault.com/blog/liyang-note-book', title: 'segmentfault 专栏', icon: 'globe' }, + { path: 'http://www.fairyever.com/', title: 'www.fairyever.com', icon: 'globe' } + ] + }, { title: '空菜单演示', icon: 'folder-o', diff --git a/src/plugin/open/index.js b/src/plugin/open/index.js deleted file mode 100644 index c5b6a96b..00000000 --- a/src/plugin/open/index.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - install (Vue, options) { - // 打开一个url - Vue.prototype.$open = (url = 'https://github.com/d2-projects') => { - window.open(url) - } - } -}