/** * 优惠券选择 * @author: bikai<kai.bi@yoho.cn> * @date: 2015/12/10 */ var $ = require('jquery'), Handlebars = require('yoho.handlebars'), ellipsis = require('mlellipsis'), loading = require('../plugin/loading'), tip = require('../plugin/tip'), orderInfo = require('./order-info').orderInfo; var page = 1, canGetCoupon = true, isGetData; var conponTmpl = Handlebars.compile($('#tmpl-coupon').html()), conponNotAvaliableTmpl = Handlebars.compile($('#tmpl-coupon-not-avaliable').html()), $newCoupon = $('#new-coupon'); var winH = $(window).height(); require('../common'); // conponNotAvaliableTmpl = Handlebars.compile($('#tmpl-coupon-not-avaliable').html()), function fixedLayOut() { var $null = $('.null'), navH = $('.nav-title').height(), nullH = $null.height(); if ($null.length === 0) { return false; } $null.css({ top: winH / 2 - nullH / 2 + navH }); } ellipsis.init(); $newCoupon.on('submit', function() { var $this = $(this); if (!$this.find('[name="couponCode"]').val()) { tip.show('请输入优惠券码'); return false; } $.ajax({ method: 'POST', url: '/cart/index/couponSearch', data: $this.serialize() }).then(function(res) { if (res.code === 200) { tip.show('优惠券可用'); orderInfo('couponCode', res.data.coupon_code); orderInfo('couponName', res.data.coupon_title); window.location.href = '/cart/index/orderEnsure'; } else { tip.show(res.message || '网络错误'); } }).fail(function() { tip.show('网络错误'); }); return false; }); $('#coupon-list').on('click', '.employ-main', function() { var $this = $(this); var couponCode = $this.data('coupon-code'); $.ajax({ method: 'POST', url: '/cart/index/couponSearch', data: { couponCode: couponCode } }).then(function(res) { if (res.code === 200) { //tip.show('优惠券可用'); orderInfo('couponCode', res.data.coupon_code); orderInfo('couponName', res.data.coupon_title); window.location.href = '/cart/index/orderEnsure'; } else { tip.show(res.message || '网络错误'); } }).fail(function() { tip.show('网络错误'); }); }).on('touchstart', '.employ-main', function() { var $this = $(this); $this.siblings().removeClass('focus'); $this.addClass('focus'); }).on('touchend touchcancel', '.employ-main', function() { var $this = $(this); $this.siblings().removeClass('focus'); $this.removeClass('focus'); }); $('body').on('touchend', '.not-use', function() { orderInfo('couponCode', null); orderInfo('couponName', null); }); $newCoupon.find('input').on('input', function() { if ($(this).val() !== '') { $newCoupon.find('.submit').css('background', '#444'); } else { $newCoupon.find('.submit').css('background', '#b0b0b0'); } }); function getCouponHandle(coupons) { var notAvailableCoupons = []; // 后端需要返回一个 coupons 列表,如下 // notAvailable 表示不可用的优惠券 // coupons = [{ // money: '99', // coupon_name: '满XX-减去吴悠右腿有益于有2222', // couponValidity: '20150129-20150430', // coupon_id: '22222' // }, { // money: '99', // coupon_name: '满XX-减去吴悠右腿有益于有2222', // couponValidity: '20150129-20150430', // coupon_id: '2222233' // }, { // money: '99', // coupon_name: 'NONO满XX-减去吴悠右腿有益于有2222', // couponValidity: '20150129-20150430', // coupon_id: '2222233', // notAvailable: 1 // }]; // coupons 是个列表,如果不是列表,可能是服务器错误,这次翻页加载不算 if (!$.isArray(coupons)) { page--; return; } // 每页10张,当不足10张时,说明已经加载完 if (coupons.length < 10) { canGetCoupon = false; } // 第一页张数为 0 ,显示优惠券为空 if (!coupons.length && page === 2) { $('.coupin-wrap').html($('#tmpl-no-coupon').html()); fixedLayOut(); return; } // 把不可用的优惠券分离出来 $.each(coupons, function(i, coupon) { if (coupon.notAvailable) { notAvailableCoupons.push(coupon); } }); $('#coupon-list').append(conponTmpl({ coupons: coupons })); if (notAvailableCoupons.length) { $('.not-avaliable-coupon-line').show(); } $('#coupon-list-not').append(conponNotAvaliableTmpl({ notAvailableCoupons: notAvailableCoupons })); window.rePosFooter(); } function getCouponDate() { if (!canGetCoupon) { return; } if (isGetData) { return; } loading.showLoadingMask(); page += 1; isGetData = true; $.ajax({ type: 'POST', url: '/cart/index/couponList', dataType: 'json', data: { page: page } }).then(getCouponHandle).fail(function() { page -= 1; tip.show('加载优惠券失败'); }).always(function() { isGetData = false; loading.hideLoadingMask(); }); } getCouponDate(); // $(window).scroll(function() { // if ($(window).scrollTop() + $(window).height() > $('body').height() * 0.9) { // getCouponDate(); // } // });