mutations.js 3.5 KB
Newer Older
M
maguohua 已提交
1
import { RECORD_ADDRESS, ADD_CART, REDUCE_CART, INIT_BUYCART, CLEAR_CART} from './mutation-types.js'
M
maguohua 已提交
2
import {setStore, getStore} from '../config/mUtils'
M
udpata  
maguohua 已提交
3 4

export default {
M
maguohua 已提交
5 6 7 8
	// 记录当前经度纬度
	[RECORD_ADDRESS] (state, {latitude, longitude}) {
		state.latitude = latitude;
		state.longitude = longitude;
M
udpata  
maguohua 已提交
9
	},
M
maguohua 已提交
10
	// 加入购物车
M
maguohua 已提交
11
	[ADD_CART] (state, {shopid, category_id, item_id, food_id, name, price, specs}) {
M
maguohua 已提交
12 13
		let cart = state.cartList;
		if (cart[shopid]&&cart[shopid][category_id]&&cart[shopid][category_id][item_id]&&cart[shopid][category_id][item_id][food_id]) {
M
maguohua 已提交
14
			cart[shopid][category_id][item_id][food_id]['num'] ++;
M
maguohua 已提交
15
		}else if(cart[shopid]&&cart[shopid][category_id]&&cart[shopid][category_id][item_id]){
M
maguohua 已提交
16 17 18 19 20
			cart[shopid][category_id][item_id][food_id] = {};
			cart[shopid][category_id][item_id][food_id]['num'] = 1;
			cart[shopid][category_id][item_id][food_id]['name'] = name;
			cart[shopid][category_id][item_id][food_id]['price'] = price;
			cart[shopid][category_id][item_id][food_id]['specs'] = specs;
M
maguohua 已提交
21 22
		}else if(cart[shopid]&&cart[shopid][category_id]){
			cart[shopid][category_id][item_id] = {};
M
maguohua 已提交
23
			cart[shopid][category_id][item_id][food_id] = {};
M
maguohua 已提交
24 25 26 27
			cart[shopid][category_id][item_id][food_id]['num'] = 1;
			cart[shopid][category_id][item_id][food_id]['name'] = name;
			cart[shopid][category_id][item_id][food_id]['price'] = price;
			cart[shopid][category_id][item_id][food_id]['specs'] = specs;
M
maguohua 已提交
28 29 30
		}else if(cart[shopid]){
			cart[shopid][category_id] = {};
			cart[shopid][category_id][item_id] = {};
M
maguohua 已提交
31 32 33 34 35
			cart[shopid][category_id][item_id][food_id] = {};
			cart[shopid][category_id][item_id][food_id]['num'] = 1;
			cart[shopid][category_id][item_id][food_id]['name'] = name;
			cart[shopid][category_id][item_id][food_id]['price'] = price;
			cart[shopid][category_id][item_id][food_id]['specs'] = specs;
M
maguohua 已提交
36 37 38 39
		}else{
			cart[shopid] = {};
			cart[shopid][category_id] = {};
			cart[shopid][category_id][item_id] = {};
M
maguohua 已提交
40 41 42 43 44
			cart[shopid][category_id][item_id][food_id] = {};
			cart[shopid][category_id][item_id][food_id]['num'] = 1;
			cart[shopid][category_id][item_id][food_id]['name'] = name;
			cart[shopid][category_id][item_id][food_id]['price'] = price;
			cart[shopid][category_id][item_id][food_id]['specs'] = specs;
M
maguohua 已提交
45
		}
M
maguohua 已提交
46
		//返回一个新的对象,否则计算属性无法监听到数据的变化
M
maguohua 已提交
47
		state.cartList = Object.assign({}, cart);
M
maguohua 已提交
48
		//存入localStorage
M
maguohua 已提交
49 50
		setStore('buyCart', state.cartList);
	},
M
maguohua 已提交
51
	// 移出购物车
M
maguohua 已提交
52
	[REDUCE_CART] (state, {shopid, category_id, item_id, food_id, name, price, specs}) {
M
maguohua 已提交
53 54
		let cart = state.cartList;
		if (cart[shopid]&&cart[shopid][category_id]&&cart[shopid][category_id][item_id]&&cart[shopid][category_id][item_id][food_id]) {
M
maguohua 已提交
55 56
			if (cart[shopid][category_id][item_id][food_id]['num'] > 0) {
				cart[shopid][category_id][item_id][food_id]['num'] --;
M
maguohua 已提交
57
				//返回一个新的对象,否则计算属性无法监听到数据的变化
M
maguohua 已提交
58
				state.cartList = Object.assign({}, cart);
M
maguohua 已提交
59
				//存入localStorage
M
maguohua 已提交
60
				setStore('buyCart', state.cartList);
M
maguohua 已提交
61
			}else{
M
maguohua 已提交
62
				//商品数量为0,则清空当前商品的信息
M
maguohua 已提交
63
				cart[shopid][category_id][item_id][food_id] = null;
M
maguohua 已提交
64 65 66
			}
		}
	},
M
maguohua 已提交
67
	//网页初始化时从本地缓存获取购物车数据
M
maguohua 已提交
68 69 70 71 72
	[INIT_BUYCART](state){
		let initCart = getStore('buyCart');
		if (initCart) {
			state.cartList = JSON.parse(initCart);
		}
M
maguohua 已提交
73
	},
M
maguohua 已提交
74
	//清空当前商品的购物车信息
M
maguohua 已提交
75 76 77 78
	[CLEAR_CART](state,shopid){
		state.cartList[shopid] = null;
		state.cartList = Object.assign({}, state.cartList);
		setStore('buyCart', state.cartList);
M
maguohua 已提交
79
	}
M
udpata  
maguohua 已提交
80
}