cart.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <view style="height: 100vh;background-color: #F5F5F5;">
  3. <view class="titleright" @click="changeShop" v-if="isdelete">编辑</view>
  4. <view class="titleright" @click="changeShop" v-else>删除</view>
  5. <view class="cart-list">
  6. <view style="display: flex;align-items: center;padding: 20upx 36upx;
  7. border-bottom: 1px solid #F5F5F5;">
  8. <image src="" style="width: 50upx;height: 50upx;"></image>
  9. <span style="padding-left: 8upx;">华南酒店</span>
  10. </view>
  11. <view v-for="(item,index) in list" :key="index" class="shoplist" style="background-color: #fff;">
  12. <view style="flex: 1;border-radius: 100%;">
  13. <van-checkbox-group :value="checkboxList" @change="checkboxChange()">
  14. <van-checkbox checked-color="#D9332E" :name="index"></van-checkbox>
  15. </van-checkbox-group>
  16. </view>
  17. <view style="flex: 15;">
  18. <van-card
  19. title-class="changewidth"
  20. price-class ="priceClass"
  21. :price="item.price"
  22. :desc="item.titleDesc"
  23. :title="item.title"
  24. thumb="https://gd3.alicdn.com/imgextra/i3/0/O1CN01IiyFQI1UGShoFKt1O_!!0-item_pic.jpg_400x400.jpg"
  25. >
  26. <view slot="footer">
  27. <uninumberbox :min="1" @change="bindChange"/>
  28. </view>
  29. </van-card>
  30. </view>
  31. </view>
  32. </view>
  33. <view style="position: fixed;bottom: 0;">
  34. <van-submit-bar
  35. :price="prices"
  36. :button-text="listip"
  37. bind:submit="onClickButton"
  38. :tip="true"
  39. >
  40. <van-checkbox checked-color="#D9332E" :value="isAll" shape="round" @change="onChange">
  41. 全选
  42. </van-checkbox>
  43. </van-submit-bar>
  44. </view>
  45. </view>
  46. </template>
  47. <script>
  48. import uniNavBar from '@/component/uni-nav-bar/uni-nav-bar.vue'
  49. import uninumberbox from '@/component/uinNumber.vue'
  50. export default {
  51. components: {
  52. uniNavBar,
  53. uninumberbox
  54. },
  55. data() {
  56. return {
  57. prices: 201,
  58. listip: '结算',
  59. isdelete: true,
  60. isAll: false,
  61. checkboxList:[],
  62. list:[
  63. {title:'洗澡拖鞋dddd一次性', titleDesc:'一次性亚述拖鞋dddd不ww要错过x2', price:'0.5'},
  64. {title:'洗澡拖鞋dsssss一次性', titleDesc:'一次性亚述拖dddddd鞋不要33错过x2', price:'0.5'},
  65. {title:'洗澡拖鞋一dddddd次性', titleDesc:'一次性亚述拖ddddd鞋不要错过wx2', price:'0.5'},
  66. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖dddddddddddddd鞋不要错过wwx3', price:'0.5'},
  67. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖ddddd鞋不要错ee过x2', price:'0.5'},
  68. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'},
  69. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'},
  70. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'},
  71. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'},
  72. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'},
  73. {title:'洗澡拖鞋一次性', titleDesc:'一次性亚述拖鞋不要错过x2', price:'0.5'}
  74. ]
  75. }
  76. },
  77. // 隐藏分享菜单
  78. onLoad: function () {
  79. // uni.hideShareMenu({
  80. // success(res) {
  81. // console.log(res)
  82. // },
  83. // fail(res){
  84. // console.log(res)
  85. // }
  86. // });
  87. },
  88. methods: {
  89. changeShop() {
  90. this.isdelete = !this.isdelete;
  91. this.listip = this.isdelete?'结算':'删除';
  92. this.prices = this.isdelete?'3201':'';
  93. },
  94. // 返回上层
  95. goback() {
  96. uni.navigateBack();
  97. },
  98. // 编辑
  99. deleteShop() {
  100. },
  101. // 数量累加
  102. bindChange(e) {
  103. console.log(e)
  104. },
  105. // 单选
  106. checkboxChange(e) {
  107. this.checkboxList = []
  108. console.log(e.detail)
  109. e.detail.forEach((item, idx) => {
  110. this.$set(this.checkboxList, idx, item)
  111. })
  112. console.log(this.checkboxList)
  113. // let items = this.list;
  114. // let values = e;
  115. // for (let i = 0, lenI = items.length; i < lenI; ++i) {
  116. // const item = items[i]
  117. // if(values == item){
  118. // this.$set(item,'checked',true)
  119. // }else{
  120. // this.$set(item,'checked',false)
  121. // }
  122. // }
  123. },
  124. // 全选
  125. onChange() {
  126. this.isAll = !this.isAll;
  127. let items = this.list;
  128. if(this.isAll) {
  129. items.forEach((item, idx) => {
  130. this.$set(this.checkboxList, idx, idx.toString())
  131. })
  132. // for (let i = 0, lenI = items.length; i < lenI; ++i) {
  133. // console.log(i);
  134. // this.$set(this.checkboxList, i, i)
  135. // // const item = items[i]
  136. // // this.$set(item,'checked',true)
  137. // }
  138. }else {
  139. for (let i = 0, lenI = items.length; i < lenI; ++i) {
  140. this.checkboxList = []
  141. // this.$set(this.checkboxList, [])
  142. // const item = items[i]
  143. // this.$set(item,'checked',false)
  144. }
  145. }
  146. }
  147. }
  148. }
  149. </script>
  150. <style>
  151. .uniNavBar {
  152. height: 100%;
  153. }
  154. .cart-list {
  155. background-color: #fff;
  156. /* padding: 0 36upx; */
  157. }
  158. .titleright {
  159. text-align: right;
  160. padding: 10upx 30upx;
  161. background: #fff;
  162. border-bottom: 1px solid #eee;
  163. }
  164. .changewidth {
  165. color: #303133;
  166. font-size: 32upx;
  167. font-weight: 100!important;
  168. }
  169. .priceClass {
  170. color:#303133!important;
  171. font-weight: 100!important;
  172. font-size: 36upx;
  173. }
  174. .van-card {
  175. background-color: #fff!important;
  176. }
  177. .shoplist {
  178. display: flex;
  179. padding: 0 35upx;
  180. justify-content: space-between;
  181. align-items: center;
  182. }
  183. .checklabel {
  184. transform:scale(0.7);
  185. border-radius: 100%;
  186. }
  187. .checkboxteil {
  188. transform:scale(0.7);
  189. border-radius: 100%;
  190. }
  191. </style>