order.js 3.88 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:not(.hide)');//保存当前显示的order-container

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

var activeType = $navLi.filter('.active').data('type'); //当前active的项的index

var orderPage = {};

var inAjax = false;

var loading = require('../plugin/loading');

var navHammer, orderHammer;

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

    if (inAjax) {
        return;
    }

    inAjax = true;
    loading.show();

    $.ajax({
        type: 'GET',
        url: '/home/getOrders',
        data: opt,
        success: function(data) {
            var num;

            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'));
                }
            }

            inAjax = false;
            loading.hide();
        }
    });
}

lazyLoad();

//初始化导航
(function() {
    var liCount = $navLi.length;

    //默认4个导航项
    if (liCount === 4) {
        return;
    }

    $navLi.width(100 / liCount + '%');
}());

loading.init();

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

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

    index = $cur.index();

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

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

    activeType = $cur.data('type');

    if (orderPage[activeType]) {
        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
            },
            success: function(data) {
                if (data.code === 200) {

                    //删除订单页面刷新
                    location.href = location.href;
                }
            }
        });
    } else if ($cur.closest('.cancel').length > 0) {

        //Order cancel
        $.ajax({
            type: 'GET',
            url: '/home/cancelOrder',
            data: {
                id: id
            },
            success: function(data) {
                if (data.code === 200) {

                    //取消订单
                    alert('order cancel');
                }
            }
        });
    } 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();
    }
});

//初始化请求第一页数据
getOrders();