125 lines
2.7 KiB
JavaScript
125 lines
2.7 KiB
JavaScript
import Vue from 'vue'
|
||
import Vuex from 'vuex'
|
||
Vue.use(Vuex);
|
||
//变量
|
||
const state = {
|
||
//用户数据
|
||
userInfo: {},
|
||
//webView地址
|
||
webViewUrl: "",
|
||
loadingShow: false,
|
||
//微信场景参数
|
||
chatScenesInfo: {},
|
||
//登录弹窗状态
|
||
loginPopupShow: false,
|
||
//当前位置
|
||
currentAddress: {
|
||
areaName: "请选择",
|
||
areaId: ''
|
||
},
|
||
};
|
||
//缓存浏览器的数据名称
|
||
const cacheNameList = ["userInfo"];
|
||
let clearTime;
|
||
const mutations = {
|
||
//取出缓存数据(打开APP就取出)
|
||
setCacheData(state) {
|
||
for (let name of cacheNameList) {
|
||
// #ifndef H5
|
||
let data = uni.getStorageSync(name);
|
||
// #endif
|
||
// #ifdef H5
|
||
let data = sessionStorage.getItem(name) || localStorage.getItem(name);
|
||
// #endif
|
||
if (data) {
|
||
// #ifdef H5
|
||
try {
|
||
data = JSON.parse(data);
|
||
} catch (e) {
|
||
}
|
||
// #endif
|
||
state[name] = data;
|
||
}
|
||
}
|
||
},
|
||
//储存用户信息
|
||
setUserInfo(state, data) {
|
||
if (data) {
|
||
state.userInfo = Object.assign(state.userInfo,data);
|
||
// #ifdef H5
|
||
window.sessionStorage.setItem('userInfo', JSON.stringify(state.userInfo));
|
||
// #endif
|
||
// #ifndef H5
|
||
uni.setStorageSync('userInfo', state.userInfo);
|
||
// #endif
|
||
}
|
||
},
|
||
// 退出APP
|
||
emptyUserInfo(state) {
|
||
state.userInfo = {};
|
||
// #ifdef H5
|
||
window.sessionStorage.removeItem("userInfo");
|
||
// #endif
|
||
// #ifndef H5
|
||
uni.removeStorageSync("userInfo");
|
||
// #endif
|
||
},
|
||
//WebView地址
|
||
setWebViewUrl(state, data) {
|
||
if (data) {
|
||
state.webViewUrl = data;
|
||
// #ifdef H5
|
||
window.sessionStorage.setItem('webViewUrl', data);
|
||
// #endif
|
||
}
|
||
},
|
||
//数据加载状态
|
||
setLoadingShow(state, data) {
|
||
if(state.loadingShow){
|
||
clearTime && clearTimeout(clearTime);
|
||
clearTime = setTimeout(function(){
|
||
state.loadingShow = data;
|
||
},300);
|
||
} else {
|
||
state.loadingShow = data;
|
||
}
|
||
},
|
||
//微信场景参数
|
||
setChatScenesInfo(state, data) {
|
||
if (data) {
|
||
state.chatScenesInfo = data;
|
||
}
|
||
},
|
||
//登录弹窗状态
|
||
setLoginPopupShow(state, data) {
|
||
state.loginPopupShow = data;
|
||
},
|
||
//当前地址
|
||
setCurrentAddress(state, data) {
|
||
if (data) {
|
||
state.currentAddress = Object.assign(state.currentAddress, data);
|
||
let addressInfo = {
|
||
"provinceId": state.currentAddress.provinceId,
|
||
"provinceName": state.currentAddress.provinceName,
|
||
"cityId": state.currentAddress.cityId,
|
||
"cityName": state.currentAddress.cityName,
|
||
"areaId": state.currentAddress.areaId,
|
||
"areaName": state.currentAddress.areaName,
|
||
};
|
||
// #ifdef H5
|
||
window.sessionStorage.setItem('currentAddress', JSON.stringify(addressInfo));
|
||
// #endif
|
||
// #ifndef H5
|
||
uni.setStorageSync('currentAddress', addressInfo);
|
||
// #endif
|
||
}
|
||
}
|
||
};
|
||
//异步处理
|
||
const actions = {};
|
||
export default new Vuex.Store({
|
||
state,
|
||
mutations,
|
||
actions
|
||
});
|