You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.9 KiB

import Vue from 'vue'
import Vuex from 'vuex'
import cache from '@/plugins/cache'
Vue.use(Vuex)
const store = new Vuex.Store({
getters: {
// 获取用户信息
userinfo(state) {
if (store._vm._.isEmpty(state.userinfo)) {
store._vm.$toast('请先登录')
store.commit('removeUserInfo')
return uni.reLaunch({ url: '/pages/index/index' })
}
return state.userinfo
},
// 获取位置信息
location: state => state.location,
},
state: {
// 订单备注
ordersRemark: '',
// 地址信息
address: {},
// 当前定位
location: {},
token: '',
network: 'wifi',
connected: true,
apiError: null,
WXcode: {},
userinfo: cache.get('userinfo', {}),
},
mutations: {
// 缓存订单备注
setOrdersRemark(state, value) {
state.ordersRemark = value
},
delOrdersRemark(state) {
state.ordersRemark = ''
},
// 获取地址
setAddress(state, data) {
state.address = data
},
delAddress(state) {
state.address = {}
},
// 缓存当前定位
setLocation(state, data) {
state.location = data
},
getToken(state, value) {
state.token = value
},
// 设置网络类型和连接状态
setNetwork(state, payload) {
state.network = payload.type
state.connected = payload.status
},
// 设置 API 错误状态
setApiError(state, status) {
state.apiError = status
},
// 登录信息
setWXcode(state, data) {
state.WXcode = data
},
// 设置用户信息
setUserInfo(state, info) {
state.userinfo = { ...state.userinfo, ...info }
cache.set('userinfo', state.userinfo)
},
// 清除用户信息
removeUserInfo(state) {
state.userinfo = {}
cache.remove('token')
cache.remove('userinfo')
},
},
actions: {},
})
export default store