import Vue from 'vue'
import Vuex from 'vuex'
import utils from '../utils/utils.js'

Vue.use(Vuex); //vue的插件机制

import api from '@/api/api.js'

//Vuex.Store 构造器选项
const store = new Vuex.Store({
	state: {
		configList: {}, //配置列表
		userInfo: {}, //用户信息
		riceInfo: {}, //用户相关信息
		category: [], //分类信息
		payOrderProduct: [], //支付订单中的商品
		promotionUrl : '',//分享二维码
		cityList : [],
		selectCity : {},
	},
	getters: {
	},
	mutations: {
		// 初始化配置
		initConfig(state) {
			api('getConfig', res => {
				const configList = {
					...state.configList,
				}
				if (res.code == 200) {
					res.result.forEach(n => {
						configList[n.keyName] = n.keyContent;
						configList[n.keyName + '_keyValue'] = n.keyValue;
					});
				}
				state.configList = configList
				uni.$emit('initConfig', state.configList)
			})

			// let config = ['getPrivacyPolicy', 'getUserAgreement']
			// config.forEach(k => {
			// 	api(k, res => {
			// 		if (res.code == 200) {
			// 			state.configList[k] = res.result
			// 		}
			// 	})
			// })
		},
		login(state, config = {}) {
			uni.showLoading({
				title: '登录中...'
			})
			uni.login({
				success : res => {
					if (res.errMsg != "login:ok") {
						return
					}

					let data = {
						code: res.code,
					}

					if (uni.getStorageSync('shareId')) {
						data.shareId = 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(config.path){
							let path = config.path
							
							delete config.path
							delete config.shareId
							
							let para = utils.objectToUrlParams(config)
							uni.reLaunch({
								url: `${path}?${para}`,
							})
							return
						}

						if (!state.userInfo.nickName ||
							!state.userInfo.headImage ||
							!state.userInfo.phone
						) {
							uni.navigateTo({
								url: '/pages_order/auth/wxUserInfo'
							})
						} else {
							utils.navigateBack(-1)
						}
					})
				}
			})
		},
		getUserInfo(state) {
			api('getInfo', res => {
				if (res.code == 200) {
					state.userInfo = res.result

					if (!state.userInfo.nickName ||
						!state.userInfo.headImage
						// !state.userInfo.phone
					) {
						uni.showModal({
							title: '申请获取您的信息！',
							cancelText: '稍后补全',
							confirmText: '现在补全',
							success(e) {
								if (e.confirm) {
									uni.navigateTo({
										url: '/pages_order/auth/wxUserInfo'
									})
								}
							}
						})
					}
				}
			})
		},
		getRiceInfo(state) {
			api('getRiceInfo', {
				token: uni.getStorageSync('token') || ''
			}, res => {
				if (res.code == 200) {
					state.riceInfo = res.result
				}
			})
		},
		// 退出登录
		logout(state, reLaunch = false) {
			uni.showModal({
				title: '确认退出登录吗',
				success(r) {
					if (r.confirm) {
						state.userInfo = {}
						uni.removeStorageSync('token')
						uni.reLaunch({
							url: '/pages/index/index'
						})
					}
				}
			})
			
			// state.userInfo = {}
			// uni.removeStorageSync('token')
			
			// if(reLaunch){
			// 	uni.reLaunch({
			// 		url: '/pages/index/index'
			// 	})
			// }
			
		},
		getQrCode(state) {
			let that = this;
			if(!uni.getStorageSync('token')){
				return
			}
			uni.getImageInfo({
				src: `${Vue.prototype.$config.baseUrl}/info/createQrCode?token=${uni.getStorageSync('token')}`,
				success : res => {
					uni.hideLoading()
					that.commit('setPromotionUrl', res.path)
				},
				fail : err => {
				}
			})
		},
		// 查询分类接口
		getCategoryList(state) {
			api('getCategoryPidList', res => {
				if (res.code == 200) {
					state.category = res.result
				}
			})
		},
		// 设置支付订单中的商品
		setPayOrderProduct(state, data) {
			state.payOrderProduct = data
		},
		setPromotionUrl(state, data){
			state.promotionUrl = data
		},
		setCity(state, data){
			state.selectCity = data
		},
		getCityList(state){
			api('getCity', res => {
				if (res.code == 200) {
					state.cityList = res.result
					state.selectCity = res.result[0]
					uni.$emit('initCity', res.result[0])
				}
			})
		},
	},
	actions: {},
})

export default store