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


/**
 * 加载订单明细
 *
 * @param type
 */
let 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);

            $('#order-list li').on('click', function() {
                loading.showLoadingMask();
            });


            // 订单状态样式
            $('.status').each(function() {
                let 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();
            }
        });
    }
};

let lastScrollTop = 0;
let windowHeight = $(window).height();
let scrollFn = debounce(function() {
    let 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({
        op: 'YB_INST_ORDER_TAB',
        appop: 'YB_H5_INST_ORDER_TAB_C'
    }, {
        LAB_ID: $(this).parent().index()
    }, true);
    return false;
});

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


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


((function() {
    let 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({
        op: 'YB_INST_REPAYMENT',
        appop: 'YB_H5_INST_REPAYMENT_C'
    }, {
        POS_ID: $('.installment-order-page').data('posId')
    }, true);

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

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