详情

发布时间 2023-10-21 23:44:33作者: 樱花馆长
<!-- 轮播图 -->
<view class="details_swiper">
<swiper circular indicator-dots autoplay>
<swiper-item wx:for="{{goodsData.pics}}" bindtap="handleswiper" data-url="{{itemitem.pics_mid}}">
<image src="{{item.pics_mid}}" mode="widthFix"></image>
</swiper-item>
</swiper>
</view>
<!-- 商品信息 -->
<view class="details_info">
  <view class="price">¥{{goodsData.goods_price}}</view>
  <view class="content">
  <view class="left">{{goodsData.goods_name}}</view>
  <view class="right" bindtap="handleCollect">
    <text class="iconfont {{isCollect?'icon-shoucang2':'icon-shoucang1'}}"></text>
    <text>收藏</text>
  </view>
</view>
</view>
<view class="divider">图文详情</view>
<view>
<rich-text nodes="{{goodsData.goods_introduce}}"></rich-text>
</view>
<view class="details_floor ">
<navigator url="/pages/index/index" class="floor_item" open-type="switchTab">
<text class="iconfont icon-shouye"></text>
<text>首页</text>
</navigator>
<view class="floor_item">
  <text class="iconfont icon-rengongkefu"></text>
  <text>客服</text>
  <button open-type="contact"></button>
</view>
<view class="floor_item">
  <text class="iconfont icon-fenxiang"></text>
  <text>分享</text>
  <button open-type="share"></button>
</view>
<navigator url="/pages/gwc/gwc" class="floor_item" open-type="switchTab">
<text class="iconfont icon-gouwuche"></text>
<text>购物车</text>
</navigator>
<view class="btn_add">加入购物车</view>
<view class="btn_buy">立即购买</view>
</view>
// pages/details/details.js
Page({
  data: {
    goodsData:{},
    isCollect:false
  },
  goodsInfo: {},
  onLoad: function (options) {
    let that =this
    var base_url = "https://api-hmugo-web.itheima.net/api/public/v1/goods/detail?goods_id=" + options.goods_id;
    console.log(base_url)
  
    wx.request({
      url: base_url,
      success(res) {
        that.goodsInfo = res.data.message
        let collect = wx.getStorageSync('collect')||[]
        let isCollect = collect.some(v=>v.goods_id==that.goodsInfo.goods_id)
        that.setData({
          goodsData: res.data.message,
          isCollect
        })
      }
    });
  },
  handleswiper(e){
    console.log(e)
    var currentImage = e.currentTarget.dataset.url
    var urlImage = this.data.goodsData.pics.map(v=>v.pics_mid)
    console.log(urlImage)
    wx.previewImage({
      current: currentImage,
      urls: urlImage
    })
  },
  //收藏
  handleCollect(){
    let isCollect = false
    let collect = wx.getStorageSync('collect')||[]
    let index = collect.findIndex(v=>v.goods_id==this.goodsInfo)
    if(index!==-1){
      //收藏里面有该商品
      isCollect = false
      collect.splice(index,1)
      wx.showToast({
        title:'取消收藏',
        icon:'success',
        mask:true
      })
    }else{
      isCollect = true
      collect.push(this.goodsInfo)
      wx.showToast({
        title:'收藏成功',
        icon:'success',
        mask:true
      })
    }
    wx.getStorageSync('collect',collect)
    this.setData({
      isCollect
    })

  }
})
.details_swiper{
  height: 65vw;
  text-align: center;
}
.details_swiper swiper swiper-item image{
  width: 60%;
}
details_info{
  padding: 0 15rpx;
}
.price{
  font-size: 35rpx;
  color: red;
  font-weight: 600;
}
.content{
  display: flex;
}
.left{
  flex: 5;
  font-size: 30rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.right{
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  border-left: 1rpx solid rgb(98,107,107);
  font-size: 30rpx;
}
.divider{
  padding-left: 20rpx;
  height: 90rpx;
  font-size: 45rpx;
  line-height: 90rpx;
  color: red;
  font-weight: 600;
  border-bottom: 10rpx solid #eee;
  border-top: 10rpx solid #eee;
}
.details_floor{
  width: 100%;
  height: 90rpx;
  position: fixed;
  left: 0;
  bottom: 0;
  display: flex;
  font-size: 24rpx;
  background-color: #fff;
  border-top: 1rpx solid #ccc;
}
.floor_item{
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: relative;
}
.btn_add{
  flex: 2;
  text-align: center;
  line-height: 90rpx;
  background-color: rgb(242,248,222);
}
.btn_buy{
  flex: 2;
  background-color: red;
  text-align: center;
  line-height: 90rpx;
  color: #fff;
}
.floor_item button{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
}