| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- // 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(/\<img/gi, '<img class="rich-img" ');
- const initialQty = Number(data.data.qty);
- data.data.qty = Number.isSafeInteger(initialQty) && initialQty > 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() {
- }
- })
|