{"version":3,"sources":["pdbase.js"],"names":["PDBase","this","terminal","shareCode","nowNumber","env","baseInfo","isApp","isHSApp","isLenovoApp","name","showPrice","price","marketable","mallType","window","shopId","PDUtil","mallTypeMapping","lenovoShop","code","materialNumber","isService","salesType","stock","isIndependentSale","isPhysical","LCode","SNCode","gmsl","isPersonalPositions","personalPositions","activity","promotion","gifts","giftsSelectable","saleReduction","fullReduction","goodsStatus","option","packs","components","scrollPicture","title","guige","service","buygroup","srdz","bxzp","tjxj","hotlist","taocan","getIsHSApp","getIsLenovoAPP","isRunInNode","Boolean","global","Object","filterArray","array","iteratee","bool","result","i","length","push","contains","item","e","RegExp","test","uniquelize","ra","Array","isDebug","thinkShop","SMBShop","SMBScoreShop","HuishangShop","HuishangScoreShop","errorMessage","busy","error","maintenance","_defaults","queryString","reg","r","location","search","substr","match","decodeURIComponent","addCookie","key","value","options","$","extend","path","expires","days","t","Date","setMilliseconds","getMilliseconds","document","cookie","encodeURIComponent","stringifyCookieValue","toUTCString","domain","secure","join","json","JSON","stringify","String","getCookie","strCookie","arrCookie","split","arr","superClass","newClass","call","setPrototypeOf","prototype","__proto__","constructor","dropSome","getSome","findFirst","cutPicturePath","width","index","lastIndexOf","fileType","substring","debug","info","console","log","txt","warn","timer","intDiff","run","end","intime","setInterval","day","hour","minute","second","clearInterval","Math","floor","stime","checkTelNo","tel","navigator","userAgent","getShareTitle","_code","private_process_activity","_this","undefined","iskcode","activityType","PurchasedJson","fromtime","buyStartTime","totime","buyEndTime","fromtimeStr","buyStartTimeStr","totimeStr","buyEndTimeStr","productPrice","discount","purchaseCeiling","ShanGou","startNumber","startTimeStr","endNumber","endTimeStr","yystartNumber","reservationStartTime","yystartTimeStr","reservationStartTimeStr","yyendNumber","reservationEndTime","yyendTimeStr","reservationEndTimeStr","fyyStartNumber","noReservationBuyTime","fyyStartTimeStr","noReservationBuyTimeStr","parseFloat","isReservation","type","flushSaleJson","discountAmount","status","processBuyButton","isShow","showText","isDisabled","isCurrentTerminal","isLcodeProduct","processAddCartButton","buOwner","shangou","processNoticeButton","isShowYuyue","processShowPrice","isShowPrice","toFixed","processBXZPNeedShowList","_data","o","hasStock","effective","processKXZPNeedShowList","processXJNeedShowList","processTaocanNeedShowList","_promotion","_pack","data","canSell","totalDiscountAmount","totalPrice","fn_Specifications","SpecificationsRelList","SpecificationsRels","valeDisabled","gcode","rfn","svlist","getDefaultSF","temp_t","mylist","_codelist","typeindex","z","specInfo","typeid","j","gsdlist","gsdId","mycodelist","each","k","v","n","inArray","gcodelist","svlist_i","svlist_v","tcode","pcode","si","sv","indexOf","ti","tv","valeDefault","gsdIds","getgcode","gcoderels","coderel","getcodesbygg","intersect","gs","gsd","a","b","alist","getShareInfo","f","u","href","sharecode","promotionChannels","memberId","h","hostname","$p","get","sourceurl","promotionName","promotionType","isShowActivity","isShowShangou","isPcSales","isWapSales","isAppSales","isWeiXinSales","loadData","completed","loadProductInfo","loadPromotionInfo","loadStock","alert","success","ajax","url","dataType","err","complete","db","_detail","detail","shopid","isNeedSN","pcPromotion","productId","faId","faCode","faName","thumbnailsURL","protocol","extensionTerminal","extensionContent","curDatetime","replace","pc","wap","app","weixin","myProcodeStr","loadO2OCityListAndStock","proInfos","parseInt","waterLevelDesc","detailStockType","formatData","has","city","salesNumber","className","thinko2oStock","cities","provinceNo","provinceName","getCityList","op","saleType","done","thinko2oCities","fail","always","salesPlat","res","_dd","jsonpIsTuangouUser","__detailConfig","getApiPath","activityId","jsonp","xr","responseText","statusText","jsonpIsBookUser","plat","jsonpShangouYuyue","jsonpAddItemToCart","jsonpNoticeSendSms","jsonpNoticeSave","loadServiceInfo","loadHostList","w","loadMyFavorite","loadPresellInfo","defaultData","jsonpSaveBookShangouTel","jsonpEvaluateList","codes","pageindex","level","lable","_lv","_lable","timeout","pageSize","jsonpEvaluateNumber","jsonpEvaluateLable","jsonpAddJF","ajaxCheckSNCode","self","sn","num","__debug__","module","exports"],"mappings":"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","file":"../js/pdbase.js","sourcesContent":["/**\n * 基础类,负责数据结构的组装和基本业务逻辑的封装\n * 不允许出现任何的dom操作代码\n * liuyc14 2016年11月15日13:17:33\n */\n\n(function(){\n\n /*静态属性和方法*/\n var PDUtil = {\n isDebug: false,\n /*判断当前是否是在node运行环境中*/\n isRunInNode: isRunInNode,\n mallTypeMapping: {\n \"lenovoShop\": {\"code\": \"1\", \"name\": \"联想商城\"},\n \"thinkShop\": {\"code\": \"2\", \"name\": \"think商城\"},\n \"SMBShop\": {\"code\": \"8\", \"name\": \"SMB商城\"},\n \"SMBScoreShop\": {\"code\": \"9\", \"name\": \"SMB积分商城\"},\n \"HuishangShop\": {\"code\": \"14\", \"name\": \"惠商商城\"},\n \"HuishangScoreShop\": {\"code\": \"15\", \"name\": \"惠商积分商城\"}\n },\n errorMessage:{\n \"busy\": \"商城系统繁忙,请稍后再试!\",\n \"error\": \"商城系统异常,请稍后再试!\",\n \"maintenance\": \"商城系统正在维护,请稍后再试!\",\n \"_defaults\": \"商城系统繁忙,请稍后再试!\"\n },\n /**\n * 获取url中的查询参数\n * @param name\n * @returns {*}\n */\n queryString: function(name) {\n var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\n var r = window.location.search.substr(1).match(reg);\n if (r != null) {\n return decodeURIComponent(r[2]);\n }\n return null;\n },\n addCookie: function (key, value, options) {\n options = $.extend({ path: '/' }, options || {});\n if (typeof options.expires === 'number') {\n var days = options.expires, t = options.expires = new Date();\n t.setMilliseconds(t.getMilliseconds() + days * 864e+5);\n }\n return (document.cookie = [\n encodeURIComponent(key), '=', window['PDUtil'].stringifyCookieValue(value, options),\n options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n options.path ? '; path=' + options.path : '',\n options.domain ? '; domain=' + options.domain : '',\n options.secure ? '; secure' : ''\n ].join(''));\n },\n stringifyCookieValue: function (value, options) {\n return encodeURIComponent(options.json ? JSON.stringify(value) : String(value));\n },\n getCookie: function (name) {\n var strCookie = document.cookie;\n var arrCookie = strCookie.split(\"; \");\n for (var i = 0; i < arrCookie.length; i++) {\n var arr = arrCookie[i].split(\"=\");\n if (arr[0] == name) return decodeURIComponent(arr[1]);\n }\n return null;\n },\n /**\n * 继承类\n * @param superClass\n */\n extend: function (superClass) {\n var newClass = function () {\n superClass.call(this);\n };\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(newClass.prototype, superClass.prototype);\n } else if (newClass.prototype.__proto__) {\n newClass.prototype.__proto__ = superClass.prototype;\n } else {\n newClass.prototype = new superClass();\n newClass.prototype.constructor = newClass;\n }\n return newClass;\n },\n /**\n * 根据过滤条件过滤掉数组中的元素并返回新的元素\n * @param array\n * @param iteratee\n * @returns {Array}\n */\n dropSome: function (array, iteratee) {\n return filterArray(array, iteratee, false);\n },\n /**\n * 根据过滤条件过滤掉数组中的元素并返回新的元素\n * @param array\n * @param iteratee\n * @returns {Array}\n */\n getSome: function (array, iteratee) {\n return filterArray(array, iteratee, true);\n },\n findFirst: function (array, iteratee) {\n var result = null;\n for(var i = 0; i < array.length; i++){\n if(iteratee(array[i]) == true){\n result = array[i];\n break;\n }\n }\n return result;\n },\n /**\n * 裁剪图片,返回指定宽度的图片\n * @param path 原始路径\n * @param width 指定宽度\n * @returns {*}\n */\n cutPicturePath: function (path, width) {\n if (path && path.length > 0 && width && width > 0) {\n var index = path.lastIndexOf('.');\n var fileType = path.substring(index, path.length);\n var name = path.substring(0, index);\n return name + '.w' + width + fileType;\n } else {\n return \"\";\n }\n },\n debug:function(info){\n if(this.isDebug && window.console && console.info){\n console.info(info);\n }\n },\n log: function (txt) {\n if(this.isDebug && window.console && console.log){\n console.log(txt);\n }\n },\n warn: function (txt) {\n if(this.isDebug && window.console && console.warn){\n console.warn(txt);\n }\n },\n /**\n * 倒计时\n * @param intDiff 时间差\n * @param run 每秒执行的函数\n * @param end 结束函数\n */\n timer: function(intDiff, run, end) {\n intDiff = intDiff / 1000;\n var intime = setInterval(function () {\n var day = 0, hour = 0, minute = 0, second = 0;// 时间默认值\n if (intDiff > 0) {\n day = Math.floor(intDiff / (60 * 60 * 24));\n hour = Math.floor(intDiff / (60 * 60)) - (day * 24);\n minute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);\n second = Math.floor(intDiff) - (day * 24 * 60 * 60)\n - (hour * 60 * 60) - (minute * 60);\n } else {\n clearInterval(intime);\n end();\n return false;\n }\n if (minute <= 9)\n minute = '0' + minute;\n if (second <= 9)\n second = '0' + second;\n var stime = \"\";\n if (day != 0) {\n stime += day + \"天 \";\n }\n stime += hour + \":\" + minute + \":\" + second;\n run(stime, hour, minute, second);\n intDiff--;\n }, 1000);\n },\n checkTelNo: function (tel) {\n if(!tel){return false;}\n var reg = /^1(3|4|5|7|8)[0-9]{9}$/g;\n return reg.test(tel);\n }\n };\n\n function PDBase(){\n //初始化数据 对滴\n this.terminal = 1; /* 终端类型,1pc; 2wap; 3app; 4weixin; */\n this.shareCode = ''; /*分享码*/\n this.nowNumber = 100 * 365 * 24 * 60 * 60 * 1000;/*2070年*/\n this.env = 0; /*0:uat; 1:production*/\n this.baseInfo = {\n isApp: false,\n isHSApp: false,\n isLenovoApp: false,\n name: '',\n showPrice: 0,/*显示给用户的价格,优惠后的价格*/\n price: 0, /*原始价格*/\n marketable: 0,/*0不可销售,1可以销售*/\n mallType: window.shopId || PDUtil.mallTypeMapping.lenovoShop.code,\n materialNumber: '',/*物料号*/\n isService: 0,\n salesType: 0,\n stock: 0, /*库存*/\n isIndependentSale: 0,\n isPhysical: 0,/*1是实物商品,0非实物*/\n LCode: '', /*L码*/\n SNCode: '',\n gmsl: 5, /*默认可购买数量为5*/\n isPersonalPositions:[],//是否私人定制\n personalPositions:\"\"//最终立即购买的参数\n };\n this.activity = null;\n this.promotion = {\n gifts: null, /*必选赠品*/\n giftsSelectable: null, /*可选赠品*/\n saleReduction: null, /*下单立减*/\n fullReduction:null, /*满减*/\n goodsStatus: null, /*库存状态*/\n option: null, /*推荐选件*/\n packs: null /*套餐*/\n };\n this.components = {\n scrollPicture: null,/*左侧图片*/\n title: null,/*商品title和促销语、主推语*/\n guige: null,/*规格*/\n service: null,/*服务*/\n buygroup: null,/*购买条*/\n srdz: null,/*私人订制*/\n bxzp: null,/*必选赠品*/\n tjxj: null,/*推荐选件*/\n hotlist: null, /*热销推荐*/\n taocan: null\n };\n\n //初始化操作\n this.baseInfo.isHSApp = this.getIsHSApp();\n this.baseInfo.isLenovoApp = this.getIsLenovoAPP();\n }\n\n /*原型方法*/\n PDBase.prototype = {\n constructor: PDBase,\n getIsHSApp: function () {\n return /lenovotradeapp/i.test(navigator.userAgent);\n },\n getIsLenovoAPP: function () {\n return /lenovomallapp/i.test(navigator.userAgent);\n },\n getShareTitle: function(code){\n var _code = code || window.code;\n var title = '';\n if(_code == '59363' || _code == '59364' || _code == '59355' || _code == '59362' || _code == '91865'){\n title = '只需语音指令,畅享智能生活。联想智能音箱,全心为你!';\n }\n else{\n title = '我的小伙伴下单立得专属优惠券,快来看看吧!';\n }\n return title;\n },\n /**\n * 处理活动数据\n */\n private_process_activity:function(){\n var _this = this;\n if(_this.activity !== undefined && (typeof iskcode == \"undefined\" || iskcode == 0)){\n var activity = _this.activity;\n var nowNumber = this.nowNumber;\n switch (_this.baseInfo.activityType){\n case 1 ://判断是否为团购 (1 为团购)\n var PurchasedJson = _this.activity.PurchasedJson = {};\n PurchasedJson.fromtime = activity.buyStartTime; // 团购开始时间\n PurchasedJson.totime = activity.buyEndTime;\t \t\t// 团购结束时间\n PurchasedJson.fromtimeStr = activity.buyStartTimeStr; // 团购开始时间(文本)\n PurchasedJson.totimeStr = activity.buyEndTimeStr;\t // 团购结束时间(文本)\n PurchasedJson.productPrice = _this.baseInfo.price ; // 商品价格\n PurchasedJson.discount = activity.discount; // 折扣价格\n PurchasedJson.purchaseCeiling= activity.purchaseCeiling; // 购买数量\n _this.baseInfo.gmsl = activity.purchaseCeiling;\n break;\n case 2 ://判断是否为闪购 (2 为闪购)\n var ShanGou = _this.activity.ShanGou = {};\n ShanGou.startNumber = activity.buyStartTime; \t\t// 闪购开始时间\n //ShanGou.startTime = new Date(ShanGou.startNumber);\n ShanGou.startTimeStr = activity.buyStartTimeStr;\n\n ShanGou.endNumber = activity.buyEndTime; \t// 闪购结束时间\n //ShanGou.endTime = new Date(ShanGou.endNumber);\n ShanGou.endTimeStr = activity.buyEndTimeStr;\n\n ShanGou.yystartNumber = activity.reservationStartTime; // 预约开始时间\n //ShanGou.yystartTime = new Date(ShanGou.yystartNumber);\n ShanGou.yystartTimeStr = activity.reservationStartTimeStr;\n\n ShanGou.yyendNumber = activity.reservationEndTime; // 预约结束时间\n //ShanGou.yyendTime = new Date(ShanGou.yyendNumber);\n ShanGou.yyendTimeStr = activity.reservationEndTimeStr;\n\n ShanGou.fyyStartNumber = activity.noReservationBuyTime; // 非预约闪购开始时间\n //ShanGou.fyyStartTime = new Date(ShanGou.fyyStartNumber);\n ShanGou.fyyStartTimeStr = activity.noReservationBuyTimeStr;\n\n ShanGou.purchaseCeiling = activity.purchaseCeiling; // 购买数量\n ShanGou.discount\t = activity.discount; // 折扣价\n\n if(nowNumber < ShanGou.endNumber){\n _this.baseInfo.gmsl = activity.purchaseCeiling;\n _this.baseInfo.showPrice = parseFloat(_this.baseInfo.price) - parseFloat(ShanGou.discount);\n }\n\n if (_this.activity.isReservation == 0){ //非预约闪购\n ShanGou.type = 0;\n }else if(_this.activity.isReservation == 1 && _this.activity.noReservationBuyTime == undefined){ //预约闪购\n ShanGou.type = 1; //预约闪购\n }else if(_this.activity.isReservation == 1 && _this.activity.noReservationBuyTime ){\n ShanGou.type = 2; //预约提前购买 非预约闪购开始时间(11点)晚于闪购时间(10点)\n }\n break;\n case 3 ://判断是否为限时抢购 (3 限时抢购)\n var flushSaleJson = _this.activity.flushSaleJson = {};\n flushSaleJson.fromtime = activity.buyStartTime; // 抢购开始时间\n flushSaleJson.totime = activity.buyEndTime;\t \t\t// 抢购结束时间\n flushSaleJson.fromtimeStr = activity.buyStartTimeStr; // 抢购开始时间(文本)\n flushSaleJson.totimeStr = activity.buyEndTimeStr;\t // 抢购结束时间(文本)\n flushSaleJson.productPrice = _this.baseInfo.price ; // 商品价格\n flushSaleJson.discountAmount = activity.discount; // 折扣价格\n flushSaleJson.purchaseCeiling= activity.purchaseCeiling; // 购买数量\n\n _this.baseInfo.showPrice = parseFloat(_this.baseInfo.price) - parseFloat(flushSaleJson.discountAmount);\n /*在时间段内*/\n if (nowNumber > flushSaleJson.fromtime && nowNumber < flushSaleJson.totime) {\n flushSaleJson.status = 'IN';\n _this.baseInfo.gmsl = activity.purchaseCeiling;\n }\n else if(nowNumber < activity.flushSaleJson.fromtime){\n flushSaleJson.status = 'BEFORE';\n _this.baseInfo.gmsl = activity.purchaseCeiling;\n }else{\n flushSaleJson.status = 'AFTER';\n _this.baseInfo.showPrice = _this.baseInfo.price;\n }\n\n break;\n } \n }\n },\n /**\n * 处理立即购买按钮逻辑\n */\n processBuyButton: function () {\n var result = {isShow: true, showText: '立即购买', isDisabled: true};\n if (this.baseInfo.marketable == 0) {\n result.showText = '商品已下架';\n }\n else if (this.baseInfo.isIndependentSale == 0) {\n result.showText = '非独立销售商品';\n }\n else if (this.isCurrentTerminal() == false) {\n result.showText = '不在当前平台销售';\n }\n else if (this.isLcodeProduct()) {\n result.showText = 'L 码购买';\n result.isDisabled = false;\n }\n else if (this.baseInfo.salesType == 5) {\n result.showText = '立即定制';\n result.isDisabled = false;\n }\n else if (this.baseInfo.salesType == 2) {\n result.showText = '敬请期待';\n result.isDisabled = true;\n }\n else if (this.baseInfo.activityType == 3){\n /*闪购处理*/\n var activity = this.activity;\n if(activity.flushSaleJson.status == 'BEFORE'){\n result.showText = '抢购未开始';\n result.isDisabled = true;\n }else if(activity.flushSaleJson.status == 'IN'){\n if(this.baseInfo.stock > 0){\n result.showText = '立即购买';\n result.isDisabled = false;\n }\n else{\n result.showText = '已售罄';\n result.isDisabled = true;\n }\n }else {\n if(this.baseInfo.stock > 0){\n result.showText = '立即购买';\n result.isDisabled = false;\n }\n else{\n result.showText = '已售罄';\n result.isDisabled = true;\n }\n }\n }\n else if (this.baseInfo.stock <= 0) {\n result.showText = '已售罄';\n }\n else {\n result.showText = '立即购买';\n result.isDisabled = false;\n }\n return result;\n },\n /**\n * 处理加入购物车按钮逻辑\n */\n processAddCartButton: function () {\n var result = {isShow: true, showText: '加入购物车', isDisabled: false};\n /*是否显示加入购物车按钮*/\n var nowNumber = this.nowNumber;\n if (/^(2|4|5|6|98)$/gi.test(this.baseInfo.salesType + '')) {\n result.isShow = false;\n }\n else if (window['ischangenew'] && window['ischangenew'] == 1) {\n result.isShow = false;\n }\n else if (this.baseInfo.stock == 0) {\n result.isShow = false;\n }\n else if (this.baseInfo.marketable == 0) {\n result.isShow = false;\n }\n else if (this.baseInfo.isPersonalPositions && this.baseInfo.isPersonalPositions.length > 0){\n /*私人订制不显示加入购物车按钮*/\n result.isShow = false;\n }\n else if (this.baseInfo.isPhysical == 0 && this.baseInfo.buOwner == 30) {\n result.isShow = false;\n }\n else if (this.baseInfo.isIndependentSale == 0) {\n result.isShow = false;\n }\n else if (this.isCurrentTerminal() == false) {\n result.isShow = false;\n }\n else if (this.shareCode && this.shareCode.length > 0) {\n result.isShow = false;\n }\n else if (this.isLcodeProduct()) {\n result.isShow = false;\n }\n else if (this.baseInfo.isService > 0 && this.baseInfo.isPhysical == 0) {\n result.isShow = false;\n }\n else if (this.baseInfo.activityType == 3) {\n /*显示抢购判断*/\n var end = this.activity.flushSaleJson.totime;\n if (nowNumber > end) { // 如果闪购时间已过,可以显示购物车\n result.isShow = true;\n } else {\n result.isShow = false;\n }\n }\n else if(this.baseInfo.activityType == 2){\n /*闪购判断*/\n var shangou = this.activity.ShanGou;\n /*当前时间小于闪购结束时间,就隐藏购物车按钮*/\n if(shangou.endNumber && this.nowNumber < shangou.endNumber){\n result.isShow = false;\n }\n }\n else if (this.baseInfo.activityType == 1 && nowNumber < this.activity.PurchasedJson.totime) {\n result.isShow = false;\n }\n else {\n result.isShow = true;\n }\n return result;\n },\n /**\n * 处理到货通知按钮逻辑\n */\n processNoticeButton: function () {\n var result = {isShow: false, showText: '到货通知', isDisabled: false};\n /*没有库存,是实物商品,并且不是17商城的商品,的时候显示到货通知*/\n if (this.baseInfo.stock <= 0 && this.baseInfo.isPhysical != 0 && !this.isShowYuyue()) {\n result.isShow = true;\n }\n return result;\n },\n /**\n * 处理商品价格的显示逻辑\n */\n processShowPrice: function () {\n var result = {isShow: true, showText: '', isDisabled: false};\n if (this.isShowYuyue()) {\n result.showText = '按需定制';\n }\n else if (this.baseInfo.isShowPrice == 0 &&\n this.baseInfo.mallType == PDUtil.mallTypeMapping.lenovoShop.code) {\n result.showText = '暂无报价';\n }\n else if (this.baseInfo.showPrice > 0) {\n result.showText = this.baseInfo.showPrice.toFixed(2);\n } else {\n result.showText = '';\n }\n return result;\n },\n /**\n * 处理所有需要显示的必选赠品\n */\n processBXZPNeedShowList: function () {\n var _data = [];\n var gifts = this.promotion.gifts;\n if (!gifts || gifts.length == 0) {\n _data = [];\n } else {\n var nowNumber = this.nowNumber;\n for (var i = 0; i < gifts.length; i++) {\n var o = gifts[i];\n /*是否有库存*/\n var hasStock = this.promotion && this.promotion.goodsStatus && this.promotion.goodsStatus[o.code];\n /*是否在有效时间段内*/\n var effective = nowNumber > o.fromtime && nowNumber < o.totime;\n if(hasStock && effective){\n _data.push(o);\n }\n }\n }\n return _data;\n },\n /**\n * 处理所有需要显示的可选赠品\n */\n processKXZPNeedShowList: function () {\n var _data = [];\n var gifts = this.promotion.giftsSelectable;\n if (!gifts || gifts.length == 0) {\n _data = [];\n } else {\n var nowNumber = this.nowNumber;\n for (var i = 0; i < gifts.length; i++) {\n var o = gifts[i];\n /*是否有库存*/\n var hasStock = this.promotion && this.promotion.goodsStatus && this.promotion.goodsStatus[o.code];\n /*是否在有效时间段内*/\n var effective = nowNumber > o.fromtime && nowNumber < o.totime;\n if(hasStock && effective){\n _data.push(o);\n }\n }\n }\n return _data;\n },\n /**\n * 处理所有需要显示的推荐选件\n */\n processXJNeedShowList: function () {\n var _data = [];\n if (!this.promotion || !this.promotion.option || this.promotion.option.length == 0) {\n _data = [];\n } else {\n var nowNumber = this.nowNumber;\n for (var i = 0; i < this.promotion.option.length; i++) {\n var o = this.promotion.option[i];\n var hasStock = this.promotion && this.promotion.goodsStatus && this.promotion.goodsStatus[o.code];\n var effective = nowNumber > o.fromtime && nowNumber < o.totime;\n var discount = parseFloat(o.discountAmount);\n /*有库存并且在有效期内才显示*/\n if(hasStock && effective){\n _data.push($.extend({\n showPrice: o.productPrice - discount\n }, o));\n }\n }\n }\n return _data;\n },\n /**\n * 处理所有需要显示的套餐\n */\n processTaocanNeedShowList: function () {\n var _data = [];\n try{\n var _promotion = this.promotion;\n if (!_promotion || !_promotion.packs || _promotion.packs.length == 0) {\n _data = [];\n } else {\n var nowNumber = this.nowNumber;\n /*循环有几个套餐*/\n for (var i = 0; i < _promotion.packs.length; i++) {\n var _pack = {data:[]};\n _pack.data = _promotion.packs[i];\n _pack.canSell = !!((_promotion.packs[i]['able'] != 'disable' || _promotion.packs[i]['disabled'] == 1) && (this.baseInfo.isIndependentSale && this.isCurrentTerminal() && this.baseInfo.marketable && this.baseInfo.stock));\n _pack.discount = parseFloat(_pack.data[0].totalDiscountAmount);\n _pack.showPrice = parseFloat(_pack.data[0].totalPrice)- _pack.discount;\n _data.push(_pack);\n }\n }\n }catch(e){\n PDUtil.warn('PDBase.processTaocanNeedShowList错误 --------------->');\n PDUtil.warn(e);\n _data = [];\n }\n return _data;\n },\n fn_Specifications: {\n SpecificationsRelList: {},\n SpecificationsRels: \"\",\n valeDisabled: function (gcode, rfn) {\n var _this = this;\n if (!_this.SpecificationsRelList) return;\n if (_this.SpecificationsRelList.length == 0) return [];\n var svlist = (typeof gcode == \"string\" || typeof gcode == \"number\") ? this.getDefaultSF(gcode) : gcode;\n var temp_t = [];\n var mylist = [];\n for (var i = 0; i < svlist.length; i++) { //规格\n var _codelist = [];\n var typeindex = 0;\n for (var z = 0; z < specInfo.length; z++) {\n if (specInfo[z].typeid == svlist[i].typeid) {\n typeindex = z;\n break;\n }\n }\n for (var j = 0; j < specInfo[i].gsdlist.length; j++) { //每个规格下的商品\n\n if (svlist[i].gsdId == specInfo[typeindex].gsdlist[j].gsdId) {\n _codelist.push(specInfo[i].gsdlist[j].gcode)\n }\n }\n if (_codelist.length > 0) {\n mylist.push(_codelist)\n }\n }\n var mycodelist = [];\n if(mylist.length>0){\n $.each(mylist[0], function (k, v) {\n var n = 1;\n for (var i = 1; i < mylist.length; i++) {\n if ($.inArray(v, mylist[i]) != -1) {\n n++\n }\n }\n if (n == i) {\n mycodelist.push(v)\n }\n });\n }\n if (mycodelist.length > 0) {\n var gcodelist = mycodelist;\n } else {\n var gcodelist = [code];\n }\n $.each(svlist, function (svlist_i, svlist_v) {\n $.each(_this.SpecificationsRels, function (i, v) {\n if (svlist_v.typeid != v.typeid) {\n var tcode = [];\n var pcode = [];\n $.each(v.gsdlist, function (si, sv) {\n if ((gcodelist instanceof Array) && gcodelist.length > 0) {// gcodelist会不会存在多个?如果是多个就用gcodelist.join(\"\").indexOf\n if (gcodelist.join(\"\").indexOf(sv.gcode) == -1) {\n tcode.push(sv.gsdId);\n } else {\n pcode.push(sv.gsdId);\n }\n }\n });\n $.each(uniquelize(tcode), function (ti, tv) {\n if (!contains(tv, pcode)) {\n temp_t.push(tv);\n }\n });\n }\n });\n });\n $.each(temp_t, function (i, v) {\n if (typeof rfn == 'function')\n return rfn(v);\n });\n return temp_t;\n },\n valeDefault: function (gcode, rfn) {\n if (!this.SpecificationsRelList) return;\n var gsdIds = [];\n $.each(this.getDefaultSF(gcode), function (si, sv) {\n gsdIds.push(sv.gsdId);\n\n if (typeof rfn == 'function') rfn(sv.gsdId);\n });\n return gsdIds;\n },\n getgcode: function (gcoderels) {\n var _this = this;\n if (gcoderels) {\n var coderel = [];\n $.each(gcoderels, function (svlist_i, svlist_v) {\n if (coderel.length == 0) {\n coderel = _this.getcodesbygg(svlist_v.typeid, svlist_v.gsdId);\n } else {\n coderel = _this.intersect(coderel, _this.getcodesbygg(svlist_v.typeid, svlist_v.gsdId));\n }\n });\n if (coderel.length == 1) {\n return coderel[0];\n }\n }\n if (_this.SpecificationsRelList.length == 0) return [];\n var gcodelist = [];\n $.each(_this.SpecificationsRels, function (i, v) {\n $.each(v.gsdlist, function (si, sv) {\n gcodelist.push(sv.gcode);\n });\n });\n return gcodelist.length == 0 ? [] : uniquelize(gcodelist);\n },\n getDefaultSF: function (gcode) {\n var svlist = [];\n $.each(this.SpecificationsRels, function (i, v) {\n $.each(v.gsdlist, function (si, sv) {\n if (sv.gcode == gcode) {\n svlist.push({typeid: v.typeid, gsdId: sv.gsdId});\n }\n });\n });\n return svlist;\n },\n getcodesbygg: function (gs, gsd) {\n var _this = this;\n var gcodelist = [];\n $.each(_this.SpecificationsRels, function (i, v) {\n if (v.typeid == gs)\n $.each(v.gsdlist, function (si, sv) {\n if (sv.gsdId == gsd) {\n gcodelist.push(sv.gcode);\n }\n });\n });\n return gcodelist;\n },\n intersect: function (a, b) {\n var alist = [];\n $.each(uniquelize(a), function (i, o) {\n return contains(o, b) ? alist.push(o) : null;\n });\n return alist;\n }\n },\n getShareInfo:function() {\n var f = false;\n var u = window.location.href;\n var sharecode = PDUtil.queryString('sharecode');\n if (sharecode && sharecode.length > 0) {\n f = true;\n this.shareCode = sharecode;\n PDUtil.addCookie('sharecode', this.shareCode, {expires: 15});\n //获取其他参数\n var promotionChannels = PDUtil.queryString('promotionChannels') || '';\n var memberId = this.shareCode;\n var h = location.hostname;\n var domain = h.substring(3, h.length + 1); \n PDUtil.addCookie(\n 'c2clenovo',\n '{\"promotionName\":\"' + $p.baseInfo.name + '\",\"promotionType\":\"0\",\"promotionChannels\":\"' + promotionChannels + '\",\"memberId\":\"' + memberId + '\", \"type\": \"1\"}',\n {\"domain\": domain, \"expires\": 15}\n );\n PDUtil.addCookie('wi', '', {\"domain\": domain, \"expires\": -1});\n PDUtil.addCookie('cid', '', {\"domain\": domain, \"expires\": -1});\n PDUtil.addCookie('target', '', {\"domain\": domain, \"expires\": -1});\n PDUtil.addCookie('channel', '', {\"domain\": domain, \"expires\": -1});\n PDUtil.addCookie('source', '', {\"domain\": domain, \"expires\": -1});\n $.get(\n '/api/c2c/sharedby.do',\n {\n \"sharecode\": this.shareCode,\n \"sourceurl\": u,\n \"promotionChannels\": promotionChannels,\n \"promotionName\": this.baseInfo.name,\n \"promotionType\": \"0\"\n }\n );\n }\n return f;\n },\n isShowYuyue:function(){\n return this.mallType == PDUtil.mallTypeMapping.SMBShop.code && this.baseInfo.isShowPrice == \"0\";\n },\n /*是否应该显示活动*/\n isShowActivity: function () {\n var info = this.baseInfo;\n return info.marketable != 0 && info.isIndependentSale != 0 && this.isCurrentTerminal() && info.salesType != 2;\n },\n /**\n * 是否应该显示闪购活动\n */\n isShowShangou: function(){\n var info = this.baseInfo;\n return info.activityType == 2 && this.isShowActivity();\n },\n /**\n * 是否是当前平台销售\n */\n isCurrentTerminal: function () {\n if(this.terminal == 1){\n return this.baseInfo.isPcSales == 1;\n }\n else if(this.terminal == 2){\n return this.baseInfo.isWapSales == 1;\n }\n else if(this.terminal == 3){\n return this.baseInfo.isAppSales == 1;\n }\n else {\n return this.baseInfo.isWeiXinSales == 1;\n }\n },\n /**\n * 是否是L码商品\n */\n isLcodeProduct: function () {\n return !!(window.iskcode && iskcode === 1);\n },\n /**\n * 加载详情页基本数据\n */\n loadData: function (completed) {\n var _this = this;\n _this.loadProductInfo(function(){\n _this.loadPromotionInfo(null, null, function(){\n _this.loadStock(null, null, function(){\n completed && completed.call(_this);\n })\n });\n\n }, function () {\n alert('商品信息加载失败,请刷新页面重试!');\n });\n },\n /**\n * 加载商品详细信息\n */\n loadProductInfo: function(success, error, completed){\n var _this = this;\n $.ajax({ // 获取价格\n type: \"GET\",\n url: \"/cache/detail?code=\" + code + \"&ss=\" + new Date().getMilliseconds(),// 获取 价格 活动 促销语\n dataType: 'json',\n error: function (err, status) {\n PDUtil.debug('load detail error, status is:' + status);\n PDUtil.debug('error is :');\n PDUtil.debug(err);\n _this.baseInfo.price = _this.baseInfo.showPrice = 0;\n if(error && typeof error == \"function\"){\n error();\n }\n },\n complete:function(){\n PDUtil.debug('load detail completed');\n if(completed && typeof completed == \"function\"){\n completed();\n }\n },\n success: function (db) {\n PDUtil.debug('load detail success, data is:');\n PDUtil.debug(db);\n var _detail = db.data && db.data[0] && db.data[0].detail;\n if(db.status == \"200\"){\n if(_detail){\n //获取mallType区分商城\n if(_detail.mallType){\n _this.baseInfo.mallType = _detail.mallType;\n _this.baseInfo.shopid = _detail.mallType;\n _this.baseInfo.isService = _detail.isService;\n if(_this.baseInfo.shopid == PDUtil.mallTypeMapping.SMBShop.code){ //17商城\n _this.baseInfo.gmsl = 999;\n }\n }\n _this.baseInfo.isNeedSN = _detail.isNeedSN || 0;\n _this.baseInfo.isPersonalPositions = _detail.personalPositions;\n _this.baseInfo.isPhysical = _detail.isPhysical || 0;\n _this.baseInfo.buOwner = _detail.buOwner || 0;\n _this.baseInfo.isPcSales = _detail.isPcSales || 0; /*是否在pc平台销售*/\n _this.baseInfo.isWapSales = _detail.isWapSales || 0; /*是否在wap平台销售*/\n _this.baseInfo.isAppSales = _detail.isAppSales || 0; /*是否在app平台销售*/\n _this.baseInfo.isWeiXinSales = _detail.isWeiXinSales || 0; /*是否在微信平台销售*/\n _this.baseInfo.isIndependentSale = _detail.isIndependentSale || 0; /*0为非独立销售商品*/\n _this.baseInfo.name = _detail.name || \"\";/*获取商品名称*/\n _this.baseInfo.isShowPrice = _detail.isShowPrice || 0;/*获取是否显示价格*/\n _this.baseInfo.salesType = _detail.salesType || 0;/*获取销售类型*/\n _this.baseInfo.pcPromotion = _detail.pcPromotion || null;/*获取促销语*/\n _this.baseInfo.materialNumber = _detail.materialNumber || \"\";/*获取物料号*/\n _this.baseInfo.productId = _detail.productId || \"\";\n _this.baseInfo.faId = _detail.faId || '';\n _this.baseInfo.faCode = _detail.faCode || '';\n _this.baseInfo.faName = _detail.faName || '';\n _this.baseInfo.thumbnailsURL = '';\n if(_detail.thumbnailsURL){\n _this.baseInfo.thumbnailsURL = location.protocol + _detail.thumbnailsURL;\n }\n\n /*获取主推语*/\n _this.baseInfo.extensionTerminal = _detail.extensionTerminal || '';\n _this.baseInfo.extensionContent = _detail.extensionContent || '';\n\n }\n /*获取服务器当前时间*/\n _this.curDatetime = db.curDatetime;\n _this.nowNumber = new Date(_this.curDatetime.replace(/-/g, '/')) - 0;\n\n /*获取活动信息*/\n if(db.data[0].activity && db.data[0].activity.activityType){\n _this.activity = db.data[0].activity;\n _this.baseInfo.activityType = db.data[0].activity.activityType;\n }else{\n _this.activity = null;\n _this.baseInfo.activityType = 0 ;\n }\n /*根据不同终端类型, 获取价格信息*/\n if (_this.terminal == 1 && db.data[0].pc) {\n _this.baseInfo.price = _this.baseInfo.showPrice = db.data[0].pc;\n }\n else if(_this.terminal == 2 && db.data[0].wap){\n _this.baseInfo.price = _this.baseInfo.showPrice = db.data[0].wap;\n }\n else if(_this.terminal == 3 && db.data[0].app){\n _this.baseInfo.price = _this.baseInfo.showPrice = db.data[0].app;\n }\n else if(_this.terminal == 4 && db.data[0].weixin){\n _this.baseInfo.price = _this.baseInfo.showPrice = db.data[0].weixin;\n }\n else {\n _this.baseInfo.price = 0;\n }\n _this.baseInfo.marketable = db.data[0].marketable || 0;/* 上下架状态*/\n /*小心云盘服务购买数量限制为1*/\n if(_this.baseInfo.isService == \"3\"){\n _this.baseInfo.gmsl = 1;\n }\n _this.private_process_activity();\n }\n if(success && typeof success == \"function\"){\n success(db);\n }\n }\n });\n },\n /**\n * 加载库存信息\n */\n loadStock: function(success, error, completed){\n var _this = this;\n var t = _this.nowNumber;\n var myProcodeStr = '';\n if(_this.baseInfo.activityType > 0 && t < _this.activity['buyEndTime']){\n myProcodeStr = '[{activityType:'+_this.baseInfo.activityType+', productCode:' + code + '}]';\n }else{\n myProcodeStr = '[{activityType:0, productCode:' + code + '}]';\n }\n if(_this.baseInfo.salesType == \"98\"){\n _this.loadO2OCityListAndStock(success, error,completed);\n }else {\n $.ajax({ //获取所有库存\n type: \"POST\",\n url: \"/stock/getStockInfo.jhtm?ss=\" + new Date().getMilliseconds(),\n data: {\"proInfos\": myProcodeStr},\n complete:function(){\n PDUtil.debug('load stock completed');\n if(completed && typeof completed == \"function\"){\n completed();\n }\n },\n error: function (err, status) {\n PDUtil.debug('load stock error, status is:' + status);\n PDUtil.debug('error is :');\n PDUtil.debug(err);\n error && error(err);\n },\n success: function (data) {\n PDUtil.debug('load stock success, stock data is:');\n PDUtil.debug(data);\n var _data = data && data[0];\n if(_data){\n _this.baseInfo.stock = parseInt(_data['salesNumber'] || 0);\n _this.baseInfo.waterLevelDesc = _data['waterLevelDesc'];/*获取水位库存*/\n }\n if(success) {\n data.detailStockType = 0;\n success(data);\n }\n }\n });\n }\n },\n /**\n * 获取O2O城市列表及库存信息\n * @param completed\n */\n loadO2OCityListAndStock: function(success, error, completed){\n var _this = this;\n var formatData = function (data) {\n var result = [];\n var has = false;\n for (var i = 0; i < data.length; i++) {\n has = false;\n var city = data[i];\n if(city.salesNumber > 0){\n city.className = \"normal\";\n _this.baseInfo.thinko2oStock += parseInt(city.salesNumber);\n }else{\n city.className = \"gray\";\n }\n\n for (var j = 0; j < result.length; j++) {\n if (city['provinceNo'] == result[j]['provinceNo']) {\n result[j].cities.push(city);\n has = true;\n break;\n }\n }\n if (!has) {\n result.push({\n \"provinceNo\": city[\"provinceNo\"],\n \"provinceName\": city[\"provinceName\"],\n \"cities\": [city]\n });\n }\n }\n _this.baseInfo.stock = _this.baseInfo.thinko2oStock;\n return result;\n };\n var getCityList = function(op){\n return $.ajax({\n type: 'GET',\n url: '/cache/thinko2ocities',\n data: $.extend({\n \"code\": code,\n \"activityType\": _this.baseInfo.activityType,\n \"saleType\": _this.baseInfo.salesType\n }, op || {}),\n dataType: 'json'\n });\n };\n getCityList()\n .done(function(data){\n PDUtil.debug('load thinko2o stock success, data is :');\n PDUtil.debug(data);\n if(data.status == \"200\" && data.data && data.data.length > 0) {\n _this.baseInfo.thinko2oCities = formatData(data.data);\n }\n if(success){\n data.detailStockType = 1;\n success(data);\n }\n })\n .fail(function (err, status) {\n PDUtil.debug('load thinko2o stock error, status is :' + status);\n PDUtil.debug('error info is :');\n PDUtil.debug(err);\n if(error){\n error(err, status);\n }\n })\n .always(function(){\n PDUtil.debug('load thinko2o stock completed');\n completed();\n });\n },\n /**\n * 加载促销信息\n */\n loadPromotionInfo: function (success, error, completed) {\n var _this = this;\n $.ajax({ // 获取价格\n type: \"GET\",\n data:{\n code:code,\n /*platformCode: _this.terminal,*/\n salesPlat: _this.terminal\n },\n url: \"/api/promotions?\" + new Date().getMilliseconds(),// 获取促销信息接口\n dataType: 'json',\n complete:function(){\n PDUtil.debug('load promotioninfo completed');\n if(completed && typeof completed == \"function\"){\n completed();\n }\n },\n error: function (err, status) {\n PDUtil.debug('load promotioninfo error, status is :' + status);\n PDUtil.debug('error info is :');\n PDUtil.debug(err);\n _this.promotion = {};\n if(error && typeof error == \"function\"){\n error();\n }\n },\n success: function (res) {\n PDUtil.debug('load promotioninfo success, data is :');\n PDUtil.debug(res);\n if(res && res.status=='200'){//处理信息\n if(res.data){\n var _dd = res.data;\n $.extend(_this.promotion, _dd);\n }\n }\n if(success && typeof success == \"function\"){\n success(res);\n }\n }\n });\n },\n /**\n * 发送请求,验证用户是否参加了团购\n * @param success\n * @param error\n */\n jsonpIsTuangouUser: function(success, error){\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath(\"gwc\") + \"tuanstatus.jhtml?ss=\" + new Date().getMilliseconds(),\n data: {\n gcode: code, // 商品编号code\n activityId: this.baseInfo.activityType\n },\n dataType: \"jsonp\",\n jsonp: 'callbackparam',\n success: success,\n error: error || function (xr) {\n PDUtil.debug(\"the ajax -> jsonpIsTuangouUser is fail\" + xr.responseText + \"--\" + xr.statusText);\n }\n });\n },\n /**\n * 发送请求,验证用户是否预约\n * @param success\n * @param error\n */\n jsonpIsBookUser: function (success, error){\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('gwc') + \"bookStatus.jhtml\",\n data: {\n plat: this.terminal,\n activityId : this.activity.activityId,\n gcode: code\n },\n dataType: \"jsonp\",\n jsonp: \"callbackparam\",\n success: success,\n error: function () {\n PDUtil.debug('获取预约资格失败!');\n if(error && typeof error == 'function'){\n error();\n }\n }\n });\n },\n /*闪购预约*/\n jsonpShangouYuyue: function (success, error) {\n var _this = this;\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('gwc') + \"addReservation.jhtml\",\n data: {\n plat: $p.terminal,\n gcode: code\n },\n dataType: \"jsonp\",\n jsonp: \"callbackparam\",\n success: success,\n error: function () {\n PDUtil.debug('发送预约信息失败!');\n if(error && typeof error == 'function'){\n error();\n }\n }\n });\n },\n /**\n * 添加购物车请求\n * @param data {itemType:\"\", gcodes: \"\", kxzp:\"\", service:\"\", srdz:\"\", icount: 1}\n * @param success\n * @param error\n */\n jsonpAddItemToCart: function (data, success, error) {\n /*{\n terminal: this.terminal, //终端类型\n itemtype: data.itemType || 0,// 商品类型0普通商品2选件搭售3 套餐7标识批量购买\n gcodes: data.gcodes || \"\", // 商品编号code\n opgcode: data.kxzp || \"\", // 可选赠品\n servicecode: data.service || \"\",// 服务编号,主品带服务时不可空,单服务商品时使用gcodes,该字段为空\n customids: data.srdz || \"\", //私人订制\n icount: data.icount || 1 //数量\n }*/\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('gwc') + \"additemtocart.jhtml?ss=\" + new Date().getMilliseconds(),\n data: data,\n dataType: \"jsonp\",\n jsonp: 'callbackparam',\n success: success,\n error: error || function () {\n PDUtil.debug(\"additemtocart the ajax is fail\");\n }\n });\n },\n /**\n * 到货通知发送短信接口\n * @param data\n * @param success\n * @param error\n */\n jsonpNoticeSendSms: function (data, success, error) {\n $.ajax({\n type: \"GET\",\n url: \"/stock/sendsms.jhtm\",\t //sendsms\n data: data,\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n success: success,\n error: error || function () {\n PDUtil.debug('到货通知-> 发送短信失败');\n alert(\"系统繁忙,请稍后再试\");\n }\n });\n },\n /**\n * 保存到货通知信息\n */\n jsonpNoticeSave: function (data, success, error) {\n $.ajax({\n type: \"POST\",\n url: data.url || \"/stock/subscribe.jhtm\",\n data: data,\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n success: success,\n error: error\n });\n },\n /**\n * ajax请求服务信息\n * @param data\n * @param success\n * @param error\n */\n loadServiceInfo: function(data, success, error){\n $.ajax({\n url: data.url || \"/cache/servicelist\",\n data: {code: code, terminal: this.terminal},\n dataType: \"json\",\n success: success,\n error: error || function () {\n PDUtil.debug('请求服务信息失败!');\n }\n });\n },\n /**\n * 加载热销榜数据\n * @param data\n * @param success\n * @param error\n */\n loadHostList: function (data, success, error) {\n $.ajax({// 热销榜\n type: \"GET\",\n url: data.url || (\"/api/products/gethotlist.jhtm?ss=\" + new Date().getMilliseconds()),\n data: {\n w: 205,\n h: 205,\n salesPlat: this.terminal\n },\n dataType: 'json',\n success: success,\n error: error || function () {\n window['PDUtil'].warn('hotlist ajax error');\n }\n });\n },\n /**\n * 加载收藏信息\n * @param data\n * @param success\n * @param error\n */\n loadMyFavorite: function (data, success, error) {\n $.ajax({\n type: \"GET\",\n url: '/api/myfavorites/' + data.url + new Date().getMilliseconds(),\n data: {\n gcode: code,\n plat: this.terminal\n },\n dataType: 'json',\n success: success,\n error: error\n });\n },\n loadPresellInfo: function (data, success, error) {\n var defaultData = {\"shopId\": $p.baseInfo.mallType, \"gcode\": code, \"terminal\": $p.terminal};\n data = $.extend(defaultData, data || {});\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('presell'),\n data: data,\n dataType: \"jsonp\",\n jsonp: \"callbackparam\",\n success: success,\n error: error || function(){\n alert('获取预售信息失败, 请稍后再试');\n }\n });\n },\n /**\n * 保存预约闪购手机号\n */\n jsonpSaveBookShangouTel: function (data, success, error) {\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('gwc') + \"updateBookPhone.jhtml?ss=\" + new Date().getMilliseconds() + \"&plat=\" + this.terminal,\n data: data,\n dataType: \"jsonp\",\n jsonp: \"callbackparam\",\n success: success,\n error: function () {\n PDUtil.debug('保存预约闪购手机号时出现错误!');\n if(error && typeof error == 'function'){\n error();\n }\n }\n });\n },\n /**\n * 获取评论列表\n * @param pageindex 第几页\n * @param level 星级\n * @param lable 标签\n * @param success 成功回调函数\n * @param error 失败回调函数\n */\n jsonpEvaluateList: function (codes, pageindex, level, lable, success, error) {\n var _lv = level || 3;\n var _lable = lable || \"\";\n var gcode = codes || window.code || ''; \n \n $.ajax({\n url: __detailConfig.getApiPath('comment') + \"/comment/getproductcomment/\" + pageindex + \".do\",\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n timeout: 5000,\n data: {\n \"gcode\": gcode,\n \"plat\": this.terminal,\n \"pageSize\": \"10\",\n \"level\": _lv,\n \"lable\":_lable\n },\n success: success,\n error: error\n });\n },\n /**\n * 获取评价条数\n */\n jsonpEvaluateNumber: function (codes, success, error) {\n $.ajax({\n url: __detailConfig.getApiPath('comment') + \"/comment/getpronum.do\",\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n timeout: 5000,\n data: {\n \"gcode\": codes || window.code || '',\n \"plat\": this.terminal\n },\n success: success,\n error: error\n });\n },\n /**\n * 获取评价标签\n */\n jsonpEvaluateLable:function (codes, success, error){\n $.ajax({\n url : __detailConfig.getApiPath('comment') + \"/comment/getlables.do\",\n dataType:\"jsonp\",\n jsonp:\"jsonpcallback\",\n timeout : 2000,\n data : {\n \"gcode\": codes || window.code || ''\n },\n success : success,\n error : error\n });\n },\n /**\n * 浏览详情页添加积分\n */\n jsonpAddJF:function (success, error){\n $.ajax({\n url : __detailConfig.getApiPath('addjf'),\n dataType:\"jsonp\",\n jsonp:\"jsonpcallback\",\n timeout : 2000,\n data : {\n\n },\n success : success,\n error : error\n });\n },\n /**\n * 校验sn码\n */\n ajaxCheckSNCode: function (SNCode, success, error) {\n var self = this;\n $.ajax({\n type: \"GET\",\n url: \"/api/products/checksn\",\n data: {\"sn\": SNCode, \"num\": self.baseInfo.materialNumber},\n dataType: \"json\",\n success: function (data) {\n success(data);\n },\n error: function () {\n error && error();\n }\n });\n },\n debug: true\n };\n\n /** Detect free variable `global` from Node.js. */\n function isRunInNode (){\n return Boolean(typeof global == 'object' && global && global.Object === Object && global);\n }\n\n\n try {\n var __debug__ = PDUtil.queryString('__debug__');\n if(__debug__){\n PDUtil.isDebug = true;\n }\n }catch(e){\n console.log('trigger error when debug');\n }\n\n function filterArray(array, iteratee, bool){\n var result = [];\n for(var i = 0; i < array.length; i++){\n if(iteratee(array[i]) == bool){\n result.push(array[i]);\n }\n }\n return result;\n }\n function contains(item,e){\n return RegExp(item).test(e);\n }\n function uniquelize(e) {\n var ra = new Array();\n for (var i = 0; i < e.length; i++) {\n if (!contains(e[i], ra)) {\n ra.push(e[i]);\n }\n }\n return ra;\n }\n function debug_data_presell(baseInfo){\n baseInfo.salesType = 2;\n }\n\n function debug_data_xsqg (active) {\n var nowNumber = $p.nowNumber;\n active.fromtimeStr = '2016/11/21 13:52:00'; // 抢购开始时间(文本)\n active.totimeStr = '2016/11/21 13:54:00';\t // 抢购结束时间(文本)\n active.fromtime = new Date(active.fromtimeStr.replace(/-/g, '/')) - 0; // 抢购开始时间\n active.totime = new Date(active.totimeStr.replace(/-/g, '/')) - 0;\t \t\t// 抢购结束时间\n\n /*在时间段内*/\n if (nowNumber > active.fromtime && nowNumber < active.totime) {\n active.status = 'IN';\n }\n else if(nowNumber < active.fromtime){\n active.status = 'BEFORE';\n }else{\n active.status = 'AFTER';\n $p.baseInfo.showPrice = $p.baseInfo.price;\n }\n }\n\n if(PDUtil.isRunInNode() == true && module && module.exports){\n module.exports = {'PDUtil': PDUtil, 'PDBase': PDBase};\n }else{\n window['PDUtil'] = PDUtil;\n window.PDBase = PDBase;\n }\n})();"]}