import { getInfoByToken, authLogin, getConfig } from '@/api/app'; import { USER_INFO, TOKEN, CONFIG } from '@/config/cachekey'; import Cache from '@/utils/cache' import wechath5 from '@/utils/wechath5' import { baseURL, basePath } from '@/config/app' const state = { config: Cache.get(CONFIG) || { center_setting: {}, index_setting: {}, navigation_menu: [], navigation_setting: {}, share: {} }, userInfo: Cache.get('USERINFO') || {}, token: Cache.get(TOKEN) || null, sysInfo: {}, }; const mutations = { login(state, opt) { console.log('登录成功') console.log(opt) state.token = opt.token; Cache.set(TOKEN, opt.token, 2 * 60 * 60); //保存2小时 this.dispatch('getUser') }, logout(state) { state.token = undefined; state.userInfo = undefined; Cache.remove(TOKEN); Cache.remove('USERINFO'); Cache.remove('USERINFOLIST'); }, setUserInfo(state, userInfo) { state.userInfo = userInfo; Cache.set('USERINFO', userInfo, 2 * 60 * 60); }, setConfig(state, data) { state.config = Object.assign(state.config, data) Cache.set(CONFIG, state.config); }, setSystemInfo(state, data) { state.sysInfo = data } }; const actions = { getUser({ state, commit }) { return new Promise(resolve => { getInfoByToken().then(res => { //token 过期,重新登录 if (res.code == 2) { uni.showModal({ title: '提示', content: '请使用企业身份登录', mask: false, success: function(res) { if (res.confirm) { uni.navigateTo({ url: '/pages/login/login' }) } } }) return false; } if (res.code == 1) { //个人用户,拒绝访问 if (res.data.type == 1) { uni.showToast({ icon: 'none', title: '仅对企业开放', complete: () => { uni.navigateTo({ url: '/pages/login/login' }) } }) return false; } //企业用户 if (res.data.type == 2) { authLogin(res.data).then(auth => { commit('setUserInfo', auth.data) }); } } resolve() }) }) }, getConfig({ state, commit }) { return new Promise(resolve => { getConfig({}).then(res => { if (res.status == 1) { commit('setConfig', res.data) } resolve() }) }) }, getSystemInfo({ state, commit }) { uni.getSystemInfo({ success: res => { let { statusBarHeight, platform, } = res; let navHeight; if (platform == 'ios' || platform == 'devtools') { navHeight = statusBarHeight + 44; } else { navHeight = statusBarHeight + 48; } commit('setSystemInfo', { ...res, navHeight, }) }, fail(err) { console.log(err); } }); }, wxShare({ state }, opt) { // #ifdef H5 const shareInfo = state.config.share const inviteCode = state.userInfo.distribution_code const href = window.location.href const sym = href.includes('?') ? '&' : '?' const option = { shareTitle: shareInfo.h5_share_title, shareLink: inviteCode ? `${href}${sym}invite_code=${inviteCode}` : href, shareImage: shareInfo.h5_share_image, shareDesc: shareInfo.h5_share_intro } wechath5.share(Object.assign(option, opt)) // #endif } }; export default { state, mutations, actions };