import Vue from 'vue' import Vuex from 'vuex' import preState from 'vuex-persistedstate' import request from '@/api' import router from '@/router' Vue.use(Vuex) export default new Vuex.Store({ state: { token: '', mallId: '', mallName: '', mallList: [], activeDlgShow: false, showSheinAlert: false, showTemuAlert: false, userInfo: {}, labelInfo: {} }, mutations: { setToken(state, token) { state.token = token }, setMallId(state, mallId) { state.mallId = mallId }, setMallName(state, mallName) { state.mallName = mallName }, setMallList(state, mallList) { state.mallList = mallList }, logout(state) { state.token = '' state.userInfo = {} state.mallList = [] state.mallName = '' state.mallId = '' setTimeout(() => { router.push('/login') }, 200) }, setUserInfo(state, userInfo) { state.userInfo = userInfo }, setActiveDlgShow(state, flag) { state.activeDlgShow = flag }, setSheinAlertShow(state, flag) { state.showSheinAlert = flag }, setTemuAlertShow(state, flag) { state.showTemuAlert = flag }, setLabelInfo(state, info) { state.labelInfo = info } }, actions: { getUserInfo(store) { return new Promise(resolve => { request.post('/api/malluser/info').then(res => { if (res.code === 0) { store.commit('setUserInfo', res.data) resolve(res.data) } }) store.dispatch('getLabelInfo') }) }, getLabelInfo(store) { return new Promise(resolve => { request.post('/api/userExtend/getLabelDetail').then(res => { if (res.code === 0) { const isExpires = new Date().getTime() > new Date(res.data.expireTime).getTime() || res.data.skuUsed > res.data.skuTotal store.commit('setLabelInfo', { ...res.data, isExpires }) resolve(res.data) } }) }) }, SignOut(store, isClear) { if (isClear) { store.commit('logout') return false } request.post('/api/token/logout').then(res => { if (res.code === 0) { store.commit('logout') } }) } }, getters: { isLogin: state => { return !!state.token } }, plugins: [preState()] })