yixie-saas-container
Version:
157 lines (120 loc) • 5.51 kB
JavaScript
/**
* 容器的初始化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