diff --git a/components/productWindow/index.vue b/components/productWindow/index.vue index 8d4ee345..e0cae7c1 100644 --- a/components/productWindow/index.vue +++ b/components/productWindow/index.vue @@ -48,7 +48,10 @@ + + diff --git a/pages/activity/goods_seckill_details/index.vue b/pages/activity/goods_seckill_details/index.vue index 8f5f69ec..6a8a4918 100644 --- a/pages/activity/goods_seckill_details/index.vue +++ b/pages/activity/goods_seckill_details/index.vue @@ -47,7 +47,7 @@ - + {{ attrValue.length > 0 ? "已选择" : "请选择" }}: {{attrValue}} @@ -129,11 +129,10 @@ @@ -466,8 +465,21 @@ this.$set(this, 'spu', spu); this.$set(this.attribute, 'properties', ProductUtil.convertProductPropertyList(skus)); this.$set(this, 'skuMap', ProductUtil.convertProductSkuMap(skus)); - // TODO 芋艿:需要设置个 minPrice - + // 将秒杀活动的信息,合并到 SKU 里面,实现秒杀价格的显示 + this.activity.products.forEach(product => { + this.spu.price = Math.min(this.spu.price, product.seckillPrice); // 设置 SPU 的最低价格 + }); + skus.forEach(sku => { + const product = this.activity.products.find(product => product.skuId === sku.id); + if (product) { + sku.price = product.seckillPrice; + sku.quota = product.quota; + sku.limitCount = product.limitCount; + } else { // 找不到可能是没配置,则不能发起秒杀 + sku.quota = 0; + sku.limitCount = 0; + } + }); // 处理滚动条 setTimeout(() => { @@ -491,10 +503,6 @@ // 选中默认 sku this.selectDefaultSku(); }).catch(err => { - // TODO 芋艿:临时去掉 - if (true) { - return - } return this.$util.Tips({ title: err.toString() }, { @@ -503,68 +511,9 @@ }); }) }, - - // TODO 芋艿:暂未整理 - - kefuClick(){ - location.href = this.chatUrl; - }, - closePosters:function(){ - this.posters = false; - }, - getProductReplyList: function() { - getReplyList(this.storeInfo.productId, { - page: 1, - limit: 3, - type: 0, - }).then(res => { - this.reply = res.data.list; - }) - }, - getProductReplyCount: function() { - let that = this; - getReplyConfig(that.storeInfo.productId).then(res => { - that.$set(that, 'replyChance', res.data.replyChance * 100); - that.$set(that, 'replyCount', res.data.sumCount); - }); - }, - /** - * 购物车手动填写 - * - */ - iptCartNum: function (e) { - this.$set(this.attribute.productSelect, 'cart_num', e?e:1); - this.$set(this, "cart_num", e); - if (e > 1) { - return this.$util.Tips({ - title: `该商品每次限购1${this.storeInfo.unitName}` - }); - } - }, - // 后退 - returns: function() { - uni.navigateBack() - }, - setShare: function() { - this.$wechat.isWeixin() && - this.$wechat.wechatEvevt([ - "updateAppMessageShareData", - "updateTimelineShareData", - "onMenuShareAppMessage", - "onMenuShareTimeline" - ], { - desc: this.storeInfo.info, - title: this.storeInfo.title, - link: location.href, - imgUrl: this.storeInfo.image - }).then(res => { - }).catch(err => { - console.log(err); - }); - }, - /** - * 默认选中属性 - */ + /** + * 默认选中属性 + */ selectDefaultSku: function() { const properties = this.attribute.properties; // 获得选中的属性值的名字,例如说 "黑色,大",则 skuKey = ["黑色", "大"] @@ -593,99 +542,145 @@ this.$set(this.attribute.productSelect, "price", sku.price); this.$set(this.attribute.productSelect, "stock", sku.stock); this.$set(this.attribute.productSelect, "cart_num", 1); + // 秒杀活动特有字段 this.$set(this.attribute.productSelect, "quota", sku.quota); + this.$set(this.attribute.productSelect, "limitCount", sku.limitCount); this.$set(this, "attrValue", skuKey.join(",")); - }, - selecAttr: function() { - this.attribute.cartAttr = true - }, - onMyEvent: function() { - this.$set(this.attribute, 'cartAttr', false); - this.$set(this, 'isOpen', false); - }, - /** - * 购物车数量加和数量减 - * - */ - ChangeCartNum: function(changeValue) { - //changeValue:是否 加|减 - //获取当前变动属性 - let productSelect = this.productValue[this.attrValue]; - if (this.cart_num) { - productSelect.cart_num = this.cart_num; - this.attribute.productSelect.cart_num = this.cart_num; - } - //如果没有属性,赋值给商品默认库存 - if (productSelect === undefined && !this.attribute.productAttr.length) - productSelect = this.attribute.productSelect; - //无属性值即库存为0;不存在加减; - if (productSelect === undefined) return; - let stock = productSelect.stock || 0; - let quota = productSelect.quota || 0; - let num = this.attribute.productSelect; - //设置默认数据 - if (productSelect.cart_num == undefined) productSelect.cart_num = 1; - if (changeValue) { - if (num.cart_num === 1) { - return this.$util.Tips({ - title: `该商品每次限购 1 ${this.storeInfo.unitName}` - }); - } - num.cart_num++; - let arrMin = []; - arrMin.push(quota); - arrMin.push(stock); - let minN = Math.min.apply(null, arrMin); - if (num.cart_num >= minN) { - this.$set(this.attribute.productSelect, "cart_num", minN ? minN : 1); - this.$set(this, "cart_num", minN ? minN : 1); - } - this.$set(this, "cart_num", num.cart_num); - this.$set(this.attribute.productSelect, "cart_num", num.cart_num); + }, + /** + * 打开 SKU 属性的选择 + */ + openAttr: function() { + this.$set(this.attribute, 'cartAttr', true); + }, + /** + * 关闭 productWindow 弹窗 + */ + closeAttr: function() { + this.$set(this.attribute, 'cartAttr', false); + }, + /** + * 属性变动赋值 + * + * @param newSkuKey 新的 skuKey + * @param propertyIndex properties 的下标 + * @param valueIndex values 的下标 + */ + ChangeAttr: function(newSkuKey, propertyIndex, valueIndex) { + // SKU + let sku = this.skuMap[newSkuKey]; + if (!sku) { + return; + } + this.$set(this.attribute.productSelect, "id", sku.id); + this.$set(this.attribute.productSelect, "picUrl", sku.picUrl); + this.$set(this.attribute.productSelect, "price", sku.price); + this.$set(this.attribute.productSelect, "stock", sku.stock); + this.$set(this.attribute.productSelect, "quota", sku.quota); + this.$set(this.attribute.productSelect, "limitCount", sku.limitCount); + this.$set(this.attribute.productSelect, "cart_num", 1); + // SKU 关联属性 + this.$set(this.attribute.properties[propertyIndex], 'index', + this.attribute.properties[propertyIndex].values[valueIndex].name); + this.$set(this, "attrValue", newSkuKey); + }, + /** + * 购物车数量加和数量减 + * + * @param changeValue true 增加;false 减少 + */ + ChangeCartNum: function(changeValue) { + // 获取当前 sku + let sku = this.attribute.productSelect; + if (!sku) { + return; + } - } else { - num.cart_num--; - if (num.cart_num < 1) { - this.$set(this.attribute.productSelect, "cart_num", 1); - this.$set(this, "cart_num", 1); - } - this.$set(this, "cart_num", num.cart_num); - this.$set(this.attribute.productSelect, "cart_num", num.cart_num); - } - }, - attrVal(val) { - this.attribute.productAttr[val.indexw].index = this.attribute.productAttr[val.indexw].attrValues[val.indexn]; - }, - /** - * 属性变动赋值 - * - */ - ChangeAttr: function(res) { - this.$set(this,'cart_num',1); - let productSelect = this.productValue[res]; - if (productSelect) { - this.$set(this.attribute.productSelect, "image", productSelect.image); - this.$set(this.attribute.productSelect, "price", productSelect.price); - this.$set(this.attribute.productSelect, "stock", productSelect.stock); - this.$set(this.attribute.productSelect, "unique", productSelect.id); - this.$set(this.attribute.productSelect, "cart_num", 1); - this.$set(this.attribute.productSelect, "quota", productSelect.quota); - this.$set(this.attribute.productSelect, "quotaShow", productSelect.quotaShow); - this.$set(this, "attrValue", res); - this.attrTxt = "已选择" - } else { - this.$set(this.attribute.productSelect, "image", this.storeInfo.image); - this.$set(this.attribute.productSelect, "price", this.storeInfo.price); - this.$set(this.attribute.productSelect, "stock", 0); - this.$set(this.attribute.productSelect, "unique", ""); - this.$set(this.attribute.productSelect, "cart_num", 0); - this.$set(this.attribute.productSelect, "quota", 0); - this.$set(this.attribute.productSelect, "quotaShow", 0); - this.$set(this, "attrValue", ""); - this.attrTxt = "已选择" + // 设置数量 + let stock = sku.stock || 0; + let quota = sku.quota || 0; + let limitCount = sku.limitCount; + if (changeValue) { + sku.cart_num++; + if (limitCount !== undefined && sku.cart_num > limitCount) { + this.$set(this.attribute.productSelect, "cart_num", limitCount); + this.$util.Tips({ + title: `该商品每次限购 ${sku.limitCount} ${this.spu.unitName}` + }); + } else if (sku.cart_num > stock || sku.cart_num > quota) { + this.$set(this.attribute.productSelect, "cart_num", Math.min(stock, quota)); + } + } else { + sku.cart_num--; + if (sku.cart_num < 1) { + this.$set(this.attribute.productSelect, "cart_num", 1); + } + } + }, + /** + * 购物车手动填写 + * + * @param number 数量 + */ + iptCartNum: function (number) { + this.$set(this.attribute.productSelect, 'cart_num', number ? number : 1); + // 判断是否超限购 + let sku = this.attribute.productSelect; + let limitCount = sku.limitCount; + if (limitCount !== undefined && number > limitCount) { + this.$set(this.attribute.productSelect, "cart_num", limitCount); + this.$util.Tips({ + title: `该商品每次限购 ${sku.limitCount} ${this.spu.unitName}` + }); + } + }, - } + // TODO 芋艿:暂未整理 + + kefuClick(){ + location.href = this.chatUrl; }, + closePosters:function(){ + this.posters = false; + }, + getProductReplyList: function() { + getReplyList(this.storeInfo.productId, { + page: 1, + limit: 3, + type: 0, + }).then(res => { + this.reply = res.data.list; + }) + }, + getProductReplyCount: function() { + let that = this; + getReplyConfig(that.storeInfo.productId).then(res => { + that.$set(that, 'replyChance', res.data.replyChance * 100); + that.$set(that, 'replyCount', res.data.sumCount); + }); + }, + // 后退 + returns: function() { + uni.navigateBack() + }, + setShare: function() { + this.$wechat.isWeixin() && + this.$wechat.wechatEvevt([ + "updateAppMessageShareData", + "updateTimelineShareData", + "onMenuShareAppMessage", + "onMenuShareTimeline" + ], { + desc: this.storeInfo.info, + title: this.storeInfo.title, + link: location.href, + imgUrl: this.storeInfo.image + }).then(res => { + }).catch(err => { + console.log(err); + }); + }, + scroll: function(e) { var that = this, scrollY = e.detail.scrollTop; diff --git a/pages/goods_details/index.vue b/pages/goods_details/index.vue index 93434a86..939485c6 100644 --- a/pages/goods_details/index.vue +++ b/pages/goods_details/index.vue @@ -632,7 +632,8 @@ this.$set(this.attr.productSelect, "stock", sku.stock); this.$set(this.attr.productSelect, "cart_num", 1); // SKU 关联属性 - this.$set(this.attr.properties[propertyIndex], 'index', this.attr.properties[propertyIndex].values[valueIndex].name); + this.$set(this.attr.properties[propertyIndex], 'index', + this.attr.properties[propertyIndex].values[valueIndex].name); this.$set(this, "attrValue", newSkuKey); }, /**