商城下单 js 加入购物车

//购物车  (数组版本)
(function ($) {
    $.fn.TaShopCartArray = function (setting) {
        //初始化配置
        var opts = $.extend({}, $.fn.TaShopCartArray.defaults, setting);
        //读取cookeie信息
        var _initdata = [];
     
        if (opts.savecookie && $.cookie(opts.cookiename) != null && $.cookie(opts.cookiename) != '') {
            _initdata = eval('(' + $.cookie(opts.cookiename) + ')');
        }
        //初始化
        $(opts.Divcart).data(opts.staticname, _initdata);
        var cctv = {
            //计算单项金额
            singlemoney: function (price, count) {
                return (price * 10000 * count / 10000).toFixed(2);
            },
            addnew: function () {
                var datejsorder = $(opts.Divcart).data(opts.staticname);
                var sname = $(opts.shopNameHidden).text();
                var sid = $(this).attr("sFID"); //店铺id
                var mid = $(this).attr("mFID");  //菜id
                var mname = $(this).attr("mName"); //菜名
                var mPrice = $(this).attr("mPrice"); //菜单价
                var mStatus = $(this).attr("mStatus"); //菜品状态
                //构造并赋值

                var _flag = false;
                for (var tt in datejsorder) {
                 
                    if (datejsorder[tt].sid != sid && datejsorder[tt]["count"] > 0) {
                        $.fn.RFAlert({ Alertcontent: "存在其它店铺的餐品!" });
                        return;
                    }
                    if (datejsorder[tt].mid == mid) {
                        _flag = true;
                    }
                }

                if (!_flag) {
                    var _price = cctv.singlemoney(mPrice, 1);
                    var g = { sid: sid, mid: mid, count: 1, singleprice: mPrice, price: _price, menuname: mname, status: mStatus };
                    datejsorder.push(g);
                    var _tr = $('<tr id=' + opts.Trorderpre + mid + '><td class="tb-name">' + mname + '</td><td class="tb-num"><div><a class="down"><img src="../../images/numbtn_03.jpg" alt="减少" />' +
                         '</a><label>1</label><a  class="up"><img src="../../images/numbtn_05.gif" alt="增加" /></a></div></td> ' +
                         ' <td class="tb-pric">' + opts.moneypre + _price + '</td>  ' +
                         '<td class="tb-cancel"><a>X</a></td></tr>');
                    var _strtotalPrice = "<li><font class=\"cart-ftcor\">合计</font><label id=\"TacartTotalPrice\">0.00</label></li>";
                    $(opts.DivcartTbody).append(_tr);
                    $(".cart-total").empty();
                    $(".cart-total").append(_strtotalPrice);

                    var _$tr = $("#" + opts.Trorderpre + mid);
                    _$tr.find(".tb-num a.down").click(function () {
                        //减号
                        cctv.downnum(mid, mPrice);
                    });
                    _$tr.find(".tb-num a.up").click(function () {
                        //加号
                        cctv.upnum(mid, mPrice);
                    });
                    _$tr.find(".tb-cancel a").click(function () {
                        cctv.delorder(mid);
                    });
                }
                else {//已存在
                    for (var tt in datejsorder) {
                        if (datejsorder[tt].mid == mid) {
                            datejsorder[tt].count = parseInt(datejsorder[tt].count) + parseInt(1);
                            datejsorder[tt].price = cctv.singlemoney(mPrice, datejsorder[tt].count);
                            var _$tr = $("#" + opts.Trorderpre + mid);
                            _$tr.find(".tb-num label").html(datejsorder[tt].count);
                            _$tr.find(".tb-pric").html(opts.moneypre + datejsorder[tt].price);
                        }
                    }

                }
                //菜品图片飘过~
                var _img = $(this).attr("imgsrc") == "" ? "/images/noTaMenuimg.jpg" : $(this).attr("imgsrc");
                var thisTop = $(this).offset().top; //菜品所在位置的高度
                var thisLeft = $(this).offset().left; //菜品所在位置的宽度
                animatenToShopCart(thisTop, thisLeft, _img);

                $(opts.Divcart).data(opts.staticname, datejsorder);
                cctv.reflash();
            },
            //增加一个订单项数量
            upnum: function (mid, mprice) {
                var datejsorder = $(opts.Divcart).data(opts.staticname);
                for (var tt in datejsorder) {
                    if (datejsorder[tt].mid == mid) {
                        datejsorder[tt].count = parseInt(datejsorder[tt].count) + parseInt(1);
                        datejsorder[tt].price = cctv.singlemoney(mprice, datejsorder[tt].count);
                        var _$tr = $("#" + opts.Trorderpre + mid);
                        _$tr.find(".tb-num label").html(datejsorder[tt].count);
                        _$tr.find(".tb-pric").html(opts.moneypre + datejsorder[tt].price);
                    }
                }

                cctv.reflash();
                //return false;

            },
            //减少一个订单项数量
            downnum: function (mid, mprice) {
                var datejsorder = $(opts.Divcart).data(opts.staticname);
                for (var tt in datejsorder) {
                    if (datejsorder[tt].mid == mid) {
                        datejsorder[tt].count = parseInt(datejsorder[tt].count) - parseInt(1);
                        if (datejsorder[tt].count > 0) {
                            datejsorder[tt].price = cctv.singlemoney(mprice, datejsorder[tt].count);
                            var _$tr = $("#" + opts.Trorderpre + mid);
                            _$tr.find(".tb-num label").html(datejsorder[tt].count);
                            _$tr.find(".tb-pric").html(opts.moneypre + datejsorder[tt].price);
                        } else {
                            $("#" + opts.Trorderpre + mid).remove();
                            datejsorder[tt].mid = "";
                        }
                    }
                }
                cctv.reflash();
            },
            //删除一个订单项
            delorder: function (mid) {
                var datejsorder = $(opts.Divcart).data(opts.staticname);
                for (var tt in datejsorder) {
                    if (datejsorder[tt].mid == mid) {
                        datejsorder[tt].count = 0;
                        datejsorder[tt].price = 0;
                        $("#" + opts.Trorderpre + mid).remove();
                        datejsorder[tt].mid = "";
                    }
                }
                cctv.reflash();
            },
            //刷新购物车
            reflash: function () {

                var data = $(opts.Divcart).data(opts.staticname);

                var size = 0;
                var _totalMoney = 0.00;
                for (var i in data) {

                    if (data[i].count > 0) {
                        size++;
                        _totalMoney += parseFloat(data[i].price);

                    }
                }
                var _TaServiceFare = parseFloat($(opts.TaServiceFare).text() != "" ? $(opts.TaServiceFare).text() : 0).toFixed(2);  //外送服务费
                var _allShouldPayMoney = (parseFloat(_totalMoney) + parseFloat(_TaServiceFare)).toFixed(2);
                $(opts.cartTotalPrice).text(opts.moneypre + _allShouldPayMoney);
                if (size > 0) {
                    $(opts.Divcart).find("div.cart-sum ul.tacartalert").remove();
                    var _startFare = parseFloat($(opts.startingFare).val()).toFixed(2);  //起步价
                    //    $(opts.Checkbuttom).html("去结算");
                    $(opts.Checkbuttom).attr("flagcheck", ""); //清空结算按钮属性
                    //如果总价不起过起送费用,则提示   to do 比如不允许点击结算
                    if (parseFloat(_allShouldPayMoney) < (parseFloat(_startFare))) {
                        var _ul = $("<ul class=\"send-cost tacartalert fn-clear\"><li><font class=\"cart-ftcor\">未达到本店起送价(" + opts.moneypre + _startFare + ")</font></li></ul>");
                        $(opts.Divcart).find("div.cart-sum ul").eq(0).after(_ul);
                        //   $(opts.Checkbuttom).html("无法结算");
                        $(opts.Checkbuttom).attr("flagcheck", "no"); //添加结算按钮属性
                    }

                } else {
                    //清空tr
                    $(opts.DivcartTbody).empty();
                }
                var _arr = new Array();
                for (var k in data) {
                    //   alert(data[k]['sid']);
                    if (data[k]["mid"] != "")
                        _arr.push(data[k]);
                }

                //保存cookie
                if (opts.savecookie) {
                    var date = new Date(); date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));  //一天
                    $.cookie(opts.cookiename, JSON.stringify(_arr), { path: '/', expires: date });
                }

                $(opts.Divcart).data(opts.staticname, _arr);

                //以下操作数据库
                if ($.cookie("hahahaRFUserID") != undefined && $.cookie("hahahaRFMemberName") != undefined) {
                    $.post("/Takeaway/Takeaway/addCartCookie", { rnd: Math.random }, function () {
                    });
                }

            },
            //结算
            ToCheck: function () {
                var _shopKey = $(opts.TaShopKey).val();
                if (_shopKey != undefined && _shopKey != "") {
                    var data = $(opts.Divcart).data(opts.staticname);

                    var _arr = new Array();
                    for (var k in data) {
                        _arr.push(data[k]["mid"]);

                        if (data[k]["sid"] != _shopKey) {
                            $.fn.RFAlert({ Alertcontent: "购物车里的餐品不是在本店订购的,可以先清空此前所选餐品!" });
                            return false;
                        }
                    }

                }


                var size = $(opts.DivcartTbody).find("tr").size();
                if (size > 0) {
                    var _flag = $(opts.Checkbuttom).attr("flagcheck");
                    if (_flag && _flag == "no") {
                        $.fn.RFAlert({ Alertcontent: "未达到本店起送价,不送啦!" });
                        return false;
                    }

                    var _menuids = _arr.join(",");
                    $.post("/Takeaway/Takeaway/menuStatus", { menuids: _menuids, rmd: Math.random() }, function (menuStatus) {
                  
                        if (menuStatus != "") {
                            $.fn.RFAlert({ Alertcontent: menuStatus });
                            return;
                        } else {

                            $.get("/Takeaway/Takeaway/CheckShopTime", { shopid: _shopKey }, function (res) {
                                if (res == "false") {
                                    $.fn.RFAlert({ Alertcontent: "该餐厅暂不营业,请在营业时间内订餐!" });
                                    return false;
                                }
                                else {

                                    location.href = "/Takeaway/Takeaway/snackPay";
                                }
                            });
 
                        }
                    },"text");

 


                } else {
                    $.fn.RFAlert({ Alertcontent: "请选择餐品,再进行结算!" });
                    return false;
                }
                // alert(size);
                //   alert(JSON.stringify($(opts.Divcart).data(opts.staticname)));
                //   cctv.clearCart();
            },
            //清空购物车
            clearCart: function () {
                $(opts.Divcart).data(opts.staticname, []);  //清空data
                $(opts.DivcartTbody).find("tr").empty();
                cctv.reflash();
            }
        };
        //初始化购物车
        var data = $(opts.Divcart).data(opts.staticname);
        //重写右侧的车
        for (var tt in data) {
            var count = data[tt].count;
            if (count > 0) {

                var mname = data[tt]['menuname'];
                var mPrice = data[tt]['price'];
                var singleprice = data[tt]['singleprice'];
                var totalPrice = 0;
                var _totalMoney = totalPrice += (mPrice * count);
                var _tr = $('<tr id=' + opts.Trorderpre + data[tt].mid + '><td class="tb-name">' + mname + '</td><td class="tb-num"><div><a class="down"><img src="../../images/numbtn_03.jpg" alt="减少" />' +
                         '</a><label>' + count + '</label><a  class="up"><img src="../../images/numbtn_05.gif" alt="增加" /></a></div></td> ' +
                         ' <td class="tb-pric">' + opts.moneypre + cctv.singlemoney(singleprice, count) + '</td>  ' +
                         '<td class="tb-cancel"><a>X</a></td></tr>');

                var _strtotalPrice = "<li><font class=\"cart-ftcor\">合计</font><label id=\"TacartTotalPrice\">" + _totalMoney + "</label></li>";

                $(opts.DivcartTbody).append(_tr);
                $(".cart-total").empty();
                $(".cart-total").append(_strtotalPrice);

                var _$tr = $("#" + opts.Trorderpre + data[tt].mid);
                _$tr.find(".tb-num a.down").data('cc', data[tt].mid).click(function () {
                    var d = $(this).data('cc');
                    cctv.downnum(d, singleprice); //减号
                });
                _$tr.find(".tb-num a.up").data('cc', data[tt].mid).click(function () {
                    var d = $(this).data('cc');
                    cctv.upnum(d, singleprice);  //加号
                });
                _$tr.find(".tb-cancel a").data('cc', data[tt].mid).click(function () {
                    var d = $(this).data('cc');
                    cctv.delorder(d);
                });
                cctv.reflash();
            }
        }
        //餐品点击
        $(opts.addbuttom).click(cctv.addnew);
        //结算按钮点击
        $(opts.Checkbuttom).click(cctv.ToCheck);
    };
    // 配置
    $.fn.TaShopCartArray.defaults = {
        //全局数据-保存订单信息,就一个名字而已
        staticname: 'RFTaOrder',
        //cookie的名字
        cookiename: 'hahahaTaOrder',
        //默认加入订单的控件选择
        addbuttom: '[hre=addShopCart]',
        //购物车对象,如div
        Divcart: '.bar-cart',
        //购物车对象,tbody
        DivcartTbody: '.bar-cart tbody',
        //店铺名字的隐藏域
        shopNameHidden: '#tashop_name',
        //结算按钮
        Checkbuttom: '.ToCheck',
        //是否保存cookie
        savecookie: true,
        //订单项tr前缀
        Trorderpre: 'trpre_',
        //价格前缀
        moneypre: "¥ ",
        //总价格对象
        cartTotalPrice: '#TacartTotalPrice',
        //起步价对象
        startingFare: '#hdnTastartingFare',
        //外送服务费用
        TaServiceFare: '#TaServiceFare',
        //当前店铺页面主键
        TaShopKey: '#hdnTaShopFid'
    };
})(jQuery);

 

 

 

 

 

 

初始调用js

 

$("#addShopCarID").TaMealShopCarArray();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值