购物车

作者: 嗯哼_3395 | 来源:发表于2018-07-07 16:17 被阅读0次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="layui-v2.2.5/layui-v2.2.5/layui/css/layui.css">
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
    <div id="warp">
        <p id="aler" :class="{con1:flag}"fla><span>{{imfor}}</span></p>
        <ul class="cont">
            <li v-for="(item,index) in arr">
                <img :src="item.img_url" alt="">
                <p>{{item.des}}</p>
                <span>{{"¥"+item.money}}</span>
                <button class="layui-btn" @click="add_car(index)">
                    <i class="layui-icon">&#xe657;</i> 添加购物车
                </button>
            </li>
        </ul>
        <div id="car" :class="{con2:car_flag}">
            <p class="kk" v-if="kk">购物车里什么也没有,快去逛逛吧!!!</p>
            <div class="qd_del" v-if="qd_flag">
                <div>
                    <p>确定删除该商品?</p>
                    <button class="layui-btn" @click="c_yes">确定</button>
                    <button class="layui-btn" @click="c_no">取消</button>
                </div>
            </div>
            <span class="t" @click="look_car">{{cheak_car}}<i class="layui-icon">&#xe657;</i>
                <span class="layui-badge dtnum">{{sps}}</span>
            </span>
            <ul class="list">
                <li v-for="(item,index) in arr_car">
                    <input type="checkbox" class="xz" :checked="item.flag_a" @click="seles(index)">
                    <img :src="item.img_url" alt="">
                    <div class="cunt">
                        <p class="tit">{{item.des}}</p>
                        <p><span class="m">{{"¥"+item.money}}</span><span><button @click="jian(index)">-</button><input type="text" v-model="item.s_num"><button @click="add(index)">+</button></span></p>
                    </div>
                </li>
            </ul>
            <div class="sele">
                <p>
                    <span class="qx">
                        <input type="checkbox" :checked="qx_flag" @click="quanx" >
                        <span>全选</span>
                    </span>
                    <span class="mon">
                        <span>共计:</span><span style="color: red;font-size: 20px;">{{total}}</span><span>元</span>
                    </span>
                </p>
                <p>
                    <button class="layui-btn layui-btn-sm del" @click="del_goods">
                        <i class="layui-icon">&#xe640;</i>删除
                    </button>
                </p>
                <p>
                    <button class="layui-btn layui-btn-sm" style="width: 200px;" @click="go">
                        <i class="layui-icon">&#xe65e;</i>去买单
                    </button>
                </p>
            </div>
        </div>



        <div class="settle" v-if="tot_flag">
            <div class="set_pag">
                <button class="layui-btn layui-btn-sm close" @click="q_qd">
                        <i class="layui-icon">&#x1006;</i>
                    </button>
                <h1>结算清单</h1>
                <div class="set_tit">
                    <p>
                        <i class="layui-icon" style="font-size: 30px;color: red">&#xe618;</i>结算成功
                    </p>
                    <p>本次共花费了<span style="color: red;font-size: 30px;">{{total}}</span>元,得到了<span style="color: red;font-size: 30px;">{{nums}}</span>件装备</p>
                </div>
                <h2>花费详情</h2>
                <ul class="goods_list">
                    <li>
                        <span>商品</span>
                        <span>件数</span>
                        <span>价钱</span>
                    </li>
                    <li v-for="(item,index) in arr_t">
                        <span class="txt">{{item.des}}</span>
                        <span>{{item.s_num+"件"}}</span>
                        <span>{{item.ztot+"元"}}</span>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</body>
<script src="js/vue.min.js"></script>
<script src="js/index.js"></script>
</html>

附js部分

var app=new Vue({
    el:"#warp",
    data:{
        arr:[
            {
                img_url:"images/01.jpg",
                des:"【新年货】小米 红米5 全面屏手机 全网通版 2GB+16GB 黑色 移动联通电信4G手机 双卡双待",
                money:699,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/02.jpg",
                des:"AGM X2 4G全网通 户外三防智能手机 防水防摔长待机 双卡双待 轻奢小牛皮 黑色鳄鱼纹皮质版 6G+64G",
                money:700,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/03.jpg",
                des:"【新年货】荣耀 V9 全网通 高配版 6GB+64GB 极光蓝 移动联通电信4G手机 双卡双待",
                money:800,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/04.jpg",
                des:"【送水晶项链】vivo X20 全面屏双摄拍照手机 4GB+64GB 玫瑰金 移动联通电信全网通4G手机 双卡双待",
                money:850,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/05.jpg",
                des:"【新年货】华为 HUAWEI Mate 10 Pro 全网通 6GB+128GB 摩卡金 移动联通电信4G手机 双卡双待",
                money:900,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/06.jpg",
                des:"【狗年JOY纪念版】华为(HUAWEI)nova 2S 全面屏四摄 6+64G全网通 曜石黑",
                money:1000,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/07.jpg",
                des:"【新年货】华为 HUAWEI nova 2S 全面屏四摄 4GB +64GB 曜石黑 移动联通电信4G手机 双卡双待",
                money:1100,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/08.jpg",
                des:"【新年货】华为畅享7 3GB+32GB 黑色 移动联通电信4G手机 双卡双待",
                money:1200,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/09.jpg",
                des:"【新年货】华为 HUAWEI P10 Plus 6GB+64GB 钻雕金 移动联通电信4G手机 双卡双待",
                money:1300,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/10.jpg",
                des:"Apple iPhone X (A1865) 256GB 深空灰色 移动联通电信4G手机",
                money:1400,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/11.jpg",
                des:"【新年货】锤子 坚果Pro 64GB 细红线特别版 全网通 移动联通电信4G手机 双卡双待",
                money:1500,
                s_num:1,
                flag_a:false,
            },
            {
                img_url:"images/12.jpg",
                des:"【新年货】锤子 坚果 Pro 2 酒红色 全面屏双摄 4+64GB 全网通 移动联通电信4G手机 双卡双待",
                money:1600,
                s_num:1,
                flag_a:false,
            },
        ],
        arr_car:[],
        imfor:"已添到加购物车",
        flag:false,
        time:"timer",
        flag_add:true,
        qx_flag:false,
        car_flag:true,
        cheak_car:'查看购物车',
        arr_t:[],
        tot_flag:false,
        qd_flag:false,
        kk:true,
    },
    methods:{
        add_car:function(index){
            this.kk=false;
            this.flag_add=true;
            for(var i=0;i<this.arr_car.length;i++){
                if (this.arr[index].img_url==this.arr_car[i].img_url) {
                    this.imfor="购物车中已有该商品";
                    this.flag_add=false;
                }
            }
            if (this.flag_add) {
                this.imfor="已添到加购物车";
                this.arr_car.push(this.arr[index]);
            }
            clearTimeout(this.time);
            this.flag=true;
            this.time=setTimeout(function(){
                this.flag=false
            }.bind(this),2000)
        },
        jian:function(index){
            this.arr_car[index].s_num--;
            if (this.arr_car[index].s_num<1) {
                this.arr_car[index].s_num=1
            }
        },
        add:function(index){
            this.arr_car[index].s_num++;
        },
        seles:function(index){
            this.arr_car[index].flag_a=!this.arr_car[index].flag_a;
            var bl=this.arr_car.some(function(val){
                if(val.flag_a==false){return true}
            });
            if (!bl) {
                this.qx_flag=true;
            }else{
                this.qx_flag=false;
            }
        },
        quanx:function(){
            this.qx_flag=!this.qx_flag;
            if (this.qx_flag) {
                this.arr_car.forEach(function(val){
                    val.flag_a=true;
                })
            }else{
                this.arr_car.forEach(function(val){
                    val.flag_a=false;
                })
            }
        },
        look_car:function(){
            this.car_flag=!this.car_flag;
            this.cheak_car=this.car_flag?"查看购物车":'收起购物车';
        },
        del_goods:function(){
            this.qd_flag=true;
        },
        c_yes:function(){
            for(var i=this.arr_car.length-1;i>=0;i--){
                if (this.arr_car[i].flag_a) {
                    this.arr_car[i].flag_a=false;
                    this.arr_car.splice(i,1);
                }
            }
            if (this.arr_car.length==0) {
                this.qx_flag=false;
                this.kk=true;
            }
            this.qd_flag=false;
        },
        c_no:function(){
            this.qd_flag=false;
        },
        go:function(){
            this.arr_car.forEach(function(val){
                if (val.flag_a) {
                    val.ztot=val.s_num*val.money
                    this.arr_t.push(val);
                }
            },this)
            this.tot_flag=true;
        },
        q_qd:function(){
            this.tot_flag=false;
            for(var x=this.arr_car.length-1;x>=0;x--){
                if (this.arr_car[x].flag_a) {
                    this.arr_car[x].flag_a=false;
                    this.arr_car.splice(x,1);
                }
            }
            if (this.arr_car.length==0) {
                this.qx_flag=false;
                this.kk=true;
            }
            this.arr_t=[];
        }
    },
    computed:{
        total:function(){
            var totals=0;
            this.arr_car.forEach(function(val){
                if (val.flag_a) {
                    totals+=val.s_num*val.money
                }
            },this)
            return totals
        },
        nums:function(){
            var numss=0;
            this.arr_t.forEach(function(val){
                numss+=val.s_num;
            },this)
            return numss
        },
        sps:function(){
            return this.arr_car.length;
        }
    }
})

相关文章

  • 商城之购物车

    购物车管理: 包含功能:提交商品到购物车、显示购物车列表、删除购物车里商品、修改购物车、清空购物车等等 1、购...

  • 购物车模块实现

    1、购物车列表功能实现 点击加入购物车或者点击购物车图标后进入购物车页面,在购物车页面中首先渲染cartList的...

  • SSM框架学习日记(6)——购物车模块

    购物车相关接口 添加购物车,购物车列表,更新商品数量,删除购物车先新建CartController和CartSer...

  • 8.5-高并发下的互联网电商购物车实战-加入购物车接口开发—小滴

    高并发下的互联网电商购物车实战-加入购物车接口开发 简介:电商购物车实现案例-加入购物车接口开发 添加购物车接口 ...

  • day11购物车10-细节完善

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车08-代理的简单实现

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11-购物车06-清空和购买

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车07-KVO的应用

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • day11购物车09-代理设计模式

    购物车01-搭建基本骨架购物车02-圆角按钮处理购物车03-显示数据购物车04-加号减号点击处理购物车05-通知的...

  • 8.购物车管理

    购物车管理模块是属于用户侧模块,主要有7个接口:添加商品到购物车、更新购物车商品数、移除购物车商品、查看购物车当中...

网友评论

      本文标题:购物车

      本文链接:https://www.haomeiwen.com/subject/iixguftx.html