{"version":3,"sources":["components.js"],"names":["BigPicture","needInit","this","data","$ppicture","$","$button_open","$button_close","$button_up","$button_down","$div_checked","find","$ul","maxShowNumber","currentIndex","windowIndex","page","totalPage","totalCount","init","prototype","constructor","window","height","addClass","__initCount","bindEvent","length","parseInt","_this","on","css","show","hide","$this","index","attr","showWithIndex","gotoPrevPage","gotoNextPage","renderPicture","Array","src","html","i","name","empty","append","eq","getWindowIndex","setCheckImage","showBigImage","first","showFirstImage","showMaxImage","$showImage","$hiddenImage","showSrc","getBigPicSrc","removeClass","width","hasClass","result","replace","PDUtil","isRunInNode","module","exports","components","$util","BiXuanZengPin","all","$container","$box","$box_kxzp","$box_check","$a_edit_gifts","getAllData","renderDom","e","warn","userData","$p","gifts","o","url","promotion","goodsDetailUrl","code","cutPicturePath","path","goodsName","animate","_data","processBXZPNeedShowList","emptyBoxDom","showCheckButton","showEditButton","BuyGroup","$button_buy","$button_notice","$button_shoppingcart","$span_stock","$box_ewm","buyBefore","success","error","jsonpBuyBefore","__initEWM","__initSNCode","__initPrice","__initBuyButton","__initShoppingcartButton","processNoticeButton","isShow","baseInfo","price","__initNoticeButton","updateGouMaiZiXunUrl","refreshBuyButton","processBuyButton","eventHandler","isDisabled","floodLightLjgm","setBuyButton","showText","stock","text","waterLevelDesc","getPhoneNumber","pattern","notice_phoneNumber","trim","val","leId","getCookie","alert","test","jsonpNoticeSendSms","mobile","vcode","t","off","time","setInterval","clearInterval","__detailConfig","getApiPath","after","Date","valueOf","saveClick","notice_verificationCode","lenovoAccount","passport","cookie","loginName","lenovoID","lenovoId","leID","jsonpNoticeSave","productCode","productName","activityType","clientType","linkAddress","location","href","phone","smsCode","mallName","resultMsg","processAddCartButton","setAddCartButtonClickHandler","processShowPrice","vtPirce","virtualPrice","isIntegral","setVirtualPriceDom","setPriceDom","ewmImageSrc","appPrice","showPrice","self","checkSNCode","fadeOut","$number","num","updatePrice","virtualCalcPrice","calcPrice","gmsl","isNaN","document","is","isShowPrice","getBuyNumber","txt","disabled","clickHandler","type","defaultType","event","extend","handler","setButtonClickHandler","floodLightJrgwc","setBuyButtonClickHandler","$target","defaultHandler","ljgm","jrgwc","tcjrgwc","packID","jsonpAddItemToCart","terminal","itemtype","gcodes","opgcode","servicecode","icount","resultCode","reload","ljyy","isLogin","jsonpShangouYuyue","rc","title","reservationId","isPhoneNum","fadeIn","buygroup","msg","loginRedirect","ljgm_sg","activity","ShanGou","jsonpIsBookUser","status","sg_queue","errorMessage","busy","jsonpShangouQueue","gcode","obj","sgcount","sgTimeText","sgMsg","shopId","kxzp","getKXZP","join","service","getSelectedService","personalization","decodeURIComponent","srdz","getdz","sn","SNCode","token","tokenTimeStamp","timestamp","jsonpShangouGwc","getMilliseconds","myTimer","pollingTimer","clearTimeout","$OKButton","inputSNCode","encodeURIComponent","ajaxCheckSNCode","res","info","machineNo","_price","parseFloat","toFixed","objPrice","virtualAreaCode","getAllGoodCodes","xj","tjxj","selectedArray","push","guige","isExist_gg","itemType","shareCode","isPersonalPositions","buOwner","tc","isLcodeProduct","kCode","LCode","isNeedSN","isService","salesType","isHasPersonal","groupCode","isSelcetedSrdz","jsonpIsTuangouUser","hasPurchased","jsonpgetIntegral","ret","userJf","nowNumber","buyStartTime","buyEndTime","customids","showTips","onloadyes","timeyes","a","Math","random","iframe","createElement","style","display","onload","onreadystatechange","remove","body","appendChild","count","create","Callback","setTimeout","start","Configuration","showTabIndex","comments","labels","pageIndex","productId","level","label","commentIsShow","firstClick","onlyThis","declarationUrl","thinkDriverDownloadUrl","lenovoDriverDounloadUrl","thinkBXPZUrl","lenovoBXPZUrl","thinkFWWDUrl","lenovoFWWDUrl","$box_pagebar","$box_information","$box_configuration","$box_comment","$box_service","$commentList","$commentLabels","$button_showthis","$containerTabs","pagebar","PageBar","onPageChange","renderComment","configInfo","renderCommentNumber","adddeclaration","addCustomerService","bigImageIndex","$defaultLi","siblings","$button","parent","$span","get","checked","slideDown","parentNode","$pic","getShowCodes","arrCode","arr","arrObj","_specInfo","_spec","spec","specLength","each","k","v","kk","vv","kkk","vvv","$imageDiv","codes","jsonpEvaluateList","renderCommentLables","callback_commentListSuccess","lables","lable","$all","$haoping","$zhongping","$chaping","$zhuip","$hpl","jsonpEvaluateRate","commentNumberObj","total","good","medium","bad","picnum","isAdd","hpl","favorRate","$title","clearNullInArr","emp","indexOf","splice","showEq","p","li","big","comment","db","render","euser","escore","etime","lableAndScore","edesc","eimagelist","j","miniUrl","picUrl","reply","r","retname","rettime","retdesc","addList","ii","ll","dayStr","day","totalDay","addDesc","addEimagelist","iii","slist","lll","uploadtime","zphf","addReturnList","closest","prevAll","l","thinkReg","RegExp","serviceReg","productGroupNum","productGroupNo","Guige","curSpec","jsonpGuige","formatSpecData","formatSpec","formatCurSpec","buildGuigeDom","$spans","bindGuigeClick","ifPageInitFlag","constStr","classNameActive","classNameDisabled","_ggclick","rowId","_textarr","thisText","isactive","click","_getActiveNums","twoChoosed","rowid","lastChoosed","activeIndex","removeData","_clacPaint","_forwardUrl","clickedItem","activeNums","item","trigger","firstChecked","not","guiges","loopThis","lastData","loopItem","checkeds","$v","specNumber","f","len","dd","cIndex","isExit","specData","k2","v2","k3","v3","HotList","list","noBorder","callback","loadHostList","KeXuanZengPin","$button_ok","$button_cancel","$a_close","hasChecked","bxzp","giftsSelectable","quantity","closeCheckBox","debug","dropSome","$prev","exists","findFirst","g","concat","processKXZPNeedShowList","removeAttr","pageSize","interval","$pre","pagecount","ceil","max","end","min","$pagebtn","$next","pageNum","gotoPage","PlayPicture","initPicList","$winpic","$button_left","$button_right","$div_list","__initGoodPicList","setButtonShow","PromotionInfo","needShow","setXDLJ","setMJ","setXSQG","setShangou","setPresell","pcPromotion","purchase","prepend","extensionTerminal","extensionContent","saleReduction","totime","$des","$djs","fromtime","discountAmount","fromtimeStr","timer","str","fullReduction","fullsetList","full","reduce","getPresellInfo","loadPresellInfo","sell","sucessHandler","terminalname","$div","presellway","deposit","activitystarttime_date","activitystarttime","activityendtime_date","activityendtime","presellstarttime_date","presellstarttime","currentdatetime_date","currenttime","process","setPreheat","setPay","setEnd","stime","marketable","refreshStatus","loadAllProductionInfo","processStatus","flushSaleJson","refreshShangou","processShangou","shangou","startNumber","endNumber","endTimeStr","$shangou","yystartNumber","yystartTimeStr","yyendNumber","yyendTimeStr","startTimeStr","fyyStartTimeStr","fyyStartNumber","initWindow","phoneNum","checkTelNo","jsonpSaveBookShangouTel","isShowShangou","ScrollPicture","$detail_main","$detail_left","$detail_right","load","sc","__initFloat","$document","preStatus","nowStatus","offset","minY","top","maxY","scrollTop","maxMarginTopH","autoMarginTopH","margin-top","$sc","p_get","suc","fun","loadMyFavorite","d","removeFavorites","addFavorites","doSC","jQuery","Service","allService","loadData","loadServiceInfo","isHasService","formatServiceData","group","_arrows","removeSelectedService","addSelectedService","newPrice","$top","prev","removeCode","addCode","cateCode","categoryName","has","__PDUtil","__jquery","__isNode","global","require","shareComponents","Share","classPrefix","buttonList","weibo","id","className","icon","qzone","renren","weixin","webMapping","before_click","couponId","getButtonByKey","Key","getButtonByClassName","jiathis_config","renderRightShare","__initShare","summary","__title","getShareTitle","protocol","host","pathname","pic","call","button","share","shareModle","queryString","ajax","getItemDomain","sharecode","sourceurl","getShareCodeUrl","promotionType","promotionName","dataType","jsonp","jsonpCallback","timeout","scroll","$aList","web","parameter","browser","navigator","appName","b_version","appVersion","version","split","trim_Version","qrcode","getmyShare","getMd5Code","salesCouponId","memberCode","_str","md5","locaUrl","substring","isCoupons","lenovoid","sign","defaults","options","opts","gettextLength","srdzComponents","Srdz","$dialog","selectedID","postData","$box_content","w","modeMapping","picture","des","words","isPP","getdata","removePostData","showFirstTabStyle","setButtonShowHide","stopPropagation","eventHandlerForOKButton","bindImageEvents","$dzBox","ID","side","ptmode","$price","priceid","$dl","imageCode","imageUrl","imageName","priceID","ptside","pttype","ptpicCode","pturl","picName","addPostData","$text","word","ptword","showImageListWithCateCode","parents","left","$bigImage","renderData","now","personalType","renderImage","renderText","tmpl","datas","dataID","appendTo","scrollButtonEvent","renderPalyPic","srcArr","printPicArr","playpic","encodeURI","err","tabIndex","$boxImages","$priceTabs","oldPrice","newPrices","oldData","isEmptyObject","JSON","stringify","isSelceted","$srdzType_btn","Taocan","selectedItem","packs","dialog","pack","_url","discount","canSell","_index","current","processTaocanNeedShowList","pages","ThinkO2OCityList","$box_city","openCheckBox","$provinceTitle","$cityTitle","$areaTitle","province","_textc","_texta","_city","$cityBox","_text","city","$areaBox","_area","textp","textc","thinko2oCities","TuiJianXuanJian","processXJNeedShowList","getSelectedCodeArray","videoPlayers","myVideoUrl","videoUrl","myPlayer","videojs","flash","swf","ready","play","pause"],"mappings":"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","file":"../js/components.js","sourcesContent":["/**\n * Created by liuyc14 on 2016年11月23日16:49:41.\n * 大图组件\n */\n(function () {\n function BigPicture(needInit){\n /*定义默认数据结构*/\n this.data = {}; \n this.$ppicture = $('#ppicture');\n this.$button_open = $('#ppicture_open');\n this.$button_close = $('#ppicture_close');\n this.$button_up = $('#ppicture_up');\n this.$button_down = $('#ppicture_down');\n this.$div_checked = this.$ppicture.find('div.pp-checked');\n this.$ul = $('#ppscroll_ul');\n this.maxShowNumber = 4;/*缩略图最大展示数量*/\n this.currentIndex = 1;/*当前index 从1开始*/\n this.windowIndex = 1;/*当前展示的缩略图的可视区域位置 从1开始*/\n this.page = 1;\n this.totalPage = 1;\n this.totalCount = 0;/*图片总数*/\n if(needInit) this.init();\n }\n BigPicture.prototype= {\n constructor: BigPicture,\n /**\n * 首次渲染时调用\n */\n init: function () {\n if($(window).height() >= 850){\n this.$ppicture.addClass('ppicture-800');\n }\n this.__initCount();\n /*if (this.totalPage == 1) {\n this.$button_down.hide();\n }*/\n this.bindEvent();\n },\n __initCount: function () {\n this.totalCount = this.$ul.find('>li').length;\n //this.$button_up.hide();\n if (this.totalCount == this.maxShowNumber) {\n this.totalPage = 1;\n } else {\n this.totalPage = parseInt(this.totalCount / this.maxShowNumber) + 1;\n }\n },\n bindEvent: function () {\n var _this = this;\n /*打开图片层*/\n this.$button_open.on('click', function () {\n $('html, body').css('overflow', 'hidden');\n _this.$ppicture.show();\n });\n /*关闭图片层*/\n this.$button_close.on('click', function () {\n $('html, body').css('overflow', 'auto');\n _this.$ppicture.hide();\n });\n /*单击某一张图片*/\n this.$ul.on('click', 'li', function () {\n var $this = $(this);\n var index = parseInt($this.attr('data-index'));\n _this.showWithIndex(index);\n });\n /*上一张图片*/\n this.$button_up.on('click', function () {\n if(_this.currentIndex <= 1) return false;\n if(_this.windowIndex == 1){\n _this.gotoPrevPage();\n }else{\n _this.showWithIndex(_this.currentIndex - 1);\n }\n });\n /*下一张图片*/\n this.$button_down.on('click', function () {\n if(_this.currentIndex >= _this.totalCount) return false;\n if(_this.windowIndex == _this.maxShowNumber){\n _this.gotoNextPage();\n }else{\n _this.showWithIndex(_this.currentIndex + 1);\n }\n });\n },\n /**\n * 重新渲染图库\n * @param data\n */\n renderPicture: function (data) {\n if(data && (data instanceof Array) && data.length > 0){\n if(data[0] && data[0].src){\n $('#winpic').attr('src', data[0].src);\n }\n var html = '';\n for(var i = 0; i < data.length; i++){\n html += '
  • '\n + ''\n + '\"'+
  • ';\n }\n this.$ul.empty().append(html);\n\n this.__initCount();\n this.showWithIndex(1);\n }\n },\n showWithIndex: function (index) {\n var $this = this.$ul.find('li').eq(index - 1);\n this.currentIndex = index;\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n },\n gotoNextPage: function () {\n if (this.page >= this.totalPage) return false;\n this.$ul.css('top', '-=' + (this.maxShowNumber * 110));\n this.page++;\n this.showFirstImage();\n //this.$button_up.show();\n /*\n if(this.page == this.totalPage){\n this.$button_down.hide();\n }else{\n this.$button_down.show();\n }*/\n },\n gotoPrevPage: function () {\n if (this.page <= 1) return false;\n this.$ul.css('top', '+=' + (this.maxShowNumber * 110));\n this.page--;\n this.showMaxImage();\n //this.$button_down.show();\n /*\n if(this.page == 1){\n this.$button_up.hide();\n }else{\n this.$button_up.show();\n }*/\n },\n /*显示缩略图对应的大图*/\n showBigImage: function (src) {\n var $showImage = this.$ppicture.find('.pp-right img.show');\n var $hiddenImage = this.$ppicture.find('.pp-right img.normal');\n var showSrc = this.getBigPicSrc(src);\n $showImage.removeClass('show').addClass('normal');\n $hiddenImage.attr('src', showSrc).removeClass('normal').addClass('show');\n },\n /*获取缩略图对应的大图路径*/\n getBigPicSrc: function (src) {\n var width = this.$ppicture.hasClass('ppicture-800') ? 800 : 650;\n var result = src.replace(/w\\d{2,3}\\.(jpg|png|jpeg)$/gi, 'w' + width + '.$1');\n return result;\n },\n /**\n * 根据当前page和 currentIndex计算出windowIndex\n */\n getWindowIndex: function () {\n return this.windowIndex = this.currentIndex - (this.page - 1) * this.maxShowNumber;\n },\n setCheckImage: function () {\n this.$div_checked.css('top', ((this.windowIndex - 1) * 110 + 10));\n },\n /**\n * 显示当前可视区域第一张图片\n */\n showFirstImage: function () {\n this.currentIndex = (this.page - 1) * this.maxShowNumber + 1;\n var $this = this.$ul.find('li').eq(this.currentIndex - 1);\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n },\n /**\n * 显示当前可视区域最后一张图片\n */\n showMaxImage: function () {\n this.currentIndex = this.page * this.maxShowNumber;\n var $this = this.$ul.find('li').eq(this.currentIndex - 1);\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n }\n };\n if(PDUtil.isRunInNode() == true && module && module.exports){\n module.exports = BigPicture;\n }else{\n if(!window.components){\n window.components = {};\n }\n window.components.BigPicture = BigPicture;\n }\n})();\n/**\n * Created by liuyc14 on 2016/10/18.\n * 必选赠品组件,负责相关信息的Dom操作和数据逻辑\n */\n(function ($util) {\n function BiXuanZengPin(needInit){\n /*定义默认数据结构*/\n this.data = {\n all: []/*必选赠品数据*/\n };\n this.$container = $('#container_zengpin');\n this.$box = $('#div_zengpin');\n this.$box_kxzp = $('#div_kexuan');\n this.$box_check = $('#div_check');\n this.$a_edit_gifts = $('#a_edit_gifts');\n if(needInit) this.init();\n }\n BiXuanZengPin.prototype = {\n constructor: BiXuanZengPin,\n /**\n * 首次渲染时调用\n */\n init: function () {\n try{\n this.getAllData();\n this.renderDom();\n this.bindEvent();\n }catch (e){\n $util.warn('必选赠品组件=> init方法错误 ---------->');\n $util.warn(e);\n }\n },\n renderDom:function (userData) {\n try{\n var $p = window.$p;\n var gifts = userData || this.data.all;\n var html = '';\n for (var i = 0; i < gifts.length; i++) {\n var o = gifts[i];\n var url = ($p.promotion.goodsDetailUrl && $p.promotion.goodsDetailUrl[o.code]) || ('/product/' + o.code + '.html');\n /*向DOM中追加元素*/\n html += '
    ' +\n '' +\n '' + o.goodsName + '' +\n '
    ';\n }\n if (html.length > 0) {\n this.$box.append(html);\n this.$container.removeClass('hidden');\n }\n }catch (e){\n $util.warn('必选赠品组件=> renderDom方法错误 --------->');\n $util.warn(e);\n }\n },\n /**\n * 绑定必选赠品的事件\n */\n bindEvent: function () {\n var _this = this;\n /*选择可选赠品*/\n _this.$box_check.on('click', function () {\n var height = _this.$box_kxzp.height();\n _this.$box_check.hide();\n _this.$box_kxzp.css({width:10, height:10}).show();\n _this.$box_kxzp.animate({width:'570', height: height});\n });\n _this.$a_edit_gifts.on('click', function () {\n var height = _this.$box_kxzp.height();\n _this.$a_edit_gifts.hide();\n _this.$box_kxzp.css({width:10, height:10}).show();\n _this.$box_kxzp.animate({width:'570', height: height});\n });\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function () {\n var _data = window.$p.processBXZPNeedShowList();\n this.data.all = _data;\n return _data;\n },\n /**\n * 清空box里的dom元素\n */\n emptyBoxDom:function () {\n this.$box.empty();\n },\n show:function () {\n this.$container.removeClass('hidden');\n },\n hide: function () {\n this.$container.addClass('hidden');\n },\n /**\n * 显示选择赠品的大按钮\n */\n showCheckButton:function () {\n this.$a_edit_gifts.hide();\n this.$box_check.show();\n },\n /**\n * 显示修改赠品按钮\n */\n showEditButton: function () {\n this.$a_edit_gifts.show();\n this.$box_check.hide();\n }\n };\n\n if (!window.components) {\n window.components = {};\n }\n window.components.BiXuanZengPin = BiXuanZengPin;\n})(window.PDUtil);\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 购买相关组件\n */\n(function ($util) {\n function BuyGroup(needInit){\n /*定义默认数据结构*/\n this.data = {};\n this.$container = $('#container_buygroup');\n this.$button_buy = $('#ljgm'); /*立即购买按钮*/\n this.$button_notice = $('#dhtz'); /*到货通知按钮*/\n this.$button_shoppingcart = $('#jrgwc'); /*购物车按钮*/\n this.$span_stock = $('#span_stock_dec');/*库存描述*/\n this.$box_ewm = $('#box_ewm'); /*二维码box*/\n if(needInit) this.init();\n }\n BuyGroup.prototype= {\n constructor: BuyGroup,\n /**\n * 首次渲染时调用\n */\n init: function () {\n try{\n /*添加埋点*/\n this.$button_buy.attr('latag', 'latag_pc_detail_orderimmediately_' + window['code']);\n this.$button_shoppingcart.attr('latag', 'latag_pc_detail_addshopcart_' + window['code']);\n\n this.__initEWM();\n this.__initSNCode();\n this.__initPrice();\n this.__initBuyButton();\n this.__initShoppingcartButton();\n /*实物商品,并且不是17商城的商品,没有库存的时候显示到货通知*/\n if (window.$p.processNoticeButton().isShow) {\n if(window.$p.baseInfo.price === '') return;\n this.__initNoticeButton();\n }\n this.bindEvent();\n\n this.updateGouMaiZiXunUrl();\n }catch (e){\n $util.warn('BuyGroup组件=> init方法错误------------>');\n $util.warn(e);\n }\n },\n /*私有方法*/\n __initBuyButton: function () {\n this.refreshBuyButton();\n },\n refreshBuyButton: function () {\n var result = window.$p.processBuyButton();\n var eventHandler = result.isDisabled ? null : floodLightLjgm;\n this.setBuyButton(result.showText, result.isDisabled, eventHandler);\n if(result.isShow){\n this.$button_buy.show();\n }\n if(!result.isDisabled && window.$p.baseInfo.stock > 0){\n this.$span_stock.text('有库存');\n }\n if(window.$p.baseInfo.waterLevelDesc){\n this.$span_stock.text(window.$p.baseInfo.waterLevelDesc)\n }\n },\n __initNoticeButton: function () {\n var sendsms = __detailConfig.getApiPath(\"sendsms\");\n this.$button_notice = $('');\n $(\"#ljgm\").after(this.$button_notice);\n this.$button_notice.on('click', function () {\n $(\"#notice_box\").show();\n $(\"#layer_zhezhao\").show();\n });\n $(\"#notice_box .close\").on('click', function () {\n $(\"#notice_box\").hide();\n $(\"#layer_zhezhao\").hide();\n });\n // 图形验证码点击事件重新获取验证码\n $('#dhnotice-img').on('click', function () {\n $('#dhnotice-img').attr('src', __detailConfig.getApiPath(\"imgValidUrl\")+ \"?ss=\"+(new Date()).valueOf());\n });\n // 添加图形验证码\n $('#dhnotice-img').attr('src', __detailConfig.getApiPath(\"imgValidUrl\"));\n function getPhoneNumber() {\n var pattern = /^1[3456789]\\d{9}$/;\n var notice_phoneNumber = window.$.trim($(\"#notice_phoneNumber\").val());\n var leId = $util.getCookie(\"leid\");\n if (notice_phoneNumber == \"\") {\n alert(\"请输入手机号\");\n return false;\n } else if (!pattern.test(notice_phoneNumber)) {\n alert(\"请输正确的手机号\");\n return false;\n }\n window.$p.jsonpNoticeSendSms({\n mobile: notice_phoneNumber,\n leId: leId,\n vcode: $('#dhnotice-code').val() // 获取图形验证码\n }, function (data) {\n if (data.success == true) {\n var t = 119;\n $(\"#notice_getVerificationCode\").off('click').val(\"已发送(120)\");\n var time = setInterval(function () {\n $(\"#notice_getVerificationCode\").val(\"已发送(\" + t + \")\");\n if (t == 0) {\n $(\"#notice_getVerificationCode\").on(\"click\", getPhoneNumber).val(\"获取验证码\");\n clearInterval(time);\n }\n t--;\n }, 1000)\n } else {\n alert(data['resultMsg']);\n }\n });\n }\n\n $(\"#notice_getVerificationCode\").on(\"click\", getPhoneNumber);\n var saveClick = 1;\n $(\"#notice_savePhoneNumber\").on('click', function () {\n if (saveClick == 0) {\n return;\n }\n saveClick = 0;\n var notice_verificationCode = window.$.trim($(\"#notice_verificationCode\").val());\n if (notice_verificationCode == \"\") {\n saveClick = 1;\n alert(\"请输入验证码\");\n return\n }\n var notice_phoneNumber = window.$.trim($(\"#notice_phoneNumber\").val());\n var lenovoAccount = window.passport.cookie ? window.passport.cookie.loginName : \"\";\n var lenovoID = window.passport.cookie ? window.passport.cookie.lenovoId : \"\";\n var leID = $util.getCookie(\"leid\");\n window.$p.jsonpNoticeSave({\n \"productCode\": code,\n \"productName\": $p.baseInfo.name,\n \"activityType\": window.$p.baseInfo.activityType,\n \"clientType\": \"PC\",\n \"linkAddress\": window.location.href,\n \"phone\": notice_phoneNumber,\n \"smsCode\": notice_verificationCode,\n \"lenovoAccount\": lenovoAccount,\n \"lenovoID\": lenovoID,\n \"leID\": leID,\n \"mallName\": \"联想官网\"\n }, function (data) {\n if (data.success == true) {\n $(\"#notice_box\").hide();\n $(\"#layer_zhezhao\").hide();\n saveClick = 1;\n alert(\"订阅成功\");\n } else {\n saveClick = 1;\n alert(data.resultMsg);\n }\n }, function () {\n saveClick = 1;\n alert(\"系统繁忙\");\n });\n });\n },\n __initShoppingcartButton: function () {\n var result = window.$p.processAddCartButton();\n if (result.isShow) {\n this.$button_shoppingcart.off('click');\n this.setAddCartButtonClickHandler().show();\n }\n },\n __initPrice: function () {\n var result = window.$p.processShowPrice();\n var vtPirce = window.$p.baseInfo.virtualPrice;\n if(!window.$p.baseInfo.isIntegral){\n setPriceDom(result.showText);\n }else{\n setVirtualPriceDom({'virtualPrice':vtPirce,'price':result.showText});\n }\n\n },\n /**\n * 初始化二维码信息\n * @private\n */\n __initEWM:function () {\n var show = false;\n var html = '
    ' +\n '
    联想客户端
    ';\n if(window.$p.baseInfo.appPrice < window.$p.baseInfo.showPrice){\n show = true;\n // html += '
    ' + window.$p.baseInfo.extensionContent + '
    ';\n }\n html += '
    ';\n this.$container.find('div.detail_con').append(html);\n this.$box_ewm = $('#box_ewm');\n if(show) this.$box_ewm.show();\n },\n __initSNCode: function () {\n var self = this;\n $(\"#checkSNcode_bt\").on('click', function(){\n self.checkSNCode();\n });\n $(\"#checkSNcode_box .close\").on('click', function(){\n $(\"#checkSNcode_box\").fadeOut(500, function () {\n $('#layer_zhezhao').hide();\n });\n $(\"#SNcode\").val(\"\");\n });\n },\n bindEvent: function () {\n var _this = this;\n var $number = $('#buy_number');\n /*加减购物数量事件*/\n $('#reduce_buy_number').on('click', function () {\n var num = parseInt($number.val());\n if (num - 1 <= 0) {\n return false;\n } else {\n $number.val(--num);\n }\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n\n });\n $('#add_buy_number').on('click', function () {\n var num = parseInt($number.val());\n if(num + 1 > window.$p.baseInfo.stock){\n alert('库存不足!');\n return false;\n }\n if (num + 1 > window.$p.baseInfo.gmsl) {\n alert('您最多只能购买' + window.$p.baseInfo.gmsl + '个');\n return false;\n } else {\n $number.val(++num);\n }\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n });\n $number.on('change', function () {\n var num = parseInt($number.val());\n if(!(/^\\d$/.test($number.val()))){\n $number.val(num);\n }\n\n if (isNaN(num) || num <= 0) {\n $number.val(1);\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n }else if(num > window.$p.baseInfo.stock){\n if(window.$p.baseInfo.gmsl > window.$p.baseInfo.stock){\n $number.val(window.$p.baseInfo.stock || 1);\n alert('库存不足!');\n }else{\n $number.val(window.$p.baseInfo.gmsl);\n alert('您最多只能购买' + window.$p.baseInfo.gmsl + '个');\n }\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n\n }\n else if (num > window.$p.baseInfo.gmsl) {\n $number.val(window.$p.baseInfo.gmsl);\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n alert('您最多只能购买' + window.$p.baseInfo.gmsl + '个');\n }else{\n if(window.$p.baseInfo.isIntegral){//积分兑换计算价格\n _this.updatePrice(window.$p.virtualCalcPrice());\n }else{\n _this.updatePrice(window.$p.calcPrice());\n }\n }\n });\n\n // this.$container.find('div.detail_con div#ewm_icon')\n // .on('mouseover', function () {\n // $('#box_ewm').show();\n // })\n // .on('mouseleave', function () {\n // $('#box_ewm').hide();\n // });\n $(document).on('click', function () {\n if(_this.$box_ewm.is(':visible')){\n _this.$box_ewm.hide();\n }\n });\n },\n /**\n * 设置购买咨询的链接\n * @param url\n */\n updateGouMaiZiXunUrl: function(){\n /*var $lenovoKefu = $('.sort .sort-list > ul> li').eq(1).find('ul >a').eq(0);\n var $thinkKefu = $('.shop_rightbar .shop_pointer .V_icon_cont .V_user_infor dd:eq(0) a:eq(0)');\n var $eppKefu = $('#J_MUIMallbar .ns_parentBox .ns_mbar-qq .ns_mbar-inner a:eq(0)');\n\n if($lenovoKefu && $lenovoKefu.length == 1){\n $('#a_gmzx').attr('href', $lenovoKefu.attr('href'));\n }else if($thinkKefu && $thinkKefu.length == 1){\n $('#a_gmzx').attr('href', $thinkKefu.attr('href'));\n }else{\n $('#a_gmzx').attr('href', $eppKefu.attr('href'));\n }*/\n $('#a_gmzx').attr('href', __detailConfig.getApiPath(\"customerask\") + '?sd=18&bu=10&pt=18&gc=' + window.code);\n },\n /*更新价格显示*/\n updatePrice: function (price) {\n if(!$p.baseInfo.isShowPrice) return;\n if($p.baseInfo.isIntegral){\n setVirtualPriceDom(price);\n }else{\n if($p.baseInfo.showPrice == 0)return;\n setPriceDom(price);\n }\n\n },\n /*获取购买数量*/\n getBuyNumber: function(){\n var txt = $('#buy_number').val();\n if(/^[1-9][0-9]*$/.test(txt)){\n return parseInt(txt);\n }else{\n return 1;\n }\n },\n /**\n * 设置立即购买按钮\n * @param text 文本显示信息\n * @param disabled 是否可用\n * @param clickHandler 单击事件\n * @param type 类型,{event: 'click', type: 'replace'}\n */\n setBuyButton: function (text, disabled, clickHandler, type) {\n var defaultType = {event: 'click', type: 'replace'};\n type = window.$.extend(defaultType, type || {});\n /*设置立即购买按钮文本*/\n this.$button_buy.text(text || '立即购买').attr('title', text || '立即购买');\n /*设置立即购买为不可用*/\n if (disabled) {\n this.$button_buy.addClass(\"button-gray\").off('click');\n } else {\n this.$button_buy.removeClass('button-gray');\n /*添加或替换立即购买按钮的指定事件*/\n if (clickHandler && typeof clickHandler == 'function') {\n if (type.type == 'replace') {\n this.$button_buy.off(type.event).on(type.event, clickHandler);\n } else {\n this.$button_buy.on(type.event, clickHandler);\n }\n }\n }\n /*设置购买按钮埋点*/\n if(text === '已售罄'){\n this.$button_buy.attr('latag', 'latag_pc_detail_soldout_' + window['code']);\n }else if(text === '立即预约'){\n this.$button_buy.attr('latag', 'latag_pc_detail_appointment_' + window['code']);\n }else if(text === '商品已下架'){\n this.$button_buy.attr('latag', 'latag_pc_detail_offshelf_' + window['code']);\n }else if(text === '立即购买'){\n this.$button_buy.attr('latag', 'latag_pc_detail_orderimmediately_' + window['code']);\n }\n return this.$button_buy;\n },\n /**\n * 给添加购物车按钮附加click事件\n * @param handler\n * @returns {*|jQuery|HTMLElement}\n */\n setAddCartButtonClickHandler: function (handler) {\n return this.setButtonClickHandler(this.$button_shoppingcart, handler, floodLightJrgwc);\n },\n /**\n * 给立即购买按钮附加click事件\n * @param handler\n * @returns {*|jQuery|HTMLElement}\n */\n setBuyButtonClickHandler: function (handler) {\n return this.setButtonClickHandler(this.$button_buy, handler, floodLightLjgm);\n },\n setButtonClickHandler: function($target, handler, defaultHandler){\n if(handler){\n $target.on('click', handler);\n }else{\n $target.on('click', defaultHandler);\n }\n return $target;\n },\n ljgm: function () {\n floodLightLjgm();\n },\n jrgwc: function () {\n floodLightJrgwc();\n },\n tcjrgwc: function (packID) {\n window.$p.jsonpAddItemToCart({\n terminal: window.$p.terminal,\n itemtype: 3, /* 商品类型0普通商品2选件搭售3 套餐7标识批量购买*/\n gcodes: window['code'] + \",\" + packID,\n opgcode: \"\",\n servicecode: \"\",\n icount: 1\n }, function(data){\n if (data.resultCode == 0) {\n // 添加购物车成功,跳转链接\n window.location.href = __detailConfig.getApiPath(\"gwc\") + \"cart/index.html?plat=\" + window.$p.terminal;\n } else if (data.resultCode == 40017 || data.resultCode == 20028 || data.resultCode == 10028 || data.resultCode == 20047) {\n $util.warn(\"additemtocart return data fail\" + data.resultCode);\n alert(data.resultMsg);\n } else if(data.resultCode == 10027 || data.resultCode == 10029) {\n alert(data.resultMsg);\n location.reload();\n } else {\n $util.warn(\"additemtocart return data fail\" + data.resultCode);\n // alert('套餐加入购物车失败,请稍后再试');\n alert(data.resultMsg);\n }\n });\n },\n /*立即预约*/\n ljyy:function() {\n var _this = this;\n if (window.passport && window.passport.isLogin()) {\n window.$p.jsonpShangouYuyue(function (data) {\n if (data.rc == \"0\") {\n window.$p.components.title.reservationId = data.reservationId;// 获取预约id\n // 弹出输入手机号的弹层\n var isPhoneNum = /^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/.test(window.passport.cookie.loginName);\n if (isPhoneNum) {\n // 如果登录名是手机号\n $(\"#wsgyy_tel\").val(window.passport.cookie.loginName);\n }\n $('#layer_zhezhao, #window_shangouyy').fadeIn(500);\n // 将立即预约按钮置灰并去掉绑定的事件\n window.$p.components.buygroup.setBuyButton('已预约', true);\n } else {\n alert(data.msg || '系统正忙, 请稍后再试!');\n }\n });\n\n } else {\n try {\n window.passport.show();\n passport.loginRedirect = window.location.href;\n } catch (e) {\n $util.warn('立即预约失败。。');\n $util.warn(e);\n }\n\n }\n },\n /*闪购立即购买*/\n ljgm_sg: function () {\n // floodLightLjgm();\n var $p = window['$p'];\n try{\n if (window.passport && window.passport.isLogin()) {\n if ($p.baseInfo.activityType == 2) {\n if ($p.activity.ShanGou && ($p.activity.ShanGou.type == 1 || $p.activity.ShanGou.type == 2)) {\n $p.jsonpIsBookUser(function (data) {\n if (data.rc == 0) {\n // 1 已预约 0 未预约\n if (data.status == 1) {\n $p.components.buygroup.sg_queue();\n\n /*window.location.href = __detailConfig.getApiPath(\"sg\")+\"seckill_qiang.jhtm?ss=\"\n + new Date().getMilliseconds() + \"&itemtype=0\"\n + \"&gcodes=\" + code + \"&icount=\" + $p.components.buygroup.getBuyNumber() + \"&terminal=\" + $p.terminal;*/\n } else {\n alert(\"你未预约该商品,没有购买资格!\");\n }\n } else {\n alert(\"系统正忙,请稍后再试!\");\n }\n }, function () {\n alert(\"系统正忙,请稍后再试!\");\n });\n }\n }\n } else {\n window.passport.show();\n passport.loginRedirect = window.location.href;\n }\n }catch (e){\n $util.warn('BuyGroup组件=> ljgm_sg方法错误 ------------->');\n $util.warn(e);\n alert($util.errorMessage.busy);\n }\n },\n /*闪购排队*/\n sg_queue: function () {\n $p.jsonpShangouQueue({\n gcode: window.code\n }, function(obj) {\n var sgcount = 1,\n sgTimeText = '',\n sgMsg = '',\n data = {\n shopId: window.shopId,\n terminal: $p.terminal,\n itemtype: 0,\n gcodes: window.code,\n icount: $p.components.buygroup.getBuyNumber(),\n opgcode: $p.components.kxzp.getKXZP().join() || '',\n servicecode: $p.components.service.getSelectedService().join(',') || '',\n personalization: decodeURIComponent($p.components.srdz.getdz()) || '',\n sn: $p.baseInfo.SNCode || ''\n };\n\n if (obj.success) {\n // 获取到Token\n data = $.extend(data, {\n token: obj.data.token,\n tokenTimeStamp: obj.data.timestamp\n });\n // 闪购排队加入购物车\n $p.jsonpShangouGwc(data, function(result) {\n if (result.success) {\n if (result.resultCode == 0) {\n $p.components.buygroup.data.token = result.t.token;\n $p.components.buygroup.data.tokenTimeStamp = result.t.timestamp;\n // 闪购成功,页面跳转\n // window.location.href = __detailConfig.getApiPath(\"sgjs\") +\"shangou/index.html?ss=\" + new Date().getMilliseconds() + \"&shopId=\" + window.shopId + \"&terminal=\" + $p.terminal + \"&token=\" + $p.components.buygroup.data.token + \"&tokenTimeStamp=\" + $p.components.buygroup.data.tokenTimeStamp;\n\n window.location.href = __detailConfig.getApiPath(\"lecoo_normal\") +\"checkout/lecoopc.html?buytype=1&ss=\" + new Date().getMilliseconds() + \"&shopId=\" + window.shopId + \"&terminal=\" + $p.terminal + \"&token=\" + $p.components.buygroup.data.token + \"&tokenTimeStamp=\" + $p.components.buygroup.data.tokenTimeStamp + '&isSeckill=1&nc=1';\n } else {\n alert(\"系统正忙,请稍后再试!\");\n }\n } else if(result.resultCode == 20002) {\n // 超过购买次数, 弹窗提醒\n sgMsg = '您已经超过购买次数!';\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').empty();\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n $('#notice_sg_queue').hide();\n });\n } else {\n alert(\"系统正忙,请稍后再试!\");\n }\n });\n } else {\n // 获取token失败\n if (obj.rc == 20002) {\n // 暂无库存, 弹窗提醒\n sgMsg = '手慢啦!商品补货中,待会再来看看吧!';\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').empty();\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n $('#notice_sg_queue').hide();\n });\n } else if (obj.rc == 20003) {\n // 排队中,轮询请求token, 弹窗提醒\n sgMsg = '当前排队' + obj.data + '人,';\n var myTimer = setInterval(function() {\n ++sgcount;\n sgTimeText = '您已等待' + sgcount + '秒';\n $('#notice_sg_times').text(sgTimeText);\n }, 1000);\n\n // 5秒中轮询一次token\n var pollingTimer = setInterval(function(){\n $p.jsonpShangouQueue({\n gcode: window.code\n }, function (obj) {\n // 成功获取token\n if (obj.rc == 0) {\n clearTimeout(pollingTimer);\n clearTimeout(myTimer);\n data = $.extend(data, {\n token: obj.data.token,\n tokenTimeStamp: obj.data.timestamp\n });\n\n // 闪购排队加入购物车\n $p.jsonpShangouGwc(data, function(result) {\n if (result.success) {\n if (result.resultCode == 0) {\n $p.components.buygroup.data.token = result.t.token;\n $p.components.buygroup.data.tokenTimeStamp = result.t.timestamp;\n // 闪购成功,页面跳转\n // window.location.href = __detailConfig.getApiPath(\"sgjs\") +\"shangou/index.html?ss=\" + new Date().getMilliseconds() + \"&shopId=\" + window.shopId + \"&terminal=\" + $p.terminal + \"&token=\" + $p.components.buygroup.data.token + \"&tokenTimeStamp=\" + $p.components.buygroup.data.tokenTimeStamp;\n\n window.location.href = __detailConfig.getApiPath(\"lecoo_normal\") +\"checkout/lecoopc.html?buytype=1&ss=\" + new Date().getMilliseconds() + \"&shopId=\" + window.shopId + \"&terminal=\" + $p.terminal + \"&token=\" + $p.components.buygroup.data.token + \"&tokenTimeStamp=\" + $p.components.buygroup.data.tokenTimeStamp + '&isSeckill=1&nc=1';\n }\n } else if (result.resultCode == 20002) {\n // 超过购买次数, 弹窗提醒\n sgMsg = '您已经超过购买次数!';\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').empty();\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n $('#notice_sg_queue').hide();\n });\n } else {\n alert(\"系统正忙,请稍后再试!\");\n }\n });\n\n } else if (obj.rc == 20002) {\n //清除轮询\n clearTimeout(myTimer);\n clearTimeout(pollingTimer);\n // 暂无库存, 弹窗提醒\n sgMsg = '手慢啦!商品补货中,待会再来看看吧!';\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').empty();\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n $('#notice_sg_queue').hide();\n });\n } else if (obj.rc == 20003) {\n sgMsg = '当前排队' + obj.data + '人,';\n $('#notice_sg_msg').text(sgMsg);\n } else {\n alert(\"系统正忙,请稍后再试!\");\n }\n });\n }, 5000);\n\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').text('1s');\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n // 排队等待中,关闭弹窗\n $('#notice_sg_queue').hide();\n clearTimeout(myTimer);\n clearTimeout(pollingTimer);\n });\n\n } else if (obj.rc == 20004){\n // 稍后再试,弹窗提醒\n sgMsg = '商品火爆,请稍后再试';\n $('#notice_sg_msg').text(sgMsg);\n $('#notice_sg_times').empty();\n $('#notice_sg_queue').show();\n $('#notice_sg_btn').on('click', function() {\n // 稍后再试,关闭弹窗\n $('#notice_sg_queue').hide();\n });\n }\n }\n });\n },\n checkSNCode: function () {\n var $p = window.$p;\n $('#layer_zhezhao').show();\n $('#checkSNcode_box').fadeIn(500);\n\n var $OKButton = $(\"#checkSNcode_bt\").text(\"验证中...\");\n\n var inputSNCode = $(\"#SNcode\").val();\n if(!inputSNCode){\n $(\"#checkSNcode_bt\").text(\"确定\");\n // alert('请输入SN码!');\n return false;\n }\n var inputSNCode = encodeURIComponent(inputSNCode);\n $p.ajaxCheckSNCode(inputSNCode, function (data) {\n var _data = data.data;\n if(data.status == 200 && _data.res == true){\n $OKButton.text(\"确定\");\n $p.baseInfo.SNCode = _data && _data.info && _data.info.machineNo;\n if(!$p.baseInfo.SNCode){\n alert('SN码验证失败');\n $OKButton.text(\"确定\");\n return false;\n }\n floodLightLjgm();\n }else{\n $OKButton.text(\"确定\");\n alert((_data && _data.info && _data.info.errorMessage) || 'SN码验证失败');\n }\n }, function () {\n alert('系统繁忙,请稍后再试!');\n return false;\n })\n }\n };\n\n /**\n * 设置dom节点显示价格信息\n * @param price 要显示的价格\n */\n var setPriceDom = function(price){\n var _price = parseFloat(price);\n if(isNaN(_price)){\n $(\"#price_unit\").text(\"\");\n $(\"#span_price\").text(price);\n }\n else{\n if(passport.isLogin()){\n $(\"#price_des\").text(\"会员价:\");\n }else{\n $(\"#price_des\").text(\"商城价:\");\n }\n $(\"#span_price\").text(_price.toFixed(2));\n }\n };\n /**\n *\n * @param objPrice {'price':price,'virtualPrice':virtualPrice}\n *\n * price 价格\n * virtualPrice 虚拟币价格\n */\n var setVirtualPriceDom = function(objPrice){\n\n if(!$p.baseInfo.isShowPrice && objPrice['price'] == '暂无报价'){\n $(\"#span_price\").text(objPrice['price']);\n return;\n }\n\n var _price = parseFloat(objPrice['price']);\n if(_price !== 0){\n $(\"#price_unit\").text(_price.toFixed(2)+'元 +');\n }\n if($p.baseInfo.virtualAreaCode == 'V_0'){\n $(\"#span_price\").text(objPrice['virtualPrice'] +'消费积分');\n }\n if($p.baseInfo.virtualAreaCode == 'V_1'){\n $(\"#span_price\").text(objPrice['virtualPrice'] +'乐豆');\n }\n\n };\n\n /**\n * 获取所有商品code数组\n * @returns {*[]}\n */\n var getAllGoodCodes = function(){\n var gcodes = [code];\n var xj = window.$p.components.tjxj.data.selectedArray;\n for(var i = 0; i < xj.length; i++){\n gcodes.push(xj[i].code);\n }\n return gcodes;\n };\n /**\n * 立即购买方法\n * @returns {boolean}\n */\n var ljgm = function () {\n try{\n var $p = window.$p;\n if(!$p.components.guige.isExist_gg()) return false;\n var gcodes = getAllGoodCodes();\n var itemType = gcodes.length > 1 ? 2 : 0;\n var buyUrl = __detailConfig.getApiPath(\"gwc\")+\"directbuy.jhtml\";\n\n var url = \"?ss=\" + new Date().getMilliseconds()\n + \"&itemtype=\" + itemType + \"&gcodes=\" + gcodes.join(',')\n + \"&icount=\" + $(\"#buy_number\").val()\n + \"&opgcode=\" + $p.components.kxzp.getKXZP().join()\n + \"&servicecode=\" + $p.components.service.getSelectedService().join()\n + \"&customids=\"\n + \"&sharecode=\" + $p.shareCode\n + \"&terminal=\" + $p.terminal;\n if($p.baseInfo.isPersonalPositions && $p.baseInfo.isPersonalPositions.length > 0){\n url+= '&personalization=' + $p.components.srdz.getdz();\n }\n if($p.baseInfo.buOwner==90){//lgq add by data 2016/05/06 dongde\n //判断懂得通信90\n if($(\"#showpop\").val()==\"\"){\n alert('请选择号码');\n return false;\n }\n var tc = $(\"div.de_info_section1 .de_sec_main\").eq(1).find(\"span.active\").attr(\"code\");\n url += \"&phoneServiceNumber=\" + $(\"#showpop\").val() + \"&dpackageId=\" + tc;\n url += \"&goodsId=\" + $(\"#showpop\").attr(\"goodsid\");\n }\n if($p.isLcodeProduct()){\n var kCode = $p.baseInfo.LCode;\n url += '&kcode=' + kCode;\n }\n /*sn逻辑*/\n if($p.baseInfo.isNeedSN && $p.baseInfo.isService){\n /* 临时修改 */\n if(false) {\n if(getQueryString('sncode')) url += '&SN=' + getQueryString('sncode');\n else {\n alert('请在地址栏url的query上添加: sncode=###');\n return false;\n }\n }\n /* 临时修改 */\n\n /* origin */\n if($p.baseInfo.SNCode){\n url += '&SN=' + $p.baseInfo.SNCode;\n }else{\n $p.components.buygroup && $p.components.buygroup.checkSNCode();\n return false;\n }\n /* origin */\n }\n switch ($p.baseInfo.salesType) {\n case '5':// 定制\n url = 'custommade.html?code=' + $p.gcode;\n break;\n }\n if (window['passport'] && window['passport']['isLogin']()) {\n if($p.baseInfo.isHasPersonal && !$p.baseInfo.isIntegral){\n if((window['passport'].cookie && window['passport'].cookie.groupCode == 90 && window['shopId'] === 1) && !(window.$p.components.srdz.isSelcetedSrdz())){\n alert('亲!您需要选择私人订制信息才能购买!');\n return false;\n }\n }\n if($p.activity && $p.baseInfo.activityType == 1 && $p.activity['purchaseLimiting'] == 1){\n $p.jsonpIsTuangouUser(function (data) {\n if (data.rc == 0 && $p.activity.hasPurchased == 1) {\n $p.components.buygroup.setBuyButton('您已参团', true);\n alert(\"您已参团\");\n }\n });\n }\n if(!$p.baseInfo.isIntegral){\n if(($p.baseInfo.activityType == 2 || $p.baseInfo.activityType == 3) && ($p.activity && $p.nowNumber > $p.activity.buyStartTime && $p.nowNumber < $p.activity.buyEndTime)){\n\n $p.components.buygroup.sg_queue();\n\n } else {\n // window.location.href = url;\n buyBefore(url, function (data) {\n if(data.success) window.location.href = __detailConfig.getApiPath('lecoo_normal') + 'checkout/lecoopc.html?buytype=1&nc=1';\n })\n }\n\n }else{\n if($p.baseInfo.virtualAreaCode == 'V_0'){\n\n $p.jsonpgetIntegral(null,function(data){\n if(data.ret == 0){\n var userJf = data['data'] && data['data']['effectiveValue'] || 0;\n\n if(userJf < ($p.baseInfo.virtualPrice)*($(\"#buy_number\").val())){\n alert('亲,您的消费积分当前余额不够,请赶快去赚取!');\n }else{\n url += '&virtualCoinType=0';\n // window.location.href = url;\n buyBefore(url, function (data) {\n if(data.success) window.location.href = __detailConfig.getApiPath('lecoo_normal') + 'checkout/lecoopc.html?buytype=1&nc=1';\n })\n }\n }else{\n alert('系统繁忙,请稍后重试!');\n }\n })\n }else if($p.baseInfo.virtualAreaCode == 'V_1'){\n $p.jsonpgetIntegral({type:1},function(data){\n if(data.ret == 0){\n var userJf = data['data'] || 0;\n\n if(userJf < ($p.baseInfo.virtualPrice)*($(\"#buy_number\").val())){\n alert('亲,您的乐豆当前余额不够,请赶快去赚取!');\n }else{\n url += '&virtualCoinType=1';\n // window.location.href = url;\n buyBefore(url, function (data) {\n if(data.success) window.location.href = __detailConfig.getApiPath('lecoo_normal') + 'checkout/lecoopc.html?buytype=1&nc=1';\n })\n }\n }else{\n alert('系统繁忙,请稍后重试!');\n }\n })\n }else{\n // window.location.href = url;\n buyBefore(url, function (data) {\n if(data.success) window.location.href = __detailConfig.getApiPath('lecoo_normal') + 'checkout/lecoopc.html?buytype=1&nc=1';\n })\n }\n\n }\n\n } else {\n window['passport'].show();\n if($p.baseInfo.isIntegral){\n url = window.location.href;\n }\n url = window.location.href;\n window['passport'].loginRedirect =url;\n }\n }catch (e){\n $util.warn('BuyGroup组件=> ljgm方法错误 ------------->');\n $util.warn(e);\n alert($util.errorMessage.busy);\n }\n };\n // 点击购买按钮后 先请求\n function buyBefore (data, success, error) {\n $p.jsonpBuyBefore(data, success, error);\n }\n\n /**\n * 加入购物车方法\n * @returns {boolean}\n */\n var jrgwc = function () {\n try{\n if(!window.$p.components.guige.isExist_gg()) return false;\n var gcodes = getAllGoodCodes();\n var itemType = gcodes.length > 1 ? 2 : 0;\n window.$p.jsonpAddItemToCart({\n terminal: window.$p.terminal,\n itemtype: itemType, /* 商品类型0普通商品2选件搭售3 套餐7标识批量购买*/\n gcodes: gcodes.join(','),\n opgcode: window.$p.components.kxzp.getKXZP().join(),\n servicecode: window.$p.components.service.getSelectedService().join(),\n customids: window.$p.components.srdz.getdz(),\n icount: $(\"#buy_number\").val()\n }, function(data){\n // 20028 购物车超出60行 10028 商品加购件数超过库存\n if (data.resultCode == 40017 || data.resultCode == 20028 || data.resultCode == 10028 || data.resultCode == 20047) {\n $util.warn(\"additemtocart return data fail\" + data.resultCode);\n alert(data.resultMsg);\n } else if (data.resultCode == 0) {\n // 添加购物车成功,跳转链接\n window.location.href = __detailConfig.getApiPath(\"gwc\") + \"cart/index.html\";\n } else if(data.resultCode == 10027 || data.resultCode == 10029) {\n alert(data.resultMsg);\n location.reload();\n } else {\n $util.warn(\"additemtocart return data fail\" + data.resultCode);\n // alert('超出商品购买数量限制,请稍后再试');\n alert(data.resultMsg);\n }\n },function(e){\n $(\"#modal-layer .img-tips\").attr('src','../series/product/xiaoxin/images/line-up-tips.jpg');\n window.$p.showTips();\n });\n }catch (e){\n $util.warn('BuyGroup组件=> jrgwc方法错误 ------------->');\n $util.warn(e);\n alert($util.errorMessage.busy);\n }\n };\n\n /**\n * floodLight 立即购买\n * */\n var floodLightLjgm = function(){\n try{\n var onloadyes=false;\n var timeyes=false;\n var a =(+ new Date) + Math.random()*100;\n\n var iframe = document.createElement(\"iframe\");\n iframe.src = \"https://6895322.fls.doubleclick.net/activityi;src=6895322;type=lenov0;cat=___uv00;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1;num=\" + a + \"?\";\n iframe.style.display = 'none';\n iframe.onload =iframe.onreadystatechange = function(){\n\n onloadyes=true;\n iframe.onload =iframe.onreadystatechange = null;\n $(iframe).remove();\n if(timeyes) return;\n ljgm();\n };\n document.body.appendChild(iframe);\n /**\n * time 多少秒后执行\n * count 多少秒执行一次\n */\n (function (time, count) {\n var start = 0;\n function create(Callback) {\n\n return setTimeout(function () {\n if (start >= time) {\n Callback();\n } else {\n create(Callback);\n }\n start += count;\n }, count);\n }\n var Timeout = create(function () {\n if(onloadyes) return;\n timeyes=true;\n ljgm();\n });\n })(300, 60)\n }\n catch (e){}\n };\n\n /**\n * floodLight 加入购物车\n * */\n var floodLightJrgwc = function(){\n try{\n var onloadyes=false;\n var timeyes=false;\n var a =(+ new Date) + Math.random()*100;\n\n var iframe = document.createElement(\"iframe\");\n iframe.src = \"https://6895322.fls.doubleclick.net/activityi;src=6895322;type=lenov0;cat=___uv000;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1;num=\" + a + \"?\";\n iframe.style.display = 'none';\n iframe.onload =iframe.onreadystatechange = function(){\n\n onloadyes=true;\n iframe.onload =iframe.onreadystatechange = null;\n $(iframe).remove();\n if(timeyes) return;\n jrgwc();\n };\n document.body.appendChild(iframe);\n /**\n * time 多少秒后执行\n * count 多少秒执行一次\n */\n (function (time, count) {\n var start = 0;\n function create(Callback) {\n\n return setTimeout(function () {\n if (start >= time) {\n Callback();\n } else {\n create(Callback);\n }\n start += count;\n }, count);\n }\n var Timeout = create(function () {\n if(onloadyes) return;\n timeyes=true;\n jrgwc();\n });\n })(300, 60)\n }\n catch (e){}\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.BuyGroup = BuyGroup;\n})(window.PDUtil);\n/**\n * Created by liuyc14 on 2017/02/28.\n * 配置信息组件,负责商品信息、配置信息、评价信息的逻辑\n * dependence: pageBar组件\n */\n(function ($util) {\n function Configuration(needInit){\n var self = this;\n /*定义默认数据结构*/\n this.data = {\n totalCount: 0,\n totalPage: 0,\n showTabIndex: 0,\n comments: [],\n labels: [],\n pageIndex: 1,\n productId: 0,\n level: 0,\n label: \"\",\n commentIsShow: false,\n firstClick: true,\n onlyThis: 2 // 2:关联 1:只看此商品\n };\n this.declarationUrl = '/series/pd/xiaoxin/images/pcmianzeshengming.jpg';\n this.thinkDriverDownloadUrl = 'http://think.lenovo.com.cn/support/driver/mainpage.aspx#ThinkPad?from=shop';\n this.lenovoDriverDounloadUrl = 'http://support.lenovo.com.cn/lenovo/wsi/Modules/NewDrive.aspx?from=shop';\n this.thinkBXPZUrl = 'http://think.lenovo.com.cn/service/warranty/repairDeploy.html?from=shop';\n this.lenovoBXPZUrl = 'http://support.lenovo.com.cn/lenovo/wsi/Modules/Newbxpz.aspx?from=shop';\n this.thinkFWWDUrl = 'http://think.lenovo.com.cn/stations/TSStation.aspx?from=shop';\n this.lenovoFWWDUrl = 'http://support.lenovo.com.cn/lenovo/wsi/station/servicestation/default.aspx?from=shop';\n this.$container = $('#container_info');\n this.$box_pagebar = $('#pj_number > ul');\n this.$box_information = $('#box_information');\n this.$box_configuration = $('#box_configuration');\n this.$box_comment = $('#box_comment');\n this.$box_service = $('#box_service');\n this.$commentList = $('#assess_item');\n this.$commentLabels = $('#comment_labels');\n this.$button_showthis = $('#comment_only_show_this');\n this.$containerTabs = $(\"#container_info .ul-box li\");\n this.data.commentIsShow = this.$containerTabs.eq(0).is(\":hidden\") && this.$containerTabs.eq(1).is(\":hidden\");//评论tab是否active true:active false:\n /*分页组件*/\n try{\n this.pagebar = new components.PageBar(this.$box_pagebar);\n this.pagebar.data.onPageChange = function (page) {\n self.data.pageIndex = self.pagebar.data.pageIndex = page;\n self.renderComment();\n };\n }catch(e){\n $util.warn('Configuration组件 初始错误 ---------->');\n $util.warn(e);\n }\n if(needInit)this.init();\n }\n Configuration.prototype= {\n constructor: Configuration,\n /**\n * 首次渲染时调用\n */\n init: function () {\n var _this = this;\n try{\n _this.bindEvent();\n }catch (e){\n $util.warn('Configuration.bindEvent error');\n $util.warn(e);\n }\n\n\n if(_this.data.commentIsShow){//只有评论\n setTimeout(function(){\n _this.renderComment();\n },1000);\n }\n setTimeout(function(){\n /*try{\n window.$p.components.configInfo.renderCommentLables();\n }catch (e){\n $util.warn('Configuration.renderCommentLables error');\n $util.warn(e);\n }*/\n try{\n window.$p.components.configInfo.renderCommentNumber();\n }catch (e){\n $util.warn('Configuration.renderCommentNumber error');\n $util.warn(e);\n }\n },1000);\n\n _this.adddeclaration();\n _this.addCustomerService();\n },\n /**\n * 绑定推荐选件的事件\n */\n bindEvent: function () {\n var bigImageIndex = 0;\n var self = this;\n this.$box_comment.find('.assess_tRight .assess_btn').eq(0).addClass('checked');\n var $defaultLi = this.$container.find('ul.ul-box li.checked');\n if($defaultLi && $defaultLi.length == 1){\n this.data.showTabIndex = parseInt($defaultLi.attr('data-index'));\n if(this.data.showTabIndex == 2){\n self.$container.find('.info-box').eq(2).show();\n }\n }\n\n /*tab选项卡点击事件*/\n this.$container.find('ul.ul-box li').on('click', function () {\n var $this = $(this);\n var index = $this.attr('data-index');\n if(self.data.showTabIndex == index){\n return false;\n }else{\n if(self.data.firstClick && !self.data.commentIsShow){\n //显示好评列表\n self.renderComment();\n self.data.firstClick = false;\n }\n $this.siblings('.checked').removeClass('checked');\n $this.addClass('checked');\n self.$container.find('.info-box').eq(self.data.showTabIndex).hide();\n self.data.showTabIndex = index;\n self.$container.find('.info-box').eq(index).show();\n }\n });\n\n /*评论好评差评切换事件*/\n this.$box_comment.find('.assess_tRight .assess_btn').on('click', function () {\n var $this = $(this);\n var level = $this.attr('data-level');\n if(self.data.level == level){\n return false;\n }else{\n $this.siblings('.checked').removeClass('checked');\n $this.addClass('checked');\n self.data.level = level;\n self.data.label = \"\";\n self.data.pageIndex = self.pagebar.data.pageIndex = 1;\n\n $('#comment_labels div.mjyx_info').removeClass('mjyx_active');\n self.renderComment();\n }\n });\n /*评论label切换事件*/\n this.$box_comment.find('#comment_labels').on('click', '.mjyx_info', function (e) {\n var $this = $(this);\n var $button = $this;\n if(!$this.hasClass('mjyx_info')){\n $button = $this.parent();\n }\n if($button.hasClass('mjyx_active')){\n return false;\n }\n $('#comment_labels div.mjyx_active').removeClass('mjyx_active');\n $button.addClass('mjyx_active');\n var $span = $button.find('span:first');\n self.data.label = $span.text();\n self.data.pageIndex = self.pagebar.data.pageIndex = 1;\n self.renderComment();\n return false;\n });\n /***只看当前商品点击事件***/\n this.$button_showthis.on('click', function () {\n self.data.pageIndex = self.pagebar.data.pageIndex = 1;\n self.data.label = \"\";\n if(self.$button_showthis.get(0).checked){\n self.data.onlyThis = 1;\n }else{\n self.data.onlyThis = 2;\n }\n\n self.renderComment();\n // self.renderCommentLables();\n self.renderCommentNumber();\n });\n /***************评论图片点击事件****************/\n /*点击小图打开大图*/\n self.$commentList.on('click', 'div.assess_picBtn', function() {\n var _this = $(this);\n var index = bigImageIndex = parseInt(_this.attr('data-index') || 0);\n _this.addClass('borderActive').siblings().removeClass('borderActive');\n _this.find('span').slideDown(1000);\n _this.siblings().find('span').hide();\n _this.parent().parent().find('ul.assess_ul li').eq(index).show().siblings().hide();\n _this.parent().parent().find('.btn_div').show();\n });\n /*隐藏大图*/\n self.$commentList.on('click', 'ul.assess_ul li', function() {\n var _this = $(this);\n _this.hide();\n var index = _this.index();\n $('.btn_div').hide();\n $('.assess_picBtn').eq(index).removeClass('borderActive');\n $('.assess_picBtn').eq(index).find('span').hide();\n });\n self.$commentList.on('click', 'span.assess_btnRight', function() {\n var parentNode = $(this).parent().parent().parent();\n var num = parentNode.find('.assess_ul li').length;\n bigImageIndex++;\n if(bigImageIndex >= num) {\n bigImageIndex = 0;\n }\n var $pic = parentNode.find('.assess_picBtn').eq(bigImageIndex);\n $pic.addClass('borderActive').siblings().removeClass('borderActive');\n $pic.find('span').show();\n $pic.siblings().find('span').hide();\n parentNode.find('.assess_ul li').eq(bigImageIndex).show().siblings().hide();\n\n //\n });\n self.$commentList.on('click', 'span.assess_btnLeft', function() {\n var parentNode = $(this).parent().parent().parent();\n var num = parentNode.find('.assess_ul li').length;\n if(bigImageIndex <= 0) {\n bigImageIndex = num;\n }\n bigImageIndex--;\n var $pic = parentNode.find('.assess_picBtn').eq(bigImageIndex);\n $pic.addClass('borderActive').siblings().removeClass('borderActive');\n $pic.find('span').show();\n $pic.siblings().find('span').hide();\n parentNode.find('.assess_ul li').eq(bigImageIndex).show().siblings().hide();\n\n });\n /***************评论图片点击事件****************/\n\n },\n /**\n * 获取要实现评论的code集合\n * @returns {*}\n */\n getShowCodes: function(){\n var self = this;\n // try{\n // if(self.$button_showthis[0].checked){\n // return window.code;\n // }\n // var gcode = [];\n // var _spec = window.specInfo;\n // if(_spec && _spec instanceof Array){\n // for (var i = 0; i < _spec.length; i++){\n // var gsdlist = _spec[i];\n // if(gsdlist && gsdlist.gsdlist && gsdlist.gsdlist.length > 0){\n // for (var j =0; j < gsdlist.gsdlist.length; j++){\n // if(gsdlist.gsdlist[j] && gsdlist.gsdlist[j].gcode) {\n // gcode.push(gsdlist.gsdlist[j].gcode);\n // }\n // }\n // }\n // }\n // }\n // return gcode.join(',');\n // }catch(e){\n // $util.warn('configuration.getShowCodes报错了-------->');\n // $util.warn(e);\n // return window.code;\n // }\n try {\n if(self.$button_showthis[0].checked){\n return window.code;\n }\n var arrCode=[],arr=[],arrObj={};\n var _specInfo = $p.components.guige.data || {};\n var _spec = $p.components.guige.spec || [];\n if(_spec && _spec instanceof Array){\n var specLength = _spec.length;\n if(specLength == 0){\n return window.code;\n }\n else if(specLength == 1){\n $.each(_specInfo,function(k,v){\n arr.push(v);\n })\n }\n else if(specLength == 2){\n $.each(_specInfo,function(k,v){\n $.each(v,function(kk,vv){\n arr.push(vv);\n })\n })\n }\n else if(specLength == 3){\n $.each(_specInfo,function(k,v){\n $.each(v,function(kk,vv){\n $.each(vv,function(kkk,vvv){\n arr.push(vvv);\n })\n })\n })\n\n }\n for(var i=0; i');\n $util.warn(e);\n return window.code;\n }\n },\n /**\n * 添加产品详情的免责声明\n */\n adddeclaration: function () {\n try{\n var $imageDiv = this.$box_information.find('div.images');\n if($imageDiv.find('img').length > 0){\n $imageDiv.append('

    ');\n }\n }catch (e){\n $util.warn('configuration组件=> adddeclaration方法报错了-------->');\n $util.warn(e);\n }\n },\n /**\n * 显示评论列表\n */\n renderComment: function () {\n var $p = window['$p'];\n var self = this;\n self.data.productId = window.code;\n\n self.$commentList.html('
    加载评论...
    ');\n var codes = self.getShowCodes();\n $p.jsonpEvaluateList(codes, self.data.pageIndex, self.data.productId, self.data.level, self.data.label, self.data.onlyThis, function(data){\n self.renderCommentLables(data);\n self.callback_commentListSuccess(data,self.data.level,self.data.label);\n }, function () {\n self.$commentList.html(\"

    暂无评价内容.

    \");\n })\n },\n /**\n * 显示评论标签\n */\n renderCommentLables: function (data) {\n var self = window.$p.components.configInfo;\n self.$commentLabels.empty();\n // var codes = self.getShowCodes();\n try{\n var html = \"\";\n if (data.data.lables.length>0 && data.code == \"000000\") {\n for (var i = 0; i < data.data.lables.length; i++) {\n html += '
    ' + data.data.lables[i].lable + '(' + data.data.lables[i].num + ')
    ';\n }\n window.$p.components.configInfo.$commentLabels.append(html).parent().show();\n }else{\n window.$p.components.configInfo.$commentLabels.parent().hide();\n }\n }catch (e){\n $util.warn('configuration.renderCommentLables 中 $p.jsonpEvaluateList回调函数 错误 --------------->');\n $util.warn(e);\n }\n },\n /*renderCommentLables: function () {\n var self = window.$p.components.configInfo;\n self.$commentLabels.empty();\n var codes = self.getShowCodes();\n window.$p.jsonpEvaluateLable(codes, self.data.onlyThis, function (data) {\n try{\n var html = \"\";\n if (data.data.length>0 && data.code == \"000000\") {\n for (var i = 0; i < data.data.length; i++) {\n html += '
    ' + data.data[i].lable + '(' + data.data[i].num + ')
    ';\n }\n window.$p.components.configInfo.$commentLabels.append(html).parent().show();\n }else{\n window.$p.components.configInfo.$commentLabels.parent().hide();\n }\n }catch (e){\n $util.warn('configuration.renderCommentLables 中 $p.jsonpEvaluateLable回调函数 错误 --------------->');\n $util.warn(e);\n }\n }, function () {\n\n });\n },*/\n /**\n * 显示评论数量\n */\n renderCommentNumber: function () {\n var self = this;\n var $all = $('#comment_level_all').html('0');\n var $haoping = $('#comment_level_haoping').html('0');\n var $zhongping = $('#comment_level_zhongping').html('0');\n var $chaping = $('#comment_level_chaping').html('0');\n var $pic = $('#comment_level_pic').html('0');\n var $zhuip = $('#comment_level_zhuip').html('0');\n var $hpl = $('#comment_haopinglv').html(\"100%\");\n var codes = self.getShowCodes();\n window.$p.jsonpEvaluateRate(codes, function (data) {\n try{\n if(data.code == \"000000\") {\n self = window.$p.components.configInfo;\n var data = self.commentNumberObj = data.data;\n $all.html(data.total);\n $haoping.html(data.good);\n $zhongping.html(data.medium);\n $chaping.html(data.bad);\n $pic.html(data.picnum);\n $zhuip.html(data.isAdd||0);\n var hpl = data.favorRate;\n if(data.total !== 0) {\n $hpl.html(hpl + \"%\");\n var $title = self.$container.find('ul.ul-box li:eq(2)');\n $title.text('商品评价('+data.total+')');\n }\n }\n }catch(e){\n $util.warn('configuration.renderCommentNumber 中 $p.jsonpEvaluateNumber回调函数 错误 --------------->');\n $util.warn(e);\n }\n });\n /*window.$p.jsonpEvaluateNumber(codes, self.data.onlyThis, function (data) {\n try{\n if(data.code == \"000000\") {\n self = window.$p.components.configInfo;\n var data = self.commentNumberObj = data.data;\n $all.html(data.total);\n $haoping.html(data.good);\n $zhongping.html(data.medium);\n $chaping.html(data.bad);\n $pic.html(data.picnum);\n $zhuip.html(data.isAdd||0);\n var hpl = data.favorRate;\n if(data.total !== 0) {\n $hpl.html(hpl + \"%\");\n var $title = self.$container.find('ul.ul-box li:eq(2)');\n $title.text('商品评价('+data.total+')');\n }\n }\n }catch(e){\n $util.warn('configuration.renderCommentNumber 中 $p.jsonpEvaluateNumber回调函数 错误 --------------->');\n $util.warn(e);\n }\n });*/\n },\n\n // 渲染评论列表\n callback_commentListSuccess: function (data,level,label) {\n /*self.data.totalPage = data.data.comment[data.data.comment.lenght - 1].totalPage;\n self.data.totalCount = data.data.comment[data.data.comment.lenght - 1].totalCount;*/\n\n try {\n var self = this;\n self.$commentList.empty();\n if (data.code == \"000000\" && data.data.comment.length > 0) {\n var db = this.data.comments = data.data.comment;\n\n if(data.data.comment[data.data.comment.length - 1].totalPage <= 1){\n self.data.totalCount = self.pagebar.data.totalCount = db.length - 1;\n }else{\n if(self.commentNumberObj){\n var mp = {\n '0': 'total',\n '3': 'good',\n '2': 'medium',\n '1': 'bad',\n '10': 'isAdd',\n '9': 'picnum'\n };\n self.data.totalCount = self.pagebar.data.totalCount = data.data.comment[data.data.comment.length - 1].totalPage * 10;\n // if(level in mp && mp[level] in self.commentNumberObj && !label) self.data.totalCount = self.pagebar.data.totalCount = self.commentNumberObj[mp[level]];\n // else self.data.totalCount = self.pagebar.data.totalCount = data.data.totalpagecount * 10;\n }\n else self.data.totalCount = self.pagebar.data.totalCount = data.data.comment[data.data.comment.length - 1].totalPage * 10;\n }\n self.pagebar.render();\n\n /*拼接数据*/\n for (var i = 0; i < db.length - 1; i++) {\n var html = \"\";\n html += '
    ';\n html += ' \t
    ';\n html += ' \t\t
    ' + db[i].euser + '
    ';\n html += '\t\t';\n html += ' \t\t
    ' + db[i].etime + '
    ';\n html += ' \t
    ';\n html += ' \t
    ';\n /*买家印象*/\n html += '\t\t
    ';\n var labels = db[i].lableAndScore.labels;\n if (labels && labels.length > 0) {\n for (var k = 0; k < labels.length; k++) {\n html += '\t\t\t
    ' + labels[k] + '
    ';\n }\n\n }\n html += '\t\t
    ';\n html += ' \t\t
    ' + db[i].edesc + '
    ';\n /*评价图片*/\n if (db[i].eimagelist.length > 0) {\n html += ' \t\t
    ';\n html += ' \t\t\t
    ';\n /*小图*/\n for (var j = 0; j < db[i].eimagelist.length; j++) {\n html += ' \t\t\t\t
    ';\n }\n html += '\t\t\t
    ';\n html += '\t\t\t
    ';\n html += '\t\t\t\t
      ';\n /*大图*/\n for (var k = 0; k < db[i].eimagelist.length; k++) {\n html += '\t\t\t\t\t
    • ';\n }\n html += '\t\t\t\t
    ';\n html += '\t\t\t\t
    ';\n html += '\t\t\t\t\t';\n html += '\t\t\t\t\t';\n html += '\t\t\t\t
    ';\n html += '\t\t\t
    ';\n html += '\t\t
    ';\n }\n /*联想客服*/\n if (db[i].reply.length > 0) {\n for(var r=0; r';\n html += '\t\t\t
    ' + db[i].reply[r].retdesc + '
    ';\n html += '\t\t
    ';\n }\n\n }\n /*追评*/\n if(db[i].addList && db[i].addList.length){\n for(var ii=0,ll=db[i].addList.length; ii= 1 ? '【购买'+day+'天后追评】': '【购买当天追评】';\n }\n html += '\\\n
    \\\n

    '+dayStr+'

    \\\n

    '+db[i].addList[ii].addDesc+'

    ';\n //如果有追评图片\n if(db[i].addList[ii].addEimagelist && db[i].addList[ii].addEimagelist.length){\n html += '
      ';\n for(var iii=0,slist=db[i].addList[ii].addEimagelist,lll=slist.length; iii';\n }\n html += '
    ';\n html+='
    ';\n html += '
    ';\n }\n //如果有追评回复\n function clearNullInArr(arr) {\n if(!arr) return;\n var emp = arr.indexOf(null);\n if(emp>-1){\n arr.splice(emp,1);\n clearNullInArr(arr);\n }\n }\n var zphf = db[i].addList[ii].addReturnList;\n clearNullInArr(zphf);\n if(zphf && zphf.length){\n for(var iii=0,lll=zphf.length; iii';\n html+='

    '+zphf[iii].retdesc+'

    ';\n html += '
    ';\n }\n }\n html +='
    ';\n }\n }\n html += '\t';\n html += '';\n this.$commentList.append(html);\n $('.addcomment-pic-list li').off().on('click',function(){\n showEq($(this).index(),$(this).closest('.addcomment'));\n });\n $('.playBigPic2Img').off().on('click',function(){\n $(this).closest('.playBigPic2').hide().prevAll('.addcomment-pic-list').find('li').removeClass('borderActive').find('.sanjiao2').hide();\n });\n $('.playBigPic2 .assess_btnLeft,.playBigPic2 .assess_btnRight').off().on('click',function(){\n var p = $(this).closest('.addcomment');\n var l = p.find('.addcomment-pic-list li').length;\n var eq = p.find('.addcomment-pic-list li.borderActive').index();\n if($(this).hasClass('assess_btnLeft')){ eq--; }\n else { eq++; }\n if(eq>=l){ eq=0; }\n if(eq<0){ eq= l-1; }\n showEq(eq,p);\n });\n function showEq(eq,p){\n var li = p.find('.addcomment-pic-list li').removeClass('borderActive').eq(eq).addClass('borderActive');\n p.find('.addcomment-pic-list li .sanjiao2').hide();\n li.find('.sanjiao2').show();\n var big = li.find('img').attr('data-big');\n p.find('.playBigPic2').show().find('.playBigPic2Img').html('');\n }\n }\n } else if (data.code == \"000000\" && data.data.comment.length == 0) {\n this.$commentList.html('
    没有更多评论了
    ');\n } else {\n this.$box_comment.html(\"

    暂无评价内容.

    \");\n }\n }catch(e){\n $util.warn('configuration.callback_commentListSuccess 错误 --------------->');\n $util.warn(e);\n }\n },\n /*callback_commentListSuccess: function (data,level,label) {\n try {\n var self = this;\n self.$commentList.empty();\n if (data.code == \"000000\" && data.data.productcommment.length > 0) {\n var db = this.data.comments = data.data.productcommment;\n\n if(data.data.totalpagecount <= 1){\n self.data.totalCount = self.pagebar.data.totalCount = db.length;\n }else{\n if(self.commentNumberObj){\n var mp = {\n '0': 'total',\n '3': 'good',\n '2': 'medium',\n '1': 'bad',\n '10': 'isAdd',\n '9': 'picnum'\n };\n self.data.totalCount = self.pagebar.data.totalCount = data.data.totalpagecount * 10;\n // if(level in mp && mp[level] in self.commentNumberObj && !label) self.data.totalCount = self.pagebar.data.totalCount = self.commentNumberObj[mp[level]];\n // else self.data.totalCount = self.pagebar.data.totalCount = data.data.totalpagecount * 10;\n }\n else self.data.totalCount = self.pagebar.data.totalCount = data.data.totalpagecount * 10;\n }\n self.pagebar.render();\n\n /!*拼接数据*!/\n for (var i = 0; i < db.length; i++) {\n var html = \"\";\n html += '
    ';\n html += ' \t
    ';\n html += ' \t\t
    ' + db[i].euser + '
    ';\n html += '\t\t';\n html += ' \t\t
    ' + db[i].etime + '
    ';\n html += ' \t
    ';\n html += ' \t
    ';\n /!*买家印象*!/\n html += '\t\t
    ';\n var labels = db[i].lableAndScore.labels;\n if (labels && labels.length > 0) {\n for (var k = 0; k < labels.length; k++) {\n html += '\t\t\t
    ' + labels[k] + '
    ';\n }\n\n }\n html += '\t\t
    ';\n html += ' \t\t
    ' + db[i].edesc + '
    ';\n /!*评价图片*!/\n if (db[i].eimagelist.length > 0) {\n html += ' \t\t
    ';\n html += ' \t\t\t
    ';\n /!*小图*!/\n for (var j = 0; j < db[i].eimagelist.length; j++) {\n html += ' \t\t\t\t
    ';\n }\n html += '\t\t\t
    ';\n html += '\t\t\t
    ';\n html += '\t\t\t\t
      ';\n /!*大图*!/\n for (var k = 0; k < db[i].eimagelist.length; k++) {\n html += '\t\t\t\t\t
    • ';\n }\n html += '\t\t\t\t
    ';\n html += '\t\t\t\t
    ';\n html += '\t\t\t\t\t';\n html += '\t\t\t\t\t';\n html += '\t\t\t\t
    ';\n html += '\t\t\t
    ';\n html += '\t\t
    ';\n }\n /!*联想客服*!/\n if (db[i].reply.length > 0) {\n for(var r=0; r';\n html += '\t\t\t
    ' + db[i].reply[r].retdesc + '
    ';\n html += '\t\t
    ';\n }\n\n }\n /!*追评*!/\n if(db[i].addList && db[i].addList.length){\n for(var ii=0,ll=db[i].addList.length; ii 1 ? '【购买'+day+'天后追评】': '【购买当天追评】';\n }\n html += '\\\n
    \\\n

    '+dayStr+'

    \\\n

    '+db[i].addList[ii].addDesc+'

    ';\n //如果有追评图片\n if(db[i].addList[ii].addEimagelist && db[i].addList[ii].addEimagelist.length){\n html += '
      ';\n for(var iii=0,slist=db[i].addList[ii].addEimagelist,lll=slist.length; iii';\n }\n html += '
    ';\n html+='
    ';\n html += '
    ';\n }\n //如果有追评回复\n function clearNullInArr(arr) {\n if(!arr) return;\n var emp = arr.indexOf(null);\n if(emp>-1){\n arr.splice(emp,1);\n clearNullInArr(arr);\n }\n }\n var zphf = db[i].addList[ii].addReturnList;\n clearNullInArr(zphf);\n if(zphf && zphf.length){\n for(var iii=0,lll=zphf.length; iii';\n html+='

    '+zphf[iii].retdesc+'

    ';\n html += '
    ';\n }\n }\n html +='
    ';\n }\n }\n html += '\t';\n html += '';\n this.$commentList.append(html);\n $('.addcomment-pic-list li').off().on('click',function(){\n showEq($(this).index(),$(this).closest('.addcomment'));\n });\n $('.playBigPic2Img').off().on('click',function(){\n $(this).closest('.playBigPic2').hide().prevAll('.addcomment-pic-list').find('li').removeClass('borderActive').find('.sanjiao2').hide();\n });\n $('.playBigPic2 .assess_btnLeft,.playBigPic2 .assess_btnRight').off().on('click',function(){\n var p = $(this).closest('.addcomment');\n var l = p.find('.addcomment-pic-list li').length;\n var eq = p.find('.addcomment-pic-list li.borderActive').index();\n if($(this).hasClass('assess_btnLeft')){ eq--; }\n else { eq++; }\n if(eq>=l){ eq=0; }\n if(eq<0){ eq= l-1; }\n showEq(eq,p);\n });\n function showEq(eq,p){\n var li = p.find('.addcomment-pic-list li').removeClass('borderActive').eq(eq).addClass('borderActive');\n p.find('.addcomment-pic-list li .sanjiao2').hide();\n li.find('.sanjiao2').show();\n var big = li.find('img').attr('data-big');\n p.find('.playBigPic2').show().find('.playBigPic2Img').html('');\n }\n }\n } else if (data.code == \"000000\" && data.data.productcommment.length == 0) {\n this.$commentList.html('
    没有更多评论了
    ');\n } else {\n this.$box_comment.html(\"

    暂无评价内容.

    \");\n }\n }catch(e){\n $util.warn('configuration.callback_commentListSuccess 错误 --------------->');\n $util.warn(e);\n }\n },*/\n /**\n * 添加服务入口\n */\n addCustomerService: function(){\n var _this = this;\n var thinkReg = new RegExp(/^(84|85|86)$/);\n var serviceReg = new RegExp(/^(09|48|A4|76|74|47|04|35|B3|84|85|86)$/);\n var productGroupNum = $p.baseInfo.productGroupNo;\n if(serviceReg.test(productGroupNum)){\n $(\"#container_info .ul-box li[data-index=3]\").show();\n if(thinkReg.test(productGroupNum)){\n //驱动下载\n $('#box_service .self-service .self-service-qd').attr('href',_this.thinkDriverDownloadUrl);\n //保修配置查询\n $('#box_service .self-service .self-service-cx').attr('href', _this.thinkBXPZUrl)\n //服务网点查询\n //$('#box_service .self-service .self')\n }else{\n //驱动下载\n $('#box_service .self-service .self-service-qd').attr('href',_this.lenovoDriverDounloadUrl);\n //保修配置查询\n $('#box_service .self-service .self-service-cx').attr('href', _this.lenovoBXPZUrl)\n //服务网点查询\n //$('#box_service .self-service .self')\n }\n }\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.Configuration = Configuration;\n})(window.PDUtil);\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 规格组件,负责规格相关Dom操作和数据逻辑\n */\n(function () {\n\n\n function Guige(needInit){\n /*定义默认数据结构*/\n this.$container = $('#container_guige');\n this.data = {};\n this.spec = [];\n this.curSpec = [];\n if(needInit)this.init();\n }\n Guige.prototype= {\n constructor: Guige,\n /**\n * 首次渲染时调用\n */\n init: function () {\n var _this = this;\n // if(!window.$p.baseInfo.isHasSpec) return;\n $p.jsonpGuige(function(data){\n\n if(data.status == 0){\n var db = data.result || {};\n _this.data = _this.formatSpecData(db) || {};\n _this.spec = _this.formatSpec(db) || [];\n _this.curSpec = _this.formatCurSpec(window['code'],db) || [];\n }\n _this.buildGuigeDom();\n _this.$spans = $(\"#guige li span\");\n _this.bindGuigeClick();\n })\n\n /*this.bindEvent();\n this.__setGuige();*/\n },\n ifPageInitFlag: true,\n constStr:{\n classNameActive: 'active',\n classNameDisabled: 'down_line'\n },\n _ggclick: function(event){\n var _this = window.$p.components.guige;\n var $this = $(this), rowId = $this.parent().attr('id');\n if(_this.ifPageInitFlag){\n _this.ifPageInitFlag = false;\n var _textarr =[];\n var thisText = $this.text();\n var isactive = $this.hasClass(_this.constStr.classNameActive);\n $this.parent().find('span').removeClass(_this.constStr.classNameActive);\n $.each($(\"#guige span.active\"),function(i,v){\n _textarr.push($(v).text());\n })\n if(isactive){\n _this.$spans.removeClass(_this.constStr.classNameActive);\n if(_this.spec.length == 3){\n $.each(_this.$spans,function(i,v){\n if($(v).text() == _textarr[0] || $(v).text() == _textarr[1] ){\n $(v).click();\n }\n })\n }else if(_this.spec.length == 2){\n $.each(_this.$spans,function(i,v){\n if($(v).text() == _textarr[0]){\n $(v).click();\n }\n })\n }\n return;\n }\n\n //点击其他没有选中的规格,\n switch (_this.spec.length){\n case 3 :\n if(_this.data[_textarr[0]] && _this.data[_textarr[0]][_textarr[1]] && _this.data[_textarr[0]][_textarr[1]][thisText]){\n if(/^\\d+$/.test(_this.data[_textarr[0]][_textarr[1]][thisText])){\n $this.addClass(_this.constStr.classNameActive);\n window.location.href = _this.data[_textarr[0]][_textarr[1]][thisText] + '.html';\n return;\n }\n }\n _this.$spans.removeClass(_this.constStr.classNameActive);\n break;\n case 2 :\n if(_this.data[_textarr[0]] && _this.data[_textarr[0]][thisText]){\n if(/^\\d+$/.test(_this.data[_textarr[0]][thisText])){\n $this.addClass(_this.constStr.classNameActive);\n window.location.href = _this.data[_textarr[0]][thisText] + '.html';\n return;\n }\n }\n _this.$spans.removeClass(_this.constStr.classNameActive);\n break;\n }\n }\n $this.siblings('span').removeClass(_this.constStr.classNameActive);\n if($this.hasClass(_this.constStr.classNameActive)){\n $this.removeClass(_this.constStr.classNameActive);\n if(_this._getActiveNums()===2){\n if(!$this.data('last')){\n _this.twoChoosed.rowid = _this.lastChoosed.rowid;\n _this.twoChoosed.activeIndex = _this.lastChoosed.activeIndex;\n }\n $this.removeData('last');\n }\n _this._clacPaint('unchecked');\n }else{\n $this.addClass(_this.constStr.classNameActive);\n if(_this._getActiveNums()===2){\n _this.twoChoosed.rowid = rowId;\n _this.twoChoosed.activeIndex = $this.index()-1;\n }else if(_this._getActiveNums()===3){\n $('#guige li span').removeData('last');\n _this.lastChoosed.rowid = rowId;\n _this.lastChoosed.activeIndex = $this.data('last',true).index()-1;\n }\n _this._clacPaint('checked',$this);\n }\n _this._forwardUrl();\n },\n _getActiveNums: function(){\n return $('#guige li span.'+this.constStr.classNameActive).length;\n },\n _clacPaint: function(checked,clickedItem){\n var _this = this;\n var activeNums = _this._getActiveNums();\n switch(activeNums){\n case 0:\n $('#guige li span.'+_this.constStr.classNameDisabled).removeClass(_this.constStr.classNameDisabled).on('click',_this._ggclick);\n break;\n case 1:\n if(checked==='checked'){\n $('#guige li[id!='+clickedItem.parent().attr('id')+'] span').each(function(){\n var item = $(this), v = item.text();\n if(v in _this.data[clickedItem.text()]){\n item.hasClass(_this.constStr.classNameDisabled) && item.removeClass(_this.constStr.classNameDisabled).on('click',_this._ggclick);\n }else{\n item.addClass(_this.constStr.classNameDisabled).off();\n }\n });\n }else if(checked==='unchecked'){\n $('#guige li span.'+_this.constStr.classNameActive).removeClass(_this.constStr.classNameActive).trigger('click').siblings('span.'+_this.constStr.classNameDisabled).removeClass(_this.constStr.classNameDisabled).on('click',_this._ggclick);\n }\n break;\n case 2:\n if(checked==='checked'){\n var firstChecked = $('#guige li span.'+_this.constStr.classNameActive).not(clickedItem[0]);\n var guiges = _this.spec.length || 0;\n var data;\n if(guiges===3) data = _this.data[firstChecked.text()][clickedItem.text()];\n else if(guiges===2) data = _this.data[firstChecked.text()];\n $('#guige li[id!='+clickedItem.parent().attr('id')+'] span').each(function(){\n var loopThis = $(this);\n if(loopThis.hasClass('active')) return;\n if(loopThis.text() in data){\n loopThis.hasClass(_this.constStr.classNameDisabled) && loopThis.removeClass(_this.constStr.classNameDisabled).on('click',_this._ggclick);\n }else{\n loopThis.addClass(_this.constStr.classNameDisabled).off();\n }\n });\n }else if(checked==='unchecked'){\n if(_this.twoChoosed.rowid){\n $('#guige li[id!='+_this.twoChoosed.rowid+'] span.'+_this.constStr.classNameActive).removeClass(_this.constStr.classNameActive).trigger('click');\n $('#guige li[id='+_this.twoChoosed.rowid+'] span:eq('+_this.twoChoosed.activeIndex+')').removeClass(_this.constStr.classNameActive).trigger('click');\n }\n }\n break;\n case 3:\n var lastData = _this.data[clickedItem.text()];\n $('#guige li[id!='+clickedItem.parent().attr('id')+'] span').each(function(){\n var loopItem = $(this);\n if(loopItem.text() in lastData){}\n else{\n loopItem.removeClass(_this.constStr.classNameActive).addClass(_this.constStr.classNameDisabled).off();\n }\n });\n break;\n }\n },\n _forwardUrl: function(){\n var _this =this;\n var checkeds = $('#guige span.'+_this.constStr.classNameActive), code;\n var guiges = _this.spec.length || 0;\n if(checkeds.length===guiges){\n if(guiges===1 && _this.data[checkeds.eq(0).text()]){\n code = _this.data[checkeds.eq(0).text()];\n }else if(guiges===2 && _this.data[checkeds.eq(0).text()] && _this.data[checkeds.eq(0).text()][checkeds.eq(1).text()]){\n code = _this.data[checkeds.eq(0).text()][checkeds.eq(1).text()];\n }else if(guiges===3 && _this.data[checkeds.eq(0).text()] && _this.data[checkeds.eq(0).text()][checkeds.eq(1).text()] && _this.data[checkeds.eq(0).text()][checkeds.eq(1).text()][checkeds.eq(2).text()]){\n code = _this.data[checkeds.eq(0).text()][checkeds.eq(1).text()][checkeds.eq(2).text()];\n }\n if(code == window['code']){\n _this.ifPageInitFlag = true;\n $.each(_this.$spans,function(i,v){\n var $v = $(v);\n if($v.hasClass(_this.constStr.classNameDisabled)){\n $v.removeClass(_this.constStr.classNameDisabled).off().on('click',_this._ggclick);\n }\n });\n return;\n }\n if(code){ window.location.href = code + '.html'; }\n }\n\n },\n buildGuigeDom: function(){\n var _this =this;\n var l=_this.spec.length;\n var specNumber = _this.curSpec.length;\n if(l==0) return _this;\n var html = '';\n _this.$container.html(html);\n //根据数据初始选中项\n for(var i=0,l=_this.curSpec.length; i 0){\n _this.$container.show();\n }else{\n _this.$container.hide();\n }\n }\n )\n },\n renderDom:function () {\n var list = this.data.all;\n var html = '';\n if (list.length ==0) return false;\n /*循环所有赠品,判断如果在有效期内就显示*/\n for (var i = 0; i < list.length; i++) {\n if (i == 3) break;\n var noBorder = i == 2 ? ' noborder' : '';\n var o = list[i];\n /*向DOM中追加元素*/\n html += '';\n }\n if (html.length > 0) {\n this.$box.append(html);\n this.$container.removeClass('hidden');\n }\n },\n /**\n * 绑定必选赠品的事件\n */\n bindEvent: function () {\n\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function (callback) {\n var _this = this;\n $p.loadHostList({}, function (data) {\n if (data.status == 200) {\n _this.data.all = data.data;\n }\n callback && callback(data.data);\n })\n }\n };\n if(!window.components){\n window.components = {};\n }\n window.components.HotList = HotList;\n})();\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 可选赠品组件,负责相关信息的Dom操作和数据逻辑\n */\n(function () {\n var PDUtil = window.PDUtil;\n function KeXuanZengPin(needInit){\n /*定义默认数据结构*/\n this.data = {\n all:[],/*所有可选赠品集合*/\n selectedArray:[]\n };\n this.$box = $('#div_kexuan');\n this.$button_ok = $('#button_checkgifts_ok');\n this.$button_cancel = $('#button_checkgifts_cancel');\n this.$a_close = $('#a_close_chose');\n this.hasChecked = false;\n if(needInit)this.init();\n }\n KeXuanZengPin.prototype= {\n constructor: KeXuanZengPin,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.getAllData();\n this.renderDom();\n this.bindEvent();\n },\n renderDom:function () {\n var gifts = $p.components.bxzp.data.all;\n /*必选赠品*/\n var giftsSelectable = this.data.all;\n /*可选赠品*/\n var html = '';\n /*先循环必选赠品*/\n for (var i = 0; i < gifts.length; i++) {\n var o = gifts[i];\n /*向DOM中追加元素*/\n html += '';\n }\n /*循环可选赠品*/\n html += '';\n if (html.length > 0) {\n this.$box.find('.box-body').append(html);\n }\n },\n /**\n * 绑定可选赠品的事件\n */\n bindEvent: function () {\n var _this = this;\n _this.$a_close.on('click', function () {\n _this.closeCheckBox();\n });\n _this.$button_cancel.on('click', function () {\n _this.closeCheckBox();\n });\n\n /*点击可选赠品事件*/\n _this.$box.find('.box-body ul.kxzp li').on('click', function () {\n PDUtil.debug('zengpin click-------------->');\n PDUtil.debug('hasChecked:' + _this.hasChecked);\n PDUtil.debug('selectedArray:' + _this.data.selectedArray.length);\n\n var $this = $(this);\n if(!$this.hasClass('checked')){\n var code = $this.attr('data-code');\n var $prev = $this.siblings('.checked').removeClass('checked');\n _this.data.selectedArray = PDUtil.dropSome(_this.data.selectedArray, function (o) {return o.code == $prev.attr('data-code');});\n\n var exists = PDUtil.findFirst(_this.data.selectedArray, function(o){return o.code == code});\n if(!exists){\n var g = PDUtil.findFirst(_this.data.all, function(o){return o.code==code});\n _this.data.selectedArray.push(g);\n $this.parent().find('span.name').text(g && g.goodsName);\n }\n $this.addClass('checked');\n }else{\n /*用户点击已选中的赠品,在已选择的列表中删除*/\n $this.removeClass('checked');\n _this.data.selectedArray = PDUtil.dropSome(_this.data.selectedArray, function (o) {\n return o.code == $this.attr('data-code');\n })\n }\n });\n\n /*选择赠品确定事件*/\n _this.$button_ok.on('click', function () {\n PDUtil.debug('OK click-------------->');\n PDUtil.debug('hasChecked:' + _this.hasChecked);\n PDUtil.debug('selectedArray:' + _this.data.selectedArray.length);\n\n var bxzp = $p.components.bxzp;\n if(_this.data.selectedArray.length > 0){\n _this.hasChecked = true;\n bxzp.emptyBoxDom();\n bxzp.renderDom(bxzp.data.all.concat(_this.data.selectedArray));\n _this.closeCheckBox();\n }else{\n /*alert('请选择一个赠品!');*/\n PDUtil.debug('用户点击确定,但是没有选择可选赠品');\n _this.hasChecked = false;\n bxzp.emptyBoxDom();\n _this.closeCheckBox();\n }\n });\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function () {\n var _data = $p.processKXZPNeedShowList();\n this.data.all = _data;\n return _data;\n },\n /**\n * 获取用户选择的可选赠品\n * @returns {Array}\n */\n getKXZP: function () {\n var result = [];\n for (var i = 0; i < this.data.selectedArray.length; i++){\n result.push(this.data.selectedArray[i].code);\n }\n return result;\n },\n closeCheckBox: function () {\n var _this = this;\n\n var $box = this.$box;\n if(_this.hasChecked == false){\n _this.data.selectedArray = [];\n _this.$box.find('.box-body ul.kxzp li.checked').removeClass('checked');\n }\n $box.animate({width:10, height:10}, function () {\n $box.removeAttr('style').hide();\n if(_this.data.selectedArray.length == 0) {\n $p.components.bxzp.showCheckButton();\n }else{\n $p.components.bxzp.showEditButton();\n }\n });\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.KeXuanZengPin = KeXuanZengPin; \n})();\n\n/**\n * Created by liuyc14 on 2017/03/01.\n * 分页组件\n */\n(function ($util) {\n function PageBar($container, onPageChange){\n /*定义默认数据结构*/\n this.data = {\n totalCount: 0,\n pageSize: 10,\n pageIndex: 1,\n interval: 3,\n onPageChange: onPageChange\n };\n\n this.$container = $container;\n }\n PageBar.prototype= {\n constructor: PageBar,\n /**\n * 首次渲染时调用\n */\n render: function () {\n try{\n var self = this;\n self.$container.empty();\n /*上一页*/\n if (self.data.pageIndex == 1) {\n self.$container.append(\n '
  • '+\n '上一页'+\n '
  • '\n );\n }\n else {\n var $pre = $(\n '
  • '+\n '上一页'+\n '
  • '\n ).on('click', function () {\n try{\n self.data.onPageChange(self.data.pageIndex - 1);\n }catch(e){\n $util.warn(e);\n }\n return false;\n });\n self.$container.append($pre);\n }\n /*页码*/\n var pagecount = Math.ceil(self.data.totalCount / self.data.pageSize); //总页数\n var start = Math.max(1, self.data.pageIndex - self.data.interval); //设置起始页\n var end = Math.min(self.data.pageIndex + self.data.interval, pagecount); //设置末页\n if (self.data.pageIndex < self.data.interval + 1) {\n end = (2 * self.data.interval + 1) > pagecount ? pagecount : (2 * self.data.interval + 1);\n }\n if ((self.data.pageIndex + self.data.interval) > pagecount) {\n start = (pagecount - 2 * self.data.interval) < 1 ? 1 : (pagecount - 2 * self.data.interval);\n }\n for (var j = start; j < end + 1; j++) {\n if (j == self.data.pageIndex) {\n self.$container.append('
  • '+j+'
  • ');\n } else {\n var $pagebtn = $('
  • '+j+'
  • ').on('click', function () {\n try{\n self.data.onPageChange(parseInt($(this).text()));\n }catch(e){\n $util.warn(e);\n }\n return false;\n });\n self.$container.append($pagebtn);\n }\n }\n /*末页*/\n if (self.data.pageIndex == pagecount || self.data.totalCount == 0) {\n self.$container.append(\n '
  • '+\n '下一页'+\n '
  • '\n );\n }\n else {\n var $next = $(\n '
  • '+\n '下一页'+\n '
  • '\n ).on('click', function () {\n try{\n self.data.onPageChange(parseInt(self.data.pageIndex + 1));\n }catch(e){\n $util.warn(e);\n }\n return false;\n });\n self.$container.append($next);\n }\n self.$container.append(\"
  • 显示\" + ((self.data.pageIndex - 1) * self.data.pageSize + 1) + \"-\" + (self.data.pageIndex * self.data.pageSize > self.data.totalCount ? self.data.totalCount : self.data.pageIndex * self.data.pageSize) + \"条,共\" + pagecount + \"页
  • \");\n var pageNum = $('
  • 到第
  • ');\n var gotoPage = $('
  • ').on('click', function(){\n try{\n var p =parseInt(pageNum.find(\"input\").val());\n if(p > pagecount || p <= 0 || isNaN(p)){\n alert(\"当前一共\"+pagecount+\"页,请输入正确的页码。\");\n return false;\n }\n self.data.onPageChange(p);\n }catch(e){\n $util.warn(e);\n }\n });\n self.$container.append(pageNum).append(gotoPage);\n }catch(e){\n $util.warn('PageBar组件=> render方法错误 ----------->');\n $util.warn(e);\n }\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.PageBar = PageBar;\n})(window.PDUtil);\n\n/**\n * Created by liuyc14 on 2017年4月17日16:01:11.\n * 轮播图组件\n */\n(function () {\n function PlayPicture(needInit){\n /*定义默认数据结构*/\n this.data = {\n initPicList:[]/*橱窗图原始数据*/\n };\n this.$container = $('#detail_playPicture');\n this.$winpic = $('#winpic');\n this.$button_left = $('#play_picture_leftbtn');\n this.$button_right = $('#play_picture_rightbtn');\n this.$div_list = $('#detail_playPicture_list');\n this.$ul = $('#detail_playPicture_list ul');\n this.maxShowNumber = 5;/*缩略图最大展示数量*/\n this.currentIndex = 1;/*当前index 从1开始*/\n this.windowIndex = 1;/*当前展示的缩略图的可视区域位置 从1开始*/\n this.page = 1;\n this.totalPage = 1;\n this.totalCount = 0;/*图片总数*/\n if(needInit) this.init();\n }\n PlayPicture.prototype= {\n constructor: PlayPicture,\n /**\n * 首次渲染时调用\n */\n init: function () {\n try{\n this.__initCount();\n this.__initGoodPicList();\n }catch(e){\n window.PDUtil.debug('轮播图__initCount方法error--------->');\n window.PDUtil.warn(e);\n }\n /*if (this.totalPage == 1) {\n this.$button_down.hide();\n }*/\n this.bindEvent();\n this.$container.show();\n this.showWithIndex(1);\n },\n /**\n * 初始化产品原始橱窗图数据\n * @private\n */\n __initGoodPicList: function(){\n var self = this;\n this.$ul.find(' > li > a > img').each(function () {\n var $this = $(this);\n self.data.initPicList.push({\n 'src': $this.attr('src'),\n 'name': $this.attr('alt')\n });\n });\n },\n __initCount: function () {\n this.currentIndex = 1;\n this.windowIndex = 1;\n this.page = 1;\n this.totalCount = this.$ul.find('>li').length;\n //this.$button_up.hide();\n if (this.totalCount == this.maxShowNumber) {\n this.totalPage = 1;\n } else {\n this.totalPage = parseInt(this.totalCount / this.maxShowNumber) + 1;\n }\n this.setButtonShow();\n },\n /**\n * 判断箭头按钮的显示隐藏\n */\n setButtonShow: function () {\n var self = this;\n /*判断向左按钮显示隐藏*/\n if(self.currentIndex <= 1){\n self.$button_left.css('opacity', '0.3').attr('disable','disable');\n }else{\n self.$button_left.css('opacity', '1.0').removeAttr('disable');\n }\n\n /*判断向右按钮显示隐藏*/\n if(self.currentIndex >= this.totalCount){\n self.$button_right.css('opacity', '0.3').attr('disable','disable');\n }else{\n self.$button_right.css('opacity', '1.0').removeAttr('disable');\n }\n },\n bindEvent: function () {\n var _this = this;\n\n /*单击某一张图片*/\n this.$ul.on('click', 'li', function () {\n var $this = $(this);\n if($this.hasClass('checked')){\n return false;\n }\n var index = parseInt($this.attr('data-index'));\n _this.showWithIndex(index);\n _this.setButtonShow();\n });\n /*上一张图片*/\n this.$button_left.on('click', function () {\n if(_this.currentIndex <= 1) return false;\n\n if(_this.windowIndex == 1){\n _this.gotoPrevPage();\n }else{\n _this.showWithIndex(_this.currentIndex - 1);\n }\n _this.setButtonShow();\n });\n /*下一张图片*/\n this.$button_right.on('click', function () {\n if(_this.currentIndex >= _this.totalCount) return false;\n if(_this.windowIndex == _this.maxShowNumber){\n _this.gotoNextPage();\n }else{\n _this.showWithIndex(_this.currentIndex + 1);\n }\n _this.setButtonShow();\n });\n },\n /**\n * 重新渲染图库\n * @param data\n */\n renderPicture: function (data) {\n if(data && (data instanceof Array)){\n if(data.length == 0){\n data = this.data.initPicList;\n }\n var html = '';\n for(var i = 0; i < data.length; i++){\n html += '
  • '\n + ''\n + '\"'+
  • ';\n }\n this.$ul.empty().append(html);\n\n this.__initCount();\n this.showWithIndex(1);\n }\n },\n showWithIndex: function (index) {\n var $this = this.$ul.find('li').eq(index - 1);\n this.currentIndex = index;\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n },\n gotoNextPage: function () {\n if (this.page >= this.totalPage) return false;\n this.$ul.css('left', '-=' + (this.maxShowNumber * 96));\n this.page++;\n this.showFirstImage();\n //this.$button_up.show();\n /*\n if(this.page == this.totalPage){\n this.$button_down.hide();\n }else{\n this.$button_down.show();\n }*/\n },\n gotoPrevPage: function () {\n if (this.page <= 1) return false;\n this.$ul.css('left', '+=' + (this.maxShowNumber * 96));\n this.page--;\n this.showMaxImage();\n //this.$button_down.show();\n /*\n if(this.page == 1){\n this.$button_up.hide();\n }else{\n this.$button_up.show();\n }*/\n },\n /*显示缩略图对应的大图*/\n showBigImage: function (src) {\n var showSrc = this.getBigPicSrc(src);\n if(!showSrc){\n return false;\n }\n this.$winpic.attr('src', showSrc);\n },\n /*获取缩略图对应的大图路径*/\n getBigPicSrc: function (src) {\n if(!src) {\n return \"\";\n }\n var width = 520;\n var result = src.replace(/w\\d{2,3}\\.(jpg|png|jpeg)$/gi, 'w' + width + '.$1');\n return result;\n },\n /**\n * 根据当前page和 currentIndex计算出windowIndex\n */\n getWindowIndex: function () {\n return this.windowIndex = this.currentIndex - (this.page - 1) * this.maxShowNumber;\n },\n setCheckImage: function () {\n /*this.$div_checked.css('left', ((this.windowIndex - 1) * 96 + 10));*/\n var self = this;\n self.$ul.find('li.checked').removeClass('checked');\n self.$ul.find('li').eq(self.currentIndex - 1).addClass('checked');\n },\n /**\n * 显示当前可视区域第一张图片\n */\n showFirstImage: function () {\n this.currentIndex = (this.page - 1) * this.maxShowNumber + 1;\n var $this = this.$ul.find('li').eq(this.currentIndex - 1);\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n },\n /**\n * 显示当前可视区域最后一张图片\n */\n showMaxImage: function () {\n this.currentIndex = this.page * this.maxShowNumber;\n var $this = this.$ul.find('li').eq(this.currentIndex - 1);\n this.getWindowIndex();\n this.setCheckImage();\n this.showBigImage($this.find('img').first().attr('src'));\n }\n };\n if(window.PDUtil.isRunInNode() == true && module && module.exports){\n module.exports = PlayPicture;\n }else{\n if(!window.components){\n window.components = {};\n }\n window.components.PlayPicture = PlayPicture;\n }\n})();\n/**\n * Created by liuyc14 on 2016/10/18.\n * title组件,负责商品title相关Dom操作和数据逻辑\n */\n(function ($util) {\n var needShow = 0;\n function PromotionInfo(needInit){\n /*定义默认数据结构*/\n this.data = {};\n this.$container = $('#container_cuxiao');\n this.$box = $('#div_promotion');\n this.reservationId = 0; /*闪购预约id*/\n if(needInit)this.init();\n }\n\n PromotionInfo.prototype= {\n constructor: PromotionInfo,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.renderDom();\n },\n renderDom: function () {\n var data = window.$p.baseInfo;\n this.$box.empty();\n var promotion = window.$p.promotion;\n var activity = window.$p.activity;\n var nowNumber = window.$p.nowNumber;\n if(promotion){\n this.setXDLJ(promotion, nowNumber);\n this.setMJ(promotion, nowNumber);\n }\n if(activity){\n this.setXSQG(activity, nowNumber);\n this.setShangou(activity, nowNumber);\n }\n this.setPresell();\n /*促销语*/\n if (data.pcPromotion) {\n this.$box.append('
    ' + data.pcPromotion + '
    ');\n needShow++;\n }\n /*内购额度*/\n if (data.purchase && !isNaN(data.purchase)) {\n var p = parseFloat(data.purchase).toFixed(2);\n if($(\"#pc_promotion\")[0]){\n $(\"#pc_promotion\").prepend('
    【内购额度】支持最大内购额度:' + p + '
    ')\n }else{\n this.$box.prepend('
    【内购额度】支持最大内购额度:' + p + '
    ');\n }\n needShow++;\n }\n\n /*主推语*/\n if (data.extensionTerminal.indexOf(\"pc\")!=-1 && data.extensionContent) {\n this.$box.append('
    ' + data.extensionContent + '
    ');\n needShow++;\n }\n if(needShow) this.$container.removeClass('hidden');\n },\n /**\n * 设置下单立减\n */\n setXDLJ: function (promotion, nowNumber) {\n if(promotion.saleReduction){\n /*下单立减未结束*/\n if(nowNumber < promotion.saleReduction.totime){\n needShow++;\n this.$box.append('
    下单立减
      
    ');\n var $des = $(\"#promotion_xdlj span.des\");\n var $djs = $(\"#promotion_xdlj span.djs\");\n /*下单立减未开始*/\n if(nowNumber < promotion.saleReduction.fromtime){\n $des.html('下单立减' + promotion.saleReduction.discountAmount + '元,活动开始时间:' + promotion.saleReduction.fromtimeStr);\n }\n /*下单立减进行中*/\n else{\n $des.html('下单立减' + promotion.saleReduction.discountAmount + '元');\n $util.timer(\n promotion.saleReduction.totime - nowNumber,\n function (str) {\n $djs.html('距离结束时间还有:'+str);\n }, function () {\n $djs.hide();\n $(\"#promotion_xdlj\").hide();\n });\n }\n }\n /*下单立减结束*/\n else{}\n }\n },\n /**\n * 设置满减\n */\n setMJ: function (promotion, nowNumber) {\n try{\n /*满减*/\n if(promotion.fullReduction){\n /*满减进行中*/\n if(nowNumber > promotion.fullReduction.fromtime && nowNumber < promotion.fullReduction.totime){\n needShow++;\n var html = '
    满      减
      ';\n var list = promotion.fullReduction.fullsetList;\n for(var i = 0; i < list.length; i++) {\n html += '
    • 满' + list[i].full + '减' + list[i].reduce + '
    • ';\n }\n html += '
    ';\n this.$box.append(html);\n }\n }\n }catch (e){\n $util.warn('促销组件=> setMJ方法错误------------>');\n $util.warn(e);\n }\n },\n /**\n * 设置预售\n */\n setPresell: function () {\n var $p = window['$p'];\n if($p.baseInfo.salesType != 2) return false;\n if($p.baseInfo.marketable != 1) return false;\n needShow++;\n this.$box.append('
    预       售
    定金: 预售规则>>
    ');\n var $div = $('#promotion_presell');\n var $djs = $('#promotion_presell span.djs');\n var $des = $('#promotion_presell span.des');\n\n getPresellInfo();\n function getPresellInfo(){\n $p.loadPresellInfo({}, function (data) {\n if(data && data['success']){\n var sell = data['t'] || {};\n //debug_presell(sell);\n sucessHandler(sell);\n }else{\n $util.warn('获取预售信息失败');\n }\n });\n }\n function sucessHandler(sell){\n if(sell.disabled != 1){\n return false;\n }\n if(sell.terminalname && sell.terminalname.indexOf('PC') < 0){\n $p.components.buygroup && $p.components.buygroup.setBuyButton('商品不在该平台预售', true);\n return false;\n }\n $div.show();\n if(sell.presellway == 1) sell.deposit = $p.baseInfo.price; //如果是全款,定金为商品价格\n $des.html('定金:' + sell.deposit);\n sell.activitystarttime_date = new Date(sell.activitystarttime.replace(/-/g,\"/\"));\n sell.activityendtime_date = new Date(sell.activityendtime.replace(/-/g,\"/\"));\n sell.presellstarttime_date = new Date(sell.presellstarttime.replace(/-/g,\"/\"));\n sell.currentdatetime_date = new Date(sell.currenttime.replace(/-/g,\"/\"));\n\n\n\n /*没到活动支付时间*/\n if(sell.currentdatetime_date < sell.presellstarttime_date){\n sell.process = 1;\n setPreheat(sell); //预热阶段\n }\n /*到了支付时间,但是没到活动结束时间*/\n else if(sell.currentdatetime_date >= sell.presellstarttime_date && sell.currentdatetime_date < sell.activityendtime_date){\n sell.process = 2;\n if($p.baseInfo.stock <= 0) {\n $p.components.buygroup.setBuyButton('已售罄', true);\n return false;\n }\n setPay(sell); //支付定金阶段\n }else{\n sell.process = 3;\n setEnd(sell); //预售结束,显示剩余支付时间\n }\n }\n //预热阶段\n function setPreheat(sell) {\n $p.components.buygroup.setBuyButton('敬请期待', true);\n $util.timer(\n sell.presellstarttime_date - sell.currentdatetime_date,\n function (stime) {\n $djs.html('距离预售正式开始还有:' + stime);\n },\n function () {\n $djs.html('');\n getPresellInfo();\n });\n }\n //支付定金阶段\n function setPay(sell) {\n var text = sell.presellway == 1 ? '支付全款' : '支付定金';\n $p.components.buygroup.setBuyButton(text, false).off('click');/*将立即购买按钮设置为可用并去掉之前绑定的click事件*/\n $p.components.buygroup.setBuyButtonClickHandler();/*购买按钮绑定默认的立即购买事件*/\n $util.timer(\n sell.activityendtime_date - sell.currentdatetime_date,\n function (stime) {\n $djs.html('距离定金支付结束还有:' + stime);\n },\n function () {\n $djs.html('');\n getPresellInfo();\n });\n }\n //预售结束\n function setEnd(){\n $p.components.buygroup.setBuyButton('预售结束', true);\n $des.html('预售结束');\n $djs.html('');\n }\n },\n /**\n * 设置限时抢购\n */\n setXSQG: function (activity, nowNumber) {\n if(window.$p.baseInfo.activityType != '3') return false;\n if(window.$p.activity && window.$p.activity.flushSaleJson && window.$p.activity.flushSaleJson.status == 'AFTER') return false;\n var html = '
    限时抢购
      
    ';\n needShow++;\n this.$box.append(html);\n var $des = $('#promotion_xsqg span.des');\n processStatus(activity.flushSaleJson);\n\n function refreshStatus(){\n window.$p.loadAllProductionInfo(\n function(){\n processStatus(window.$p.activity.flushSaleJson);\n },\n function () {\n alert('暂时无法获取活动信息, 请刷新页面重试');\n }\n );\n }\n\n function processStatus(flushSaleJson){\n if (flushSaleJson.status == 'IN') { // 在时间段内\n $des.html('');\n window.$p.components.buygroup.refreshBuyButton();\n\n $util.timer(\n flushSaleJson.totime - nowNumber,\n function (stime) {\n $des.html('距离结束时间还有: ' + stime);\n },\n function () {\n refreshStatus();\n });\n }\n else if(flushSaleJson.status == 'BEFORE'){\n window.$p.components.buygroup.refreshBuyButton();\n $des.html(flushSaleJson.fromtimeStr + ' 开始进行限时抢购');\n }else{\n /*活动结束*/\n /** ****隐藏抢购提示,恢复购物车按钮********** */\n window.$p.baseInfo.showPrice = window.$p.baseInfo.price;\n window.$p.components.buygroup.updatePrice(window.$p.baseInfo.price);\n $des.html('限时抢购已经结束');\n window.$p.components.buygroup.refreshBuyButton();\n if (window.$p.baseInfo.stock > 0) {\n window.$p.components.buygroup.$button_shoppingcart.off('click');\n window.$p.components.buygroup.setAddCartButtonClickHandler().show();\n }\n }\n }\n },\n /**\n * 设置闪购\n */\n setShangou:function () {\n if(window.$p.isShowShangou() == false) return false;\n if (window.$p.activity && window.$p.activity.ShanGou && window.$p.activity.ShanGou.endNumber\n && (window.$p.nowNumber > window.$p.activity.ShanGou.endNumber)) return false;\n var _this = this;\n initWindow();\n var html = '
    闪      购
      
    ';\n needShow++;\n this.$box.append(html);\n var $shangou = $('#promotion_shangou');\n var $des = $('#promotion_shangou span.des');\n var $djs = $('#promotion_shangou span.djs');\n processShangou();\n\n function refreshShangou(){\n window.$p.loadAllProductionInfo(\n function(){\n window.$p.components.buygroup.updatePrice(window.$p.baseInfo.showPrice);\n processShangou();\n },\n function () {\n alert('暂时无法获取活动信息, 请刷新页面重试!');\n }\n );\n }\n\n function processShangou() {\n var $p = window['$p'];\n var shangou = $p.activity.ShanGou;\n var nowNumber = $p.nowNumber;\n switch (shangou.type) {\n case 0:\n /*非预约闪购*/\n if (nowNumber < shangou.startNumber) {\n $p.components.buygroup.setBuyButton('闪购未开始', true);\n $util.timer(shangou.startNumber - nowNumber,\n function (stime) {\n $des.html('距离闪购开始时间: ' + stime);\n },\n function () {\n // refreshShangou();\n location.reload();\n });\n }\n else if (nowNumber > shangou.startNumber && nowNumber < shangou.endNumber) {\n $des.html(\"闪购结束时间: \" + shangou.endTimeStr);\n if ($p.baseInfo.stock > 0) {\n $p.components.buygroup.setBuyButton('立即购买', false, $p.components.buygroup.ljgm);\n }else {\n $p.components.buygroup.setBuyButton('已售罄', true);\n }\n $util.timer(shangou.endNumber - nowNumber,\n function (stime) {\n $djs.html('距离闪购结束时间: ' + stime);\n },\n function () {\n // refreshShangou();\n location.reload();\n });\n }\n else {\n /*else if (nowNumber > shangou.endNumber)*/\n $shangou.hide();\n $p.components.buygroup.setBuyButton('闪购已结束', true);\n }\n break;\n case 1:// 预约闪购\n if (nowNumber < shangou.yystartNumber) {// 未到预约时间\n $des.html('预约开始时间: ' + shangou.yystartTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('预约未开始', true);\n }\n else if ((nowNumber >= shangou.yystartNumber) && (nowNumber <= shangou.yyendNumber)) {// 在预约时间段内\n $des.html(\"预约结束时间: \" + shangou.yyendTimeStr);\n $djs.html('');\n if (window.passport && passport.isLogin()) {\n $p.jsonpIsBookUser(function (data) {\n if (data.rc == \"0\") {\n // 1 已预约 0 未预约\n if (data.status == \"1\") {\n // 当前用户如果已预约,闪购开始时将显示立即购买按钮\n $p.components.buygroup.setBuyButton('已预约', true);\n } else {\n $p.components.buygroup.setBuyButton('立即预约', false, $p.components.buygroup.ljyy);\n }\n } else {\n $p.components.buygroup.setBuyButton('立即预约', false, $p.components.buygroup.ljyy);\n }\n });\n } else {\n $p.components.buygroup.setBuyButton('立即预约', false, $p.components.buygroup.ljyy);\n }\n }\n else if ((nowNumber > shangou.yyendNumber) && (nowNumber < shangou.startNumber)) {// 在预约结束闪购未开始\n $des.html(\"闪购开始时间: \" + shangou.startTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('闪购未开始', true);\n $util.timer(shangou.startNumber - nowNumber,\n function (stime) {\n $djs.html('距离闪购开始时间: ' + stime);\n },\n function () {// 距离闪购还剩多少时间\n refreshShangou();\n });\n }\n else if ((nowNumber > shangou.startNumber) && (nowNumber < shangou.endNumber)) {// 闪购时间段内\n $des.html(\"闪购结束时间: \" + shangou.endTimeStr);\n $djs.html('');\n if ($p.baseInfo.stock > 0) {\n $p.components.buygroup.setBuyButton('立即购买', false, $p.components.buygroup.ljgm_sg);// 立即购买效验是否预约\n } else {\n $p.components.buygroup.setBuyButton('已售罄', true);\n }\n }\n else {\n /*else if (nowNumber > shangou.endNumber)*/\n $shangou.hide();\n $p.components.buygroup.setBuyButton('闪购已结束', true);\n }\n break;\n case 2:// 预约提前购买 非预约闪购开始时间(11点)晚于闪购时间(10点)\n if (nowNumber < shangou.yystartNumber) {// 预约未开始前\n $des.html(\"预约开始时间: \" + shangou.yystartTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('预约未开始', true);\n $util.timer(shangou.yystartNumber - nowNumber, function (stime) {\n $djs.html('距离预约开始时间: ' + stime);\n }, function () {\n refreshShangou();/*reload*/\n });\n }\n else if (nowNumber > shangou.yystartNumber && nowNumber < shangou.yyendNumber) {// 当前时间大于预约开始时间且小于预约结束时间\n $des.html(\"预约结束时间:\" + shangou.yyendTimeStr);\n $djs.html('');\n if (window.passport && passport.isLogin()) {\n $p.jsonpIsBookUser(function (data) {\n if (data.rc == \"0\") {\n // 1 已预约 0 未预约\n if (data.status == \"1\") {\n // 当前用户如果已预约,闪购开始时将显示立即购买按钮\n $p.components.buygroup.setBuyButton('已预约', true);\n } else {\n $p.components.buygroup.setBuyButton('立即预约', false, $p.components.buygroup.ljyy);\n }\n } else {\n alert('抱歉,您没有预约!');\n }\n });\n } else {\n $p.components.buygroup.setBuyButton('立即预约', false, $p.components.buygroup.ljyy);\n }\n\n $util.timer(shangou.yyendNumber - nowNumber, function (stime) {\n $djs.html('距离预约结束时间: ' + stime);\n }, function () {\n refreshShangou();/*reload*/\n });\n }\n else if (nowNumber > shangou.yyendNumber && nowNumber < shangou.startNumber) {// 当前时间大于预约结束时间且小于预约闪购开始时间\n $des.html('预约闪购开始时间: ' + shangou.startTimeStr + '
    非预约闪购开始时间: ' + shangou.fyyStartTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('闪购未开始', true);\n $util.timer(shangou.startNumber - nowNumber, function (stime) {\n $djs.html('距离闪购开始时间: ' + stime);\n }, function () {\n refreshShangou();/*reload*/\n });\n }\n else if (nowNumber > shangou.startNumber && nowNumber < shangou.fyyStartNumber) {\n // 当前时间大于非预约闪购开始时间且小于闪购结束时间\n // 预约与非预约用户都能买\n if (window.passport && passport.isLogin()) {\n $p.jsonpIsBookUser(function (data) {\n if (data.rc == \"0\") {\n // 1 已预约 0 未预约\n if (data.status == \"1\") {\n $des.html(\"闪购结束时间: \" + shangou.endTimeStr);\n $djs.html('');\n if ($p.baseInfo.stock > 0) {\n $p.components.buygroup.setBuyButton('立即购买', false, $p.components.buygroup.ljgm);\n } else {\n $p.components.buygroup.setBuyButton('已售罄', true);\n }\n } else {\n $des.html('非预约闪购开始时间: ' + shangou.fyyStartTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('闪购未开始', true);\n $util.debug('用户没有预约');\n }\n } else {\n $des.html('非预约闪购开始时间: ' + shangou.fyyStartTimeStr);\n $djs.html('');\n $p.components.buygroup.setBuyButton('闪购未开始', true);\n $util.debug('用户没有预约');\n }\n });\n } else {\n $des.html(\"闪购结束时间: \" + shangou.endTimeStr + '
    非预约闪购开始时间: ' + shangou.fyyStartTimeStr);\n $djs.html('');\n if ($p.baseInfo.stock > 0) {\n $p.components.buygroup.setBuyButton('立即购买', false, $p.components.buygroup.ljgm);\n } else {\n $p.components.buygroup.setBuyButton('已售罄', true);\n }\n }\n }\n else if (nowNumber > shangou.fyyStartNumber && nowNumber < shangou.endNumber) {// 闪购开始与结束时间段内\n $des.html(\"闪购结束时间:\" + shangou.endTimeStr);\n $djs.html('');\n if ($p.baseInfo.stock > 0) {\n $p.components.buygroup.setBuyButton('立即购买', false, $p.components.buygroup.ljgm);\n } else {\n $p.components.buygroup.setBuyButton('已售罄', true);\n }\n }\n else {\n /*else if (nowNumber > shangou.endNumber)*/\n $shangou.hide();\n $p.components.buygroup.setBuyButton('闪购已结束', true);\n }\n break;\n }\n }\n\n function initWindow(){\n $(\"#wsgyy_close\").on('click', function () {\n $('#layer_zhezhao, #window_shangouyy').fadeOut(500);\n });\n\n $('#wsgyy_ok').on('click', function () {\n var phoneNum = $(\"#wsgyy_tel\").val();\n if ($util.checkTelNo(phoneNum)) {\n window.$p.jsonpSaveBookShangouTel({\n reservationId: _this.reservationId,\n phone: phoneNum\n }, function (data) {\n if (data.rc == 0) {\n alert('保存成功!');\n $(\"#wsgyy_close\").trigger('click');\n }else{\n alert('保存失败,请稍后再试!');\n $(\"#wsgyy_close\").trigger('click');\n }\n });\n }\n else{\n alert('请输入正确的手机号');\n }\n });\n }\n\n }\n };\n if(!window.components){\n window.components = {};\n }\n window.components.PromotionInfo = PromotionInfo;\n\n function debug_presell(sell){\n var now = new Date();\n sell.currenttime = now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate()+ ' ' + '14:0'+now.getMinutes()+':' + now.getSeconds();\n sell.activityname = sell.activityname || '测试预售';\n sell.activitystarttime = sell.activitystarttime || '2016-11-21 14:07:00';\n sell.activityendtime = sell.activityendtime || '2016-11-21 14:09:00';\n sell.presellstarttime = sell.presellstarttime || '2016-11-21 14:08:00';\n sell.disabled = 1;\n sell.presellway = sell.presellway || 2;\n sell.deposit = sell.deposit || 200;\n }\n})(window.PDUtil);\n/**\n * Created by liuyc14 on 2016/10/18.\n * 左侧滚动图组件,负责相关Dom操作和数据逻辑\n */\n(function($){\n var passport = window['passport'];\n\n function ScrollPicture(needInit){\n /*定义默认数据结构*/\n this.data = {};\n this.$detail_main = $('#detail_main');\n this.$detail_left = $('#detail_left');\n this.$detail_right = $('#detail_right');\n if(needInit)this.init();\n }\n ScrollPicture.prototype= {\n constructor: ScrollPicture,\n /**\n * 首次渲染时调用\n */\n init: function () {\n if (passport.load) {\n passport.load(function () {\n sc.init();\n });\n } else {\n sc.init();\n }\n this.__initFloat();\n },\n /**\n * 处理左侧橱窗图部分浮动\n * @private\n */\n __initFloat: function () {\n var _this = this;\n var $document = $(document);\n\n var preStatus = 1;\n /*1:正常状态; 2:浮动状态; 3:停留在主信息div最下方位置;*/\n var nowStatus = 0;\n $(window).on('scroll', function () {\n var offset = _this.$detail_main.offset();\n var minY = offset.top;\n /*最小fixed Y值*/\n var maxY = 0;\n /*最大fixed Y值*/\n if (_this.$detail_left.height() + 10 > _this.$detail_main.height()) return false;\n var scrollTop = $document.scrollTop();\n\n\n var maxMarginTopH = _this.$detail_main.height() - _this.$detail_left.height();\n var autoMarginTopH = scrollTop - minY;\n if(scrollTop - minY >= maxMarginTopH){\n autoMarginTopH = maxMarginTopH;\n }\n\n /*当屏幕滚动,可以看到完整的橱窗图时*/\n if (scrollTop <= minY) {\n nowStatus = 1;\n if (preStatus == nowStatus) return false;\n preStatus = nowStatus;\n _this.$detail_left.removeAttr('style');\n }\n else {\n maxY = minY + _this.$detail_main.height();\n /*当屏幕滚动,看不到完整的橱窗图,并且右侧还有很多内容时时*/\n if (scrollTop + _this.$detail_left.height() < maxY) {\n nowStatus = 2;\n // if (preStatus == nowStatus) return false;\n preStatus = nowStatus;\n _this.$detail_left.css({'margin-top':autoMarginTopH});\n // _this.$detail_left.removeClass('absolute').addClass('fixed').css({top: 0});\n }\n else {\n nowStatus = 3;\n\n if (preStatus == nowStatus) return false;\n _this.$detail_left.css({'margin-top':maxMarginTopH});\n preStatus = nowStatus;\n\n }\n }\n\n\n });\n }\n };\n\n /**\n * 收藏对象\n * @type {{$sc: (*|HTMLElement), init: sc.init, p_get: sc.p_get, suc: sc.suc, addFavorites: sc.addFavorites, removeFavorites: sc.removeFavorites, doSC: sc.doSC}}\n */\n var sc = {\n $sc: $(\"#a_sc\"),\n init: function(){\n this.$sc = $(\"#a_sc\");\n if (passport && passport.isLogin())\n sc.p_get('findfavorites.do?ss=', sc.suc);\n else {\n sc.$sc.removeClass(\"sc\").off('click').on(\"click\", function () {\n passport.show();\n passport.loginRedirect = window.location.href;\n });\n }\n },\n p_get: function(url,fun){\n if (passport && passport.isLogin()) { \n window.$p.loadMyFavorite({url: url}, fun);\n }else{\n passport.show();\n passport.loginRedirect = window.location.href;\n }\n },\n suc: function(d) {\n if(d.rc == \"0\"){\n sc.removeFavorites();\n }else{\n sc.addFavorites();\n }\n },\n addFavorites: function(){\n sc.$sc.removeClass(\"sc\").off('click').on(\"click\", {\"type\": \"add\"}, sc.doSC);\n },\n removeFavorites: function(){\n sc.$sc.addClass(\"sc\").off('click').on(\"click\", sc.doSC);\n },\n doSC: function(e){\n //type = 'add' || 'remove';\n if(e.data && e.data.type === 'add'){\n sc.p_get('addfavorites.do?ss=',function(d){\n if(d.rc == \"0\") {\n sc.removeFavorites();\n }\n });\n }else{\n sc.p_get('deletefavorites.do?ss=',function(d){\n if(d.rc == \"0\"){\n sc.addFavorites();\n }\n });\n }\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.ScrollPicture = ScrollPicture;\n})(window.jQuery);\n/*此组件依赖jquery*/\n\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 服务组件,负责服务相关Dom操作和数据逻辑\n */\n(function () {\n function Service(needInit){\n /*定义默认数据结构*/\n this.data = {\n /*格式化后的数据*/\n allService: [],\n /*ajax请求回来的原始数据格式*/\n all: [],\n selectedArray: []\n };\n this.$box = $('#div_service');\n this.$container = $('#container_service');\n if(needInit)this.init();\n }\n Service.prototype= {\n constructor: Service,\n /**\n * 首次渲染时调用\n */\n init: function () {\n try{\n var _this = this;\n // if(!window.$p.baseInfo.isHasService) return;\n this.loadData(function () {\n if (_this.data.allService.length > 0) {\n _this.renderDom();\n _this.bindEvent();\n }\n });\n }catch(e){\n window.PDUtil.warn('service组件=> init方法错误 ---------->');\n window.PDUtil.warn(e);\n }\n },\n\n loadData: function (success) {\n var _this = this;\n window.$p.loadServiceInfo({}, function (db) {\n if (db.status == 200 && db.data && db.data.length > 0) {\n $p.baseInfo.isHasService = 1;\n _this.data.all = db.data;\n _this.data.allService = _this.formatServiceData(db.data);\n success && success();\n }else {\n $p.baseInfo.isHasService = 0;\n }\n });\n },\n renderDom: function () {\n try{\n var html = '';\n for (var i = 0; i < this.data.allService.length; i++) {\n var group = this.data.allService[i];\n var _arrows = (group.list.length > 1) ? '': ' ';\n html += '
    ' +\n '
    '\n + '' + group.list[0]['serviceGoodsName'] + ' ¥' + group.list[0].price + ''\n + _arrows + '
    ';\n\n if (group.list.length > 1) {\n html += '
      ';\n for (var j = 0; j < group.list.length; j++) {\n var service = group.list[j];\n var display = j == 0 ? 'none' : 'block';\n html += '
    • '\n + ''\n +service['serviceGoodsName'] + '¥' + service.price\n + '
    • ';\n }\n html += '
    '\n }\n html += '
    ';\n\n }\n if (html.length > 0) {\n this.$box.append(html);\n this.$container.removeClass('hidden');\n }\n }catch (e){\n window.PDUtil.warn('service组件=> renderDom方法错误 ---------->');\n window.PDUtil.warn(e);\n }\n },\n /**\n * 绑定事件\n */\n bindEvent: function () {\n var _this = this;\n /*显示更多服务*/\n this.$box.find('.item')\n .on('mouseover', function () {\n $(this).addClass('item-hover');\n })\n .on('mouseleave', function () {\n $(this).removeClass('item-hover');\n });\n\n /*顶级服务点击事件*/\n this.$box.find('.item')\n .on('click', function () {\n var $this = $(this);\n var code = $this.attr('data-code');\n /*如果当前未选中,则使其选中;如果已经选中,则取消*/\n if ($this.hasClass('checked')) {\n $this.removeClass('checked');\n _this.removeSelectedService(code);\n } else {\n $this.addClass('checked');\n _this.addSelectedService(code);\n }\n $this.removeClass('item-hover');\n var newPrice = $p.calcPrice();\n window.$p.components.buygroup.updatePrice(newPrice);\n });\n\n /*更多服务点击事件*/\n this.$box.find('.service-ul > li')\n .on('click', function () {\n /*li标签选中的隐藏,隐藏的显示*/\n var $this = $(this).hide();\n var $top = $this.parent().prev();/*当前显示服务信息的div*/\n\n /*删除原来选中的那个服务*/\n var removeCode = $this.siblings(':hidden').show().attr('data-code');\n _this.removeSelectedService(removeCode);\n\n /*将新选中的服务添加到选中的服务列表中*/\n var addCode = $this.attr('data-code');\n _this.addSelectedService(addCode);\n\n /*更新显示的服务信息*/\n var service = window.PDUtil.findFirst(_this.data.all, function(o){return o.code == addCode});\n $top.find('span.service-name').text(service['serviceGoodsName']);\n $top.find('span.service-price').text(' ¥' + service.price);\n $top.parent()\n .addClass('checked')\n .attr('data-code', addCode)\n .attr('latag', 'latag_pc_detail_chooseservice_' + code + '_' + addCode)\n .removeClass('item-hover');\n\n /*更新价格信息*/\n var newPrice = $p.calcPrice();\n window.$p.components.buygroup.updatePrice(newPrice);\n\n\n return false;\n });\n },\n formatServiceData: function (data) {\n try{\n var result = [{\n \"productCode\": code,\n \"cateCode\": data[0][\"cateCode\"],\n \"categoryName\": data[0][\"categoryName\"],\n \"list\": [data[0]]\n }];\n var has = false;\n for (var i = 1; i < data.length; i++) {\n has = false;\n for (var j = 0; j < result.length; j++) {\n if (data[i]['cateCode'] == result[j]['cateCode']) {\n result[j].list.push(data[i]);\n has = true;\n break;\n }\n }\n if (!has) {\n result.push({\n \"productCode\": code,\n \"cateCode\": data[i][\"cateCode\"],\n \"categoryName\": data[i][\"categoryName\"],\n \"list\": [data[i]]\n });\n }\n }\n return result;\n }catch (e){\n window.PDUtil.warn('service组件=>formatServiceData方法错误 ------------>');\n window.PDUtil.warn(e);\n return [];\n }\n },\n /**\n * 获取用户选中的所有的服务\n * @returns {Array}\n */\n getSelectedService: function () {\n var result = [];\n // this.$box.find('>div.checked').each(function (i, e) {\n // result.push($(e).attr('data-code'));\n // });\n for(var i = 0; i < this.data.selectedArray.length; i++){\n result.push(this.data.selectedArray[i].code);\n }\n return result;\n },\n /**\n * 添加一个选择的服务信息\n * @param code\n */\n addSelectedService: function(code) {\n var exists = window.PDUtil.findFirst(this.data.selectedArray, function (o) {\n return o.code == code\n });\n if (!exists) {\n this.data.selectedArray.push(\n window.PDUtil.findFirst(this.data.all, function (o) {\n return o.code == code\n })\n );\n }\n },\n /**\n * 删除一个选择的服务信息\n * @param code\n */\n removeSelectedService: function (code) {\n this.data.selectedArray = window.PDUtil.dropSome(this.data.selectedArray, function (o) {\n return o.code == code;\n });\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.Service = Service;\n})();\n/**\n * Created by liuyc14 on 2017/4/13.\n * 分享组件\n */\n(function(){\n var __PDUtil = {};\n var __jquery = {};\n var __isNode =false;\n\n if(typeof global != 'undefined' && global && typeof module == 'object' && module.exports){\n __isNode = true;\n __PDUtil = require('../../../../base/pdbase').PDUtil;\n __jquery = require('jquery');\n }else{\n __PDUtil = window.PDUtil;\n __jquery = window.$;\n }\n\n var shareComponents = (function ($util, $) {\n function Share(){\n /*定义默认数据结构*/\n try{\n /*定义默认数据结构*/\n var self = this;\n this.classPrefix = \"jiathis\";\n this.data = {\n buttonList:{\n weibo: {id:'weibo', className: self.classPrefix + \"_button_tsina\", title: \"分享到微博\", icon: 'share-icon-weibo'},\n qzone: {id:'qzone', className: self.classPrefix + \"_button_qzone\", title: \"分享到QQ空间\", icon: 'share-icon-qzone'},\n renren: {id:'renren', className: self.classPrefix + \"_button_renren\", title: \"分享到人人网\", icon: 'share-icon-renren'},\n weixin: {id:'weixin', className: self.classPrefix + \"_button_weixin\", title: \"分享到微信\", icon: 'share-icon-weixin'}\n }\n };\n this.webMapping = {\"weibo\": \"weibo\", \"qzone\": \"qzone\", \"renren\": \"renren\", \"weixin\": \"weixin\"};\n this.classPrefix = \"jiathis\";\n this.$container = null;\n this.before_click = null;\n this.couponId = \"96f9c1b44910c5f6\";//107993\n this.shareCode = \"\";\n }catch(e){\n $util.warn('私人订制组件=> init方法错误--------->');\n $util.warn(e);\n }\n }\n Share.prototype = {\n constructor: Share,\n getButtonByKey: function (Key) {\n var self = this;\n var list = self.data.buttonList;\n for(var k in list){\n if(k == Key){\n return list[k];\n }\n }\n return list['qzone'];\n },\n getButtonByClassName: function (className) {\n var self = this;\n var list = self.data.buttonList;\n for(var k in list){\n if(list[k].className == className){\n return list[k];\n }\n }\n return list['qzone'];\n },\n /**\n * 首次渲染时调用\n */\n init: function () {\n window.jiathis_config = null;\n $('body').append('分享');\n this.renderDom();\n this.renderRightShare();\n this.bindEvent();\n this.__initShare();\n },\n __initShare: function () {\n $(\"#div_share\").on('mouseover', function () {\n $(\".share_box\").show();\n }).on('mouseleave', function () {\n $(\".share_box\").hide();\n });\n\n this.before_click = function () {\n if (!window.passport.isLogin()){\n passport.show();\n $(\".share_box\").hide();\n return false;\n }\n var summary = \"\";\n if(window.$p.baseInfo.pcPromotion){\n summary = $('#pc_promotion').text();\n }\n else{\n summary = $('#div_product_dec').text();\n }\n var __title = window.$p.getShareTitle();\n window.jiathis_config = {\n url: encodeURIComponent(location.protocol + '//' + location.host + location.pathname + \"?sharecode=\" + passport.cookie.lenovoId + \"&promotionType=0\"),\n title: __title,\n summary: summary,\n pic: $(\"#winpic\").attr(\"src\")\n };\n };\n },\n bindEvent: function () {\n var self = this;\n /*分享按钮单击事件*/\n self.$container.on('click', '.share_box .jiathis_style > a',function () {\n if(!window.passport){\n $util.warn('分享时,登录模块没有正确加载');\n return false;\n }\n var $this = $(this);\n /*暴露给其他组件调用click事件*/\n if(self.before_click && typeof self.before_click == 'function'){\n self.before_click.call($this, self);\n }\n var button = self.data.buttonList[$this.attr('data-key')];\n if(button){\n self.share(button.id);\n }\n });\n\n self.$container.on('click', '#a_share',function () {\n if(!window.passport){\n $util.warn('分享时,登录模块没有正确加载');\n return false;\n }\n var $this = $(this);\n /*暴露给其他组件调用click事件*/\n if(self.before_click && typeof self.before_click == 'function'){\n self.before_click.call($this, self);\n }\n self.shareModle(false);\n\n });\n\n $('#share_wechat_close').on('click', function () {\n $('#share_dialog_box').hide();\n return false;\n });\n try{\n if(shopId == 1){\n self.shareCode = PDUtil.queryString('sharecode');\n if(self.shareCode){\n $.ajax({\n url: PDUtil.getItemDomain() + '/api/c2c/sharedby.do',\n type:\"GET\",\n data:{\n \"sharecode\": self.shareCode,\n \"sourceurl\": self.getShareCodeUrl(),\n \"promotionType\": '0',\n \"promotionName\": '我的小伙伴购买联想电脑下单立得专属优惠券,快来看看吧!'\n },\n dataType: \"jsonp\",\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_c2c_sharedby',\n timeout: 5000,\n });\n }\n\n //侧边分享滚动事件\n $(window).scroll(function(){\n if($(window).scrollTop()>10){\n $(\"#fixed_share_btn\").fadeOut();\n }else{\n $(\"#fixed_share_btn\").fadeIn();\n }\n });\n $(\"#fixed_share_btn\").click(function(){\n var $this = $(this);\n /*暴露给其他组件调用click事件*/\n if(self.before_click && typeof self.before_click == 'function'){\n self.before_click.call($this, self);\n }\n self.shareModle(true);\n });\n }\n }catch (e){\n\n }\n\n\n },\n renderDom:function () {\n var self = this;\n if(self.$container){\n var $aList = self.$container.find('.jiathis_style a');\n $aList.each(function () {\n var $this = $(this);\n var button = self.getButtonByClassName($this.attr('class'));\n var className = button && button.icon;\n $this.attr('data-key', button.id).append('')\n });\n }\n },\n share: function (web) {\n var self = this;\n var parameter = window.jiathis_config;\n if(!parameter){\n $util.debug('全局config文件没有读取到');\n return false;\n }\n var url = \"\";\n switch (web){\n case self.webMapping.weibo:\n url = 'http://service.weibo.com/share/share.php?title=' + parameter.title\n +'&url=' + parameter.url\n +'&source=bookmark'\n +'&pic=' + parameter.pic;\n break;\n case self.webMapping.qzone:\n url = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + parameter.url\n +'&title=' + parameter.title\n +'&summary=' + parameter.summary\n +'&pics=' + parameter.pic;\n break;\n case self.webMapping.renren:\n url = 'http://widget.renren.com/dialog/share?resourceUrl='+ parameter.url\n +'&srcUrl=' + parameter.url\n +'&title=' + parameter.title\n +'&pic=' + parameter.pic\n +'&description=' + parameter.summary;\n break;\n case self.webMapping.weixin:\n $('#share_wechat_image').empty();\n var url = decodeURIComponent(parameter.url);\n var browser=navigator.appName;\n var b_version=navigator.appVersion;\n var version=b_version.split(\";\");\n var trim_Version=(version[1] || version[0]).replace(/[ ]/g,\"\");\n\n if(browser==\"Microsoft Internet Explorer\" && trim_Version==\"MSIE6.0\") {\n $('#share_wechat_image').qrcode({render:\"table\",width: 220,height: 220,text: url});\n }\n else if(browser==\"Microsoft Internet Explorer\" && trim_Version==\"MSIE7.0\"){\n $('#share_wechat_image').qrcode({render:\"table\",width: 220,height: 220,text: url});\n }else if(browser==\"Microsoft Internet Explorer\" && trim_Version==\"MSIE8.0\"){\n $('#share_wechat_image').qrcode({render:\"table\",width: 220,height: 220,text: url});\n }else{\n $('#share_wechat_image').qrcode({width: 220,height: 220,text: url});\n }\n $('#share_dialog_box').show();\n\n return false;\n break;\n default:\n url = \"error\";\n break;\n }\n if(url == \"error\"){\n window.PDUtil.debug('url匹配错误');\n alert('分享失败,分享参数错误!');\n return false;\n }\n $('#pd_share_entry_btn').parent().attr('href', url);\n $('#pd_share_entry_btn').trigger('click');\n },\n getmyShare: function(){\n\n var summary = \"\";\n if(window.$p.baseInfo.pcPromotion){\n summary = $('#pc_promotion').text();\n }\n else{\n summary = $('#div_product_dec').text();\n }\n var __title = '我的小伙伴购买联想电脑下单立得专属优惠券,快来看看吧!';\n return {\n url: location.protocol + '//' + location.host + location.pathname,\n title: __title,\n summary: summary,\n pic: $(\"#winpic\").attr(\"src\")\n };\n },\n renderRightShare: function(){\n if(shopId == 1){\n // try{\n $(\".detail\").prepend(\"
    \");\n $(\".detail\").prepend(\"\");\n //加载侧边分享弹框\n // $(\"#modelUrl\").load(\"/c2c/new/modelUrl.html\");\n // }catch (e){\n // $util.warn('侧滑分享组件=> load方法错误----------------> ');\n // $util.warn(e);\n // }\n\n }\n },\n getMd5Code: function(){\n var str = ')(*&^%$#@!MNBVCX76543';\n var salesCouponId = this.couponId;\n var shopId = '1';\n var lenovoId = passport.cookie.lenovoId;\n var memberCode = passport.cookie.loginName;\n var _str= lenovoId + memberCode + salesCouponId + str;\n return $.md5(_str);\n },\n getShareCodeUrl: function(){\n var url = \"\";\n var locaUrl = window.location.href;\n if(this.shareCode){\n url = locaUrl.substring(0,locaUrl.indexOf('?'));\n }else{\n url = locaUrl;\n }\n return url;\n },\n shareModle: function(isCoupons){\n try {\n if(passport.isLogin()){\n var lenovoid = passport.cookie.lenovoId;\n var _this = $p.components.share;\n if(isCoupons){//是否领券\n try{\n $.ajax({\n url: __detailConfig.getApiPath(\"gwc\") + \"coupons/bindCouponsForOnce.jhtm\",\n type:\"GET\",\n data:{\n \"shopId\": '1',\n \"lenovoId\": lenovoid,\n \"memberCode\": passport.cookie.loginName,\n \"couponId\": _this.couponId,\n \"sign\": _this.getMd5Code()\n },\n dataType: \"jsonp\",\n jsonp: 'callbackparam',\n jsonpCallback: 'jQueryJSONP_products_bindCouponsForOnce',\n timeout: 5000\n });\n }catch (e){}\n }\n\n }else{\n passport.show();\n return;\n }\n var defaults = {\n url : window.location.href,\n title : \"联想商城\",\n summary : \"联想商城\",\n pic: \"//shop.lenovo.com.cn/images/tempimage.gif\"\n };\n var options = $p.components.share.getmyShare();\n var opts = $.extend(defaults, options);\n\n // $(\"#urlInfo1\").val(opts.title);\n $(\"#urlInfo1\").val($p.baseInfo.name);\n $(\"#urlInfo2\").val(opts.url);\n $(\"#urlInfo3\").val(opts.summary);\n $(\".modelUrlCont_imgList\").html(\n '
  • ' +\n '' +\n '' +\n '
  • '\n );\n $(\".modelUrlModel\").addClass(\"modelShow\");\n $(\".modelUrlCont\").addClass(\"modelShow\");\n gettextLength();\n }catch (e){\n\n }\n }\n };\n return Share;\n })(__PDUtil, __jquery);\n\n\n if(__isNode){\n module.exports = shareComponents;\n }else{\n if(!window.components){\n window.components = {};\n }\n window.components.Share = shareComponents;\n }\n})();\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 私人订制组件,负责私人订制相关Dom操作和数据逻辑\n */\n(function(){\n var __PDUtil = {};\n var __jquery = {};\n var __isNode =false;\n\n if(typeof global != 'undefined' && global && typeof module == 'object' && module.exports){\n __isNode = true;\n __PDUtil = require('../../../../base/pdbase').PDUtil;\n __jquery = require('jquery');\n }else{\n __PDUtil = window.PDUtil;\n __jquery = window.$;\n }\n\n var srdzComponents = (function ($util, $) {\n var modeMapping = {\n \"picture\": {'code': 1, 'des':'私人订制喷图'},\n \"words\": {'code': 2, 'des':'私人订制刻字'}\n };\n\n function Srdz(needInit){\n /*定义默认数据结构*/\n try{\n this.data = {\n price : 0\n };\n this.$container = $('#container_dingzhi');\n this.$box = $('#div_dingzhi');\n this.$dialog = $('#srdz_dialog');\n this.selectedID = '';\n this.postData = {};/*用户选择的私人订制数据*/\n this.$box_content = $('#srdz_box');\n this.$button_left = $('#srdz_style_leftbtn');\n this.$button_right = $('#srdz_style_rightbtn');\n this.page = 1;\n this.totalPage = 1;\n this.w = 0;\n if(needInit){\n this.init();\n }\n }catch(e){\n $util.warn('私人订制组件=> init方法错误--------->');\n $util.warn(e);\n }\n }\n Srdz.prototype= {\n constructor: Srdz,\n /**\n * 首次渲染时调用\n */\n init: function () {\n var self = this;\n if(!window.$p.baseInfo.isHasPersonal) return;\n var isPP = window.$p.baseInfo.isPersonalPositions;\n if(isPP && isPP.length > 0){\n self.$container.removeClass('hidden');\n self.bindEvent();\n for(var j = 0; j < isPP.length; j++){\n self.getdata(isPP[j]);\n }\n }\n },\n bindEvent: function () {\n var self = this;\n /*关闭私人订制弹框*/\n $('#dz_close').on('click',function(){\n self.$dialog.hide();\n self.$box_content.find('> div').hide();\n });\n\n /*取消私人订制*/\n $('#dz_cancel').on('click',function(){\n $('#' + self.selectedID + ' div.dz-box-images dl.dz-img').removeClass('checked');\n $('#' + self.selectedID + ' div.dz-box-text .dz_text').val('');\n self.removePostData(self.selectedID);\n\n self.$dialog.hide();\n self.$box_content.find('> div').hide();\n });\n\n /*私人订制选择按钮单击事件*/\n self.$box.on('click', '> div.item', function () {\n var $this = $(this);\n var id = $this.attr('data-id');\n self.selectedID = id;\n $('#' + id).show();\n self.$dialog.show();\n });\n\n /*价格切换事件*/\n self.$box_content.on('click', 'div.dz-box-price a.dz-price-switch', function (e) {\n var $this = $(this);\n $('#' + self.selectedID + ' div.dz-box-images dl.checked').removeClass('checked');\n self.page = 1;\n self.w = 0;\n if($this.hasClass('checked')){\n $this.removeClass('checked');\n self.totalPage = 1;\n }else{\n $this.siblings('.checked').removeClass('checked');\n $this.addClass('checked');\n self.showFirstTabStyle(self.selectedID, $this.attr('data-index'));\n }\n $('#srdz_style_scroll .scroll').css('left', '0');\n self.setButtonShowHide();\n e.stopPropagation();\n });\n\n /*私人订制弹框,确定单击事件*/\n $('#dz_OK').on('click', function () {\n self.eventHandlerForOKButton();\n });\n\n self.bindImageEvents();\n },\n /**\n * 私人订制确定按钮单击事件处理方法\n * @returns {boolean}\n */\n eventHandlerForOKButton: function () {\n var self = this;\n var $dzBox = $('#' + self.selectedID);\n var ID = $dzBox.attr('id');\n var side = $dzBox.attr('data-side');\n var ptmode = $dzBox.attr('data-personaltype');/*1:喷图;2:刻字*/\n\n var $price = $dzBox.find('.dz-box-price a.dz-price-switch.checked');\n if(!$price || $price.length != 1){\n if($price.attr('data-personaltype') == modeMapping.picture.code){\n alert('请选择喷绘图片类型!');\n }else{\n alert('请选择价格!');\n }\n return false;\n }\n /*获取价格ID*/\n var priceid = $price.attr('data-priceid');\n if(!priceid){\n alert('私人订制失败,请稍后再试!');\n $util.warn('priceid获取失败');\n return false;\n }\n /*获取价格*/\n var price = $price.attr('data-price');\n if(!price){\n alert('私人订制失败,请稍后再试!');\n $util.warn('price获取失败');\n return false;\n }\n /*保存喷绘数据*/\n if(ptmode == modeMapping.picture.code){\n var $dl = $dzBox.find('.dz-box-images .sdtp_pics dl.dz-img.checked');\n if($dl.length != 1){\n alert('请选择喷绘图片!');\n return false;\n }\n /*获取图片code*/\n var imageCode = $dl.attr('data-code');\n if(!imageCode){\n alert('私人订制失败,请稍后再试!');\n $util.warn('imageCode获取失败');\n return false;\n }\n /*获取图片code*/\n var imageUrl = $dl.attr('data-url');\n if(!imageUrl){\n alert('私人订制失败,请稍后再试!');\n $util.warn('imageUrl获取失败');\n return false;\n }\n /*获取图片code*/\n var imageName = $dl.attr('data-name');\n if(!imageName){\n alert('私人订制失败,请稍后再试!');\n $util.warn('imageName获取失败');\n return false;\n }\n\n var data = {\n price: price,\n priceID: priceid,\n ptmode: modeMapping.picture.code,\n ptside: side.replace('面', ''),\n pttype: 1,\n ptpicCode: imageCode,\n pturl: imageUrl,\n picName: imageName\n };\n self.addPostData(ID, data);\n }\n /*保存刻字数据*/\n else if(ptmode == '2'){\n var $text = $dzBox.find('.dz-box-text textarea.dz_text');\n var word = $text.val();\n if(!word){\n alert('请输入刻字内容');\n return false;\n }\n if(word.length > 20){\n alert('文字长度不能超过20个汉字');\n return false;\n }\n if(/(<|\\/|>)/gi.test(word)){\n alert('内容含有非法字符 \"<\"、\"/\"、\">\",请重新输入');\n return false;\n }\n var data = {price: price, priceID: priceid, ptmode: modeMapping.words.code, ptside: side.replace('面', ''), pttype: 1, ptword: word};\n self.addPostData(ID, data);\n }\n else{\n alert('私人订制参数错误,请重试');\n return false;\n }\n $('#dz_close').trigger('click');\n },\n /**\n * 绑定喷图相关事件\n */\n bindImageEvents: function(){\n var self = this;\n\n /*风格tab单击事件*/\n self.$box_content.on('click', 'div.dz-box-images div.sdtp_top .tab-style', function (e) {\n var $this = $(this);\n if(!$this.hasClass('active')){\n $this.siblings('.active').removeClass('active');\n $this.addClass('active');\n\n self.showImageListWithCateCode($this.parents('div.dz-box-images'), $this.attr('data-tabindex'));\n }\n e.stopPropagation();\n });\n\n /*私定喷图,图片单击事件*/\n self.$box_content.on('click', 'div.dz-box-images div.sdtp_pics dl',function(e) {\n var $this = $(this);\n if ($this.hasClass('checked')) {\n $this.removeClass('checked');\n } else {\n $this.parents('div.dz-box-images').find('dl.checked').removeClass('checked');\n $this.addClass('checked');\n }\n e.stopPropagation();\n });\n\n /*私定喷图显示大图*/\n self.$box_content\n .on('mouseover', '.dz-box-images .sdtp_div dl.dz-img', function (e) {\n var _this = $(this);\n var left = _this.offset().left+78;\n var top = _this.offset().top-$(document).scrollTop();\n var $bigImage = $('#srdz_big_image');\n\n $bigImage.show();\n $bigImage.css({\n 'left':left+\"px\",\n 'top':top+\"px\"\n });\n var src = _this.find('img').attr('src');\n $bigImage.attr('src',src);\n e.stopPropagation();\n })\n .on('mouseout', '', function (e) {\n $('#srdz_big_image').hide();\n e.stopPropagation();\n });\n },\n /**\n * 渲染私定数据\n * @param side\n * @param d\n */\n renderData: function(side, d){\n var self = this;\n try{\n var data = d && d.data && d.data[0] && d.data[0].data;\n if(data){\n if((data instanceof Array) && data.length>0) {\n /*生成时间戳,用于div标识*/\n var now = (new Date() - 0);\n if(data[0] && data[0].personalType == modeMapping.picture.code){\n self.renderImage(side, 'srdz_image_' + now, data);\n }else{\n self.renderText(side, 'srdz_text_' + now, data);\n }\n }\n }\n }catch(e){\n $util.warn('私人订制组件=> renderData方法错误----------------> ');\n $util.warn(e);\n }\n },\n /**\n * 渲染喷绘图数据\n * @param side A面/C面\n * @param id\n * @param data\n */\n renderImage: function(side, id, data){\n /*追加私定选择按钮*/\n this.$box.append('
     选择' + side + '喷图
    ');\n /*渲染喷图弹框*/\n var tmpl = $('#tmpl_srdz_image');\n if(tmpl && tmpl.length == 1){\n tmpl\n .tmpl({datas: data, dataID: id, side: side})\n .appendTo(this.$box_content);\n /*默认选中第一个price*/\n $('#'+id+' div.dz-box-price a.dz-price-switch:eq(0)').addClass('checked');\n this.showFirstTabStyle(id, 0);\n this.scrollButtonEvent();\n this.setButtonShowHide();\n }\n },\n /**\n * 渲染刻字数据\n * @param side A面/C面\n * @param id\n * @param data\n */\n renderText: function (side, id, data) {\n /*追加私定选择按钮*/\n this.$box.append('
     选择' + side + '刻字
    ');\n /*渲染刻字弹框*/\n var tmpl = $('#tmpl_srdz_text');\n if(tmpl && tmpl.length == 1){\n tmpl\n .tmpl({datas: data, dataID: id, side: side})\n .appendTo(this.$box_content);\n /*默认选中第一个price*/\n $('#'+id+' div.dz-box-price a.dz-price-switch:eq(0)').addClass('checked');\n }\n },\n /**\n * 重新渲染橱窗图\n */\n renderPalyPic: function (imageCode) {\n //喷漆\n $.ajax({\n type:\"get\",\n url:PDUtil.getItemDomain() + \"/cache/query?m=hget&k=personal_window_\" + window.code + \"&f=\" + imageCode,\n dataType: \"jsonp\",\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_cache_query',\n timeout: 5000,\n success:function(d){\n var srcArr = [],\n data = d.data[0].printPicArr;\n if(data){\n for (var i = 0; i < data.length; i++) {\n srcArr.push({\"src\":data[i]});\n }\n }\n window.$p.components.playpic.renderPicture(srcArr);\n }\n });\n },\n /**\n * 设置左右按钮的显示隐藏\n */\n setButtonShowHide: function () {\n var self = this;\n if(self.page >= self.totalPage){\n $('#srdz_style_rightbtn').css('opacity', '0.3').attr('disable','disable');\n }else{\n $('#srdz_style_rightbtn').css('opacity', '1.0').removeAttr('disable');\n }\n\n if(self.page <= 1){\n $('#srdz_style_leftbtn').css('opacity', '0.3').attr('disable','disable');\n }else{\n $('#srdz_style_leftbtn').css('opacity', '1.0').removeAttr('disable');\n }\n },\n scrollButtonEvent: function () {\n var self = this;\n var width = $('#srdz_style_scroll').width();\n $('#srdz_style_leftbtn').on('click', function () {\n if(self.page > 1){\n self.page--;\n (self.w)+=width;\n $('#srdz_style_scroll .scroll').css('left', self.w+'px');\n self.setButtonShowHide();\n }\n });\n $('#srdz_style_rightbtn').on('click', function () {\n if(self.page < self.totalPage){\n self.page++;\n (self.w)-=width;\n $('#srdz_style_scroll .scroll').css('left', self.w+'px');\n self.setButtonShowHide();\n }\n });\n },\n /**\n * 根据私定面获取数据\n * @param side A面/C面\n * @param success\n * @returns {boolean}\n */\n getdata:function(side, success){\n if(!side){\n return false;\n }\n var self = this;\n $.ajax({\n url: PDUtil.getItemDomain() + '/cache/query?m=hget&k=personal_init_' + code + '&f='+encodeURI(side)+\"&ss=\" + new Date().getMilliseconds(),\n dataType: \"jsonp\",\n jsonp: 'callback',\n timeout: 5000,\n success:function(data){\n try{\n self.renderData(side, data);\n if(typeof success == 'function'){\n success();\n }\n }catch(e){\n $util.warn('私人订制组件=> getdata方法错误 ------------->');\n $util.warn(e);\n }\n },\n error:function(err){\n $util.warn(err);\n }\n });\n },\n /**\n * 显示某个喷图订制的指定 风格tab\n * @param id\n * @param tabIndex\n */\n showFirstTabStyle: function (id, tabIndex) {\n var $boxImages = $('#' + id + ' div.dz-box-images');\n $boxImages.find('.sdtp_top .tab-style').hide();\n var $priceTabs = $boxImages.find('.sdtp_top .tab-price' + tabIndex);\n\n var count = $priceTabs.length;\n if(count == 0){\n this.totalPage = 1;\n }\n else{\n this.totalPage = count % 5 == 0 ? count / 5 : parseInt(count / 5) + 1;\n }\n\n /*默认选中第一个tab-style*/\n $priceTabs.removeClass('active');\n $priceTabs.eq(0).addClass('active');\n $priceTabs.show();\n\n /*默认第一个风格的照片列表显示*/\n this.showImageListWithCateCode($boxImages, $priceTabs.eq(0).attr('data-tabindex'));\n },\n showImageListWithCateCode: function ($boxImages, index) {\n $boxImages.find('div.sdtp_pics').hide();\n $boxImages.find('div.sdtp_pics.' + index).show();\n },\n /**\n * 添加用户选择的私定信息\n * @returns {boolean}\n */\n addPostData: function (id, data) {\n if(!data) {\n return false;\n }\n var oldPrice = 0;\n if(this.postData[id]){\n oldPrice = this.postData[id].price;\n }\n this.postData[id] = data;\n\n var $button = this.$box.find('> div.item[data-id=\"'+id+'\"]');\n var showText = '';\n if(data.ptmode == modeMapping.picture.code){\n showText = data.picName + '(' + data.price + '元)';\n }else{\n showText = data.priceID + '(' + data.price + '元)';\n }\n $button.find('span.guige-name').text(showText);\n $button.addClass('checked');\n this.data.price = this.data.price - oldPrice + parseFloat(data.price);\n var newPrices = window.$p.calcPrice();\n $p.components.buygroup.updatePrice(newPrices);\n /*喷图*/\n if(data.ptmode == modeMapping.picture.code){\n this.renderPalyPic(data.ptpicCode);\n }\n },\n /**\n * 删除用户选择的私定数据\n */\n removePostData: function (id) {\n var oldData = this.postData[id];\n if(!oldData){\n $util.warn('取消私定时没有对象!' + id);\n return false;\n }\n var oldPrice = oldData.price;\n var $button = this.$box.find('> div.item[data-id=\"'+id+'\"]');\n $button.find('span.guige-name').text($button.find('span.guige-name').attr('data-text'));\n $button.removeClass('checked');\n this.data.price = this.data.price - oldPrice;\n var newPrices = window.$p.calcPrice();\n $p.components.buygroup.updatePrice(newPrices);\n /*喷图*/\n if(oldData.ptmode == modeMapping.picture.code){\n window.$p.components.playpic.renderPicture([]);\n }\n\n delete this.postData[id];\n },\n /**\n * 获取用户选中的所有的私人订制信息\n * @returns {string}\n */\n getdz: function () {\n var result = \"\";\n try{\n if(!$.isEmptyObject(this.postData)){\n var arr = [];\n for(var k in this.postData){\n arr.push(this.postData[k]);\n }\n result = JSON.stringify(arr);\n }\n $util.debug('私人订制数据:-------------->');\n $util.debug(result);\n }catch (e){\n $util.warn('私人订制组件=>getdz 方法错误-------------->');\n $util.warn(e);\n }\n return encodeURIComponent(result);\n },\n /**\n * 判断是否选择私人订制(门店用户)\n * @returns {boolean}\n */\n isSelcetedSrdz: function(){\n var _this = this;\n var isSelceted = false;\n var $srdzType_btn = $('#div_dingzhi div.item-no-children');\n $.each($srdzType_btn,function(i,k){\n if($(k).hasClass('checked')){\n isSelceted = true;\n }\n })\n return isSelceted;\n }\n };\n return Srdz;\n })(__PDUtil, __jquery);\n\n\n if(__isNode){\n module.exports = srdzComponents;\n }else{\n if(!window.components){\n window.components = {};\n }\n window.components.Srdz = srdzComponents;\n }\n})();\n/**\n * Created by liuyc14 on 2016/10/18.\n * 推荐选件组件,负责相关信息的Dom操作和数据逻辑\n */\n(function ($util) {\n function Taocan(needInit){\n /*定义默认数据结构*/\n this.data = {\n all: [],\n selectedItem: -1,\n index: []\n };\n this.$container = $('#container_taocan');\n this.$box = $('#div_taocan');\n if(needInit)this.init();\n }\n Taocan.prototype= {\n constructor: Taocan,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.getAllData();\n this.renderDom();\n this.bindEvent();\n },\n renderDom: function () {\n try{\n var $p = window['$p'];\n var packs = this.data.all;\n /*循环所有选件,判断如果在有效期内就显示*/\n var html = '';\n var dialog = '';\n for (var i = 0; i < packs.length; i++) {\n var pack = packs[i];\n html += '
    ' +\n '套餐' + (i+1) + '  ¥' + pack.showPrice.toFixed(2) + '' +\n '
    ';\n dialog += '
    ' +\n '
    ' +\n '套餐' + (i+1) + '' +\n '' +\n '
    ' +\n '
    ' +\n '' +\n '
    ';\n for(var j = 0; j < pack.data.length; j++){\n var o = pack.data[j];\n var _url = ($p.promotion.goodsDetailUrl && $p.promotion.goodsDetailUrl[o.code]) || ('/product/' + o.code + '.html');\n dialog += '
    '+\n '
    ' + o.goodsName + '
    ';\n if(j < pack.data.length - 1){\n dialog += '
    ';\n }else{\n dialog += '';\n }\n\n }\n dialog += '
    ' +\n '' +\n '
    ' +\n '
    ' +\n '套餐价:' +\n '¥'+pack.showPrice.toFixed(2)+'' +\n '
    ' +\n '节省' +\n '¥'+pack.discount.toFixed(2)+'' +\n '
    ';\n if(pack.canSell){\n dialog +='加入购物车';\n } else{\n dialog +='加入购物车';\n }\n dialog +='
    ';\n }\n if (html.length > 0) {\n this.$box.append(html);\n this.$container.removeClass('hidden');\n if(dialog.length > 0){\n this.$box.append(dialog);\n }\n }\n }catch(e){\n $util.warn('套餐组件=> renderDom方法错误 ------------->');\n $util.warn(e);\n }\n },\n /**\n * 绑定推荐选件的事件\n */\n bindEvent: function () {\n var _this = this;\n /*选件单击事件*/\n this.$box.find('div.item')\n .on('click', function () {\n var $this = $(this);\n var index = $this.attr('data-index');\n /*如果当前未选中,则使其选中;如果已经选中,则取消*/\n if ($this.hasClass('checked')) {\n $this.removeClass('checked');\n _this.$box.find('.detail-taocan').eq(_this.data.selectedItem).hide();\n _this.data.selectedItem = -1;\n } else {\n $this.addClass('checked');\n $this.siblings('.checked').removeClass('checked');\n _this.$box.find('.detail-taocan').eq(_this.data.selectedItem).hide();\n _this.data.selectedItem = index;\n _this.$box.find('.detail-taocan').eq(_this.data.selectedItem).show();\n }\n });\n this.$box.find('.detail-taocan .tc_close').on('click', function () {\n _this.$box.find('div.item[data-index=' + _this.data.selectedItem + ']').removeClass('checked');;\n _this.$box.find('.detail-taocan').eq(_this.data.selectedItem).hide();\n _this.data.selectedItem = -1;\n });\n /*向左滚动*/\n this.$box.find('.detail-taocan .tc_left').on('click', function () {\n var $pic = _this.$box.find('.tc_pics');\n var width = $pic.width();\n\n var _index = _this.data.index[_this.data.selectedItem];\n if(_index.current > 1){\n $pic.css({'left': \"-=\" + width + \"px\"});\n _index.current++;\n }\n });\n\n /*向右滚动*/\n this.$box.find('.detail-taocan .tc_right').on('click', function () {\n var $pic = _this.$box.find('.tc_pics');\n var width = $pic.width();\n\n var _index = _this.data.index[_this.data.selectedItem];\n\n if(_index.current < _index.max){\n $pic.css({'left': \"+=\" + width + \"px\"});\n _index.current++;\n }\n });\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function () {\n var self = this;\n try{\n var _data = window.$p.processTaocanNeedShowList();\n self.data.all = _data;\n /*计算每个套餐页数*/\n if(_data.length > 0){\n for(var i = 0; i < _data.length; i++){\n var totalCount = (_data[i].data && _data[i].data.length) || 0;\n var pages = parseInt((totalCount / 4) + 1);\n self.data.index.push({current:1, max:pages});\n }\n }\n return _data;\n }catch(e){\n $util.warn('套餐组件=> getAllData方法错误 ------------->');\n $util.warn(e);\n self.data.all = [];\n return self.data.all;\n }\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.Taocan = Taocan;\n})(window.PDUtil);\n\n/**\n * Created by liuyc14 on 2017/4/5.\n */\n/**\n * Created by liuyc14 on 2016/10/18.\n * 推荐选件组件,负责相关信息的Dom操作和数据逻辑\n */\n(function () {\n var PDUtil = window['PDUtil'];\n function ThinkO2OCityList(needInit){\n /*定义默认数据结构*/\n this.data = {\n all: []\n };\n this.$container = $('#container_o2ocity');\n this.$box = $('#div_cities');\n this.$box_city = $('#city_wrap');\n if(needInit)this.init();\n }\n ThinkO2OCityList.prototype= {\n constructor: ThinkO2OCityList,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.getAllData();\n this.renderDom();\n this.bindEvent();\n },\n renderDom: function () {\n if(this.data.all && this.data.all.length > 0){\n $(\"#thinko2oCityTemplate\").tmpl({data: this.data.all}).appendTo(this.$box_city);\n this.$container.removeClass('hidden');\n }\n },\n /**\n * 绑定推荐选件的事件\n */\n bindEvent: function () {\n var self = this;\n function closeCheckBox (){\n self.$box_city.hide();\n self.$box.removeClass(\"open\");\n return false;\n }\n function openCheckBox(){\n self.$box_city.show();\n self.$box.addClass(\"open\");\n }\n\n $(document).on('click', function(){\n if(self.$box.hasClass(\"open\")){\n closeCheckBox();\n }\n });\n //停止冒泡,避免关闭\n $(\"#city_wrap\").on('click',function(){\n openCheckBox();\n return false;\n });\n //鼠标滑过效果\n self.$box.on(\"mouseenter\",function(){\n openCheckBox();\n return false;\n });\n self.$box.find('.city_close').on(\"click\", closeCheckBox);\n //标签点击\n self.$box_city.find('dd.city_tab_title_province').on(\"click\", function(){\n self.$box_city.find(\".city_tab_province\").show();\n self.$box_city.find(\".city_tab_city\").hide();\n self.$box_city.find(\".city_tab_area\").hide();\n $(this).addClass(\"active\").siblings(\"dd\").removeClass(\"active\");\n });\n self.$box_city.find('dd.city_tab_title_city').on(\"click\", function(){\n var p = self.$box_city.find(\".city_tab_title_province\").attr(\"data-province\");\n self.$box_city.find(\".city_tab_province\").hide();\n self.$box_city.find(\".city_tab_area\").hide();\n self.$box_city.find(\".city_tab_city[data-province='\"+p+\"']\").show().siblings(\".city_tab_body\").hide();\n $(this).addClass(\"active\").siblings(\"dd\").removeClass(\"active\");\n });\n self.$box_city.find('dd.city_tab_title_area').on(\"click\", function(){\n var p = self.$box_city.find(\".city_tab_title_city\").attr(\"data-city\");\n self.$box_city.find(\".city_tab_province\").hide();\n self.$box_city.find(\".city_tab_city\").hide();\n self.$box_city.find(\".city_tab_area[data-city='\"+p+\"']\").show().siblings(\".city_tab_body\").hide();\n $(this).addClass(\"active\").siblings(\"dd\").removeClass(\"active\");\n });\n //选择省\n self.$box_city.on(\"click\", \".city_tab_province dd\", function(){\n var $this = $(this);\n var $provinceTitle = $(\".city_tab_title_province\");\n var $cityTitle = $(\".city_tab_title_city\");\n var $areaTitle = $(\".city_tab_title_area\");\n\n var text = $this.find(\"span:first\").text();\n var province = $this.attr(\"data-province\");\n\n $this.addClass(\"o2o-now\").siblings(\"dd\").removeClass(\"o2o-now\");\n $provinceTitle.find(\"span\").text(text);\n $provinceTitle.attr(\"data-province\",province);\n $provinceTitle.removeClass(\"active\");\n $cityTitle.addClass(\"active\");\n\n var _textc = \"市\";\n var _texta = \"县\";\n var _city = 0; //$(\" dl.city_tab_city[data-province = '\"+ province +\"']\").find(\"dd\").eq(0).attr(\"data-city\")\n\n $cityTitle.show().attr(\"data-city\",_city);\n $cityTitle.find(\"span\").text(_textc);\n $areaTitle.find(\"span\").text(_texta);\n self.$box_city.find(\".city_tab_province\").hide();\n var $cityBox = $(\" dl.city_tab_city[data-province = '\"+ province +\"']\");\n $cityBox.find(\"dd.o2o-now\").removeClass(\"o2o-now\").end().show();\n });\n //选择城市\n self.$box_city.on(\"click\", \".city_tab_city dd\", function(){\n var $this = $(this);\n var _city = $this.attr(\"data-city\");\n var _text = $this.find(\"span:first\").text();\n var $cityTitle = $(\".city_tab_title_city\");\n var $areaTitle = $(\".city_tab_title_area\");\n\n var text = \"县\";\n var city = 0;\n\n $areaTitle.show().attr(\"data-area\",city);\n $areaTitle.find(\"span\").text(text);\n\n $areaTitle.addClass('active');\n $cityTitle.removeClass('active');\n $this.addClass(\"o2o-now\").siblings(\"dd.o2o-now\").removeClass(\"o2o-now\");\n $cityTitle.find(\"span\").text(_text);\n $cityTitle.attr(\"data-city\",_city);\n\n var province = $(\".city_tab_title_province\").attr(\"data-province\");\n self.$box.attr(\"data-province\",province);\n self.$box.attr(\"data-city\",_city);\n self.$box.find(\".city_tab_city\").hide();\n var $areaBox = $(\" dl.city_tab_area[data-city = '\"+ _city +\"']\");\n $areaBox.find(\"dd.o2o-now\").removeClass(\"o2o-now\").end().show();\n\n });\n //选择地区\n self.$box_city.on(\"click\", \".city_tab_area dd\", function(){\n var $this = $(this);\n if($this.find(\"span:first\").hasClass(\"gray\")) {return false;}\n var _area = $this.attr(\"data-area\");\n var _text = $this.find(\"span:first\").text();\n var $areaTitle = $(\".city_tab_title_area\");\n $this.addClass(\"o2o-now\").siblings(\"dd.o2o-now\").removeClass(\"o2o-now\");\n $areaTitle.find(\"span\").text(_text);\n $areaTitle.attr(\"data-area\",_area);\n\n var textp = $(\".city_tab_title_province span\").text();\n var textc = $(\".city_tab_title_city span\").text();\n var province = $(\".city_tab_title_province\").attr(\"data-province\");\n var _city = $(\".city_tab_title_city\").attr(\"data-city\");\n\n\n self.$box.find('.item .guige-name').text(textp+'>'+(textc==\"市\"? \"\" : textc)+\">\"+(_text == \"县\" ? \"\" : _text));\n self.$box.attr(\"data-province\",province);\n self.$box.attr(\"data-city\",_city);\n self.$box.attr(\"data-area\",_area);\n closeCheckBox();\n return false;\n });\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function () {\n this.data.all = $p.baseInfo.thinko2oCities || [];\n return this.data.all;\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.ThinkO2OCityList = ThinkO2OCityList;\n})();\n\n/**\n * Created by liuyc14 on 2016/10/18.\n * 推荐选件组件,负责相关信息的Dom操作和数据逻辑\n */\n(function () {\n function TuiJianXuanJian(needInit){\n /*定义默认数据结构*/\n this.data = {\n all: [],\n selectedArray: []\n };\n this.$container = $('#container_option');\n this.$box = $('#div_tjxj');\n if(needInit)this.init();\n }\n TuiJianXuanJian.prototype= {\n constructor: TuiJianXuanJian,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.getAllData();\n this.renderDom();\n this.bindEvent();\n },\n renderDom: function () {\n var $p = window['$p'];\n var options = this.data.all;\n /*循环所有选件,判断如果在有效期内就显示*/\n var html = '';\n for (var i = 0; i < options.length; i++) {\n var o = options[i];\n var url = ($p.promotion.goodsDetailUrl && $p.promotion.goodsDetailUrl[o.code]) || ('/product/' + o.code + '.html');\n /*向DOM中追加元素*/\n html += '
    ' +\n '' +\n '
    ' +\n '
    ' + o.goodsName + '
    ' +\n '
    ¥' + o.showPrice.toFixed(2) + '节省'+o.discountAmount+'元了解详情>
    ' +\n '
    ' +\n '
    ';\n\n }\n if (html.length > 0) {\n this.$box.append(html);\n this.$container.removeClass('hidden');\n }\n },\n /**\n * 绑定推荐选件的事件\n */\n bindEvent: function () {\n var _this = this;\n /*选件单击事件*/\n this.$box.find('div.item')\n .on('click', function () {\n var $this = $(this);\n var code = $this.attr('data-code');\n /*如果当前未选中,则使其选中;如果已经选中,则取消*/\n if ($this.hasClass('checked')) {\n $this.removeClass('checked');\n _this.data.selectedArray = PDUtil.dropSome(_this.data.selectedArray, function (o) {\n return o.code == code;\n });\n } else {\n $this.addClass('checked');\n var exists = PDUtil.findFirst(_this.data.selectedArray, function(o){return o.code == code});\n if(!exists){\n _this.data.selectedArray.push(\n PDUtil.findFirst(_this.data.all, function(o){return o.code==code})\n );\n }\n }\n var newPrice = $p.calcPrice();\n $p.components.buygroup.updatePrice(newPrice);\n });\n },\n /**\n * 获取选件所有的数据\n */\n getAllData: function () {\n var _data = $p.processXJNeedShowList();\n this.data.all = _data;\n return _data;\n },\n /**\n * 获取所选选件的code的数组\n * @returns {Array}\n */\n getSelectedCodeArray: function () {\n var result = [];\n for (var i = 0; i < this.data.selectedArray.length; i++){\n result.push(this.data.selectedArray[i].code);\n }\n return result;\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.TuiJianXuanJian = TuiJianXuanJian;\n})();\n\n/**\n * Created by sunshunli on 2018/05/25.\n * 视频组件\n */\n(function () {\n function videoPlayers(needInit){\n /*定义默认数据结构*/\n this.data = {\n myVideoUrl: ''\n };\n\n if(needInit)this.init();\n\n }\n videoPlayers.prototype= {\n constructor: videoPlayers,\n /**\n * 首次渲染时调用\n */\n init: function () {\n this.render();\n },\n render: function () {\n var _this = this;\n try{\n _this.data.myVideoUrl = window.videoUrl || '';\n var myPlayer;\n\n if (_this.data.myVideoUrl == '') {\n return;\n } else {\n $(\"#winpic\").on('click',function(){\n $(\".m\").show();\n videojs.options.flash.swf = \"video-js.swf\";\n myPlayer = videojs('my-video');\n myPlayer.src(_this.data.myVideoUrl);\n myPlayer.ready(function(){\n $(\"div.closevedio\").show();\n this.width(520);\n this.height(520);\n this.show();\n this.play();\n myPlayer.on('ended',function(){\n $(\".m\").hide();\n this.pause();\n this.hide();\n });\n });\n\n });\n $(\"div.closevedio\").click(function(){\n $(\".m\").hide();\n myPlayer.hide();\n myPlayer.pause();\n });\n }\n }catch(e){\n $util.warn('videoPlayers组件=> render方法错误 ----------->');\n $util.warn(e);\n }\n }\n };\n\n if(!window.components){\n window.components = {};\n }\n window.components.videoPlayers = videoPlayers;\n})();"]}