| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import httputils from '@/utils/httputils'
- import store from '@/store'
- import menus from '@/data/menus'
- import session from "@/framework/utils/storage"
- import { MessageBox } from 'element-ui'
- function toLogin() {
- let ssoServer = process.env.SSO_SERVER
- let redirectUrl = window.location.protocol + '//' + window.location.host
- console.log('tologin ', `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`)
- window.location.href = `${ssoServer}/login?redirectUrl=${redirectUrl}/auth`
- }
- function checkMenu(menu, ps) {
- let result = { name: menu.name, icon: menu.icon, path: menu.path }
- if (menu.children) {
- // 如果有下级菜单权限,则自动拥有上级菜单权限
- result.children = []
- menu.children.forEach(child => {
- let submenu = checkMenu(child, ps)
- if (submenu) {
- result.children.push(submenu)
- }
- })
- return result.children.length > 0 ? result : null
- } else if (menu.opts) {
- return menu.opts.some(opt => ps[opt.permission]) ? result : null
- } else {
- // 如果没有下级菜单且没有opts属性, 菜单可以直接访问,不需要权限
- return result
- }
- }
- export default {
- /**
- * 路由守卫, 每次路由跳转时验证登录
- * @param {*} to
- * @param {*} from
- * @param {*} next
- */
- routerBeforeEach: async function(to, from, next) {
- console.log('router before ', to)
- if (to.path == '/auth' || to.path == '/nouser') {
- next()
- } else {
- let userInfo = store.getters['layout/userInfo']
- console.log("user info ", userInfo)
- if (!userInfo) {
- // 本地是未登录状态, 保存目标页面地址, 去登录
- let lastRoute = { path: to.path, params: to.params, query: to.query }
- store.commit('setLastRoute', lastRoute)
- toLogin()
- } else {
- if (to.meta.breadcrumbs) {
- store.dispatch('setBreadcrumb', to.meta.breadcrumbs)
- }
- if(
- (from.path == "/ledger/rentadd" && session.get("rentAddData") && session.get("rentAddData").length) ||
- (from.path == "/ledger/cenoteadd" && session.get("cenoteAddData") && session.get("cenoteAddData").length) ||
- (from.path == "/ledger/deviceadd" && session.get("deviceAddData") && session.get("deviceAddData").length) ||
- (from.path == "/ledger/propertyadd" && session.get("propertyAddData") && session.get("propertyAddData").length) ||
- (from.path == "/ledger/partsadd" && session.get("partsAddData") && session.get("partsAddData").length) ||
- (from.path == "/ledger/systemadd" && session.get("systemAddData") && session.get("systemAddData").length)
- ) { //判断新增信息是否保存
- MessageBox.confirm("新增信息未保存,离开将丢失新增信息,是否继续?", "提示", {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- let arr = from.path.split("/")
- let srt = arr[arr.length - 1].slice(0,-3)
- session.remove(`${srt}AddData`)
- next()
- }).catch(() => {
- next(false)
- })
- } else {
- next()
- }
- }
- return true
- }
- },
- toNoUser(){
- console.log(this)
- this.$router.replace('/nouser')
- },
- getMenus(permissions) {
- let result = []
- let allMenus = []
- // 开发环境下展示demo页面
- // if (process.env.NODE_ENV === 'development') {
- // allMenus = menus.demoMenus
- // }
- allMenus = allMenus.concat(menus.menus)
- let ps = !permissions ? {} : permissions
- allMenus.forEach(item => {
- let menu = checkMenu(item, ps)
- if (menu) {
- result.push(menu)
- }
- })
- return result
- },
- toLogout() {
- // TODO
- store.commit('setSsoToken', null)
- let ssoServer = process.env.SSO_SERVER
- let redirectUrl = window.location.protocol + '//' + window.location.host + '/'
- window.location.href = `${ssoServer}/logout?redirectUrl=${redirectUrl}`
- },
- toLoginPage: toLogin
- }
|