installment.order.page.js 2.1 KB
var $ = require('yoho-jquery');
var debounce = require('lodash/debounce');

var search = {
    pageIndex: 1,
    type: null
};


/**
 * 加载订单明细
 *
 * @param type
 */
var loadOrderList = function(pageIndex, type) {
    if (type && type !== search.type || pageIndex !== search.pageIndex) {
        $.get('/home/installment/order.html', {
            page: pageIndex,
            type: type
        }).then(function(result) {
            if (result && result.replace(/\s/g, '')) {
                search.pageIndex = pageIndex;
            }

            if (type !== search.type) {
                // 切换TAB时清空列表
                $('#order-list').empty();
                search.type = type;
            }

            $('#order-list').append(result);


            // 订单状态样式
            $('.status').each(function() {
                var text = $(this).text();

                if (text.indexOf(/已还清|已取消|已退款|已结清|订单取消/)) {
                    $(this).addClass('faded');
                }
            });

            if ($('#order-list li').length === 0) {
                $('#no-result').show();
                $('#order-list').hide();
            } else {
                $('#order-list').show();
                $('#no-result').hide();
            }
        });
    }
};

var lastScrollTop = 0;
var windowHeight = $(window).height();
var scrollFn = debounce(function() {
    var scrollTop = $(window).scrollTop();

    // 当scroll到1/4列表高度后继续请求下一页数据
    if (scrollTop > lastScrollTop &&
        (scrollTop + windowHeight >
        $(document).height() - 0.25 * $('#order-list').height() - 50)) {
        loadOrderList(search.pageIndex + 1, search.type);
    }

    lastScrollTop = scrollTop;
}, 100);

/**
 * 顶部TAB
 */
$('.header-tab a').click(function() {
    $(this).parent().addClass('active');
    $(this).parent().siblings().removeClass('active');

    loadOrderList(1, $(this).data('type'));
    return false;
});

// 默认加载第一页
loadOrderList(search.pageIndex, 1);


// 滚屏分页
$(window).scroll(function() {
    scrollFn();
});