240 lines
6.9 KiB
JavaScript
240 lines
6.9 KiB
JavaScript
|
var app = getApp();
|
||
|
var status = require('../../utils/index.js');
|
||
|
var util = require('../../utils/util.js');
|
||
|
|
||
|
Component({
|
||
|
externalClasses: ["i-class"],
|
||
|
properties: {
|
||
|
updateCart: {
|
||
|
type: Number,
|
||
|
value: 0,
|
||
|
observer: function (val) {
|
||
|
if (val>0) {
|
||
|
this.updateCartNum();
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
likeTitle: {
|
||
|
type: String,
|
||
|
value: '大家常买'
|
||
|
},
|
||
|
controller: {
|
||
|
type: String,
|
||
|
value: 'index.load_gps_goodslist'
|
||
|
},
|
||
|
gid: {
|
||
|
type: Number,
|
||
|
value: 0
|
||
|
}
|
||
|
},
|
||
|
|
||
|
data: {
|
||
|
disabled: false,
|
||
|
list: [],
|
||
|
show_goods_guess_like: 1,
|
||
|
_lock: false
|
||
|
},
|
||
|
|
||
|
attached: function() {
|
||
|
console.log('guess like attached');
|
||
|
this.setData({_lock: true },()=>{
|
||
|
this.initFn();
|
||
|
})
|
||
|
},
|
||
|
|
||
|
pageLifetimes: {
|
||
|
show: function () {
|
||
|
this.data._lock || this.initFn();
|
||
|
console.log('guess like show');
|
||
|
}
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
initFn: function(){
|
||
|
let that = this;
|
||
|
this.setData({list: []}, ()=>{
|
||
|
that.getData();
|
||
|
that.updateCartNum();
|
||
|
})
|
||
|
},
|
||
|
getData: function () {
|
||
|
var token = wx.getStorageSync('token');
|
||
|
var that = this;
|
||
|
var cur_community = wx.getStorageSync('community');
|
||
|
let { controller, gid }= this.data;
|
||
|
app.util.request({
|
||
|
'url': 'entry/wxapp/index',
|
||
|
'data': {
|
||
|
controller,
|
||
|
token: token,
|
||
|
pageNum: 1,
|
||
|
is_random: 1,
|
||
|
head_id: cur_community.communityId || '',
|
||
|
id: gid
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
success: function (res) {
|
||
|
if (res.data.code == 0) {
|
||
|
let oldList = that.data.list;
|
||
|
let list = res.data.list || [];
|
||
|
list = oldList.concat(list);
|
||
|
let show_goods_guess_like = 1;
|
||
|
if (gid) show_goods_guess_like = res.data.show_goods_guess_like || 0;
|
||
|
that.setData({ list, show_goods_guess_like, _lock: false })
|
||
|
} else {
|
||
|
that.setData({ noMore: true, _lock: false })
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
openSku: function (e) {
|
||
|
let idx = e.currentTarget.dataset.idx;
|
||
|
this.setData({ disabled: false })
|
||
|
let spuItem = this.data.list[idx];
|
||
|
if (spuItem.skuList.length === void 0) {
|
||
|
this.triggerEvent("openSku", {
|
||
|
actId: spuItem.actId,
|
||
|
skuList: spuItem.skuList,
|
||
|
promotionDTO: spuItem.promotionDTO || '',
|
||
|
allData: {
|
||
|
spuName: spuItem.spuName,
|
||
|
skuImage: spuItem.skuImage,
|
||
|
actPrice: spuItem.actPrice,
|
||
|
canBuyNum: spuItem.spuCanBuyNum,
|
||
|
stock: spuItem.spuCanBuyNum,
|
||
|
marketPrice: spuItem.marketPrice,
|
||
|
oneday_limit_count: spuItem.oneday_limit_count,
|
||
|
total_limit_count: spuItem.total_limit_count,
|
||
|
one_limit_count: spuItem.one_limit_count,
|
||
|
goods_start_count: spuItem.goods_start_count
|
||
|
}
|
||
|
})
|
||
|
} else {
|
||
|
this.addCart({ value: 1, type: "plus", idx });
|
||
|
}
|
||
|
},
|
||
|
changeNumber: function (t) {
|
||
|
var e = t.detail;
|
||
|
e && this.addCart(e);
|
||
|
},
|
||
|
outOfMax: function (t) {
|
||
|
var e = t.detail, idx = t.idx, list = this.data.list, spuItem = list[idx], canBuyNum = spuItem.spuCanBuyNum;
|
||
|
if (list[idx].car_count >= canBuyNum) {
|
||
|
wx.showToast({
|
||
|
title: "不能购买更多啦",
|
||
|
icon: "none"
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
addCart: function (t) {
|
||
|
var token = wx.getStorageSync('token');
|
||
|
var community = wx.getStorageSync('community');
|
||
|
let idx = t.idx;
|
||
|
let list = this.data.list;
|
||
|
let spuItem = list[idx];
|
||
|
var goods_id = spuItem.actId;
|
||
|
var community_id = community.communityId;
|
||
|
let goods_start_count = spuItem.goods_start_count;
|
||
|
let number = spuItem.car_count || 0;
|
||
|
let quantity = 1;
|
||
|
|
||
|
let that = this;
|
||
|
if (t.type == 'plus') {
|
||
|
if(number<goods_start_count) {
|
||
|
quantity = goods_start_count-number;
|
||
|
}
|
||
|
let data = {
|
||
|
goods_id,
|
||
|
community_id,
|
||
|
quantity,
|
||
|
sku_str: '',
|
||
|
buy_type: 'dan',
|
||
|
pin_id: 0,
|
||
|
is_just_addcar: 1
|
||
|
}
|
||
|
util.addCart(data).then(res=>{
|
||
|
if(res.showVipModal==1) {
|
||
|
let { pop_vipmember_buyimage } = res.data;
|
||
|
that.triggerEvent("vipModal", { pop_vipmember_buyimage, showVipModal: true, visible: false });
|
||
|
} else {
|
||
|
if (res.data.code == 3 || res.data.code == 7) {
|
||
|
wx.showToast({
|
||
|
title: res.data.msg,
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
})
|
||
|
} else if (res.data.code == 6) {
|
||
|
let max_quantity = res.data.max_quantity || '';
|
||
|
list[idx].car_count = res.data.max_quantity || 0;
|
||
|
(max_quantity > 0) && that.setData({ list })
|
||
|
var msg = res.data.msg;
|
||
|
wx.showToast({
|
||
|
title: msg,
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
})
|
||
|
} else {
|
||
|
that.triggerEvent("changeCartNum", res.data.total);
|
||
|
list[idx].car_count = res.data.cur_count || 0;
|
||
|
that.setData({ list })
|
||
|
wx.showToast({
|
||
|
title: "已加入购物车",
|
||
|
image: "../../images/addShopCart.png"
|
||
|
})
|
||
|
status.indexListCarCount(goods_id, res.data.cur_count);
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
} else {
|
||
|
if(number<=goods_start_count) {
|
||
|
quantity = number;
|
||
|
}
|
||
|
app.util.request({
|
||
|
url: 'entry/wxapp/user',
|
||
|
data: {
|
||
|
controller: 'car.reduce_car_goods',
|
||
|
token: token,
|
||
|
goods_id: goods_id,
|
||
|
community_id: community_id,
|
||
|
quantity,
|
||
|
sku_str: '',
|
||
|
buy_type: 'dan',
|
||
|
pin_id: 0,
|
||
|
is_just_addcar: 1
|
||
|
},
|
||
|
dataType: 'json',
|
||
|
method: 'POST',
|
||
|
success: function (res) {
|
||
|
if (res.data.code == 3) {
|
||
|
wx.showToast({
|
||
|
title: res.data.msg,
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
})
|
||
|
} else {
|
||
|
that.triggerEvent("changeCartNum", res.data.total);
|
||
|
list[idx].car_count = res.data.cur_count || 0;
|
||
|
that.setData({ list })
|
||
|
status.indexListCarCount(goods_id, res.data.cur_count);
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
updateCartNum: function () {
|
||
|
let goodsListCarCount = app.globalData.goodsListCarCount; //[{ actId: 84, num: 2}]
|
||
|
let list = this.data.list;
|
||
|
if (goodsListCarCount.length > 0 && list.length > 0) {
|
||
|
goodsListCarCount.forEach(function (item) {
|
||
|
let k = list.findIndex((n) => n.actId == item.actId);
|
||
|
if (k != -1 && list[k].skuList.length === 0) {
|
||
|
let newNum = item.num * 1;
|
||
|
list[k].car_count = newNum >= 0 ? newNum : 0;
|
||
|
}
|
||
|
})
|
||
|
this.setData({ list })
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|