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]}} -