// pages/goods/goods.js var app = getApp(); Page({ /** * 页面的初始数据 */ data: { userInfo: wx.getStorageSync('userInfo'), virtualInventoryId: null, goods: {} }, /** * 生命周期函数--监听页面加载 */ async onLoad(options) { this.setData({ userInfo: wx.getStorageSync('userInfo'), virtualInventoryId: wx.getStorageSync('virtualInventoryId') }); this.initData(options.prodId); this.initCartNum(); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, async initData(prodId) { let { data } = await app.ajax.gets(`/admin/bxdprod/browse/${prodId || this.data.goods.prodId}?virtualInventoryId=${this.data.virtualInventoryId}`); data.data.picArr = data.data.pic ? data.data.pic.split(",") : ['/images/empty.png']; data.data.skuDesc = data.data.skuDesc || ''; data.data.skuDesc = data.data.skuDesc.replace(/\ 0 ? initialQty : 1; data.data.qtyInput = String(data.data.qty); data.data.qtyBeforeSubmit = data.data.qty; data.data.qtyDirty = false; data.data.qtyUpdating = false; this.setData({ goods: data.data }) }, async initCartNum() { let { data } = await app.ajax.gets(`/admin/bxdusercollection/queryCartNum?userId=${this.data.userInfo.userId}&virtualInventoryId=${this.data.virtualInventoryId}`); this.setData({ cartNum: data.data || 0 }) }, restoreGoodsQty(qty) { const restoreQty = Number(qty) || 1; this.setData({ 'goods.qty': restoreQty, 'goods.qtyInput': String(restoreQty), 'goods.qtyBeforeSubmit': restoreQty, 'goods.qtyDirty': false }); }, setGoodsQty(qty) { const goods = this.data.goods || {}; const currentQty = Number(goods.qty) || 1; const updateData = { 'goods.qty': qty, 'goods.qtyInput': String(qty) }; if (!goods.qtyDirty) { updateData['goods.qtyBeforeSubmit'] = currentQty; updateData['goods.qtyDirty'] = true; } this.setData(updateData); }, qtyInput(e) { const goods = this.data.goods || {}; const updateData = { 'goods.qtyInput': e.detail.value }; if (!goods.qtyDirty) { updateData['goods.qtyBeforeSubmit'] = Number(goods.qty) || 1; updateData['goods.qtyDirty'] = true; } this.setData(updateData); }, qtyBlur(e) { this.commitQty(e); }, qtyConfirm(e) { this.commitQty(e); }, commitQty(e) { const goods = this.data.goods || {}; const currentQty = Number(goods.qty) || 1; const rawValue = e && e.detail && e.detail.value !== undefined ? e.detail.value : goods.qtyInput; const text = String(rawValue == null ? '' : rawValue).trim(); const target = Number(text); if (!/^\d+$/.test(text) || !Number.isSafeInteger(target) || target < 1) { wx.showToast({ title: '请输入大于0的整数', icon: 'none' }); this.restoreGoodsQty(currentQty); return false; } const limitQty = Number(goods.limitQty); if (Number.isFinite(limitQty) && limitQty > 0 && target > limitQty) { wx.showToast({ title: '加购数量不能大于限购数量:' + limitQty, icon: 'none' }); this.restoreGoodsQty(currentQty); return false; } const usableStocks = Number(goods.usableStocksTotal); if (Number.isFinite(usableStocks) && usableStocks >= 0 && target > usableStocks) { wx.showToast({ title: '加购数量不能大于可供库存:' + usableStocks, icon: 'none' }); this.restoreGoodsQty(currentQty); return false; } this.setData({ 'goods.qty': target, 'goods.qtyInput': String(target) }); return true; }, async updateSku() { if (this.data.goods.qtyUpdating) return; const previousQty = Number(this.data.goods.qtyBeforeSubmit || this.data.goods.qty) || 1; if (!this.commitQty()) return; this.setData({ 'goods.qtyUpdating': true }); try { let { data } = await app.ajax.post({ url: `/admin/bxdorder/bxdPiclimit`, data: { orderSaleId: this.data.userInfo.userId }, }); if (data.data.length) { this.restoreGoodsQty(previousQty); await wx.showModal({ title: '提示', content: `当前下单已被限制, 订单${data.data.map(item => item.orderNumber)}存在反馈图片超时的情况,请尽快前去上传反馈图片` }) return; } let goods = this.data.goods; await app.ajax.post({ url: '/admin/bxdusercollection/add', method: "POST", data: { id: goods.collectionId, qty: goods.qty, modelId: goods.modelId, skuCode: goods.skuCode, virtualInventoryId: wx.getStorageSync('virtualInventoryId'), } }); if (!goods.collectionId) { await this.initData(goods.prodId); } else { this.setData({ 'goods.qtyBeforeSubmit': goods.qty, 'goods.qtyDirty': false }); } await this.initCartNum(); wx.showToast({ title: '加入购物车成功', }) } catch (e) { this.restoreGoodsQty(previousQty); } finally { this.setData({ 'goods.qtyUpdating': false }); } }, jianNum() { const goods = this.data.goods || {}; if (goods.qtyUpdating) return; const currentQty = Number(goods.qty) || 1; if (currentQty <= 1) return; this.setGoodsQty(currentQty - 1); // await this.updateSku({ // id: goods.collectionId, // qty: goods.qty // }); // await this.initData(); }, jiaNum() { const goods = this.data.goods || {}; if (goods.qtyUpdating) return; const currentQty = Number(goods.qty) || 1; const limitQty = Number(goods.limitQty); const usableStocks = Number(goods.usableStocksTotal); if (Number.isFinite(limitQty) && limitQty > 0 && currentQty + 1 > limitQty) return; if (Number.isFinite(usableStocks) && currentQty + 1 > usableStocks) return; this.setGoodsQty(currentQty + 1); // await this.updateSku({ // id: goods.id, // qty: goods.qty // }); // await this.initData(); }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })