// store/index.js
|
import { createStore } from 'vuex'
|
import http from '../plugins/http'
|
import storage from '../plugins/storage.js'
|
import message from '../plugins/message.js'
|
|
const store = createStore({
|
state() {
|
return {
|
hasLogin: false,
|
isUniverifyLogin: false,
|
loginProvider: '',
|
openid: null,
|
testvuex: false,
|
colorIndex: 0,
|
colorList: ['#FF0000', '#00FF00', '#0000FF'],
|
noMatchLeftWindow: true,
|
active: 'componentPage',
|
leftWinActive: '/pages/component/view/view',
|
activeOpen: '',
|
menu: [],
|
appMenu: [],
|
univerifyErrorMsg: '',
|
currentInfo: {},
|
cache_address: {},
|
sign: {
|
enterprise: 0,
|
info: 0,
|
flower: 0,
|
shopping: 0,
|
follow: 0,
|
delivery: 0,
|
order: 0,
|
shopnum: 0,
|
coupon: 0,
|
cache_topay: 0,
|
},
|
cache: {
|
coupon: {},
|
goods: [],
|
cache_coupon_select_cancel: 0,
|
},
|
defaultaddress: {},
|
addressDesc: '',
|
}
|
},
|
mutations: {
|
updateLogin(state, provider) {
|
state.hasLogin = !!provider
|
if (!state.hasLogin) {
|
state.currentInfo = {}
|
storage.removeItem('token')
|
}
|
},
|
login(state, provider) {
|
state.hasLogin = true
|
state.loginProvider = provider
|
},
|
logout(state) {
|
state.hasLogin = false
|
state.openid = null
|
state.currentInfo = {}
|
state.appMenu = []
|
storage.removeItem('token')
|
storage.removeItem('appMenu')
|
message.showToast('退出登录成功')
|
},
|
setOpenid(state, openid) {
|
state.openid = openid
|
},
|
setDefaultAddress(state, defaultaddress) {
|
state.defaultaddress = defaultaddress
|
},
|
setAddressDesc(state, addressDesc) {
|
state.addressDesc = addressDesc
|
storage.setItem('defaultaddress', addressDesc || '')
|
},
|
setTestTrue(state) {
|
state.testvuex = true
|
},
|
setTestFalse(state) {
|
state.testvuex = false
|
},
|
setColorIndex(state, index) {
|
state.colorIndex = index
|
},
|
setActive(state, tabPage) {
|
state.active = tabPage
|
},
|
setActiveOpen(state, activeOpen) {
|
state.activeOpen = activeOpen
|
},
|
setMenu(state, menu) {
|
state.menu = menu
|
},
|
setUniverifyLogin(state, payload) {
|
state.isUniverifyLogin = !!payload
|
},
|
setUniverifyErrorMsg(state, payload = '') {
|
state.univerifyErrorMsg = payload
|
}
|
},
|
getters: {
|
currentColor(state) {
|
return state.colorList[state.colorIndex]
|
}
|
},
|
actions: {
|
async sign_add({ state }, key) {
|
state.sign[key] = 1
|
},
|
async sign_clear({ state }, key) {
|
state.sign[key] = 0
|
},
|
async cache_coupon_select({ state }, dto) {
|
state.cache.coupon = dto || {}
|
},
|
async cache_coupon_select_cancel({ state }, val) {
|
state.cache.cache_coupon_select_cancel = val || 0
|
},
|
async cache_goods_select({ state }, goods) {
|
state.cache.goods = goods || []
|
},
|
async logout({ commit }) {
|
commit('logout')
|
},
|
async getUserOpenId({ state, commit }) {
|
if (state.openid) return state.openid
|
return new Promise((resolve, reject) => {
|
uni.login({
|
success(data) {
|
commit('login')
|
setTimeout(() => {
|
const openid = '123456789'
|
commit('setOpenid', openid)
|
resolve(openid)
|
}, 1000)
|
},
|
fail(err) {
|
reject(err)
|
}
|
})
|
})
|
},
|
async getCurrentInfo({ commit, state }) {
|
const currentInfo = await http.request('get', '/api/current/user', {})
|
if (currentInfo && currentInfo.code === 0) {
|
state.currentInfo = currentInfo.data || {}
|
state.type = currentInfo.data.type || ''
|
state.spacecode = currentInfo.data.spacecode || ''
|
commit('updateLogin', true)
|
} else {
|
commit('updateLogin', false)
|
}
|
},
|
async getSwitchSubAccount({ commit, state }, payload) {
|
const currentInfo = await http.request('get', '/api/supplierSub/getSwitchById', {
|
params: {
|
id: payload.id,
|
type: payload.type
|
}
|
})
|
if (currentInfo && currentInfo.code === 0) {
|
state.currentInfo = currentInfo.data || {}
|
state.type = currentInfo.data.type || ''
|
state.spacecode = currentInfo.data.spacecode || ''
|
commit('updateLogin', true)
|
} else {
|
commit('updateLogin', false)
|
}
|
return currentInfo
|
},
|
async getAppMenu({ state }) {
|
const menu = await http.request('get', '/api/app/menu/permission/menu', {})
|
storage.setItem('appMenu', [])
|
if (menu && menu.code === 0) {
|
const appMenu = menu.data || []
|
storage.setItem('appMenu', appMenu)
|
}
|
},
|
async getAppMenuSupplier({ state }) {
|
const menu = await http.request('get', '/api/app/menu/supplier/permission/menu', {})
|
storage.setItem('appMenu', [])
|
if (menu && menu.code === 0) {
|
const appMenu = menu.data || []
|
storage.setItem('appMenu', appMenu)
|
}
|
},
|
async getAppMenuPartner({ state }) {
|
const menu = await http.request('get', '/api/app/menu/partner/permission/menu', {})
|
storage.setItem('appMenu', [])
|
if (menu && menu.code === 0) {
|
const appMenu = menu.data || []
|
storage.setItem('appMenu', appMenu)
|
}
|
},
|
async loginwx({ dispatch, state }, data) {
|
const resp = await http.request('post', '/api/login/wechat', {
|
data: {
|
code: data.code,
|
imgurl: data.imgurl || '',
|
nickname: data.nickname || '',
|
inviter: data.inviter || '',
|
phoneNumber: data.phoneNumber || '',
|
purePhoneNumber: data.purePhoneNumber || '',
|
}
|
})
|
if (resp && resp.code === 0) {
|
state.isBind = true
|
storage.setItem('token', resp.data.access_token || '')
|
state.hasLogin = true
|
if (data.inviter) {
|
storage.removeItem('inviter')
|
storage.removeItem('inviterTime')
|
storage.removeItem('inviterName')
|
}
|
await dispatch('getCurrentInfo')
|
} else {
|
message.showToast('登录失败: ' + (resp && resp.msg))
|
storage.removeItem('openid')
|
storage.removeItem('tel')
|
storage.removeItem('token')
|
}
|
return resp
|
}
|
}
|
})
|
|
export default store
|