diff --git a/app/pages/shop/show.js b/app/pages/shop/show.js
index c108594..7216749 100644
--- a/app/pages/shop/show.js
+++ b/app/pages/shop/show.js
@@ -20,6 +20,8 @@ Page({
activeMenuIndex: 0,
showCart: false,
+ showSubGoods: false,
+
order: initOrder,
info: {
@@ -274,7 +276,280 @@ Page({
}
]
},
- ]
+ ],
+ "goods_map": {
+ "29": {
+ "goods_id": "29",
+ "goods_name": "鸡腿饭",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/1461034075146103407535640.jpg",
+ "pic_hd1": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd1_1461034075146103407535640.jpg",
+ "pic_hd2": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd2_1461034075146103407535640.jpg",
+ "detail": "鸡腿饭 xx",
+ "price": "22.00",
+ "packing_fee": "2.00",
+ "sales": "46",
+ "praise": "0",
+ "stock": "76",
+ "sub_goods": [
+ {
+ "sub_id": "50",
+ "sub_name": "大",
+ "price": "22.98",
+ "packing_fee": "2.00",
+ "stock": "74"
+ },
+ {
+ "sub_id": "51",
+ "sub_name": "小",
+ "price": "22.00",
+ "packing_fee": "2.00",
+ "stock": "76"
+ }
+ ],
+ "sub_goods_map": {
+ "50": {
+ "sub_id": "50",
+ "sub_name": "大",
+ "price": "22.98",
+ "packing_fee": "2.00",
+ "stock": "74"
+ },
+ "51": {
+ "sub_id": "51",
+ "sub_name": "小",
+ "price": "22.00",
+ "packing_fee": "2.00",
+ "stock": "76"
+ }
+ }
+ },
+ "30": {
+ "goods_id": "30",
+ "goods_name": "排骨饭",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/1461034058146103405829482.jpg",
+ "pic_hd1": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd1_1461034058146103405829482.jpg",
+ "pic_hd2": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd2_1461034058146103405829482.jpg",
+ "detail": "排骨饭 xx",
+ "price": "20.00",
+ "packing_fee": "0.00",
+ "sales": "10",
+ "praise": "0",
+ "stock": "0",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "31": {
+ "goods_id": "31",
+ "goods_name": "招牌饭",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/1461033463146103346359875.jpg",
+ "pic_hd1": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd1_1461033463146103346359875.jpg",
+ "pic_hd2": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd2_1461033463146103346359875.jpg",
+ "detail": "招牌饭 xx",
+ "price": "20.00",
+ "packing_fee": "0.00",
+ "sales": "15",
+ "praise": "0",
+ "stock": "85",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "32": {
+ "goods_id": "32",
+ "goods_name": "鸡翅饭",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "鸡翅饭 xx",
+ "price": "20.00",
+ "packing_fee": "0.00",
+ "sales": "43",
+ "praise": "0",
+ "stock": "57",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "33": {
+ "goods_id": "33",
+ "goods_name": "香肠饭",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "香肠饭 xx",
+ "price": "20.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "34": {
+ "goods_id": "34",
+ "goods_name": "咸蛋",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "咸蛋 xx",
+ "price": "20.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "35": {
+ "goods_id": "35",
+ "goods_name": "可乐",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "可乐 xx",
+ "price": "3.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "36": {
+ "goods_id": "36",
+ "goods_name": "雪碧",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "雪碧 xx",
+ "price": "3.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "37": {
+ "goods_id": "37",
+ "goods_name": "香肠",
+ "seller_id": "2",
+ "pic_url": null,
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "香肠 xx",
+ "price": "3.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "40": {
+ "goods_id": "40",
+ "goods_name": "香蕉",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/",
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "",
+ "price": "6.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "41": {
+ "goods_id": "41",
+ "goods_name": "香蕉2",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/",
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "",
+ "price": "6.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "42": {
+ "goods_id": "42",
+ "goods_name": "香蕉3",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/",
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "",
+ "price": "6.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "43": {
+ "goods_id": "43",
+ "goods_name": "香蕉3",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/",
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "",
+ "price": "6.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "44": {
+ "goods_id": "44",
+ "goods_name": "香蕉3",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/",
+ "pic_hd1": null,
+ "pic_hd2": null,
+ "detail": "",
+ "price": "6.00",
+ "packing_fee": "0.00",
+ "sales": "0",
+ "praise": "0",
+ "stock": "100",
+ "sub_goods": [],
+ "sub_goods_map": []
+ },
+ "46": {
+ "goods_id": "46",
+ "goods_name": "香肠2",
+ "seller_id": "2",
+ "pic_url": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/1466411009146641100940750.jpg",
+ "pic_hd1": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd1_1466411009146641100940750.jpg",
+ "pic_hd2": "http://mtest.ipaotui.com/Uploadfile/Img/seller_goods/hd2_1466411009146641100940750.jpg",
+ "detail": "",
+ "price": "2.00",
+ "packing_fee": "0.00",
+ "sales": "13",
+ "praise": "0",
+ "stock": "187",
+ "sub_goods": [],
+ "sub_goods_map": []
+ }
+ }
+
}
},
onLoad: function (options) {
@@ -317,8 +592,7 @@ Page({
})
},
- addGoodsNum(order, item) {
- var {goods, goodsNums} = order
+ addGoods(goods, item) {
var {goods_id, sub_id, num} = item
var itemIndex;
if (sub_id) {
@@ -335,15 +609,9 @@ Page({
} else {
goods.push(item)
}
- if (goodsNums[goods_id]) {
- goodsNums[goods_id] += num
- } else {
- goodsNums[goods_id] = num
- }
-
+ return goods
},
- removeGoodsNum(order, item) {
- var {goods, goodsNums} = order
+ removeGoods(goods, item) {
var {goods_id, sub_id, num} = item
var itemIndex;
if (sub_id) {
@@ -357,69 +625,106 @@ Page({
}
if (itemIndex >= 0) {
item = goods[itemIndex]
- if (item.num > 1) {
+ if (item.num > num) {
item.num -= num
} else {
goods.splice(itemIndex, 1)
}
}
- if (goodsNums[goods_id] > 1) {
- goodsNums[goods_id] -= num
- } else {
- delete goodsNums[goods_id]
- }
+ return goods
},
increase(e) {
- var {order, info: {menus}} = this.data;
- var {menuIndex, goodsIndex, subIndex} = e.currentTarget.dataset;
- var goods = menus[menuIndex].goods2[goodsIndex];
+ var {order, info: {goods_map}} = this.data;
+ var {goodsId, subId} = e.currentTarget.dataset;
+ var goods = goods_map[goodsId];
var {goods_id, goods_name} = goods
- if (subIndex >= 0) {
- goods = goods.sub_goods[subIndex];
+ if (subId) {
+ goods = goods.sub_goods_map[subId];
var {sub_id, sub_name} = goods
}
order.totalNum += 1;
order.totalGoodsPrice += +goods.price;
order.totalPackingFee += +goods.packing_fee;
- order.totalPrice = order.totalGoodsPrice + order.totalPackingFee;
- this.addGoodsNum(order, {
+ order.totalPrice = +((order.totalGoodsPrice + order.totalPackingFee).toFixed(2));
+ order.goods = this.addGoods(order.goods, {
goods_id, goods_name,
sub_id, sub_name,
price: goods.price,
packing_fee: goods.packing_fee,
- menuIndex, goodsIndex, subIndex,
num: 1
})
+ order.goodsNums = this.calcGoodsNums(order.goods)
+
this.setData({
order
})
+
+ if (subId) {
+ this.setData({
+ activeSubGoods: Object.assign(this.data.activeSubGoods, {
+ subNums: this.calcSubNums(order.goods, goodsId)
+ })
+ })
+ }
+
},
decrease(e) {
- var {order, info: {menus}} = this.data;
- var {menuIndex, goodsIndex, subIndex} = e.currentTarget.dataset;
- var goods = menus[menuIndex].goods2[goodsIndex];
- var goods_id = goods['goods_id']
- var sub_id;
- if (subIndex >= 0) {
- goods = goods.sub_goods[subIndex];
- sub_id = goods['sub_id']
+ var {order, info: {goods_map}} = this.data;
+ var {goodsId, subId} = e.currentTarget.dataset;
+
+ var goods = goods_map[goodsId];
+ if (subId) {
+ goods = goods.sub_goods_map[subId];
}
order.totalNum -= 1;
order.totalGoodsPrice -= +goods.price;
order.totalPackingFee -= +goods.packing_fee;
- order.totalPrice = order.totalGoodsPrice + order.totalPackingFee;
- this.removeGoodsNum(order, {
- goods_id, sub_id,
+ order.totalPrice = +((order.totalGoodsPrice + order.totalPackingFee).toFixed(2));
+ order.goods = this.removeGoods(order.goods, {
+ goods_id: goodsId,
+ sub_id: subId,
num: 1
})
+ order.goodsNums = this.calcGoodsNums(order.goods)
this.setData({
order
})
+
+ if (subId) {
+ this.setData({
+ activeSubGoods: Object.assign(this.data.activeSubGoods, {
+ subNums: this.calcSubNums(order.goods, goodsId)
+ })
+ })
+ }
+
if (order.totalNum == 0) {
this.hideCart()
}
},
+ calcGoodsNums(goods) {
+ var goodsNums = {}
+ for (let i = 0, len = goods.length; i < len; i++) {
+ let {goods_id, num} = goods[i]
+ if (goodsNums[goods_id]) {
+ goodsNums[goods_id] += num
+ } else {
+ goodsNums[goods_id] = num
+ }
+ }
+ return goodsNums
+ },
+ calcSubNums(goods, goodsId) {
+ var subNums = {}
+ for (let i = 0, len = goods.length; i < len; i++) {
+ let {goods_id, sub_id, num} = goods[i]
+ if (goods_id == goodsId) {
+ subNums[sub_id] = num
+ }
+ }
+ return subNums
+ },
clearCart(e) {
this.setData({
order: initOrder,
@@ -440,5 +745,33 @@ Page({
this.setData({
showCart: !showCart
})
+ },
+
+ showSubGoods(e) {
+ var {info: {goods_map}, order} = this.data;
+ var {goodsId} = e.currentTarget.dataset;
+ var {goods_id, goods_name, sub_goods} = goods_map[goodsId];
+ this.setData({
+ showSubGoods: true,
+ activeSubGoods: {
+ goods_name, goods_id,
+ sub_goods,
+ activeIndex: 0,
+ subNums: this.calcSubNums(order.goods, goodsId)
+ }
+ })
+ },
+ hideSubGoods(e) {
+ this.setData({
+ showSubGoods: false
+ })
+ },
+ changeSubGoods(e) {
+ var {subIndex} = e.currentTarget.dataset;
+ var {activeSubGoods} = this.data;
+ activeSubGoods['activeIndex'] = subIndex
+ this.setData({
+ activeSubGoods
+ })
}
})
\ No newline at end of file
diff --git a/app/pages/shop/show.wxml b/app/pages/shop/show.wxml
index 2739b4a..c1319e2 100644
--- a/app/pages/shop/show.wxml
+++ b/app/pages/shop/show.wxml
@@ -64,11 +64,11 @@
月售{{item.sales}}份
¥{{item.price}}
-
+
选规格
- {{order['goodsNum'][item.goods_id]}}
+ {{order['goodsNums'][item.goods_id]}}
-
+
@@ -100,4 +100,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/pages/shop/templates/goods-actions.wxml b/app/pages/shop/templates/goods-actions.wxml
index a572f0e..d34a395 100644
--- a/app/pages/shop/templates/goods-actions.wxml
+++ b/app/pages/shop/templates/goods-actions.wxml
@@ -1,13 +1,13 @@
-
+
{{num}}
-
+
diff --git a/app/pages/shop/templates/sub-goods.wxml b/app/pages/shop/templates/sub-goods.wxml
index 6e148c7..bb2aa72 100644
--- a/app/pages/shop/templates/sub-goods.wxml
+++ b/app/pages/shop/templates/sub-goods.wxml
@@ -2,22 +2,30 @@
-
+
+
- test
+ {{goods_name}}
规格:
-
- 750ml
-
-
- 255ml
+
+ {{item.sub_name}}
+
+
+ ¥{{sub_goods[activeIndex]['price']}}
+ ({{sub_goods[activeIndex]['sub_name']}})
+
+
+
+ 加入购物车
+
+
\ No newline at end of file
diff --git a/app/pages/shop/templates/sub-goods.wxss b/app/pages/shop/templates/sub-goods.wxss
index 95c9a02..336efbc 100644
--- a/app/pages/shop/templates/sub-goods.wxss
+++ b/app/pages/shop/templates/sub-goods.wxss
@@ -36,6 +36,43 @@
padding: 10px;
}
+.sub-goods__list {
+ overflow: hidden;
+}
+
.sub-goods__item {
-
+ float: left;
+ margin: 10px 15px 0 0;
+ padding: 3px 10px;
+ min-width: 20px;
+ text-align: center;
+ border: 1rpx solid #e8e8e8;
+ border-radius: 10px/50%;
+
+}
+
+.sub-goods__item_active {
+ border-color: #FFB000;
+ color: #FFB000;
+ background-color: #FFFBF1;
+}
+.sub-goods__ft {
+ padding: 10px;
+ align-items: center;
+}
+.sub-goods__price {
+ margin-right: 5px;
+ font-size: 1.5em;
+}
+.sub-goods__add-cart {
+ padding: 3px 10px;
+ color: #fff;
+ font-size: 14px;
+ background-color:#ff5801;
+ border-radius: 10px/50%;
+}
+.sub-goods__close {
+ position: absolute;
+ right: 10px;
+ top: 5px;
}
\ No newline at end of file