Files
temu-plugin/src/store/index.js
2024-10-30 22:01:57 +08:00

114 lines
2.4 KiB
JavaScript

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()]
})