installment.order.page.js 3.4 KB
var $ = require('yoho-jquery');
var debounce = require('lodash/debounce');
var loading = require('../plugin/loading');
var bp = require('./burying-point');
var hasEnd = false;
var search = {
    pageIndex: 1,
    type: null
};


/**
 * 加载订单明细
 *
 * @param type
 */
var loadOrderList = function(pageIndex, type) {
    if (type && type !== search.type) {
        hasEnd = false;
    }

    if (hasEnd) {
        // 没有更多页了
        return;
    }

    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;
            } else {
                hasEnd = true;
            }

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

    // 统计: tab 切换
    bp.setContYas('YB_INST_ORDER_TAB', {
        LAB_ID: $(this).parent().index()
    });
    return false;
});

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


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


((function() {
    var tick = 0;

    // 显示加载进度条
    $(document).ajaxStart(function() {
        tick = new Date().getTime();
        setTimeout(function() {
            if (tick > 0) { // 超过100ms请求仍未结束则显示
                loading.showLoadingMask();
            }
        }, 100);
    });

    $(document).ajaxStop(function() {
        tick = 0;
        loading.hideLoadingMask();
    });
})());

$(window).load(function() {

    // 统计:分期主页点击分期订单进入订单列表页时
    bp.setContYas('YB_INST_REPAYMENT', {
        POS_ID: $('.installment-order-page').data('posId')
    });

    $(document).on('click', '.order-list a', function() {

        // 统计:点击各个订单时
        bp.setContYas('YB_INST_ORDER_CLICK', {
            LAB_ID: $('.header-tab .active').index(),
            ORDER_CODE: $(this).data('code')
        }, false);
    });
});