| import Vue from 'vue' | |
| import Vuex from 'vuex' | |
| 
 | |
| Vue.use(Vuex); //vue的插件机制 | |
|  | |
| import api from '@/api/api.js' | |
| import fetch from '@/api/fetch.js' | |
| 
 | |
| const setUserInfo = (state, data) => { | |
| 	const userInfo = data | |
| 
 | |
| 	switch (userInfo.role) { | |
| 		case '0': | |
| 			userInfo.roleDesc = '家长' | |
| 			break | |
| 		case '1': | |
| 			userInfo.roleDesc = '学生' | |
| 			break | |
| 		default: | |
| 			break | |
| 	} | |
| 
 | |
| 	state.userInfo = userInfo | |
| 
 | |
| } | |
| 
 | |
| //Vuex.Store 构造器选项 | |
| const store = new Vuex.Store({ | |
| 	state: { | |
| 		configList: {}, //配置列表 | |
| 		shop : false,//身份判断如果不需要,可以删除 | |
| 		userInfo : {}, //用户信息 | |
| 		userCenterData: {}, | |
| 		travelerList: null, | |
| 		orderInfo: null, | |
| 		couponInfo: null, | |
| 		memberInfo: null, | |
| 		liveInfo: null, | |
| 		markmeList: [], | |
| 	}, | |
| 	getters: { | |
| 		// 角色 true为水洗店 false为酒店 : 身份判断如果不需要,可以删除 | |
| 		userShop(state){ | |
| 			return state.shop | |
| 		} | |
| 	}, | |
| 	mutations: { | |
| 		// 初始化配置 | |
| 		async initConfig(state) { | |
| 			const records = (await fetch('getConfig'))?.records | |
| 			const configList = { | |
| 				...state.configList, | |
| 			} | |
| 
 | |
| 			records.forEach(n => { | |
| 				configList[n.paramCode] = n.paramImage || n.paramText || n.paramTextarea; | |
| 			}); | |
| 
 | |
| 			const periodList = (await fetch('queryPeriodList')).records | |
| 			configList['periodList'] = periodList | |
| 
 | |
| 			const commentOptionList = (await fetch('queryCommentOptionList')).records | |
| 			configList['commentOptionList'] = commentOptionList | |
| 
 | |
| 			const experienceQuestionList = (await fetch('queryExperienceQuestionList')).records | |
| 			configList['experienceQuestionList'] = experienceQuestionList | |
| 
 | |
| 			state.configList = configList | |
| 
 | |
| 			uni.$emit('initConfig', state.configList) | |
| 
 | |
| 		}, | |
| 		// 微信登录 | |
| 		login(state){ | |
| 			uni.showLoading({ | |
| 				title: '登录中...' | |
| 			}) | |
| 			uni.login({ | |
| 				success(res) { | |
| 					if(res.errMsg != "login:ok"){ | |
| 						return | |
| 					} | |
|              | |
| 					let data = { | |
| 						code: res.code, | |
| 					} | |
| 
 | |
| 					if (uni.getStorageSync('shareId')) { | |
| 						data.vid = uni.getStorageSync('shareId') | |
| 					} | |
| 					 | |
| 					api('wxLogin', data, res => { | |
| 						 | |
| 						uni.hideLoading() | |
| 						 | |
| 						if(res.code != 200){ | |
| 							return | |
| 						} | |
| 						 | |
| 						state.userInfo = res.result.userInfo | |
| 						uni.setStorageSync('token', res.result.token) | |
| 						 | |
| 						if(!state.userInfo.nickName || !state.userInfo.headImage){ | |
| 							uni.navigateTo({ | |
| 								url: '/pages_order/auth/wxUserInfo' | |
| 							}) | |
| 						} else if (!state.userInfo.role) { | |
| 							uni.navigateTo({ | |
| 								url: '/pages_order/auth/roleChoose' | |
| 							}) | |
| 						} else { | |
| 							uni.navigateBack(-1) | |
| 						} | |
| 					}) | |
| 				} | |
| 			}) | |
| 		}, | |
| 		// 获取用户个人信息 | |
| 		getUserInfo(state){ | |
| 			api('getInfo', res => { | |
| 				if(res.code == 200){ | |
| 					setUserInfo(state, res.result) | |
| 									 | |
| 					if (!state.userInfo.role) { | |
| 						uni.navigateTo({ | |
| 							url: '/pages_order/auth/roleChoose' | |
| 						}) | |
| 					} | |
| 				} | |
| 			}) | |
| 		}, | |
| 		// 获取个人基础数据 | |
| 		getUserCenterData(state){ | |
| 			api('queryUserCenterData', res => { | |
| 				if(res.code == 200){ | |
| 					state.userCenterData = res.result | |
| 				} | |
| 			}) | |
| 		}, | |
| 		// 退出登录 | |
| 		logout(state){ | |
| 			uni.showModal({ | |
| 				title: '确认退出登录吗', | |
| 				success(r) { | |
| 					if(r.confirm){ | |
| 						state.userInfo = {} | |
| 						state.role = false | |
| 						uni.removeStorageSync('token') | |
| 						uni.reLaunch({ | |
| 							url: '/pages/index/index' | |
| 						}) | |
| 					} | |
| 				} | |
| 			}) | |
| 		}, | |
| 		clearUserInfo(state) { | |
| 			state.userInfo = {} | |
| 			state.role = false | |
| 			uni.removeStorageSync('token') | |
| 		}, | |
| 		setTravelerList(state, data) { | |
| 			state.travelerList = data | |
| 		}, | |
| 		setOrderInfo(state, data) { | |
| 			state.orderInfo = data | |
| 		}, | |
| 		setCouponInfo(state, data) { | |
| 			state.couponInfo = data | |
| 		}, | |
| 		setMemberInfo(state, data) { | |
| 			console.log('memberInfo', data) | |
| 			state.memberInfo = data | |
| 		}, | |
| 		setLiveInfo(state, data) { | |
| 			state.liveInfo = data | |
| 		}, | |
| 		setMarkmeList(state, data) { | |
| 			state.markmeList = data | |
| 		}, | |
| 	}, | |
| 	actions: { | |
| 		async collect(state, activityId) { | |
| 			console.log('collect', activityId) | |
| 
 | |
| 			try { | |
| 
 | |
| 				const res =  await fetch('collectionActivity', { activityId }, false) | |
| 				 | |
| 				uni.showToast({ | |
| 					icon: 'success', | |
| 					title: res.message, | |
| 				}); | |
| 
 | |
| 				return true | |
| 			} catch (err) { | |
| 				console.log('collect err', err) | |
| 				uni.showToast({ | |
| 					icon: 'error', | |
| 					title: err.message, | |
| 				}); | |
| 				return false | |
| 			} | |
| 		}, | |
| 	}, | |
| }) | |
| 
 | |
| export default store
 |