cartList.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <base-drawer mode="bottom" :visible="cartData.iScart" background-color="transparent" mask maskClosable @close="closeList">
  3. <view class="bg--w111-fff rd-t-40rpx p-32">
  4. <view class="text-center fs-32 text--w111-333 fw-500">待购清单</view>
  5. <view class="mt-36">
  6. <scroll-view scroll-y="true" style="max-height: 1000rpx;">
  7. <view class="w-full flex-between-center item"
  8. v-for="(item,index) in cartData.cartList" :key="index">
  9. <text class="iconfont fs-36"
  10. :class="item.select ? 'icon-a-ic_CompleteSelect' : 'icon-ic_unselect'"
  11. @tap="selectItem(item,index)"></text>
  12. <view class="flex-1 flex pl-18">
  13. <image v-if="item.productInfo.attrInfo" :src="item.productInfo.attrInfo.image" class="w-136 h-136 rd-16rpx block"></image>
  14. <image v-else :src="item.productInfo.image" class="w-136 h-136 rd-16rpx block"></image>
  15. <view class='flex-1 h-136 pl-20'>
  16. <view class="w-340 line1 fs-28 lh-40rpx fw-500">{{item.productInfo.store_name}}</view>
  17. <view class="w-324 line1 fs-22 lh-30rpx text--w111-999 mt-12">{{item.productInfo.attrInfo.suk}}</view>
  18. <view class="flex-1 flex-between-center mt-18">
  19. <view class="fs-36 Regular">¥{{item.truePrice}}</view>
  20. <view class="flex-y-center">
  21. <text class="iconfont icon-ic_Reduce fs-24"
  22. :class="item.cart_num <= 1 ? 'text--w111-f5f5f5' : ''"
  23. @tap="cartNumAdd(false,item,index)"></text>
  24. <input type="number" v-model="item.cart_num"
  25. :always-embed="true" :adjust-position="true" cursor-spacing="30"
  26. class="w-88 h-44 rd-4rpx bg--w111-f5f5f5 fs-24 text-center mx-10"></input>
  27. <text class="iconfont icon-ic_increase fs-24" @tap="cartNumAdd(true,item,index)"></text>
  28. </view>
  29. </view>
  30. </view>
  31. </view>
  32. </view>
  33. </scroll-view>
  34. </view>
  35. <view class="bt-box"></view>
  36. <view class="w-full fixed-lb pb-safe bg--w111-fff">
  37. <view class="w-full h-96 pl-32 pr-20 flex-between-center">
  38. <view class="flex-y-center" @tap="selectAll">
  39. <text class="iconfont fs-36" :class="allSelect ? 'icon-a-ic_CompleteSelect' : 'icon-ic_unselect'"></text>
  40. <text class="fs-26 pl-12">全选</text>
  41. </view>
  42. <view class="flex-y-center">
  43. <view class="w-160 h-64 rd-40rpx flex-center fs-24 con_border text-primary" @tap="cartDel">删除</view>
  44. <view class="w-160 h-64 rd-40rpx flex-center fs-24 bg-primary text--w111-fff ml-16" @tap="cartConfirm">下单</view>
  45. </view>
  46. </view>
  47. </view>
  48. </view>
  49. </base-drawer>
  50. </template>
  51. <script>
  52. import baseDrawer from '@/components/tui-drawer/tui-drawer.vue'
  53. export default {
  54. name:'cartList',
  55. props:{
  56. cartData: {
  57. type: Object,
  58. default: () => {}
  59. },
  60. },
  61. data(){
  62. return {
  63. allSelect: false
  64. }
  65. },
  66. components:{
  67. baseDrawer
  68. },
  69. methods:{
  70. closeList(){
  71. this.$emit('closeList', false);
  72. },
  73. selectItem(item,index){
  74. this.$emit('onSelect',index);
  75. },
  76. selectAll(){
  77. this.$emit('onSelectAll',this.allSelect);
  78. this.allSelect = !this.allSelect;
  79. },
  80. cartDel(){
  81. this.$emit('onDelCart');
  82. },
  83. cartConfirm(){
  84. this.$emit('onCartConfirm');
  85. },
  86. cartNumAdd(type,item,index){
  87. this.$emit('onCartNum',{type,item,index});
  88. },
  89. }
  90. }
  91. </script>
  92. <style lang="scss" scoped>
  93. .icon-ic_unselect{
  94. color: #ccc;
  95. }
  96. .icon-a-ic_CompleteSelect{
  97. color: $primary-admin;
  98. }
  99. .text-primary {
  100. color: $primary-admin;
  101. }
  102. .bg-primary{
  103. background: $primary-admin;
  104. }
  105. .con_border {
  106. border: 1rpx solid $primary-admin;
  107. }
  108. .bt-box{
  109. height: calc(100rpx + env(safe-area-inset-bottom));
  110. }
  111. .item ~ .item{
  112. margin-top: 48rpx;
  113. }
  114. </style>