shoppingCart.wxml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <wxs module="textUtil" src="../../../utils/textUtil.wxs" />
  2. <view class="navigationBar" style='height:{{statusBarHeight}}px;'>
  3. <view class='flex commonHead' style='height:{{statusBarHeight}}px;'>
  4. <view class='commonHeadWrap flex'>
  5. <view class='commonHeadHome flex-c-c' bind:tap="goHome">
  6. <image class="icon" src="/static/icon/icon_go_home.png" mode="aspectFill"></image>
  7. </view>
  8. <view class='commonHeadTextBox flex'>
  9. <view class='headTitle line1'>购物车</view>
  10. </view>
  11. </view>
  12. </view>
  13. </view>
  14. <view class="editBox" wx:if="{{cartList.length > 0 && isLogOn && !isLoading}}">
  15. <view class="editFixed" style='top:{{statusBarHeight}}px;'>
  16. <view class="edit" bind:tap="changeEdit">{{isEdit?'完成':'编辑'}}</view>
  17. </view>
  18. </view>
  19. <view class="cartContainer" wx:if="{{cartList.length > 0 && isLogOn && !isLoading}}">
  20. <view class="cartList">
  21. <view class="cartItem" wx:for="{{cartList}}" wx:key="index">
  22. <swipe-action operateWidth="{{48}}" id="action{{index}}" bind:click="changeTap" >
  23. <view slot="content" class="tui-list-item cartContent" catchtap="navigateTo" data-url="/pages/cart/pages/goodsDetail/goodsDetail?goods_id={{item.goods_id}}">
  24. <view class="flex-c">
  25. <!-- 编辑删除勾选 -->
  26. <view class="selectBox flex-c-c" wx:if="{{isEdit}}" catchtap="changeCartDelete" data-index="{{index}}">
  27. <image wx:if="{{item.isDelete}}" class="icon" src="/static/icon/icon_select_on.png" mode="aspectFill"></image>
  28. <image wx:else class="icon" src="/static/icon/icon_select_off.png" mode="aspectFill"></image>
  29. </view>
  30. <!-- 正常结算勾选 -->
  31. <view class="selectBox flex-c-c" wx:else catchtap="changeCartSelect" data-index="{{index}}">
  32. <image wx:if="{{item.selected == 0 && item.goods.status == 10 && item.err_status == 0}}" class="icon" src="/static/icon/icon_select_off.png" mode="aspectFill"></image>
  33. <image wx:if="{{item.selected == 1 && item.goods.status == 10 && item.err_status == 0}}" class="icon" src="/static/icon/icon_select_on.png" mode="aspectFill"></image>
  34. <image wx:if="{{item.goods.status == 20 || item.err_status == 1 || item.err_status == 2}}" class="icon" src="/static/icon/icon_select_invalid.png" mode="aspectFill"></image>
  35. </view>
  36. <view class="cartInfoBox flex">
  37. <view class="cartImgBox">
  38. <image class="image" src="{{item.goods.goods_image+textUtil.imageSmall()}}" lazy-load="{{true}}" mode="aspectFill"></image>
  39. </view>
  40. <view class="cartTextBox">
  41. <view class="caTop">
  42. <view class="cartTitle space {{item.goods.status == 20|| item.err_status == 1 || item.err_status == 2?'inv':''}}">{{item.goods.goods_name}}</view>
  43. <!-- 多规格才显示 -->
  44. <view class="flex" wx:if="{{item.goods.spec_type == 20 && item.goods.status == 10}}">
  45. <view class="ruleBox flex-c {{item.err_status == 1?'shi':''}}" catchtap="showRulesPopup" data-index="{{index}}">
  46. <view class="rule space">{{item.goods.skuInfo.goods_props[0].value.name}}</view>
  47. <image class="icon" src="/static/icon/icon_to_bot.png" mode="aspectFill"></image>
  48. </view>
  49. </view>
  50. </view>
  51. <view class="caBot">
  52. <view class="flex-c-bet" wx:if="{{item.goods.status == 10}}">
  53. <view class="priceBox">
  54. <text class="tag">¥</text>
  55. <text class="pra">{{textUtil.priceSplit(item.goods.skuInfo.goods_price)[0]}}</text>
  56. <text class="prb">.{{textUtil.priceSplit(item.goods.skuInfo.goods_price)[1]}}</text>
  57. </view>
  58. <view class="numberBox flex-c-c">
  59. <view class="reduce flex-c" catchtap="changeCartNumber" data-state="0" data-index="{{index}}">
  60. <image wx:if="{{item.goods_num>1}}" class="icon" src="/static/icon/icon_reduce.png" mode="aspectFill"></image>
  61. <image wx:else class="icon" src="/static/icon/icon_no_reduce.png" mode="aspectFill"></image>
  62. </view>
  63. <view class="number flex-c-c">{{item.goods_num}}</view>
  64. <view class="add flex-c" catchtap="changeCartNumber" data-state="1" data-index="{{index}}">
  65. <image wx:if="{{item.goods_num<item.goods.stock_total}}" class="icon" src="/static/icon/icon_add.png" mode="aspectFill"></image>
  66. <image wx:else class="icon" src="/static/icon/icon_no_add.png" mode="aspectFill"></image>
  67. </view>
  68. </view>
  69. </view>
  70. <view class="invalid" wx:if="{{item.goods.status == 20 || item.err_status == 2}}">商品已失效,请选择其他商品</view>
  71. </view>
  72. </view>
  73. </view>
  74. </view>
  75. <view class="noStock" wx:if="{{item.err_status == 1}}">库存不足</view>
  76. </view>
  77. <view class="cartDelete flex-c-c" slot="button" catchtap="cartDelete" data-index="{{index}}">
  78. 删除
  79. </view>
  80. </swipe-action>
  81. </view>
  82. </view>
  83. <view class="footerContainer">
  84. <view class="footerBox flex-c-bet {{showDetailsPopup?'sel':''}}">
  85. <!-- 编辑删除全选 -->
  86. <view class="allSelect flex-c-c" wx:if="{{isEdit}}" bind:tap="allDelete">
  87. <image wx:if="{{isAllDelete}}" class="icon" src="/static/icon/icon_select_on.png" mode="aspectFill"></image>
  88. <image wx:else class="icon" src="/static/icon/icon_select_off.png" mode="aspectFill"></image>
  89. <view>全选</view>
  90. </view>
  91. <!-- 正常结算全选 -->
  92. <view class="allSelect flex-c-c" wx:else bind:tap="allSelect">
  93. <image wx:if="{{isAllSelect && validData.length > 0}}" class="icon" src="/static/icon/icon_select_on.png" mode="aspectFill"></image>
  94. <image wx:if="{{!isAllSelect && validData.length > 0}}" class="icon" src="/static/icon/icon_select_off.png" mode="aspectFill"></image>
  95. <image wx:if="{{validData.length <=0}}" class="icon" src="/static/icon/icon_select_invalid.png" mode="aspectFill"></image>
  96. <view>全选</view>
  97. </view>
  98. <view class="priceInfo flex-c">
  99. <!-- 编辑状态不显示 -->
  100. <view class="priceContent" wx:if="{{!isEdit}}">
  101. <view class="top flex-c-end">
  102. <view class="cartTotalNumber">共{{selectedCartList.length || 0}}件</view>
  103. <view class="total">合计</view>
  104. <view class="priceBox">
  105. <text class="tag">¥</text>
  106. <text class="pra">{{textUtil.priceSplit(finalPrice)[0]}}</text>
  107. <text class="prb" wx:if="{{textUtil.priceSplit(finalPrice)[1]}}">.{{textUtil.priceSplit(finalPrice)[1]}}</text>
  108. </view>
  109. </view>
  110. <view class="bot flex-c" wx:if="{{isShowDetails}}">
  111. <view class="gongJ">共减 ¥ {{totalReduce}}</view>
  112. <view class="lookDetails" bind:tap="showDetailsPopup">
  113. <text>查看明细</text>
  114. <image class="icon {{showDetailsPopup?'sel':''}}" src="/static/icon/icon_top_j.png" mode="aspectFill"></image>
  115. </view>
  116. </view>
  117. </view>
  118. <button class="settlement flex-c-c" wx:if="{{isEdit}}" bind:tap="deleteCart">删除</button>
  119. <button class="settlement flex-c-c" wx:else bind:tap="settlement">结算</button>
  120. </view>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="emptyPage flex-column-c" wx:if="{{cartList.length == 0 && isLogOn && !isLoading}}">
  125. <image class="image" src="/static/images/image_not_log.png" mode="aspectFill"></image>
  126. <view class="tips">您的购物车还是空的哦~</view>
  127. <view bind:tap="goAllGoods"class="goShop flex-c-c">去选购</view>
  128. </view>
  129. <view class="noLogPage flex-column-c" wx:if="{{!isLogOn}}">
  130. <image class="image" src="/static/images/image_not_log.png" mode="aspectFill"></image>
  131. <view class="tips">您还没有登录~</view>
  132. <button class="toLog flex-c-c" bindtap="navigateTo" data-url="/pages/tabBar/login/login">现在登录</button>
  133. </view>
  134. <!-- 底部购买Popup -->
  135. <tui-bottom-popup backgroundColor="transparent" height="auto" show="{{showRulesPopup}}" bindclose="hideRulesPopup">
  136. <view class="buyPopup popupBox">
  137. <view class="closePopup" catchtap="hideRulesPopup">
  138. <image class="icon" src="/static/icon/icon_modal_x.png" mode="aspectFill"></image>
  139. </view>
  140. <view class="gpInfo flex-c">
  141. <view class="gpImgBox">
  142. <image mode='aspectFill' class='swiperImg' src='{{rulesSkuObj.image_url}}'></image>
  143. </view>
  144. <view class="popPriceBox flex-c">
  145. <view class="gpPrice">
  146. <text class="">¥</text>
  147. <text class="pr">{{textUtil.priceSplit(rulesSkuObj.goods_price)[0]}}</text>
  148. <text class="">.{{textUtil.priceSplit(rulesSkuObj.goods_price)[1]}}</text>
  149. </view>
  150. <!-- 划线价 -->
  151. <view class="linkPrice" wx:if="{{rulesSkuObj.line_price && rulesSkuObj.line_price > 0}}">
  152. <text>¥</text>
  153. <text class="pr">{{rulesSkuObj.line_price}}</text>
  154. </view>
  155. </view>
  156. </view>
  157. <view class="tips">选择规格:</view>
  158. <view class="normsItem flex {{ item.lack?'lack':''}}"
  159. wx:for="{{rulesSkuList}}"
  160. wx:key="index"
  161. bind:tap="changeSpec"
  162. data-index="{{index}}">
  163. <view class="text flex-c-c {{item.goods_sku_id == rulesSkuObj.goods_sku_id? 'sel':''}}">{{item.goods_props[0].value.name}}{{item.lack?'(缺货)':''}}</view>
  164. </view>
  165. <button class="bot flex-c-c" bind:tap="confirmBuyPopup">确认</button>
  166. </view>
  167. </tui-bottom-popup>
  168. <!-- 查看明细Popup -->
  169. <tui-bottom-popup backgroundColor="transparent" height="auto" zIndex="9000" show="{{showDetailsPopup}}" bindclose="hideDetailsPopup">
  170. <view class="detailsPopup popupBox">
  171. <view class="closePopup" catchtap="hideDetailsPopup">
  172. <image class="icon" src="/static/icon/icon_modal_x.png" mode="aspectFill"></image>
  173. </view>
  174. <view class="popupTitle flex-c-c">金额明细</view>
  175. <scroll-view scroll-x="true" style="width: 100%;white-space: nowrap;" class="lookImageList">
  176. <block wx:for="{{selectedCartList}}" wx:key="index">
  177. <image class="lookImage" src="{{item.goods.goods_image+textUtil.imageSmall()}}" mode="aspectFill"></image>
  178. </block>
  179. </scroll-view>
  180. <view class="lookItem flex-c-bet">
  181. <view class="key">商品总价</view>
  182. <view class="value">
  183. <text class="vTag">¥</text>
  184. <text class="pr1">{{textUtil.priceSplit(totalprice)[0]}}</text>
  185. <text class="pr2">.{{textUtil.priceSplit(totalprice)[1]}}</text>
  186. </view>
  187. </view>
  188. <view class="lookItem flex-c-bet" wx:if="{{userCouponItem}}">
  189. <view class="key">优惠券优惠({{userCouponItem.name}})</view>
  190. <!-- 满减券 -->
  191. <view class="value red" wx:if="{{userCouponItem.coupon_type == 20 || userCouponItem.coupon_type == 90 || userCouponItem.coupon_type == 100 }}">
  192. <text class="vTag">¥</text>
  193. <text class="pr1">{{textUtil.priceSplit(userCouponItem.reduced_price)[0]}}</text>
  194. <text class="pr2">.{{textUtil.priceSplit(userCouponItem.reduced_price)[1]}}</text>
  195. </view>
  196. <!-- 折扣券 -->
  197. <view class="value red discount" wx:if="{{userCouponItem.coupon_type == 50}}">
  198. <text class="pr1">{{userCouponItem.discount/10}}</text>
  199. <text class="vTag">折</text>
  200. </view>
  201. </view>
  202. <view class="lookItem flex-c-bet" wx:if="{{activityPrice && activityPrice>0}}">
  203. <view class="key">活动优惠</view>
  204. <view class="value red">
  205. <text class="vTag">-¥</text>
  206. <text class="pr1">{{textUtil.priceSplit(activityPrice)[0]}}</text>
  207. <text class="pr2">.{{textUtil.priceSplit(activityPrice)[1]}}</text>
  208. </view>
  209. </view>
  210. <view class="lookItem flex-c-bet">
  211. <view class="key">共减</view>
  212. <view class="value red">
  213. <text class="vTag">-¥</text>
  214. <text class="pr1">{{textUtil.priceSplit(totalReduce)[0]}}</text>
  215. <text class="pr2">.{{textUtil.priceSplit(totalReduce)[1]}}</text>
  216. </view>
  217. </view>
  218. <view class="lookItem flex-c-bet">
  219. <view class="key">合计</view>
  220. <view class="value">
  221. <text class="vTag">¥</text>
  222. <text class="pr1">{{textUtil.priceSplit(finalPrice)[0]}}</text>
  223. <text class="pr2">.{{textUtil.priceSplit(finalPrice)[1]}}</text>
  224. </view>
  225. </view>
  226. </view>
  227. </tui-bottom-popup>
  228. <!-- 确认删除弹窗 -->
  229. <tui-modal show="{{showDeleteModal}}" zIndex="99999" custom padding="0rpx" width="600rpx" radius="16rpx" top="45%">
  230. <view class="modalCustom">
  231. <view class="newModalTitle space">确认删除所选商品吗?</view>
  232. <view class="newModalButtonBox flex-c-c">
  233. <view class="mButton border flex-c-c" bind:tap="hideDeleteModal">取消</view>
  234. <view class="mButton flex-c-c" bind:tap="confirmDelete">确定</view>
  235. </view>
  236. </view>
  237. </tui-modal>
  238. <!-- 库存不足 -->
  239. <tui-modal show="{{showStockUnModal}}" zIndex="99999" custom padding="0rpx" width="600rpx" radius="16rpx" top="45%">
  240. <view class="modalCustom">
  241. <view class="newModalTitle space">赠品库存不足</view>
  242. <view class="newModalButtonBox flex-c-c">
  243. <view class="mButton border flex-c-c" bind:tap="hideDeleteModal">等待补货</view>
  244. <view class="mButton flex-c-c" bind:tap="confirmDelete">继续购买</view>
  245. </view>
  246. </view>
  247. </tui-modal>