【温馨提示】本文共有2523个字,预计阅读完需要7分钟,请仔细阅读哦!
今天会接着上一篇开始写商品详情页加入购物车的部分,先看效果:
实现效果1. 商品轮播图片预览 2. 商品收藏效果 3. 加入购物车 4. 商品数量加减 5. 商品数量加减模板(template)编写
detail.js//预览图片 previewImage: (e) { var current = e.target.dataset.src; wx.previewImage({ current: current, // 当前显示图片的http链接 urls: this.data.imgUrls // 需要预览的图片http链接列表 }) }
页面布局分为两部分,第一部分为底部悬浮栏(购物车、收藏、加入购物车、立即购买),第二部分为加入购物车的隐藏布局主要用来选择商品属性和修改商品数量。
detail.wxml<!-- 底部悬浮栏 --> <view class="detail-nav"> <image bindtap="toCar" src="../../images/bottomNav/cart.png" /> <view class="line_nav"></view> <image bindtap="addLike" src="{{isLike?'../../images/bottomNav/enshrine_select.png':'../../images/bottomNav/enshrine.png'}}" /> <button data-goodid="1" class="button-green" bindtap="toggleDialog" >加入购物车</button> <button class="button-red" bindtap="immeBuy" formType="submit">立即购买</button> </view><!--加入购物车--> <import src="../template/template.wxml" /> <view class="dialog {{ showDialog ? 'dialog--show' : '' }}"> <view class="dialog__mask" bindtap="toggleDialog" /> <view class="dialog__container"> <view class="row"> <icon bindtap="closeDialog" class="image-close" type="cancel" size="25"/> <image class="image-sku" src="https://m.360buyimg.com/n12/jfs/t11317/108/1080677336/325163/f4c2a03a/59fd8b17Nbe2fcca3.jpg!q70.jpg"></image> <view class="column"> <text class="sku-price">¥7935.84</text> <text class="sku-title">库存20件</text> <text class="sku-title">商品编码:1456778788</text> </view> </view> <text class="border-line"></text> <view class="row"> <text >购买数量</text> <view class="quantity-position"> <template is="quantity" data="{{ ...quantity1}}" /> </view> </view> <text class="border-line"></text> <button data-goodid="1" class="button-addCar" bindtap="addCar" formType="submit">确定</button> </view> </view>
detail.js// 立即购买 immeBuy() { wx.showToast({ title: '购买成功', icon: 'success', duration: 2000 }); }, /** * sku 弹出 */ toggleDialog: function () { this.setData({ showDialog: !this.data.showDialog }); }, /** * sku 关闭 */ closeDialog: function () { console.info("关闭"); this.setData({ showDialog: false }); }, /* 减数 */ delCount: function (e) { console.log("刚刚您点击了减一"); var count = this.data.quantity1.quantity; // 商品总数量-1 if (count > 1) { count -= 1; } // 只有大于一件的时候,才能normal状态,否则disable状态 var delStatus = count <= 1 ? 'disabled' : 'normal'; // 只有大于10件的时候,才能normal状态,否则disable状态 var addStatus = count >= 10 ? 'disabled' : 'normal'; // 将数值与状态写回 this.setData({ quantity1: { quantity: count, delStatus: delStatus, addStatus: addStatus } }); }, /* 加数 */ addCount: function (e) { console.log("刚刚您点击了加一"); var count = this.data.quantity1.quantity; // 商品总数量-1 if (count < 10) { count += 1; } // 只有大于一件的时候,才能normal状态,否则disable状态 var delStatus = count <= 1 ? 'disabled' : 'normal'; // 只有大于10件的时候,才能normal状态,否则disable状态 var addStatus = count >= 10 ? 'disabled' : 'normal'; // 将数值与状态写回 this.setData({ quantity1: { quantity: count, delStatus: delStatus, addStatus: addStatus } }); }, /* 输入框事件 */ bindManual: function (e) { var count = this.data.quantity1.quantity; // 将数值与状态写回 this.setData({ count: count }); }, /** * 加入购物车 */ addCar: function (e) { console.log(e.target.dataset.goodid); wx.showToast({ title: '加入购物车成功', icon: 'success', duration: 2000 }); console.info("关闭"); this.setData({ showDialog: false }); }, // 收藏 addLike() { this.setData({ isLike: !this.data.isLike }); }, // 跳到购物车 toCar() { wx.switchTab({ url: '/pages/cart/cart' }) }, // 立即购买 immeBuy() { wx.showToast({ title: '购买成功', icon: 'success', duration: 2000 }); },
由于后面购物车模块也需要商品数量加减的功能,在这里把这个功能做成了一个template模板,看下方流程:
1、创建template模板
在page目录下创建template文件,并生成template.js、template.json、template.wxml和template.wxss配套文件
2、template.wxml<template name="quantity"> <!-- 主容器 --> <view class="stepper"> <!-- 减号 --> <text class="{{delStatus}}" bindtap="delCount">-</text> <!-- 数值 --> <input type="number" bindchange="bindManual" value="{{quantity}}" disabled="disabled"/> <!-- 加号 --> <text class="{{addStatus}}" bindtap="addCount">+</text> </view> </template>
3、template.wxss/*主容器*/ .stepper { width:110px; height: 26px; /*给主容器设一个边框*/ border: 1rpx solid #000000; border-radius: 3px; margin:0 auto; } /*加号和减号*/ .stepper text { width: 24px; line-height: 15px; text-align: center; float: left; } /*数值*/ .stepper input { width: 40px; height: 26px; float: left; margin: 0 auto; text-align: center; font-size: 12px; color: #000000; /*给中间的input设置左右边框即可*/ border-left: 1rpx solid #000000; border-right: 1rpx solid #000000; } /*普通样式*/ .stepper .normal{ color: black; } /*禁用样式*/ .stepper .disabled{ color: #ccc; }
4、detail.wxml样式引用<import src="../template/template.wxml" />
备注:template是在page目录下
5、detail.js初始化quantity1: { quantity: 1, min: 1, max: 20, delStatus: 'disabled', addStatus: 'normal' }, isLike: true, showDialog: false,
好了,复制上述代码就可以实现效果哦,赶紧试试吧!
【进阶知识】
天猫购物券是专为天猫消费者开发的产品,消费者可以通过购物券享受到消费优惠。
不同面额购物券有不同使用门槛(满2.01元减2元、满100减5元、满150减10元、满300减20元、满500减50元、满1000减100元);
在天猫购物时,点击购买后,页面会提示可使用购物券,只要选择购物券即可扣除对应的金额;
购物券可用于单件商品的付款,也可用于多件商品的合并付款,同时支持在跨店铺订单中使用;
平台购物券可与商家店铺优惠券及红包叠加使用,付款时默认优先使用店铺优惠券,如使用商家优惠券后金额仍满足平台购物券使用条件则可继续叠加使用平台购物券;
购物券不得提现,不得转赠他人,不得为他人付,不得拆分使用;
购物券可跨店铺订单使用,可与店铺优惠券叠用,一个订单只能使用一张购物券;
购物券自领取之日起7天内有效,使用购物券的订单发生退款时,在有效期内的,会退回您的账户,如已过有效期的则不再补发;
获取和使用购物券过程中,如果出现违规行为(如作弊领取、恶意套现、刷取信誉、虚假交易等),天猫将取消中奖资格,并有权撤销违规交易,并收回购物券(含已使用的购物券及未使用的购物券),必要时追究法律责任;
天猫购物券可在天猫普通订单交易、聚划算、淘海外(tw.taobao.com)、天猫超市、天猫国际(免税店除外)业务中使用,暂不支持秒杀、预售、聚划算key、聚划算预售、付邮试用、特供宝、分阶段支付及交易链路不支持使用购物券的业务。
天猫购物券不支持叠加秒杀、付邮试用、预售、全积分兑换等业务类型。
天猫购物券可用于抵扣商品金额,不能抵扣运费、运费险、翻倍服务等非商品金额。
优惠叠加顺序为:单品级优惠工具、店铺级优惠工具、优惠券、天猫购物券。
目前天猫购物券在无线端(包括H5页面、PAD、手机、支付宝钱包)暂不支持先试后买及分期付款商品,PC端上购物券可在先试后买及分期付款商品订单中进行正常抵扣。如您需要购买先试后买及分期付款商品,请移驾PC完成下单支付,无线可支持时间详见规则更新。
积分抽取:在天猫手机客户端的积分频道中,可以用200积分抽取天猫购物券,100%概率可抽中,抽中的购物券最低面额为2元,最高100元。扣除的积分不退还,每天参与抽奖次数上限为10次。
天猫官方活动:天猫组织的一些活动中可获得购物券,在活动详情中会明示具体发放时间及发放方式。
购物券自领取之日起7天内有效。使用天猫购物券购买天猫宝贝后,若之后交易未成功或发生退款及售后,交易关闭后将退还购物券,退还后的天猫购物券有效期不变。如交易在使用的购物券有效期之外发生退款,该部分购物券不予退还。
注:手机天猫客户端4.2及之前版本、手机淘宝客户端4.1.2.1及之前版本,淘宝ipad客户端V3.1.0及之前版本暂不支持购物券使用,您可以更新最新版天猫及淘宝客户端来使用天猫购物券。