路由定义修改

master
toesbieya 6 years ago
parent 428e1e10d9
commit e0309bcf4d
  1. 9
      vue/src/router/authority/index.js
  2. 23
      vue/src/router/constant/index.js
  3. 45
      vue/src/router/define.js
  4. 9
      vue/src/router/index.js
  5. 34
      vue/src/router/module/app.js
  6. 2
      vue/src/router/module/example.js
  7. 0
      vue/src/router/module/message.js
  8. 0
      vue/src/router/module/purchase.js
  9. 0
      vue/src/router/module/sell.js
  10. 0
      vue/src/router/module/stock.js
  11. 0
      vue/src/router/module/system.js
  12. 26
      vue/src/store/module/resource.js
  13. 6
      vue/src/util/auth.js
  14. 20
      vue/src/view/example/icon/indexPage.vue

@ -1,9 +0,0 @@
/*需要权限控制的路由表*/
const modulesFiles = require.context('./module', false, /\.js$/)
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
const value = modulesFiles(modulePath).default
Array.isArray(value) ? modules.push(...value) : modules.push(value)
return modules
}, [])
export default modules

@ -1,23 +0,0 @@
/**
* 不需要权限控制的路由表
* constant/module下的所有route都会加上noAuth:true
*/
const modulesFiles = require.context('./module', false, /\.js$/)
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
const value = modulesFiles(modulePath).default
Array.isArray(value) ? modules.push(...value) : modules.push(value)
return modules
}, [])
function addNoAuth(routes) {
routes.forEach(route => {
if (!route.meta) route.meta = {}
route.meta.noAuth = true
if (Array.isArray(route.children)) addNoAuth(route.children)
})
}
addNoAuth(modules)
export default modules

@ -0,0 +1,45 @@
import Layout from "@/layout/index"
import Redirect from "@/view/app/redirect"
import Login from "@/view/app/login/index"
import Page404 from "@/view/app/404"
import Page403 from "@/view/app/403"
import {metaExtend} from "@/router/util"
const modulesFiles = require.context('./module', false, /\.js$/)
const dynamicRoutes = modulesFiles.keys().reduce((modules, modulePath) => {
const value = modulesFiles(modulePath).default
Array.isArray(value) ? modules.push(...value) : modules.push(value)
return modules
}, [])
metaExtend(dynamicRoutes)
export {dynamicRoutes}
//系统自有路由
export default [
{
path: '/redirect',
component: Layout,
children: [
{
path: ':path(.*)',
props: true,
component: Redirect
}
]
},
{
path: '/login',
alias: '/register',
component: Login
},
{
path: '/404',
component: Page404
},
{
path: '/403',
component: Page403
}
]

@ -15,15 +15,13 @@ import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import NProgress from 'nprogress' import NProgress from 'nprogress'
import {contextPath, routerMode} from '@/config' import {contextPath, routerMode} from '@/config'
import constantRoutes from '@/router/constant' import defaultRoutes, {dynamicRoutes} from '@/router/define'
import authorityRoutes from '@/router/authority'
import {auth, needAuth} from "@/util/auth" import {auth, needAuth} from "@/util/auth"
import {isUserExist} from "@/util/storage" import {isUserExist} from "@/util/storage"
import { import {
setPageTitle, setPageTitle,
specifyRouteTitle, specifyRouteTitle,
transformWhiteList, transformWhiteList,
metaExtend,
needExtraRedirect, needExtraRedirect,
initMenuAndResource, initMenuAndResource,
iframeControl iframeControl
@ -33,9 +31,6 @@ Vue.use(Router)
NProgress.configure({showSpinner: false}) NProgress.configure({showSpinner: false})
metaExtend(constantRoutes)
metaExtend(authorityRoutes)
const endRoute = [{path: '*', redirect: '/404'}] const endRoute = [{path: '*', redirect: '/404'}]
const whiteList = transformWhiteList(['/login', '/register', '/404', '/403']) const whiteList = transformWhiteList(['/login', '/register', '/404', '/403'])
@ -44,7 +39,7 @@ const router = new Router({
base: contextPath, base: contextPath,
mode: routerMode, mode: routerMode,
scrollBehavior: () => ({y: 0}), scrollBehavior: () => ({y: 0}),
routes: constantRoutes.concat(authorityRoutes, endRoute) routes: defaultRoutes.concat(dynamicRoutes, endRoute)
}) })
router.beforeEach(async (to, from, next) => { router.beforeEach(async (to, from, next) => {

@ -1,9 +1,5 @@
//路由表:系统页面 //路由表:系统页面
import Layout from '@/layout' import Layout from '@/layout'
import Redirect from '@/view/app/redirect'
import Login from '@/view/app/login'
import Page404 from '@/view/app/404'
import Page403 from '@/view/app/403'
import {lazyLoadView} from "@/router/util" import {lazyLoadView} from "@/router/util"
const router = [ const router = [
@ -16,43 +12,19 @@ const router = [
path: 'index', path: 'index',
component: lazyLoadView('index/'), component: lazyLoadView('index/'),
name: 'index', name: 'index',
meta: {title: '首页', affix: true, icon: 'home', sort: 0} meta: {title: '首页', affix: true, icon: 'home', noAuth: true, sort: 0}
}, },
{ {
path: 'user', path: 'user',
name: 'userCenter', name: 'userCenter',
component: lazyLoadView('userCenter/'), component: lazyLoadView('userCenter/'),
meta: {title: '个人中心', noCache: true, icon: 'user', hidden: true}, meta: {title: '个人中心', noCache: true, icon: 'user', noAuth: true, hidden: true},
} }
] ]
}, },
{ {
path: 'https://doc.toesbieya.cn', path: 'https://doc.toesbieya.cn',
meta: {title: '文档', icon: 'documentation', sort: 1} meta: {title: '文档', icon: 'documentation', noAuth: true, sort: 1}
},
{
path: '/redirect',
component: Layout,
children: [
{
path: ':path(.*)',
props: true,
component: Redirect
}
]
},
{
path: '/login',
alias: '/register',
component: Login
},
{
path: '/404',
component: Page404
},
{
path: '/403',
component: Page403
} }
] ]

@ -5,7 +5,7 @@ import {lazyLoadView} from "@/router/util"
const router = { const router = {
path: '/example', path: '/example',
component: Layout, component: Layout,
meta: {title: '演示用例', icon: 'show', noCache: true}, meta: {title: '演示用例', icon: 'show', noAuth: true, noCache: true},
children: [ children: [
{ {
path: 'stylePage', path: 'stylePage',

@ -1,16 +1,13 @@
import path from 'path' import path from 'path'
import constantRoutes from '@/router/constant' import {dynamicRoutes} from '@/router/define'
import authorityRoutes from '@/router/authority'
import {needAuth} from "@/util/auth" import {needAuth} from "@/util/auth"
import {createTree} from "@/util/tree" import {createTree} from "@/util/tree"
import {getAllResources} from "@/api/system/resource" import {getAllResources} from "@/api/system/resource"
import {isEmpty} from "@/util" import {isEmpty} from "@/util"
import {isExternal} from "@/util/validate" import {isExternal} from "@/util/validate"
const finalConstantRoutes = transformOriginRoutes(constantRoutes) const finalRoutes = transformOriginRoutes(dynamicRoutes)
const finalAuthorityRoutes = transformOriginRoutes(authorityRoutes) clean(finalRoutes, false)
clean(finalConstantRoutes, false)
clean(finalAuthorityRoutes, false)
const state = { const state = {
routes: [], routes: [],
@ -22,15 +19,10 @@ const state = {
const mutations = { const mutations = {
routes(state, routes) { routes(state, routes) {
const tempConstantRoutes = JSON.parse(JSON.stringify(finalConstantRoutes)) clean(routes)
const tempAuthorityRoutes = JSON.parse(JSON.stringify(routes)) state.routes = routes
clean(tempConstantRoutes) const sidebarMenus = routes
clean(tempAuthorityRoutes)
state.routes = finalConstantRoutes.concat(routes)
const sidebarMenus = tempConstantRoutes.concat(tempAuthorityRoutes)
sort(sidebarMenus) sort(sidebarMenus)
state.sidebarMenus = sidebarMenus state.sidebarMenus = sidebarMenus
}, },
@ -114,10 +106,10 @@ function addFullPath(routes, basePath = '/') {
//获取经过权限控制后的路由 //获取经过权限控制后的路由
function getAuthorizedRoutes({resources, admin}) { function getAuthorizedRoutes({resources, admin}) {
if (admin === true) return finalAuthorityRoutes if (admin === true) return finalRoutes
if (!resources) return [] if (!resources) return []
filter(finalAuthorityRoutes, i => !needAuth(i) || i.fullPath in resources) filter(finalRoutes, i => !needAuth(i) || i.fullPath in resources)
return finalAuthorityRoutes return finalRoutes
} }
//若没有children且未通过,则删除,若有,当children长度为0时删除 //若没有children且未通过,则删除,若有,当children长度为0时删除

@ -1,10 +1,14 @@
import store from '@/store' import store from '@/store'
import {isEmpty} from "@/util/index"
//判断路由是否需要鉴权
export function needAuth(route) { export function needAuth(route) {
if (route.path.startsWith('/redirect')) return false if (route.path.startsWith('/redirect')) return false
return !route.meta || !route.meta.noAuth const {meta} = route
return !meta || !meta.noAuth || isEmpty(meta.title) && isEmpty(meta.dynamicTitle)
} }
//接口权限判断,有权限则返回true
export function auth(path) { export function auth(path) {
if (store.state.user.admin === true) return true if (store.state.user.admin === true) return true

@ -7,13 +7,13 @@
</div> </div>
<el-tabs type="border-card"> <el-tabs type="border-card">
<el-tab-pane label="svg-icons"> <el-tab-pane label="svg-icons">
<div :key="item" class="icon-item" v-for="item of svgIcons"> <div v-for="item of svgIcons" :key="item" class="icon-item">
<svg-icon :icon="item"/> <svg-icon :icon="item"/>
<span>{{ item }}</span> <span>{{ item }}</span>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="element-icons"> <el-tab-pane label="element-icons">
<div :key="item" class="icon-item" v-for="item of elementIcons"> <div v-for="item of elementIcons" :key="item" class="icon-item">
<i :class="item"/> <i :class="item"/>
<span>{{ item.replace('el-icon-', '') }}</span> <span>{{ item.replace('el-icon-', '') }}</span>
</div> </div>
@ -28,20 +28,8 @@ import elementIcons from './element-icon'
export default { export default {
name: "icons", name: "icons",
data() {
return { data: () => ({svgIcons, elementIcons})
svgIcons,
elementIcons
}
},
methods: {
generateIconCode(symbol) {
return `<svg-icon icon="${symbol}" />`
},
generateElementIconCode(symbol) {
return `<i class="${symbol}" />`
},
}
} }
</script> </script>

Loading…
Cancel
Save