1. <template>
    2. <div class="home">
    3. <div class="item" v-for="(item,index) of list" :key="item.id">
    4. <van-checkbox icon-size="15px" class="font-check" v-model="item.isSelected">单选</van-checkbox>
    5. <div class="wrap">
    6. <van-card
    7. :price="item.productPrice"
    8. :desc="item.productInfo"
    9. :title="item.productName"
    10. :thumb="item.productCover"
    11. />
    12. <van-button @click="handleDet(index)" class="delete" size="mini" type="danger">删除</van-button>
    13. <van-stepper class="count" input-width="30px" button-size="17px" v-model="item.productCount" />
    14. <p class="sum">小计:{{item.productPrice*item.productCount}}元</p>
    15. </div>
    16. </div>
    17. <van-submit-bar
    18. :price="sum*100"
    19. button-text="提交订单"
    20. >
    21. <van-checkbox v-model="checkAll">全选</van-checkbox>
    22. </van-submit-bar>
    23. </div>
    24. </template>
    25. <script>
    26. import axios from 'axios';
    27. export default {
    28. name: 'home',
    29. data(){
    30. return{
    31. list:[]
    32. }
    33. },
    34. mounted(){
    35. axios.get("http://yapi.demo.qunar.com/mock/36046/cart").then(res=>{
    36. this.list = res.data;
    37. console.log(this.list)
    38. })
    39. },
    40. computed: {
    41. sum(){
    42. var total =0;
    43. this.list.forEach(item=>{
    44. if(item.isSelected){
    45. total = item.productCount*item.productPrice+total;
    46. }
    47. })
    48. return total
    49. },
    50. checkAll:{
    51. get(){
    52. return this.list.every(item=>item.isSelected)
    53. },
    54. set(val){
    55. this.list.forEach(item=>item.isSelected=val)
    56. }
    57. }
    58. },
    59. methods:{
    60. handleDet(index){
    61. this.list.splice(index,1)
    62. }
    63. }
    64. }
    65. </script>
    66. <style scoped>
    67. .item{
    68. margin-top: 20px;
    69. }
    70. .font-check{
    71. font-size: 20px;
    72. }
    73. .wrap{
    74. position: relative;
    75. }
    76. .count{
    77. position: absolute;
    78. top: 50px;
    79. left: 200px;
    80. }
    81. .delete{
    82. position: absolute;
    83. top: 50px;
    84. left: 290px;
    85. }
    86. .sum{
    87. position:absolute;
    88. top: 60px;
    89. left: 230px;
    90. font-size: 15px;
    91. }
    92. </style>