176.Vue.js智能扫码点餐系统(十)【购物车列表制作、购物车列表数量增加减少】2019.03.22

0、知识点

  • 购物车列表制作
  • 购物车列表数量增加减少

1、购物车跳转

  • 从Home.vue跳转到Cart.vue
<div id="footer_cart" class="footer_cart">
            <router-link to="/cart">  // 由home.vue跳转到cart页面当中
            
                    <img src="../assets/images/cart.png"/>
                    <p>购物车</p>
                    
            </router-link>	
            
            <span class="num" v-if="cartNum">{{cartNum}}</span>
</div>
  • 效果图
  • 点击右下角购物车按钮,跳转到购物车cart页面
    在这里插入图片描述
    2、cart.vue
<template>

	<div class="cart_list">
						
				<ul>
						
					<li class="item" v-for="(item,key) in list"> // 循环遍历list
							 	<div class="left_food">
	       						    <img :src="api+item.img_url" />    // 拼接img的api    						
		       						<div class="food_info">
		       							<p>{{item.title}}</p>
		       							<p class="price">¥{{item.price}}</p>
		       						</div>
	       							
	       						</div>
	       						
	       						<div id="right_cart">
	       							<div class="cart_num">

										 // 绑定监听购物车数量减少时的变化
								         <div class="input_left" @click="decNum(item,key)">-</div>
								          <div class="input_center">
								              <input type="text"  readonly="readonly" v-model="item.num" name="num" id="num" /> // 双向数据绑定,使用v-model
								          </div>
								          
								          // 绑定监听购物车数量增加时的变化
								          <div class="input_right" @click="incNum(item)">+</div>				      
								        </div>	
	       						</div>						
						
					</li>
				</ul>
	</div>
</template>


<script>

//引入配置文件
import Config from '../model/config.js';

    export default{
        data () {
            return {
                  api:Config.api,
                  list:[]
            }
        },methods:{

                getCartData(){
                    
                    //桌子id  桌子号:是扫描二维码从url获取的
                    var api=this.api+'api/cartlist?uid=a001'; // 这里的uid是写死的,回头需要重新修改

                    this.$http.get(api).then((response)=>{	// 成功的回调
                        console.log(response);

                        this.list=response.body.result;
                    },(error)=>{	// 失败的回调
                        console.log(error);
                    })
                },

           		// 定义decNum方法
                decNum(item,key){

                    //请求远程服务器执行更新操作
                    //桌子id  桌子号:是扫描二维码从url获取的
                    var product_id=item.product_id;
                    var num=item.num;
                    var api=this.api+'api/decCart?uid=a001&product_id='+product_id+'&num='+num;

                    this.$http.get(api).then((response)=>{
                        console.log(response);
                    },(error)=>{
                        console.log(error);
                    })


                    if(item.num==1){ // 当num 完全等于1时,删除购物车的数据
                        //删除当前购物车的这条数据
                        this.list.splice(key,1);

                    }else{
                        --item.num;
                    }

                   
                },

   				// 定义incNum方法
                incNum(item){

                        // incCart?uid=a001&product_id=1241241255436246&num=2
                        //请求远程服务器执行更新操作

                        //桌子id  桌子号:是扫描二维码从url获取的
                        var product_id=item.product_id;
                        var num=item.num;
                        var api=this.api+'api/incCart?uid=a001&product_id='+product_id+'&num='+num;

                        this.$http.get(api).then((response)=>{
                            console.log(response);
                        },(error)=>{
                            console.log(error);
                        })

                        ++item.num;
                }
        },
        mounted(){

            this.getCartData();
        },
}
</script>
  • 当购物车的菜品数量增加或者减少时,服务器当中的数据也同步变化
  • 示意图
    在这里插入图片描述
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Vue.js和Node.js的点餐系统的设计与实现如下: 1. 设计: a. 前端使用Vue.js框架进行开发,通过组件化的方式构建点餐系统的各个功能模块,如菜单展示购物车、订单等。 b. 后端使用Node.js搭建服务器,并使用Express框架提供API接口,处理前端发送的请求,提供餐厅菜单、订单信息的获取和修改等功能。 c. 数据库采用MySQL来存储菜单、订单等相关信息,并通过Node.js连接进行数据的访问和修改。 2. 实现: a. 前端通过Vue Router实现不同页面之间的跳转,如首页、菜单页、购物车等。 b. 使用Vue组件库(如Element UI)来构建系统的UI界面,简化开发过程。 c. 通过Vue的请求库(如axios)向后端发送HTTP请求,获取菜单列表、订单信息等数据。 d. 用户可以在菜单页中浏览和选择菜品,并将选中的菜品加入购物车。 e. 在购物车页面,用户可以查看已选择的菜品列表,可以增加、删除或修改数量。 f. 当用户确认订单后,前端通过HTTP请求将订单信息发送给后端,后端将订单信息保存到数据库中。 g. 后端通过数据库查询和修改接口,向前端提供菜单的展示、订单的查看和修改等功能。 基于Vue.js和Node.js的点餐系统设计与实现,通过前后端的分离架构,实现了用户友好的界面、高效的数据交互和维护的数据库。同时,还可以结合其他工具和技术,如Webpack进行打包和优化,实现更加完善的点餐系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值