import { timerTask } from '@/utils/timer' import { commonStore, accountStore, futuresStore, sessionData } from '@/stores' import { tokenCheck } from '@/services/api/account' import eventBus from '@/services/bus' import socket from '@/services/socket' /** * 退出登录 */ export function logout(callback?: () => void) { socket.closeAll() timerTask.clearAll() sessionData.reset() accountStore.reset() callback && callback() } /** * 初始化业务数据 * @param callback */ export async function initBaseData(callback?: () => void) { if (sessionData.getLoginInfo('Token')) { checkTokenLoop() const asyncTask = [ commonStore.getLoginData(), futuresStore.getGoodsList(), sessionData.getUserMenuList(), //sessionData.getTableColumnList(), ] await Promise.all(asyncTask).then(() => { accountStore.getAccountList() callback && callback() }).catch(() => { return Promise.reject('初始化失败') }) } else { callback && callback() } } /** * 令牌效验 */ export function checkToken() { const { LoginID, Token } = sessionData.getValue('loginInfo') return tokenCheck({ data: { LoginID, Token, }, fail: () => eventBus.$emit('LogoutNotify') }) } /** * 轮询效验令牌 */ export function checkTokenLoop() { const delay = 1 * 60 * 1000 // 每1分钟效验一次令牌 timerTask.setTimeout(() => { checkToken().then(() => checkTokenLoop()) }, delay, 'checkToken') } /** * 停止令牌效验 */ export function stopCheckToken() { timerTask.clearTimeout('checkToken') }