order_confirm.js 11.3 KB
define(function( require, exports, module ) {

	var _Pophint = require( 'pophint' );

	require( 'fancybox' );
	require( 'region' );
	require( 'pickDtae' );

	$( function(){

		/* 删除联系人 */
		$( '.d-remove' ).click(function(){
			new _Pophint( this,{
	            operation: function( target ){
					//确定要执行的操作
	                $( target ).parents( 'li' ).remove();
				}, 
	            content: "<span class='safe-icon  warning-icon'></span> <span class='warningTips'>确定要删除吗?</span>",
	            showButton:true
	        });
		});

		//地址选择
        region.start();

		/* 选择联系人 */
		$( '.consignee-list li .info-data' ).on( 'click' , function(){

			var _li = $( this ).parents( 'li' );

			if( !_li.hasClass( 'selected' ) ){

				_li.addClass( 'selected' ).siblings().removeClass( 'selected' );

			}
		});

		/* 联系人 弹层 */
		$( '.fancybox' ).fancybox({
            scrolling: 'visible',
            openEffect:'elastic',
			closeEffect:'elastic'
		});
		// 关闭弹层调用 $.fancybox.close();


		/* 设置默认联系人 */
		$( '.set-default' ).on( 'click' , function(){
			// 这个放到ajax的 success 就 o 了
			if( !$( this ).hasClass( 'default-info' ) ){
				$( '.default-info' ).removeClass( 'default-info' ).html( '设为默认联系人' );
				$( this ).addClass( 'default-info' ).html( '[默认联系人]' );
			}
			
		});
		
		/* 显示更多联系人 */
		$( '.show-more' ).on( 'click' , function(){
			$( this ).hide();
			// var _len = $( '.consignee-list li' ).length < 4 ? 1 : $( '.consignee-list li' ).length/4 ;
			// console.log( _len );
			// var _height = Math.ceil( _len )* ( 129+20 ) - 20; 
			// $( '.consignee-list' ).animate( { 'height' : _height } , 300 );
			$( '.consignee-list' ).css({ 'height' : 'auto' });
		});

		/*  选择配送方式 */
		$( '.radioLabel' ).on( 'click' , function(){

            if ($(this).hasClass('disabled')) {
                return;
            };

			var _parent = $( this ).parent() , _index = _parent.index() , _parents = $( this ).parents( '.select-delivery' );
			var _tcontent = _parents.find( '.s-tab-content' ).eq( _index );

			if( !$( this ).hasClass( 'current' ) ){

				$( this ).addClass( 'current' );
				_parent.siblings().find( '.current' ).removeClass( 'current' );

				_tcontent.show();

				// 展示时判断时候解除文本框禁用 默认为禁用过滤验证
				if( _tcontent.find( '.iptText' ).length > 0 ){
					if( _tcontent.find( 'input[type="checkbox"]' ).length <= 0  ||  !_tcontent.find( 'input[type="checkbox"]' ).is(':checked') ){
						_tcontent.find( '.iptText' ).removeAttr( 'disabled' );
					}
					
				}

				_tcontent.siblings( '.s-tab-content' ).hide();

				// 未展示的文本框禁用,避免验证拦截
				if( _tcontent.siblings( '.s-tab-content' ).find( '.iptText' ).length > 0 ){
					_tcontent.siblings( '.s-tab-content' ).find( '.iptText' ).attr( 'disabled' , 'disabled' );
				}

			}
		});


		/*展示更多商品*/
		$( '.more-group' ).on( 'click' ,function(){

			var _morelist = $( this ).parent().find( '.goods-group-more' ),
				_height = _morelist.find( '.order-goods-group' ).length * 70;


			if( _morelist.is( ':hidden' ) ){

				_morelist.show();
				_morelist.animate( { 'height' : _height } , 300 );

				$( this ).find( 'span' ).html( '(收起)' );
			}else{

				_morelist.animate( { 'height' : '0' } , 300 , function(){
					_morelist.hide();
				});

				$( this ).find( 'span' ).html( '(展开)' );
			}
			
		});


		/* 运费交互 */
		$( '.checkboxLabel input' ).on( 'change' , function(){

			var _iptText = $( this ).parents( '.door-delivery' ).find( '.iptText' );

			if( $( this ).is( ':checked' ) ){

				_iptText.attr( 'readonly' , 'readonly' ).addClass( 'disabledBtn' );//禁用文本输入框
				_iptText.val( '0.00' );

				// 移除错误提示
				_iptText.removeClass( 'error' );
				_iptText.parent().siblings( 'label.error' ).remove();

			}else{
				//解除禁用
				_iptText.removeAttr( 'readonly' ).removeAttr('disabled').removeClass( 'disabledBtn' );

			}
		});

		/* 留言交互 */
		$( '.list-bottom-box .iptText' ).focus(function(){

			$( this ).animate( {'width' : '500' } , 300 );

		}).blur(function(){

			if( $( this ).val() == '' ){
				$( this ).animate( {'width' : '238' } , 300 );
			}
			
		});

		/* 支付方式交互 */
		$( '.select-pay li input' ).change( function(){

			var _parent = $( this ).parents( 'li' );

			if( !_parent.hasClass( 'current' ) ){
				_parent.addClass( 'current' ).siblings().removeClass( 'current' );
			}
		});
		
		/* 协议 弹层 */
		$( '.act-own' ).fancybox({
			keys:{
				close: null
			},
			helpers:{
				overlay:{
					closeClick : false
				}
			}
		});
		$( '.fancy-wrap .submitBtn' ).on({
			click: function(){
				$.fancybox.close();
				
				return false;
			}
		});




		/* 选择日期 */
		// $( '.view-delivery' ).each(function(){
		// 	new PickDtae( this , '2014/8/6 08:40', 66, function(k, y){
		// 		console.log(k+'==='+y);
		// 	});
		// });



		//对Date的扩展,将 Date 转化为指定格式的String
        //月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
        //年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
        //例子:
        //(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
        //(new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
        Date.prototype.Format = function (fmt) { //author: meizz
            var o = {
                "M+": this.getMonth() + 1,                 //月份
                "d+": this.getDate(),                    //日
                "h+": this.getHours(),                   //小时
                "m+": this.getMinutes(),                 //分
                "s+": this.getSeconds(),                 //秒
                "q+": Math.floor((this.getMonth() + 3) / 3), //季度
                "S": this.getMilliseconds()             //毫秒
            };
            if (/(y+)/.test(fmt))
                fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt))
                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return fmt;
        };

        /**
         * 对于买卖对接商家的预计提货时间计算为:最小提货时间=当前时间+商家对应商品中最长备货期,最大提货时间=最小提货时间+3天;
         * 对于自营/代销的预计提货时为让买家选择,点击文本框弹出日期选择对话框,买家可选择从当前时间+2天后7天内的时间,
         * 每天有4个时间段可供选择(每6个小时为一个时间范围);
         * 选择时间范围为:若自营/代销商品有设置备货期且大于2天则最小时间=当前时间+最长备货期,否则最小时间为:当前时间+2天,最大时间=最小时间+7天;
         */
        var DeliveryTime = {
            self: 7 * 24,//自营代销固定小时
            salesAgent: 3 * 24, //第三方固定小时
            DateFormatParam: "yyyy/MM/dd hh:mm",
            computeSelfStartDate: function (preparation) {//计算自营代销开始提货时间 preparation:最长备货时间【小时】
                var now = new Date();
                //if(preparation > 48) {
                now.setTime(now.getTime() + this.hourToMillisecond(preparation));
                //} else {
                //	now.setTime(now.getTime() + DeliveryTime.hourToMillisecond(48));
                //}

                return now;
            },
            computeSalesAgentStartDate: function (preparation) {//计算第三方开始提货时间 preparation:最长备货时间【小时】
                var now = new Date();
                now.setTime(now.getTime() + this.hourToMillisecond(preparation));
                return now;
            },
            hourToMillisecond: function (hour) {//小时转毫秒
                return hour * 60 * 60 * 1000;
            },
            dayToMillisecond: function (day) {//天转毫秒
                return day * 24 * 60 * 60 * 1000;
            }
        };
        //给页面时间input绑定事件
        $(".view-delivery").each(function () {
            var $this = $(this);
            var startTime = "";
            var intervalTime = 0;
            if ($this.attr("skuType") == "30") {
                startTime = DeliveryTime.computeSalesAgentStartDate(parseInt($this.attr("preparation"))).Format(DeliveryTime.DateFormatParam);
                intervalTime = DeliveryTime.salesAgent;
            } else if ($this.attr("skuType") == "10" || $this.attr("skuType") == "20") {
                startTime = DeliveryTime.computeSelfStartDate(parseInt($this.attr("preparation"))).Format(DeliveryTime.DateFormatParam);
                intervalTime = DeliveryTime.self;
            }
            new PickDtae("#" + $this.attr("id"), startTime, intervalTime, function (k, y) {
                var str = $this.attr("sellerid") + "#" + k + "#" + y;
                $this.find(".iptDate").removeClass("iptTextExt");
               

                $this.siblings("input").val(str);

                // 设置时间展示
                var dayStr = '' , _k = k.split( ' ' )[0];
                
                if( _k ==  getDay(0) ){
                	dayStr = ' (今天)';
                }else if( _k ==  getDay(1) ){
                	dayStr = ' (明天)';
                }else if(  _k ==  getDay(2) ){
                	dayStr = ' (后天)';
                }else{
                	dayStr = '';
                }
                console.log( k );

               	var _d = _k.split( '-' )[0] + '年' + _k.split( '-' )[1] + '月' + _k.split( '-' )[2] + '日';

                $this.siblings( '.show-time' ).html( _d + dayStr + ' ' + k.split( ' ' )[1] + '—' + y.split( ' ' )[1] )
                
            });
        });

		
		// 获取今天 明天 后天 
		function getDay(day){  
		       var today = new Date();  
		         
		       var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;          
		  
		       today.setTime(targetday_milliseconds); //注意,这行是关键代码    
		         
		       var tYear = today.getFullYear();  
		       var tMonth = today.getMonth();  
		       var tDate = today.getDate();  
		       tMonth = doHandleMonth(tMonth + 1);  
		       //tDate = doHandleMonth(tDate);  
		       return tYear+"-"+tMonth+"-"+tDate;  
		}  
		function doHandleMonth(month){  
		       var m = month;  
		       // if(month.toString().length == 1){  
		       //    m = month;  
		       // }  
		       return m;  
		}

	});

  var whickClick;

  if ($(".fancybutton").length) {
    $(".fancybutton").each(function () {
      var _this = $(this);

      _this.fancybox({
        padding: 0,
        beforeLoad: function () {
          whickClick = _this.parent();
        }
      });
    });
  };

  if ($("#fancychange").length) {
    var fclist = $(".fclist");
    var onStatu = fclist.find("li.on");

    fclist.find(">li").on({
      click: function () {
        if (onStatu.length) {
          onStatu.removeClass('on');
        };

        onStatu = $(this);
        onStatu.addClass('on');

        if (whickClick) {
          
        };

        $.fancybox.close();
      }
    })
  };

});