goods.wxml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. <scroll-view class="container" style="height: {{winHeight}}rpx" scroll-y="true">
  2. <view wx:if="{{showNavList}}" class="modal-wrap"></view>
  3. <view class="fast-nav">
  4. <contact-button wx:if="{{!showNavList}}" class="contact" size="25" type="primary" session-from="weapp">
  5. <text>找客服</text>
  6. </contact-button>
  7. <view wx:if="{{!showNavList}}" class="nav" bindtap="toggleNav">
  8. <text>快捷</text>
  9. <text>导航</text>
  10. </view>
  11. <view class="nav-list" wx:if="{{showNavList}}">
  12. <view class="nav-item">
  13. <text class="nav-text">首页</text>
  14. <view class="nav-cell" bindtap="switchNav" data-name="index">
  15. <image src="../../static/images/nav-1.png"></image>
  16. </view>
  17. </view>
  18. <view class="nav-item">
  19. <text class="nav-text">足迹</text>
  20. <navigator class="nav-cell" url="../ucenter/footprint/footprint">
  21. <image src="../../static/images/nav-2.png"></image>
  22. </navigator>
  23. </view>
  24. <view class="nav-item">
  25. <text class="nav-text">搜索</text>
  26. <navigator class="nav-cell" url="../search/search">
  27. <image src="../../static/images/nav-3.png"></image>
  28. </navigator>
  29. </view>
  30. <view class="nav-item">
  31. <text class="nav-text">购物车</text>
  32. <view class="nav-cell" bindtap="openCartPage" data-name="cart">
  33. <image src="../../static/images/nav-4.png"></image>
  34. </view>
  35. </view>
  36. </view>
  37. <view wx:if="{{showNavList}}" class="close" bindtap="toggleNav">X</view>
  38. </view>
  39. <view>
  40. <!-- 滚动的卡片布局 -->
  41. <view class='goodsimgs' bindtap="hideSwitchAttrPop">
  42. <view class='content-wrapper'>
  43. <view class='scroll-wrapper'>
  44. <scroll-view class='scroll-view'>
  45. <view class="items-wrapper" style="transform:translate3d({{leftWidth}}px, 0, 0)">
  46. <!-- 循环商品图开始 -->
  47. <view wx:for="{{gallery}}" wx:key="index" data-index="{{index}}" class="item" bindtouchstart='touchStart' bindtouchend='touchEnd'>
  48. <view class='rank-num' style="background-color: #c8c8c8">{{index+1}}/{{gallery.length}}</view>
  49. <view class='img-wrapper'>
  50. <!-- 视频播放开始 -->
  51. <view class="video2" data-id="{{item.id}}" bindtap="videoPlay" wx:if="{{item.file_type == 1}}">
  52. <view hidden="{{videoHiddenName}}">
  53. <video id="myVideo" style="width: 750rpx;height: calc(9 * 750rpx / 16);" src="{{item.img_url}}" objectFit="cover" show-center-play-btn enable-progress-gesture controls></video>
  54. </view>
  55. <view style="width: 750rpx;height: calc(9 * 750rpx / 16);" hidden="{{imgHiddenName}}">
  56. <image lazy-load="true" class="model-img" style="width: 750rpx;height: calc(9 * 750rpx / 16);background-size:650rpx 321rpx;" mode="aspectFill" src="{{gallery[1].img_url}}" background-size="cover"></image>
  57. <view class="model-btn">
  58. <view class="play-icon"></view>
  59. </view>
  60. </view>
  61. </view>
  62. <!-- 视频播放结束 -->
  63. <view wx:else>
  64. <image lazy-load="true" src="{{item.img_url}}?x-oss-process=image/resize,h_500" class="imageClass" mode='aspectFill' catchtap='preview' data-url="{{item.img_url}}" />
  65. </view>
  66. </view>
  67. </view>
  68. <!-- 循环商品图结束 -->
  69. </view>
  70. </scroll-view>
  71. </view>
  72. </view>
  73. </view>
  74. <!-- <swiper indicator-dots indicator-color="{{indicator}}" current="{{current}}" indicator-active-color="{{activeIndicator}}" class="goodsimgs" duration="300">
  75. <block wx:for="{{gallery}}" wx:key="item.id">
  76. <swiper-item>
  77. <block wx:if="{{item.file_type == 1}}">
  78. <block wx:if="{{isPlay}}" class='video-wrapper'>
  79. <video src="{{item.img_url}}" class='video' id='myVideo' binderror="videoErrorCallback" initial-time='2' show-center-play-btn enable-progress-gesture controls></video>
  80. </block>
  81. <block wx:else class='video-host-wrapper' catchtap='play'>
  82. <image src="{{gallery[1].img_url}}" mode='aspectFill' />
  83. </block>
  84. </block>
  85. <block wx:else>
  86. <image src="{{item.img_url}}" mode='aspectFill' catchtap='preview' data-url="{{item.img_url}}" />
  87. </block>
  88. </swiper-item>
  89. </block>
  90. </swiper> -->
  91. <!-- <swiper class="goodsimgs" indicator-dots="true" autoplay="{{autoplay}}" bindtap="hideSwitchAttrPop">
  92. <swiper-item wx:for="{{gallery}}" wx:key="{{item.id}}">
  93. <video wx:if="{{item.file_type==1}}" id="myVideo" style='height:400rpx;width:100%;margin-top:140rpx;' src="{{item.img_url}}" binderror="videoErrorCallback" objectFit="cover" initial-time='2' show-center-play-btn enable-progress-gesture controls></video>
  94. <image class="imageClass" wx:if="{{item.file_type==0}}" src="{{item.img_url}}"></image>
  95. </swiper-item>
  96. </swiper> -->
  97. <!-- <view class="service-policy">
  98. <view class="item">30分钟速达</view>
  99. <view class="item">每日优选生鲜</view>
  100. <view class="item">满88元免运费</view>
  101. </view> -->
  102. <view class="goods-info" bindtouchstart='touchStart2' bindtouchend='touchEnd2'>
  103. <view class="c" bindtap="hideSwitchAttrPop">
  104. <view class="goods-do">
  105. <text class="price">{{goods.retail_price?"¥"+goods.retail_price:"¥0"}}</text>
  106. <text class="org-price line-through">{{goods.market_price?"¥"+goods.market_price:""}}</text>
  107. </view>
  108. <text class="name">{{goods.name?goods.name:""}}</text>
  109. <!-- <text class="desc">{{goods.goods_brief?goods.goods_brief:""}}</text> -->
  110. <!-- <view class="brand" wx:if="{{brand.name}}">
  111. <navigator url="../brandDetail/brandDetail?id={{brand.id}}">
  112. <text>{{brand.name}}</text>
  113. </navigator>
  114. </view> -->
  115. <!-- <view class="brand">
  116. <text>发货地:深圳前海保税仓</text>
  117. </view> -->
  118. <view style='margin-top:20px;'>
  119. <text class="desc">快递:{{defaultFreight==0?"免邮":defaultFreight+"元"}}</text>
  120. <text class="desc2">销量:{{goods.sell_volume==null?0:goods.sell_volume}}</text>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="section-nav section-attr" wx:if="{{detailTicketDiscountList.length>0}}" bindtap="switchTicketPop" bindtouchstart='touchStart2' bindtouchend='touchEnd2'>
  125. <view class="t">
  126. <view style='float:left'>领券</view>
  127. <view class='ticket-border' wx:for="{{detailTicketDiscountList}}" wx:key="{{item.tickDiscId}}">
  128. <view class='ticket-text'>{{item.name}}</view>
  129. </view>
  130. <!-- <view class='ticket-border'><view class='ticket-text'>100减20</view></view>
  131. <view class='ticket-border'><view class='ticket-text'>100减20</view></view> -->
  132. </view>
  133. <image class="i" src="../../static/images/address_right.png" background-size="cover"></image>
  134. </view>
  135. <view class="section-nav section-attr" bindtap="switchAttrPop" wx:if="{{stockNum >0}}" bindtouchstart='touchStart2' bindtouchend='touchEnd2'>
  136. <view class="t">{{checkedSpecText=="请选择规格数量"?"请选择规格数量":"已选:【"+checkedSpecText+"】"}}</view>
  137. <image class="i" src="../../static/images/address_right.png" background-size="cover"></image>
  138. </view>
  139. <!-- <view class="crash-goods" wx:if="{{crashList.length > 0}}" bindtap="hideSwitchAttrPop">
  140. <view class="h">
  141. <view class="line"></view>
  142. <text class="title">搭配减价</text>
  143. </view>
  144. <view class="b">
  145. <view class="item" wx:for="{{crashList}}" wx:key="{{item.id}}">
  146. <navigator url="/pages/goods/goods?id={{item.goods_crash_id}}&&storeId={{item.storeId}}">
  147. <image class="img" src="{{item.list_pic_url}}" background-size="cover"></image>
  148. <text class="name">{{item.name}}</text>
  149. </navigator>
  150. <view class="goods-do">
  151. <text class="price">¥{{item.market_price}}</text>
  152. <text class="org-price line-through">¥{{item.retail_price}}</text>
  153. <view class="add" data-goods-id="{{item.goods_crash_id}}" data-product-id="{{item.product_crash_id}}" bindtap="addCrashNumber">+</view>
  154. </view>
  155. </view>
  156. </view>
  157. </view> -->
  158. <!--<view class="section-nav section-act">
  159. <view class="t">
  160. <view class="label">1个促销:</view>
  161. <view class="tag">万圣趴</view>
  162. <view class="text">全场满499,额外送糖果</view>
  163. </view>
  164. <image class="i" src="../../static/images/address_right.png" background-size="cover"></image>
  165. </view>-->
  166. <view class="comments" bindtap="hideSwitchAttrPop" bindtouchstart='touchStart2' bindtouchend='touchEnd2'>
  167. <view class="h">
  168. <navigator url='../comment/comment?valueId={{goods.id}}&typeId=0'>
  169. <text class="t">评价({{comment.count > 999 ? '999+' : comment.count}})</text>
  170. <text class="i">查看全部</text>
  171. </navigator>
  172. </view>
  173. <view class="b">
  174. <view class="item" wx:if="{{comment.count == 0}}">
  175. <view class="info">
  176. 暂无评论
  177. </view>
  178. </view>
  179. <view class="item" wx:if="{{comment.count > 0}}">
  180. <view class="info">
  181. <view class="user">
  182. <image src="{{comment.data.avatar}}"></image>
  183. <text>{{comment.data.nickname}}</text>
  184. </view>
  185. <view class="time">{{comment.data.add_time}}</view>
  186. </view>
  187. <view class="content">
  188. {{comment.data.content}}
  189. </view>
  190. <view class="imgs" wx:if="{{comment.data.pic_list.length > 0}}">
  191. <image class="img" data-url="{{item.pic_url}}" wx:for="{{comment.data.pic_list}}" wx:key="{{item.id}}" bindtap="previewPic" src="{{item.pic_url}}"></image>
  192. </view>
  193. <!-- <view class="spec">白色 2件</view> -->
  194. </view>
  195. </view>
  196. </view>
  197. <!-- <view class="comments" bindtap="hideSwitchAttrPop">
  198. <view class="h">
  199. <text class="t">{{goods.storeName}}</text>
  200. <text class="i">全部商品</text>
  201. </view>
  202. </view> -->
  203. <view class="goods-attr" wx:if="{{attribute.length>0}}" bindtap="hideSwitchAttrPop">
  204. <view class="t">商品参数</view>
  205. <view class="l">
  206. <view class="item" wx:for="{{attribute}}" wx:key="{{item.name}}">
  207. <text class="left">{{item.name}}</text>
  208. <text class="right">{{item.value}}</text>
  209. </view>
  210. </view>
  211. </view>
  212. <view class="detail" bindtap="hideSwitchAttrPop">
  213. <view class="t">商品详情</view>
  214. <view style="margin-left: 20rpx;" x:if="{{detailContent != ''}}">
  215. <rich-text nodes="{{detailContent}}"></rich-text>
  216. </view>
  217. <!-- <import src="../../lib/wxParse/wxParse.wxml"/>
  218. <template is="wxParse" data="{{wxParseData:goodsDetail.nodes}}" /></view> -->
  219. </view>
  220. <view class="common-problem" bindtap="hideSwitchAttrPop">
  221. <view class="h">
  222. <view class="line"></view>
  223. <text class="title">常见问题</text>
  224. </view>
  225. <view class="b">
  226. <view class="item" wx:for="{{issueList}}" wx:key="{{item.id}}">
  227. <view class="question-box">
  228. <text class="spot"></text>
  229. <text class="question">{{item.question}}</text>
  230. </view>
  231. <view class="answer">
  232. {{item.answer}}
  233. </view>
  234. </view>
  235. </view>
  236. </view>
  237. <view class="related-goods" wx:if="{{relatedGoods.length > 0}}">
  238. <view class="h">
  239. <view class="line"></view>
  240. <text class="title">大家都在看</text>
  241. </view>
  242. <view class="b">
  243. <view class="item" wx:for="{{relatedGoods}}" wx:key="{{item.id}}">
  244. <navigator url="/pages/goods/goods?id={{item.id}}&&storeId={{item.storeId}}">
  245. <image class="img" src="{{item.list_pic_url}}"></image>
  246. <text class="name">{{item.name}}</text>
  247. <view class="price">¥{{item.retail_price}}
  248. <image class="cart" data-goods-id="{{item.id}}" data-product-id="{{item.product_id}}" catchtap='addNumber2' src="/static/images/cart.png" background-size="cover"></image>
  249. </view>
  250. </navigator>
  251. </view>
  252. </view>
  253. </view>
  254. </view>
  255. <view wx:if="{{openAttr}}" class="attr-pop">
  256. <!-- <view class="attr-title">加入购物车</view> -->
  257. <view class="attr-close" bindtap="switchAttrPop">X</view>
  258. <view class="img-info">
  259. <view>
  260. <image class="img" src="{{goods.list_pic_url}}"></image>
  261. </view>
  262. <view class="info">
  263. <view class="c">
  264. <view class="p">价格:¥{{goods.retail_price}}</view>
  265. <view class="a" wx:if="{{productList.length>0}}">已选择:{{checkedSpecText}}</view>
  266. <view class="a">库存{{stockNum}}件</view>
  267. </view>
  268. </view>
  269. </view>
  270. <view class="spec-con">
  271. <view class="spec-item" wx:for="{{specificationList}}" wx:key="{{item.specification_id}}">
  272. <view class="name">{{item.name}}</view>
  273. <view class="values">
  274. <view class="value {{vitem.checked ? 'selected' : ''}}" bindtap="clickSkuValue" wx:for="{{item.valueList}}" wx:for-item="vitem" wx:key="{{vitem.id}}" data-value-id="{{vitem.id}}" data-name-id="{{vitem.specification_id}}">{{vitem.value}}</view>
  275. </view>
  276. </view>
  277. <view class="number-item">
  278. <view class="name">数量</view>
  279. <view class="selnum">
  280. <view class="cut" bindtap="cutNumber">-</view>
  281. <input value="{{number}}" class="number" disabled="true" type="number" />
  282. <view class="{{number+cartNumber>= stockNum? 'addEnabel':'add'}}" bindtap="{{number+cartNumber>= stockNum ? '':'addNumber'}}">+</view>
  283. </view>
  284. </view>
  285. </view>
  286. </view>
  287. <!-- 领券弹框start -->
  288. <view wx:if="{{openTicketAttr}}" class="attr-pop">
  289. <view class="attr-title">领取优惠券</view>
  290. <view class="attr-close" bindtap="switchTicketPop">X</view>
  291. <view class="ticket-img-info">
  292. <!-- 查看门店优惠券列表 -->
  293. <view style="margin: 16px 0px;" wx:for="{{ticketDiscountList}}" wx:key="{{item.tickDiscId}}" data-coupon-id="{{item.tickDiscId}}">
  294. <view class="coupon-box {{item.isReceive==0?'coupon-box1':'coupon-box2'}} coupon-box-g">
  295. <view class="coupon-bg {{item.isReceive==0?'coupon-bg1':'coupon-bg2'}}">
  296. <view>
  297. <text class="coupon-currency">¥</text>{{item.tickDiscType==00?item.voucherMoney:''}}{{item.tickDiscType==01?item.discRatio:''}}{{item.tickDiscType==02?item.exchCond:''}}</view>
  298. <view class="coupon-type">{{item.tickDiscType==00?'满'+item.voucherCond+'可用':''}}{{item.tickDiscType==01?'满'+item.discCond+'可用':''}}{{item.tickDiscType==02?'满'+item.exchCond+'可用':''}}</view>
  299. </view>
  300. <view class="coupon-info">
  301. <view class="coupon-title">{{ item.name }}</view>
  302. <view class="coupon-desc">
  303. <view style="font-size: 26rpx;">{{ item.inValidTime }}</view>
  304. </view>
  305. <view class="coupon-desc-shop">
  306. <view style='font-size:24rpx;'>{{item.applyType==00?'全部商品可用':''}}{{item.applyType==01?'部分商品可用':''}}{{item.applyType==02?'部分商品可用':''}}{{item.goodsBizType==00?'-仅限保税仓商品':''}}{{item.goodsBizType==02?'-仅限补货商品':''}}{{item.goodsBizType==10?'-仅限现场速递商品':''}}{{item.goodsBizType==11?'-仅限普通商品':''}}</view>
  307. </view>
  308. </view>
  309. <view class="{{item.isReceive==0?'coupon-info-use':'coupon-info-use2'}}" bindtap="{{item.isReceive==0?'getUserCoupon':''}}" data-coupon-Id="{{item.tickDiscId}}" data-store-Topic-Id="{{item.storeTopicId}}">
  310. <view class="coupon-desc-use">
  311. {{item.isReceive==0?'领取':'已领完'}}
  312. </view>
  313. </view>
  314. </view>
  315. </view>
  316. <!-- 查看门店优惠券列表end -->
  317. </view>
  318. </view>
  319. <!-- 领券弹框end -->
  320. </scroll-view>
  321. <view class='shelves-view' wx:if="{{stockNum ==0 || goods.is_on_sale == 0}}">
  322. <view class="shelves">
  323. <text class='shelves-text'>已下架</text>
  324. </view>
  325. </view>
  326. <view class="bottom-btn">
  327. <view class="l l-home" bindtap="switchNav">
  328. <image class="icon" src="/static/images/nav-1.png"></image>
  329. </view>
  330. <view class="l l-collect {{ openAttr ? 'back' : ''}}" bindtap="closeAttrOrCollect">
  331. <image class="icon" src="{{ collectBackImage }}"></image>
  332. </view>
  333. <view class="l l-cart">
  334. <view class="box">
  335. <text class="cart-count">{{cartGoodsCount}}</text>
  336. <image bindtap="openCartPage" class="icon" src="/static/images/ic_menu_shoping_nor.png"></image>
  337. </view>
  338. </view>
  339. <!-- <view class="c">立即购买</view> -->
  340. <view class='{{stockNum ==0 || goods.is_on_sale == 0?"r-disable":"r"}}' bindtap='{{stockNum ==0 || goods.is_on_sale == 0?"":"addToCart"}}'>加入购物车</view>
  341. </view>