vuedemo1-5

订单模块制作 核心功能-1

 添加商品到订单页面

  我们在vue的构造器里加入methods方法,在methods方法里再加入addOrderList方法。这个方法的作用是点击右侧的商品,然后把商品添加到左边的列表里。

  addOrderList方法(也许你只看文字版无法理解,推荐查看视频):

methods:{
      //添加订单列表的方法
      addOrderList(goods){
            this.totalCount=0; //汇总数量清0
            this.totalMoney=0;
            let isHave=false;
            //判断是否这个商品已经存在于订单列表
            for (let i=0; i<this.tableData.length;i++){
                console.log(this.tableData[i].goodsId);
                if(this.tableData[i].goodsId==goods.goodsId){
                    isHave=true; //存在
                }
            }
            //根据isHave的值判断订单列表中是否已经有此商品
            if(isHave){
                //存在就进行数量添加
                 let arr = this.tableData.filter(o =>o.goodsId == goods.goodsId);
                 arr[0].count++;
                 //console.log(arr);
            }else{
                //不存在就推入数组
                let newGoods={goodsId:goods.goodsId,goodsName:goods.goodsName,price:goods.price,count:1};
                 this.tableData.push(newGoods);
 
            }
 
            //进行数量和价格的汇总计算
            this.tableData.forEach((element) => {
                this.totalCount+=element.count;
                this.totalMoney=this.totalMoney+(element.price*element.count);   
            });
           
      }
  }

  在作这个方法的时候,在订单列表的下方又添加了订单的统计功能,其实也就两项:订单价格汇总和订单商品数量汇总。我们在data里声明的值是totalMoney和totalCount。

  写完这个方法后,我们还需要在我们的商品上绑定方法,来进行调用添加方法。

@click="addOrderList(goods)"

  这样在点击商品时订单列表就会根据我们的程序逻辑发生变化。

 订单列表中的增加按钮

  商品中绑定addOrderList方法是非常容易的,如果在订单列表中绑定是需要特殊处理一下的,需要用到template的scope值,让后进行绑定。

    
<el-button type="text" size="small" @click="addOrderList(scope.row)">增加</el-button>

订单模块制作 核心功能-2

 删除单个商品

  在veu构造器methods属性里增加一个delSingleGoods方法,并接收goods对象为参数,用数组的filter可以轻松删除数组中单个的商品。

   //删除单个商品
      delSingleGoods(goods){
        console.log(goods);
        this.tableData=this.tableData.filter(o => o.goodsId !=goods.goodsId);
 
      },

  现在可以npm run dev试一下了,会发现现在商品可以正确的删除了,但是统计的数量和金额是不正确的,我们需要写一些统计的代码。在下手之前你会发现在增加商品方法中也有类似统计的方法,既然两个功能很像,我们就重新写一个方法。

//汇总数量和金额
getAllMoney(){
    this.totalCount=0;
    this.totalMoney=0;
    if(this.tableData){
            this.tableData.forEach((element) => {
        this.totalCount+=element.count;
        this.totalMoney=this.totalMoney+(element.price*element.count);   
    });
    }
    
}

  需要注意的是,以前我们是单独使用的,所以不用把totoalCount和totalMoney清零,但是做成公用方法了,记得清零。方法做好了,我们在需要的地方直接用this.getAllMoney()引用就可以了。

  功能做好了,我们还需要为删除按钮绑定事件:

 

猜你喜欢

转载自www.cnblogs.com/xiaofandegeng/p/9070327.html
5-1