jiuyiUniapp/shop/store/index.js

187 lines
5.0 KiB
JavaScript
Raw Normal View History

2024-12-18 15:46:27 +08:00
import Vue from 'vue';
import Vuex from 'vuex';
import $mConstDataConfig from '@/config/constData.config';
Vue.use(Vuex);
const ACCESSTOKEN = uni.getStorageSync('accessToken') || '';
const REFERRER = uni.getStorageSync('referrer') || '';
const USER = uni.getStorageSync('user') || {};
const REFRESHTOKEN = uni.getStorageSync('refreshToken') || '';
const GLOBALCONFIG = uni.getStorageSync('globalConfig') || {};
const CARTNUM = uni.getStorageSync('cartNum') || 0;
const NOTIFYNUM = uni.getStorageSync('notifyNum') || 0;
const IMHISTORY = uni.getStorageSync('imHistory') || [];
const IMNOREAD = uni.getStorageSync('imNoRead') || 0;
const THEMECOLOR = uni.getStorageSync('themeColor') || {title: '官方', name: 'rf', color: '#fa436a'};
const store = new Vuex.Store({
state: {
// 用户token
accessToken: ACCESSTOKEN,
// 用户信息
userInfo: USER.member,
// 推荐人
referrer: REFERRER,
// 小程序openid
openId: '',
// 网络状态,用于下载提醒
networkState: 'unknown',
globalConfig: GLOBALCONFIG,
refreshToken: REFRESHTOKEN,
// 购物车数字角标
cartNum: CARTNUM,
// 消息中心数字角标
notifyNum: NOTIFYNUM,
// 历史聊天消息仅保存最后100条
imHistory: IMHISTORY,
// 当前未读聊天消息数量
imNoRead: IMNOREAD,
// 当前是否处于聊天面板
isImPanel: false,
// 当前是否人工客服服务
isStuffService: false,
themeColor: THEMECOLOR
},
getters: {
// 全局配置
themeColor: state => {
return state.themeColor;
},
// 全局配置
globalConfig: state => {
return state.globalConfig;
},
// 获取网络状态
networkStatus: state => {
return state.networkState;
},
// 判断用户是否登录
hasLogin: state => {
return !!state.accessToken;
}
},
mutations: {
login(state, provider) {
state.accessToken = provider.access_token;
state.refreshToken = provider.refresh_token;
state.userInfo = provider.member;
state.user = provider;
uni.setStorageSync('user', provider);
uni.setStorageSync('sessionKey', provider.sessionKey);
uni.setStorageSync('accessToken', provider.access_token);
uni.setStorageSync('refreshToken', provider.refresh_token);
uni.setStorageSync('userInfo', provider.member);
},
logout1(state) {
console.log('logout触发了退出')
},
logout(state) {
state.accessToken = '';
state.refreshToken = '';
state.userInfo = {};
uni.removeStorageSync('accessToken');
uni.removeTabBarBadge({index: $mConstDataConfig.notifyIndex});
uni.removeTabBarBadge({index: $mConstDataConfig.cartIndex});
uni.removeStorageSync('refreshToken');
uni.removeStorageSync('userInfo');
console.log('logout触发了退出')
},
setReferrer(state, referrer) {
state.referrer = referrer;
uni.setStorageSync('referrer', referrer);
},
setOpenId(state, openId) {
state.openId = openId;
uni.setStorageSync('openId', openId);
},
setNetworkState(state, provider) {
state.networkState = provider;
},
setCartNum(state, provider) {
state.cartNum = provider;
uni.setStorageSync('cartNum', provider);
if (!provider || parseInt(provider, 10) === 0) {
uni.removeTabBarBadge({
index: $mConstDataConfig.cartIndex
});
} else {
uni.setTabBarBadge({
index: $mConstDataConfig.cartIndex,
text: provider.toString()
});
}
},
setNotifyNum(state, provider) {
state.notifyNum = provider;
uni.setStorageSync('notifyNum', provider);
if (parseInt(provider, 10) === 0) {
uni.removeTabBarBadge({
index: $mConstDataConfig.notifyIndex
});
} else {
uni.setTabBarBadge({
index: $mConstDataConfig.notifyIndex,
text: provider.toString()
});
}
},
setGlobalConfig(state, provider) {
state.globalConfig = provider;
uni.setStorageSync('globalConfig', provider);
},
addImHistory(state, provider) {
if (provider) {
let data = state.imHistory;
data.push(provider);
uni.setStorageSync('imHistory', data);
state.imHistory = data;
if (!state.isImPanel) {
this.commit('addImNoRead', 1);
}
}
},
clearImHistory(state) {
state.imHistory = [];
uni.setStorageSync('imHistory', []);
state.imNoRead = 0;
uni.setStorageSync('imNoRead', 0);
},
addImNoRead(state, provider) {
state.imNoRead = state.imNoRead + provider;
// if (state.imNoRead > $mAppConfig.imHisotryNum) {
// state.imNoRead = $mAppConfig.imHisotryNum;
// }
uni.setStorageSync('imNoRead', state.imNoRead);
},
setIsImPanel(state, provider) {
state.isImPanel = provider;
if (provider) {
state.imNoRead = 0;
uni.setStorageSync('imNoRead', 0);
}
},
setIsStuffService(state, provider) {
state.isStuffService = provider;
},
setThemeColor(state, val) {
state.themeColor = val;
uni.setStorageSync('themeColor', val);
}
},
actions: {
globalConfigChange({commit}, info) {
commit('setGlobalConfig', info);
},
networkStateChange({commit}, info) {
commit('setNetworkState', info);
},
logout({commit}) {
commit('logout');
}
}
});
export default store;