vue.js 实现全选,单选,计算商品总价格,商品件数

vue.js 实现全选,单选,计算商品总价格,商品件数

                                        

1.标签

 <div id="main-body" class="box">

    <div class="main">

      <input type="checkbox" v-model="ischecked" @click="allchecked" />全选

      <div class="sum">¥{{sum}}.00</div>

      <div class="settlement">

        <span @click="settlement">结算({{count}})</span>

      </div>

    </div>

    <ul>

      <li v-for="(item,index) in goodslist" :key="item.name">

        <div class="radio">

          <input

            type="checkbox"

            :checked="item.checked"

            @click="changechecked($event,item.name)"

          />

        </div>

        <div class="title"> {{item.name}} </div>

        <div class="price">¥{{item.price}}</div>

        <div class="num-count">

          <button ref="sub" @click="subcount(item.name)">-</button>

          <span>{{item.count}}</span>

          <button ref="add" @click="addcount(item.name)">+</button>

        </div>

      </li>

    </ul>

  </div>

2. js部分

2.1       data部分

data: {

          sum: 0,

          ischecked: false,

          count: 0,

          goodslist: [

            {

              name: "亚托克斯",

              price: 100,

              checked: false,

              count: 1,

            },

            {

              name: "安妮",

              price: 150,

              checked: false,

              count: 1,

            },

            {

              name: "阿卡丽",

              price: 200,

              checked: false,

              count: 1,

            },

            {

              name: "阿利斯塔",

              price: 150,

              checked: false,

              count: 1,

            },

            {

              name: "阿木木",

              price: 300,

              checked: false,

              count: 1,

            },

          ],

        },

2.2        methods部分

methods: {

          //单选按钮

          changechecked(e, name) {

            let result = this.goodslist.map((item) => {

              if (name == item.name) {

                item.checked = e.target.checked;

              }

              return item.checked;

            });

            let res = result.every((item) => {

              return item;

            });

            if (res) {

              this.ischecked = true;

            } else {

              this.ischecked = false;

            }

            this.getnewsum();

            this.getnumcount();

          },

          //自减模块

          subcount(name) {

            //count自减

            this.goodslist.filter((item) => {

              if (item.name == name) {

                if (item.count <= 0) return (item.count = 0);

                item.count--;

              }

            });

            this.getnewsum();

            this.getnumcount();

          },

          //自增模块

          addcount(name) {

            //count自增

            this.goodslist.filter((item) => {

              if (item.name == name) {

                item.count++;

              }

            });

            this.getnewsum();

            this.getnumcount();

          },

          //全选按钮

          allchecked(e) {

            if (e.target.checked) {

              this.goodslist.forEach((item) => {

                item.checked = true;

              });

            } else {

              this.goodslist.forEach((item) => {

                item.checked = false;

              });

            }

            this.getnewsum(); // 调用计算总价函数

            this.getnumcount(); // 调用计算总数函数

          },

          //结算结果

          settlement() {

            console.log("你本次消费" + this.sum + ".00");

          },

          //计算总价格

          getnewsum() {

            let num = 0;

            this.goodslist.find((item) => {

              if (item.checked) {

                num += item.price * item.count;

              }

            });

            this.sum = num;

          },

          //计算总数量

          getnumcount() {

            let count = 0;

            this.goodslist.find((item) => {

              if (item.checked) {

                count += item.count;

              }

            });

            this.count = count;

          },

        },

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值