wechat_yxcl/store/store.js
2020-11-12 14:57:34 +08:00

121 lines
2.5 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import request from '@/util/index'
import CreatePersistedState from "vuex-persistedstate"
Vue.use(Vuex)
const state = {
visitChannels: '',
shouldAuth: false, //是否需要授权
userData: {}, // 用户基础信息
isConnect: true ,// 网络是否链接
isLoading: false, // 是否在请求数据
isChangeMsgCount: false ,// 是否更新待办事项
};
const getters = {
getUser(state) {
return state.userData
},
getMenu(state) {
return state.userData.AuthorityInfo
},
getConnect(state){
return state.isConnect
},
getLoading (state) {
return state.isLoading
},
isChangeMsgCount (state) {
return state.isChangeMsgCount
},
shouldAuth() {
return state.shouldAuth
}
};
const mutations = {
setUser (state, data) {
state.userData = data
},
setVisitChannels (state, data) {
state.visitChannels = data
},
isGetTodoList (state, data) {
state.isChangeMsgCount = data
},
isConnect(state,value) {
state.isConnect = value
},
setShouldAuth(state,value){
state.shouldAuth = value
}
};
const actions = {
loginUser({dispatch, commit},code) {
},
getLoginCode({ dispatch, state}, ){
uni.login({ // 登录
success (res) {
dispatch('memberLogin',res.code) // 获取用户数据
}
})
},
memberLogin({ dispatch, state,commit},_code) {
let _user = state.userData
request.$get('WeChat_Login',{
WeChat_Code: _code || '',
}).then(data=>{
if (data.Result_Code === 100) {
let user = data.Result_Data
if (user.Membership_Id) {
dispatch('updateUser',data.Result_Data)
// _this.addUserBehavior(1002) // 记录用户行为
}else{
commit('setUser', user)
}
} else if (data.Result_Code === 200) { // session过期
dispatch('getLoginCode')
} else {
console.log(data)
}
})
},
updateUser ({ commit, state},user){
let _user = user || state.userData
request.$get('WeChat_GetBusinessMemberInfo',{Membership_Id:_user.Membership_Id,}).then(res=>{
if(res.Result_Code==100) {
let data = res.Result_Data
data.WeChat_MiniProToken = _user.WeChat_MiniProToken
data.WeChat_UserId = _user.WeChat_UserId
data.WeChat_UserName = _user.WeChat_UserName
commit('setUser', data)
}
})
}
}
export default new Vuex.Store({
state,
mutations,
getters,
actions,
plugins: [
CreatePersistedState({
storage: {
getItem: key => uni.getStorageSync(key),
setItem: (key,value) => uni.setStorageSync(key,value),
removeItem: key => uni.removeStorageSync(key)
}
})
]
});