order.js 3.01 KB
/**
 * 个人中心--我的订单
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2015/11/10
 */

var $ = require('jquery'),
    Hammer = require('yoho.hammer'),
    lazyLoad = require('yoho.lazyload');

var $navLi = $('#order-nav > li'),
    $orderContainer = $('#order-container');

var $curContainer = $orderContainer.children('.orders').first();//保存当前显示的order-container

var winH = $(window).height();

var activeIndex = 0; //当前active的项的index

var orderPage = [1, 0, 0, 0];

var loading = false;

var navHammer, orderHammer;

//加载订单
function getOrders() {
    var opt = {
        type: activeIndex + 1,
        page: orderPage[activeIndex] + 1
    },
    num;

    if (loading) {
        return;
    }


    $.ajax({
        type: 'GET',
        url: '/home/getOrders',
        data: opt,
        success: function(data) {
            if (data.code === 200) {
                orderPage[opt.type] = opt.page;

                if (opt.page === 1) {
                    $curContainer.html(data.data);
                    lazyLoad($curContainer.find('.lazy'));
                } else {
                    num = $curContainer.children('.order').length;
                    $curContainer.append(data.data);

                    //lazyload
                    lazyLoad($curContainer.children('.order:gt(' + (num - 1) + ') .lazy'));
                }
            }
        }
    });
}

lazyLoad();

//导航切换
navHammer = new Hammer(document.getElementById('order-nav'));
navHammer.on('tap', function(e) {
    var $cur = $(e.target).closest('li');

    if ($cur.length === 0 || $cur.hasClass('active')) {
        return;
    }

    activeIndex = +$cur.index();

    $navLi.filter('.active').removeClass('active');
    $cur.addClass('active');

    $curContainer.addClass('hide');
    $curContainer = $orderContainer.children(':eq(' + activeIndex + ')').removeClass('hide');

    if (orderPage[activeIndex] > 0) {
        return;
    } else {
        getOrders();
    }

});

//点击订单区域跳转订单详情页
orderHammer = new Hammer(document.getElementById('order-container'));
orderHammer.on('tap', function(e) {
    var $cur = $(e.target),
        $order,
        id,
        url;

    if ($cur.closest('.locHref').length > 0) {
        return;
    }

    $order = $cur.closest('.order');
    id = $order.data('id');

    if ($cur.closest('.del').length > 0) {

        //Order delete
        $.ajax({
            type: 'GET',
            url: '/home/delOrder',
            data: {
                id: id
            }
        });
    } else if ($cur.closest('.cancel').length > 0) {

        //Order cancel
        $.ajax({
            type: 'GET',
            url: '/home/cancelOrder',
            data: {
                id: id
            }
        });
    } else {

        //Location to order detail
        url = $order.data('href');
        location.href = url;
    }
});

$(window).scroll(function() {
    if ($(window).scrollTop() + winH >
        $(document).height() - 0.25 * $orderContainer.height()) {
        getOrders();
    }
});