[前端] vue实现简单的购物车小案例

2101 0
黑夜隐士 2022-10-21 15:44:14 | 显示全部楼层 |阅读模式
本文实例为大家分享了vue实现简单购物车的具体代码,供大家参考,具体内容如下
最近在写vue的相关项目,所以找一些小例子练习一下,把一个js的购物车改成vue了
css部分是直接引入的插件
效果图如下

  1. <template>
  2. <div class="head">
  3.   <meta charset="UTF-8">
  4.   <title>我的购物车-品优购</title>
  5.   <meta name="description" content="品优购JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
  6.   <meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,品优购" />
  7. <!--  <!– 引入facicon.ico网页图标 –>-->
  8. <!--  <link rel="shortcut icon" href="favicon.ico" rel="external nofollow"  type="image/x-icon" />-->
  9.   <!-- 引入css 初始化的css 文件 -->
  10.   <link rel="stylesheet" href="src/assets/carStyle/base.css" rel="external nofollow" >
  11.   <!-- 引入公共样式的css 文件 -->
  12.   <link rel="stylesheet" href="src/assets/carStyle/common.css" rel="external nofollow" >
  13.   <!-- 引入car css -->
  14.   <link rel="stylesheet" hef="src/assets/carStyle/car.css" rel="external nofollow" >
  15. </div>
  16. <div class="body">
  17.   <div class="car-header">
  18.    <div class="w">
  19.     <div class="car-logo">
  20.      <img src="src/assets/images/logo.png" alt=""> <b>购物车</b>
  21.     </div>
  22.    </div>
  23.   </div>
  24.   <div class="c-container">
  25.    <div class="w">
  26.     <div class="cart-filter-bar">
  27.      <em>全部商品</em>
  28.     </div>
  29.     <!-- 购物车主要核心区域 -->
  30.     <div class="cart-warp">
  31.      <!-- 头部全选模块 -->
  32.      <div class="cart-thead">
  33.       <div class="t-checkbox">
  34.        <input type="checkbox" name="" id="" class="checkall"> 全选
  35.       </div>
  36.       <div class="t-goods">商品</div>
  37.       <div class="t-price">单价</div>
  38.       <div class="t-num">数量</div>
  39.       <div class="t-sum">小计</div>
  40.       <div class="t-action">操作</div>
  41.      </div>
  42.      <!-- 商品详细模块 -->
  43.      <div class="cart-item-list" v-for="(good,index) in cartList">
  44.       <div class="cart-item">
  45.        <div class="p-checkbox">
  46.         <input type="checkbox" v-model="good.isSelected" @click="oneSelected(index)">
  47.        </div>
  48.        <div class="p-goods">
  49.         <div class="p-img">
  50.          <img v-bind:src=good.imgUrl alt="">
  51.         </div>
  52.         <div class="p-msg">{{good.message}}</div>
  53.        </div>
  54.        <div class="p-price">{{good.PriceItem}}</div>
  55.        <div class="p-num">
  56.         <div class="quantity-form">
  57.          <el-button class="increment" @click="changeDe(index)">-</el-button>
  58.          <input type="text" class="itxt" v-model=good.ItemNum placeholder="1">
  59.          <el-button class="increment" @click="changeIn(index)">+</el-button>
  60.         </div>
  61.        </div>
  62.        <div class="p-sum">{{good.PriceSum}}</div>
  63.        <div class="p-action">
  64.         <el-button type="danger" @click="DeleteItem(id)">删除</el-button>
  65.        </div>
  66.       </div>
  67.      </div>
  68.      <!-- 结算模块 -->
  69.      <div class="cart-floatbar">
  70.       <div class="select-all">
  71.        <input type="checkbox" @click="allCheck" v-model="allSelected">全选
  72.       </div>
  73.       <div class="operation">
  74.        <a class="remove-batch" @click="DeleteSelected"> 删除选中的商品</a>
  75.        <a class="clear-all" @click="DeleteAll">清理购物车</a>
  76.       </div>
  77.       <div class="toolbar-right">
  78.        <div class="amount-sum">已经选<em>{{NumSum}}</em>件商品</div>
  79.        <div class="price-sum">总价: <em>{{totalPrice}}</em></div>
  80.        <div class="btn-area">去结算</div>
  81.       </div>
  82.      </div>
  83.     </div>
  84.    </div>
  85.   </div>
  86. </div>
  87. </template>
  88. <script>
  89. import { defineComponent } from 'vue'
  90. export default defineComponent({
  91. data(){
  92.   return{
  93.    allSelected:false,
  94.    cartList:[
  95.     {
  96.      imgUrl:'src/assets/upload/p1.jpg',
  97.      message:'【5本26.8元】经典儿童文学彩图青少版八十天环游地球中学生语文教学大纲',
  98.      PriceItem: 12.6,
  99.      PriceSum: 12.6,
  100.      ItemNum: 1,
  101.      isSelected:false
  102.     },
  103.     {
  104.      imgUrl:'src/assets/upload/p2.jpg',
  105.      message:'【2000张贴纸】贴纸书 3-6岁 贴画儿童 贴画书全套12册 贴画 贴纸儿童 汽',
  106.      PriceItem: 24.8,
  107.      PriceSum: 24.8,
  108.      ItemNum: 1,
  109.      isSelected:false
  110.     },
  111.     {
  112.      imgUrl:'src/assets/upload/p3.jpg',
  113.      message:'唐诗三百首+成语故事全2册 一年级课外书 精装注音儿童版 小学生二三年级课外阅读书籍',
  114.      PriceItem: 29.8,
  115.      PriceSum: 29.8,
  116.      ItemNum: 1,
  117.      isSelected:false
  118.     },
  119.    ]
  120.   }
  121. },
  122. methods:{
  123.   changeIn(id){
  124.    let n=this.cartList[id].ItemNum;
  125.    // console.log(n);
  126.    this.cartList[id].ItemNum++;
  127.    this.cartList[id].PriceSum = this.cartList[id].ItemNum * this.cartList[id].PriceItem;
  128.   },
  129.   changeDe(id){
  130.    if(this.cartList[id].ItemNum === 0)alert("该商品已经清0!");
  131.    else {
  132.     this.cartList[id].ItemNum--;
  133.     this.cartList[id].PriceSum = this.cartList[id].ItemNum * this.cartList[id].PriceItem;
  134.    }
  135.   },
  136.   DeleteItem(id){
  137.    // console.log(this.$parent);
  138.    // console.log(this.$children);
  139.    this.cartList.splice(id,1);
  140.   },
  141.   allCheck(){
  142.    // console.log(this.allSelected);
  143.   this.cartList.forEach((item)=>{
  144.    // console.log(this.allSelected);
  145.    // console.log(this.cartList);
  146.    item.isSelected=!this.allSelected;
  147.   })
  148.   },
  149.   DeleteSelected(){
  150.    for(let i=0;i<this.cartList.length;i++){
  151.     if(this.cartList[i].isSelected===true){
  152.      this.cartList.splice(i,1);
  153.     }
  154.    }
  155.   },
  156.   DeleteAll(){
  157.    this.cartList.splice(0,this.cartList.length);
  158.   },
  159.   oneSelected(id){
  160.    if(this.cartList[id].isSelected===false)
  161.     this.cartList[id].isSelected=true;
  162.    else
  163.     this.cartList[id].isSelected=false;
  164.    let n=0;
  165.    for(let i=0;i<this.cartList.length;i++){
  166.     if(this.cartList[i].isSelected===true)
  167.      n++;
  168.    }
  169.    if(n===this.cartList.length)this.allSelected=true;
  170.    else this.allSelected=false;
  171.   }
  172. },
  173. computed:{
  174.   NumSum() {
  175.    let num=0;
  176.    this.cartList.forEach((item)=>{
  177.     if(item.isSelected===true)
  178.     num++;
  179.    })
  180.    return num;
  181.   },
  182.   totalPrice() {
  183.    let totalp=0;
  184.    this.cartList.forEach((item)=>{
  185.     if(item.isSelected===true)
  186.      totalp += item.PriceSum;
  187.    })
  188.    return totalp;
  189.   },
  190. }
  191. })
  192. </script>
  193. <style lang="scss" scoped>
  194. </style>
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中国红客联盟。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行