UNPKG

yixie-saas-container

Version:

157 lines (120 loc) 5.51 kB
/** * 容器的初始化js 获取saas容器相关请求的配置 */ import storage from 'store' //使用本地存储 import NProgress from 'nprogress' //进度条 import CONFIG from './common/saasconfig' //导入 SAAS配置 import http from './common/http' //导入 http请求 import { getToken } from './common/cookie' //导入 获取cookie中的token import initSaasStore from './common/saasstore' //导入全局store import initRouter from './common/saasrouter' //导入全局路由 import notification from 'ant-design-vue/es/notification' //引用ant-vue 通知组件 notification.info({ message: '正在使用yixie-saas-container', description: 'yixie-saas-container 统一处理菜单 权限 SAAS用户 http请求 当前版本version-1.0.17', duration: 10, onClick: () => { console.log('Notification Clicked!'); }, }); console.log("version-1.0.17") function sleep(d){ for(var t = Date.now();Date.now() - t <= d;); } /** * SAAS前端控制 整体js */ const SAAS = { initStatus:function(){ return storage.get(CONFIG.SAAS_INIT_OK); }, /** * 初始化全局store */ initStore: function (customMods, getters) { console.log('#############初始化全局store###############') return initSaasStore(customMods, getters); }, /** * 初始化全局路由 */ initRouter: function (constantRouterMap) { console.log('#############初始化全局路由###############') return initRouter(constantRouterMap) }, /** * 初始化配置信息 */ initConfig: function(domain, protocol) { console.log('#############初始化配置信息###############') //全局缓存域名 和 请求协议 storage.set(CONFIG.SAAS_SYS_DOMAIN_KEY, domain); storage.set(CONFIG.REQUEST_PROTOCOL_KEY, protocol + '://'); storage.set(CONFIG.SAAS_INIT_OK,false); //网络请求获取 const configUrl = storage.get(CONFIG.REQUEST_PROTOCOL_KEY) + CONFIG.SAAS_CONFIG_URL; //初始化进度条 NProgress.configure({ showSpinner: false }) http.get(configUrl).then(response => { console.log(response); //保存数据 storage.set(CONFIG.SAAS_INIT_URL_STORAGE_KEY, response.initUrl); storage.set(CONFIG.SAAS_USER_URL_STORAGE_KEY, response.saasUserInfoUrl); storage.set(CONFIG.SAAS_USER_TEST_URL_STORAGE_KEY, response.saasUserInfoUrlTest); storage.set(CONFIG.SAAS_LOGOUT_URL_STORAGE_KEY, response.saasUserLogout); storage.set(CONFIG.SAAS_LOGIN_URL_STORAGE_KEY, response.loginUrl); storage.set(CONFIG.SAAS_INIT_OK,true); }).catch(function (error) { notification.error({ message: '错误', description: '获取SAAS基础配置失败' }) }); }, /** * 初始化SAAS方法 */ bootstart: function (router, store) { console.log('#############启动SAAS前端###############') console.log(storage.get(CONFIG.SAAS_INIT_OK)) //配置路由切面 router.beforeEach((to, from, next) => { NProgress.start() // 获取cookie里面是否有token 退出登录和token登录失效都会本地触发清除token if (getToken(CONFIG.COOKIE_TOKEN)) { if (store.state.saasuser.menu.length === 0) { //这里先做一个判断是否有用户的信息 //去请求接口获取 uploadSaasuer返回的是一个Promise store.dispatch('updateSaasUser').then(res => { router.addRoutes(store.state.saasuser.menu); // 请求带有 redirect 重定向时,登录自动重定向到该地址 const redirect = decodeURIComponent(from.query.redirect || to.path) if (to.path === redirect) { // set the replace: true so the navigation will not leave a history record next({ ...to, replace: true }) } else { // 跳转到目的路由 next({ path: redirect }) } }).catch((error) => { notification.error({ message: '错误', description: '获取SAAS用户信息失败,请重试' }) }) } else { //跳转到对应的页面 next(); } } else { //没有token const redirectUrl = storage.get(CONFIG.REQUEST_PROTOCOL_KEY) + storage.get(CONFIG.SAAS_LOGIN_URL_STORAGE_KEY) + '?callback=' + storage.get(CONFIG.REQUEST_PROTOCOL_KEY) + storage.get(CONFIG.SAAS_INIT_URL_STORAGE_KEY) + '?callback=' + storage.get(CONFIG.REQUEST_PROTOCOL_KEY) + storage.get(CONFIG.SAAS_SYS_DOMAIN_KEY) + to.fullPath; // console.log(redirectUrl); window.location.href = redirectUrl; } }); router.afterEach((to, from, next) => { NProgress.done() }) }, } export default SAAS