第三篇 Scrum冲刺博客
一、会议图片
二、项目进展
成员 | 完成情况 | 今日任务 |
冯荣新 | 商品列表,商品详情轮播图 | 商品底部工具栏,购物车列表 |
陈泽佳 | 历史足迹,静态页面 | 渲染搜索结果,防抖的实现 |
徐伟浩 | 未完成 | 商品信息录入 |
谢佳余 | 未完成 | 商品信息录入 |
邓帆涛 | 未完成 | 意见反馈 |
三、部分代码
import {request} from '../../request/http.js'; import regeneratorRuntime from '../../lib/runtime/runtime.js'; /*图片预料: 1. 调用小程序的api wx.previewImage(Object object) 加入购物车 1. 绑定事件 2. 获取缓存中的购物车数据, 数组格式 3. 判断当前商品已经存在, 则修改该商品数据 1. 商品收藏 1。 onshow 的时候需要加载缓存中的数据,判断当前商品是否收藏, * */ Page({ /** * 页面的初始数据 */ data: { // 商品详情信息 goodsInfo:{}, // 商品是否被收藏 isCollect:true }, // 商品id /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { const {goods_id}=options; this.getGoodsInfo(goods_id); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, // 获取商品详情 async getGoodsInfo(goodsId){ const result=await request({name:'goodsInfo',data:{goods_id:goodsId}}); let collect=wx.getStorageSync('collect')||[]; // 判断当前商品是否被收藏 let {goods_id}=result.data.message; let isCollect=collect.some(v=>v.goods_id==goods_id) this.setData({ goodsInfo:result.data.message,isCollect }) }, // 轮播图预料 handlePreviewImage(e){ let newArr=this.data.goodsInfo.pics.map(item=>item.pics_mid) wx.previewImage({ current:e.currentTarget.dataset.url, urls: newArr }) }, // 点击加入购物车 handCartAdd(){ // 获取缓存中购物车数组 [{goods_id:Number,goods_count:Number},...] let cart=wx.getStorageSync('cart') || []; let i=cart.findIndex(v=>v.goods_id == this.data.goodsInfo.goods_id) if (i !==- 1){ // 存在 cart[i].goods_count+=1; }else { // 新商品 let {goods_id,goods_name,goods_price,goods_small_logo}=this.data.goodsInfo; let obj={goods_id,goods_name,goods_price,goods_small_logo,checked:false,goods_count:1} cart.push(obj) } wx.setStorageSync('cart', cart); wx.showToast({ title: '加入成功', mask:true }) }, // 商品收藏 handleAddCollect(){ let collect=wx.getStorageSync('collect')||[]; // 判断该商品是否被收藏过 let {goods_id,goods_name,goods_price,goods_small_logo}=this.data.goodsInfo; let index=collect.findIndex(v=>v.goods_id ==goods_id); if(index != -1){ // 移除收藏 collect.splice(index,1) }else { collect.push({goods_id,goods_name,goods_price,goods_small_logo}) } wx.showToast({title: "操作成功", icon: 'success', mask:true}) this.setData({isCollect:index==-1}) wx.setStorageSync('collect', collect); },
/* pages/goods_detail/index.scss */ page{ padding-bottom: 90rpx; } .detail_swiper{ swiper{ height: 65vw; text-align: center; image{ width: 60%; } } } .goods_info{ .goods_price{ padding: 15rpx; font-size: 35rpx; font-weight: 600; color: var(--themeColor); } .row{ display: flex; .goods_name{ flex: 5; color: black; font-size: 30rpx; padding: 0 10rpx; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp:2; -webkit-box-orient: vertical; } .goods_collect{ flex: 1; text-align: center; border-left: 1px solid #ccc; } } } .goods_introduce{ .title{ font-size: 32rpx; color: var(--themeColor); font-weight: 600; padding: 20rpx; border-bottom: 1px solid black; margin: 20rpx 0; } .content{} } .btm_tool{ position: fixed; bottom: 0; width: 100%; height: 90rpx; background-color: white; display: flex; text-align: center; border-top: 1px solid #ccc; .item{ flex: 1; display: flex; flex-direction: column; justify-content: center; position: relative; button{ position: absolute; width: 100%; height: 100%; opacity: 0; } } .btn_cart{ flex: 2; background-color: orange; color: white; font-size: 30rpx; font-weight: 600; } .btn_buy{ flex: 2; color: white; background-color: red; font-size: 30rpx; font-weight: 600; } }
<!--pages/goods_detail/index.wxml--> <view> <!--轮播图--> <view class="detail_swiper"> <swiper indicator-dots autoplay circular> <swiper-item wx:for="{{goodsInfo.pics}}" wx:key="pics_id" bindtap="handlePreviewImage" data-url="{{item.pics_mid}}"> <image src="{{item.pics_mid}}" mode="widthFix"></image> </swiper-item> </swiper> </view> <!--商品详情--> <view class="goods_info"> <view class="goods_price">¥{{goodsInfo.goods_price}}</view> <view class="row"> <view class="goods_name">{{goodsInfo.goods_name}}</view> <view class="goods_collect" bindtap="handleAddCollect"> <text class="iconfont {{isCollect?'icon-xing':'icon-xingxu'}}" style="color: red"></text> <view class="collect_text">收藏</view> </view> </view> </view> <!--商品介绍--> <view class="goods_introduce"> <view class="title">图文详情</view> <view class="content"> <rich-text nodes="{{goodsInfo.goods_introduce}}"></rich-text> </view> </view> <!--工具栏--> <view class="btm_tool"> <view class="item"> <text class="iconfont icon-kefu"></text> <view>客服</view> <button open-type="contact"></button> </view> <view class="item"> <text class="iconfont icon-fenxiang"></text> <view>分享</view> <button open-type="share"></button> </view> <navigator class="item" url="/pages/cart/index" open-type="switchTab"> <text class="iconfont icon-gouwuche"></text> <view>购物车</view> </navigator> <view class="item btn_cart" bindtap="handCartAdd"> <text>加入购物车</text> </view> <view class="item btn_buy"> <text>立即购买</text> </view> </view> </view>
四、截图
五、每日总结
成员 | 总结 |
冯荣新 | 今天的任务还是有点难度的,花费了不少时间 |
陈泽佳 | 通过学习,前端知识运用更加熟练 |
徐伟浩 | 对数据库的理解更加深刻 |
谢佳余 | 很轻松的录入数据【狗头】 |
邓帆涛 | 意见反馈难度很大,内容有点多 |