import Cookies from "js-cookie"; import { http } from "./request"; import { ssoConfig } from "./ssoConfig" import moment from "moment" import { SketonVue } from "../types/sketon.vue"; import { Context } from "@nuxt/types"; let { injectMenus } = require("~/menu.js") export default { methods: { // 获取用户信息 async getUser(this: SketonVue) { let token = Cookies.get('user_token'); this.setAppCookie("user", "token", token) if (!token) { this.setUser({}) return Promise.resolve(401) } const { data } = await http.get(ssoConfig.origin + '/user/profile', { headers: { Authorization: 'bearer ' + this.user.token } }); let user = { ...data.data } this.setUser(user) return Promise.resolve(200) }, setUser(this: SketonVue , user:any) { this.setAppCookie("user", "logstatus", user.code ? true : false) this.setAppCookie("user", "loginTime", moment().format("YYYY-MM-DD HH:mm:ss")) this.setAppLocal("user", user, 'info') }, // 是否时间过期 isExitUserCash() { return false }, removeUser(this: SketonVue) { this.user = {} sessionStorage.removeItem("page") Cookies.remove('user_token') }, setFetchMenuList(this: SketonVue , list: any[]) { if (list) { list.forEach((item) => { item.title = item.name; item.name = item.code; item.path = item.url if (/^(https?:|mailto:|tel:)/.test(item.path)) { item.path = item.url + '?chanel=apass&passToken=' + this.user.token } if (item && item.childrenMenu) { this.setFetchMenuList(item.childrenMenu); } }); } }, // 获取菜单数据 async loadMenu(this: SketonVue , ctx:Context, status:number) { // 是否使用系统配置菜单 let data:any = {} if (this.isMockApp) { data = await http.post('http://yly.gycloud.net.cn/yly-common/onlcode/project/queryMenuTreeByAppId', { projectId: this.mockProjectId }, { headers: { Authorization: 'bearer ' + this.user.token } }) } else { data = await http.post(ssoConfig.origin + '/user/queryCurrentUserMenu', null, { params: { clientId: this.auth.clientId }, headers: { Authorization: 'bearer ' + this.user.token } }) } data = data.data // sso 的菜单menu const menu = (!this.isMockApp ? data.data : data.result) || [] this.setFetchMenuList(menu) this.menus = menu injectMenus && injectMenus.call(this, this.menus) // 自定义菜单 return Promise.resolve(status); }, setAppCookie(this: SketonVue , state:string, key:string, value:string) { if (value === undefined || value === null) { return } Cookies.set(`${state}_${key}`, value, { expires: 0.5 }) if (!this[state]) this[state] = {} this[state][key] = value return }, setAppLocal(this: SketonVue ,state:string, value:string, key:string) { if (value === undefined || value === null) { console.error('setAppLocal value 设置失败') return } let oldCash:any = key ? {} : value // 获取Local let sessionState = localStorage.getItem(state) if (key && sessionState) { oldCash = JSON.parse(sessionState) || {} oldCash[key] = value } localStorage.setItem(state, JSON.stringify(oldCash)) this[state][key] = value || {} }, }, }