mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-11-04 08:06:12 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Vue from 'vue'
 | 
						||
import Vuex from 'vuex'
 | 
						||
// import {request} from '@/common/js/request'
 | 
						||
 | 
						||
Vue.use(Vuex)
 | 
						||
 | 
						||
const store = new Vuex.Store({
 | 
						||
	state: {
 | 
						||
		openExamine: false, // 是否开启审核状态。用于小程序、App 等审核时,关闭部分功能。TODO 芋艿:暂时没找到刷新的地方
 | 
						||
		token: '', // 用户身份 Token
 | 
						||
		userInfo: {}, // 用户基本信息
 | 
						||
		timerIdent: false, // 全局 1s 定时器,只在全局开启一个,所有需要定时执行的任务监听该值即可,无需额外开启 TODO 芋艿:需要看看
 | 
						||
		orderCount: {}, // 订单数量
 | 
						||
	},
 | 
						||
	getters: {
 | 
						||
		hasLogin(state){
 | 
						||
			return !!state.token;
 | 
						||
		}
 | 
						||
	},
 | 
						||
	mutations: {
 | 
						||
		//更新state数据
 | 
						||
		setStateAttr(state, param){
 | 
						||
			if(param instanceof Array){
 | 
						||
				for(let item of param){
 | 
						||
					state[item.key] = item.val;
 | 
						||
				}
 | 
						||
			}else{
 | 
						||
				state[param.key] = param.val;
 | 
						||
			}
 | 
						||
		},
 | 
						||
		//更新token
 | 
						||
		setToken(state, data){
 | 
						||
			const {token, tokenExpired} = data;
 | 
						||
			state.token = token;
 | 
						||
			uni.setStorageSync('uniIdToken', token);
 | 
						||
			uni.setStorageSync('tokenExpired', tokenExpired);
 | 
						||
			this.dispatch('getUserInfo'); //更新用户信息
 | 
						||
			this.dispatch('getCartCount');//更新购物车数量
 | 
						||
			uni.$emit('refreshCart');//刷新购物车
 | 
						||
			this.dispatch('getOrderCount'); //更新订单数量
 | 
						||
		},
 | 
						||
		// 退出登录
 | 
						||
		logout(state) {
 | 
						||
			state.token = '';
 | 
						||
			uni.removeStorageSync('uniIdToken');
 | 
						||
			this.dispatch('getCartCount');//更新购物车数量
 | 
						||
			uni.$emit('refreshCart');//刷新购物车
 | 
						||
			this.dispatch('getOrderCount'); //更新订单数量
 | 
						||
			setTimeout(()=>{
 | 
						||
				state.userInfo = {};
 | 
						||
			}, 1100)
 | 
						||
		},
 | 
						||
	},
 | 
						||
	actions: {
 | 
						||
		//更新用户信息
 | 
						||
		async getUserInfo({state, commit}){
 | 
						||
			const res = await request('user', 'get', {}, {
 | 
						||
				checkAuthInvalid: false
 | 
						||
			});
 | 
						||
			if(res.status === 1){
 | 
						||
				const userInfo = res.data;
 | 
						||
				commit('setStateAttr', {
 | 
						||
					key: 'userInfo',
 | 
						||
					val: userInfo
 | 
						||
				})
 | 
						||
			}
 | 
						||
		},
 | 
						||
		//更新用户订单数量
 | 
						||
		async getOrderCount({state, commit}){
 | 
						||
			let data = {
 | 
						||
				c0: 0,
 | 
						||
				c1: 0,
 | 
						||
				c2: 0,
 | 
						||
				c3: 0
 | 
						||
			}
 | 
						||
			if(state.token){
 | 
						||
				try {
 | 
						||
					const res = await request('order', 'getOrderCount');
 | 
						||
					data = res;
 | 
						||
				}catch (err){
 | 
						||
					console.error('更新用户订单数量 => ', err);
 | 
						||
				}
 | 
						||
			}
 | 
						||
			commit('setStateAttr', {
 | 
						||
				key: 'orderCount',
 | 
						||
				val: data
 | 
						||
			})
 | 
						||
		}
 | 
						||
	}
 | 
						||
}) 
 | 
						||
 | 
						||
 | 
						||
export default store
 |