import { ITEMLIST, GOODS_DETAILS } from './mock'; import { GoodsSpecificatedItem, CommodityDetail } from './types'; import Toast from '@vant/weapp/dist/toast/toast'; // import BigNumber from 'bignumber.js'; Page({ data: { allChecked: false, allPrice: 0, allNumber: 0, itemList: ITEMLIST as CommodityDetail[], goodsSpecificatedOptionVisible: false, maniBtnText: '编辑', isEdit: false, }, onLoad() {}, onReady() {}, onShow() {}, onHide() {}, onUnload() {}, changeEditStatus() { this.setData({ maniBtnText: this.data.isEdit ? '编辑' : '完成', }); }, onCartChange(event: WechatMiniprogram.TouchEvent) { const { itemList } = this.data; const { index } = event.target.dataset; itemList[index] && (itemList[index].checked = !!event.detail); this.setData({ itemList, }); this.computeAllPrice(); }, onAllSelectChange(event: WechatMiniprogram.TouchEvent) { const itemList = [...this.data.itemList]; itemList.forEach((item: CommodityDetail) => { if (item.disable) return; // eslint-disable-next-line no-param-reassign item.checked = !!event.detail; }); this.setData({ allChecked: !!event.detail, itemList, }); // todo 前端计算全部价钱 // ???等待跟骏总确认是否有懒加载 this.computeAllPrice(); }, // 计算当前结算的金额和数量 computeAllPrice() { let allNumber = 0; let allPrice = 0; this.data.itemList.forEach((item: CommodityDetail) => { if (item.checked) { allNumber += 1; // 金额计算 todo 调用后台接口计算整体金额 // allPrice = +((new BigNumber(allPrice).plus(new BigNumber(item.price))) // .toFixed(2)); allPrice += item.price; } }); this.setData({ allNumber, allPrice: +allPrice.toFixed(2), }); }, onClickSku(e: WechatMiniprogram.TouchEvent) { const selectedItem = e.target.dataset.item; const selectedGoodsTypes: GoodsSpecificatedItem[] = [ { id: selectedItem?.id, text: selectedItem?.sku_text, imgUrl: selectedItem?.imageUrl, }, ]; this.getGoodsDetails(); this.setData({ goodsSpecificatedOptionVisible: true, specImgUrl: selectedItem?.imageUrl, selectedGoodsTypes, goodsPrice: selectedItem?.price, }); }, // 获取商品SKU详情 async getGoodsDetails() { const goodsDetailsData = GOODS_DETAILS; this.setData({ goodsDetailsData, }); }, onGoodsConfirm(e: WechatMiniprogram.TouchEvent) { const { selectedGoodsTypes } = e.detail; if (!Boolean(selectedGoodsTypes.length)) { // eslint-disable-next-line new-cap Toast({ message: '请选择规格', duration: 1000, }); return; } // todo 调用库存接口 更新是否有库存 this.setData({ goodsSpecificatedOptionVisible: false, }); }, });