电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue實現淘寶購物車功能

瀏覽:169日期:2022-06-12 10:52:08

本文實例為大家分享了vue實現淘寶購物車的具體代碼,供大家參考,具體內容如下

淘寶購物車功能,效果如下圖

vue實現淘寶購物車功能

非常簡單的邏輯,沒有做代碼的封裝,代碼如下

<div class='list-container'> <div class='top-ops'><div> <img src='http://www.hdgsjgj.cn/static/images/HomeRecommendShopInfoAdress@2x.png' alt=''> <span>浙江省杭州市...</span></div><div class='ops'> <span v-if='cartStatus === ’account’' @click='cartStatus = ’edit’'>編輯商品</span> <span v-if='cartStatus === ’edit’' @click='cartStatus = ’account’'>完成</span></div> </div> <div class='paddingB200'> <div v-for='(item,index) in cartShops' :key='index'><div class='shop-name'> <label> <input type='checkbox' name='shopRadio' :value='item.productShopId' @click='shopCheck($event,cartShops)' class='disN'> <b></b> </label> <div> <div> <img src='http://www.hdgsjgj.cn/static/images/mall@2x.png' alt=''> <span class='name'>{{item.shopName}}</span> </div> <span> <img src='http://www.hdgsjgj.cn/static/images/jtxq@2x.png' alt=''> </span> </div></div><div v-for='(goods,goodsIndex) in item.detailLists' :key='goodsIndex'> <label> <input type='checkbox' name='goodRadio' :price='goods.price' :num='goods.number' :dataId='item.productShopId' :value='goods.cartDetailId' @click='goodsCkeck($event,item.detailLists,cartShops,item.productShopId)' class='disN'> <b></b> </label> <div class='middle'> <img :src='http://www.hdgsjgj.cn/bcjs/goods.reportImage' alt=''> <div> <p class='name'>{{goods.name}}</p> <p class='spec'>{{goods.specifications}}</p> <p class='tab'><img src='http://www.hdgsjgj.cn/static/images/lsspbq@2x.png' alt=''> </p> </div> </div> <div class='right'> <p class='price'>¥{{goods.price}}</p> <p class='num'>X{{goods.number}}</p> <p class='caculate'> <span @click='numDecrease(goods.number)'></span> <span class='beeforCacul'>{{goods.number}}</span> <span :num='goods.cartDetailId'>{{goods.number}}</span> <span @click='numAdd(goods.number)'></span> </p> </div></div> </div> <div v-if='cartStatus === ’edit’'><label> <input type='checkbox' name='allRadio' @click='allCheck($event)'> <b></b> <span>全選</span></label><span class='delet'>刪除(3)</span> </div> <div v-if='cartStatus === ’account’'><label> <input type='checkbox' name='allRadio' @click='allCheck($event)'> <b></b> <span class='marginR40'>全選</span> <span>合計:</span> <span class='sum'>¥{{sumPrice.toFixed(2)}}</span></label><span @click='cauSum'>去結算({{totalNumber}})</span> </div> </div></div>

export default { components: { }, name: 'life', data() { return { cartStatus:'account', //購物車狀態,account結算,edit刪除編輯狀態 cartShops: [], //店鋪列表 sumPrice:0, //合計金額 totalNumber: 0, //總數 shopList:[], //店鋪列表 goodsList:[], //商品列表 }; }, watch: { }, mounted() { this.getCartDetail(); }, methods: { //購物車列表 getCartDetail: function(){ this.$http.get('api/product/v1/getCartDetail').then( res => {if(res.data.code === 200){ //console.log(res.data.data) this.cartShops = res.data.data.cartShops;}else{ Toast(res.data.msg);} }).catch( error => {console.log(error) }) }, //商品選擇 goodsCkeck: function(event,goodsList,shopList,shopId){ //商品列表+-,店鋪是否checked(店鋪列表+-),全選是否checked var input = document.getElementsByTagName(’input’) if(event.currentTarget.checked){this.goodsList.push(String(event.currentTarget.value));//如果店鋪內所有商品全選,店鋪選中var newArr = this.goodsList;var tt = goodsList.every(function(itemValue){ return (newArr.indexOf(String(itemValue.cartDetailId)) != -1)})if(tt){ //店鋪內全選,店鋪checked,店鋪列表+ for(var i = 0;i<input.length;i++){ if(input[i].value == shopId){ input[i].checked = true; } } this.shopList.push(String(shopId)); //防止shopid是number類型造成麻煩 //如果所有店鋪都全選,則全選按鈕checked if(this.shopList.length === shopList.length){ //所有店鋪全選 for(var i = 0;i<input.length;i++){ if(input[i].name == ’allRadio’){input[i].checked = true; } } }} }else{//商品列表--this.goodsList.splice(this.goodsList.indexOf(event.currentTarget.value),1)//如果店鋪checked,則取消,店鋪列表--for(var i = 0;i<input.length;i++){ if(input[i].value == shopId){ if(input[i].checked){ input[i].checked = false; this.shopList.splice(this.shopList.indexOf(String(shopId)),1); //防止shopid是number類型造成麻煩 } } //任意一個不選,全選取消 if(input[i].name == ’allRadio’){ input[i].checked = false; }} } //計算總價和數量 this.caculate(); }, //店鋪選擇 shopCheck: function(event,shopList){ //店鋪選中則對應商品全選,否則全不選 //console.log(event.currentTarget) var input = document.getElementsByTagName(’input’) if(event.currentTarget.checked){//店鋪列表+,店鋪checked,店鋪內商品全checked,商品列表++//console.log(this.shopList)this.shopList.push(String(event.currentTarget.value));//店鋪內商品全checkedfor(var i = 0;i<input.length;i++){ if(input[i].getAttribute(’dataId’) == event.currentTarget.value){ //將沒有選中的checked,并加入列表,去重 if(!input[i].checked){ input[i].checked = true; //商品列表++ this.goodsList.push(String(input[i].value)) } }}//所有店鋪全選if(this.shopList.length === shopList.length){ for(var i = 0;i<input.length;i++){ if(input[i].name == ’allRadio’){ input[i].checked = true; } }} }else{//店鋪取消checked,店鋪列表--,店鋪內所有商品取消checked,商品列表--this.shopList.splice(this.shopList.indexOf(String(event.currentTarget.value)),1);//店鋪內所有商品取消checkedfor(var i = 0;i<input.length;i++){ if(input[i].getAttribute(’dataId’) == event.currentTarget.value){ input[i].checked = false; //商品列表-- this.goodsList.splice(this.goodsList.indexOf(input[i].value),1); } //任意一個不選,全選取消 if(input[i].name == ’allRadio’){ input[i].checked = false; }} } //計算總價和數量 this.caculate(); }, //所有全選 allCheck: function(event){ var input = document.getElementsByTagName(’input’) if(event.currentTarget.checked){//全選checked,所有店鋪checked,店鋪列表++,所有商品checked,商品列表++for(var i = 0;i<input.length;i++){ //去重 if(!input[i].checked){ input[i].checked = true; if(input[i].name == ’shopRadio’){ this.shopList.push(String(input[i].value)) } if(input[i].name == ’goodRadio’){ this.goodsList.push(String(input[i].value)) } }} }else{//全不選取消checked,店鋪全部取消checked,店鋪列表清空,所有商品取消checked,商品列表清空for(var i = 0;i<input.length;i++){ input[i].checked = false; this.shopList = []; this.goodsList = [];} } //計算總價和數量 this.caculate(); }, //計算總金額總數量 caculate: function(){ var input = document.getElementsByTagName(’input’); var newArr = []; for(var i = 0;i<input.length;i++){if(input[i].name == ’goodRadio’ && input[i].checked){ var num = input[i].parentNode.parentNode.children[2].children[2].children[2].innerHTML; newArr.push( { ’price’: input[i].getAttribute(’price’), ’num’: num } )} } this.totalNumber = newArr.length; //歸零 this.sumPrice = 0; for(var j = 0,len = newArr.length;j<len;j++){this.sumPrice += newArr[j].price * newArr[j].num; } }, //數量減小 numDecrease: function(num){ //如果當前input選中,則修改數量計算價格,如果當前input沒有選中,則修改數量不計算價格 var spanList = event.currentTarget.parentNode.children; for(var i = 0,len = spanList.length;i<len;i++){if(spanList[i].getAttribute('class') == ’beeforCacul’){ spanList[i].style.display = ’none’;}if(spanList[i].getAttribute('class') == ’cacul’){ spanList[i].style.display = ’block’; var caculNum = spanList[i].innerHTML; if(caculNum < 2){ Toast(’寶貝不能再少了哦’); }else{ caculNum -- spanList[i].innerHTML = caculNum; }} } if(event.currentTarget.parentNode.parentNode.parentNode.children[0].children[0].checked){this.caculate(); } }, //數量增加 numAdd: function(num){ var spanList = event.currentTarget.parentNode.children; //console.log(event.currentTarget.parentNode.children) for(var i = 0,len = spanList.length;i<len;i++){if(spanList[i].getAttribute('class') == ’beeforCacul’){ spanList[i].style.display = ’none’;}if(spanList[i].getAttribute('class') == ’cacul’){ spanList[i].style.display = ’block’; var caculNum = spanList[i].innerHTML; caculNum ++; spanList[i].innerHTML = caculNum;} } if(event.currentTarget.parentNode.parentNode.parentNode.children[0].children[0].checked){this.caculate(); } }, //去結算 cauSum:function(){ if(this.sumPrice === 0){Toast(’您還沒有選擇寶貝哦’); }else{this.$router.push(’/cart/order’) } }, }};

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: 淘寶
相關文章:
主站蜘蛛池模板: 中国品牌排名投票_十大品牌榜单_中国著名品牌【中国品牌榜】 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 青岛成人高考_山东成考报名网| 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 | 慢回弹测试仪-落球回弹测试仪-北京冠测精电仪器设备有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 除尘布袋_液体过滤袋_针刺毡滤料-杭州辉龙过滤技术有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 首页|成都尚玖保洁_家政保洁_开荒保洁_成都保洁| 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸| 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 |