{"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","formatDate","time","date","Date","Y","getFullYear","M","getMonth","D","getDate","H","getHours","m","getMinutes","s","getSeconds","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","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","getItemDomain","itemDomain","curHost","host","navigator","userAgent","getShareTitle","_code","private_process_activity","_this","undefined","iskcode","activityType","PurchasedJson","fromtime","buyStartTime","totime","buyEndTime","fromtimeStr","totimeStr","productPrice","discount","purchaseCeiling","ShanGou","startNumber","startTimeStr","endNumber","endTimeStr","yystartNumber","reservationStartTime","yystartTimeStr","yyendNumber","reservationEndTime","yyendTimeStr","fyyStartNumber","noReservationBuyTime","fyyStartTimeStr","parseFloat","isReservation","type","flushSaleJson","discountAmount","status","processBuyButton","isShow","showText","isDisabled","$p","isIntegral","isCurrentTerminal","isLcodeProduct","processAddCartButton","buOwner","shangou","processNoticeButton","isShowYuyue","processShowPrice","isShowPrice","toFixed","processBXZPNeedShowList","_data","o","hasStock","effective","processKXZPNeedShowList","processXJNeedShowList","processTaocanNeedShowList","_promotion","_pack","data","packStatus","each","k","v","canSell","totalDiscountAmount","totalPrice","fn_Specifications","SpecificationsRelList","SpecificationsRels","valeDisabled","gcode","rfn","svlist","getDefaultSF","temp_t","mylist","_codelist","typeindex","z","specInfo","typeid","j","gsdlist","gsdId","mycodelist","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","ajax","url","sourceurl","promotionName","promotionType","dataType","jsonp","jsonpCallback","timeout","isShowActivity","isShowShangou","loadData","completed","loadProductInfo","loadPromotionInfo","loadStock","alert","loadAllProductionInfo","success","ss","params","err","complete","db","dbData","detailData","promotionData","_priceData","_detail","detail","shopid","isNeedSN","isPcSales","isWapSales","isAppSales","isWeiXinSales","pcPromotion","productId","faId","faCode","faName","thumbnailsURL","productGroupNo","productGroupCode","maxPurchase","purchase","isHasPersonal","protocol","extensionTerminal","extensionContent","timestamp","appPrice","curDatetime","replace","pc","wap","app","weixin","myProcodeStr","loadO2OCityListAndStock","proInfos","parseInt","waterLevelDesc","detailStockType","fData","coverageInventories","hasProvince","hasCity","className","d","inventory","cities","area","areaCode","city","cityCode","c","areas","provinceCode","province","totalNum","getCityList","op","done","thinko2oCities","fail","always","salesPlat","res","_dd","jsonpIsTuangouUser","__detailConfig","getApiPath","activityId","xr","responseText","statusText","jsonpIsBookUser","plat","jsonpShangouYuyue","jsonpShangouQueue","jsonpShangouGwc","jsonpAddItemToCart","jsonpNoticeSendSms","jsonpNoticeSave","loadServiceInfo","loadHostList","w","loadMyFavorite","loadPresellInfo","defaultData","jsonpSaveBookShangouTel","jsonpEvaluateList","codes","pageindex","level","lable","onlyThis","currPage","_lv","_lable","gcodes","lables","only","jsonpEvaluateRate","jsonpAddJF","ajaxCheckSNCode","self","sn","num","jsonpGetVirtual","aid","virtualAreaCode","virtualPrice","vcData","jsonpgetIntegral","sucess","stsel","passport","ticket","sts","jsonpGuige","version","jsonpBuyBefore","resultCode","resultMsg","reload","__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|6|7|8|9][0-9]\\d{4,8}$/g;// /^1(3|4|5|7|8)[0-9]{9}$/g\n return reg.test(tel);\n },\n // 获取jsonp请求域\n getItemDomain: function() {\n var itemDomain = '',\n curHost = location.host;\n if(/^itemlecoo/.test(curHost)){\n itemDomain = 'https://papilecoo.lenovouat.com';\n } else {\n itemDomain = 'https://papi.lecoo.com';\n }\n\n return itemDomain;\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 = formatDate(activity.buyStartTime); // 团购开始时间(文本)\n PurchasedJson.totimeStr = formatDate(activity.buyEndTime);\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 = formatDate(activity.buyStartTime);\n\n ShanGou.endNumber = activity.buyEndTime; \t// 闪购结束时间\n //ShanGou.endTime = new Date(ShanGou.endNumber);\n ShanGou.endTimeStr = formatDate(activity.buyEndTime);\n\n ShanGou.yystartNumber = activity.reservationStartTime; // 预约开始时间\n //ShanGou.yystartTime = new Date(ShanGou.yystartNumber);\n ShanGou.yystartTimeStr = formatDate(activity.reservationStartTime);\n\n ShanGou.yyendNumber = activity.reservationEndTime; // 预约结束时间\n //ShanGou.yyendTime = new Date(ShanGou.yyendNumber);\n ShanGou.yyendTimeStr = formatDate(activity.reservationEndTime);\n\n ShanGou.fyyStartNumber = activity.noReservationBuyTime; // 非预约闪购开始时间\n //ShanGou.fyyStartTime = new Date(ShanGou.fyyStartNumber);\n ShanGou.fyyStartTimeStr = formatDate(activity.noReservationBuyTime);\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 = formatDate(activity.buyStartTime); // 抢购开始时间(文本)\n flushSaleJson.totimeStr = formatDate(activity.buyEndTime);\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 != 1) {\n result.showText = '商品已下架';\n }else if (this.baseInfo.price === '' && !$p.baseInfo.isIntegral){//价格逻辑必须放到前面\n result.showText = ' ';\n result.isDisabled = true;\n result.isShow = false;\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 != 1) {\n result.isShow = false;\n }\n else if (this.baseInfo.isPersonalPositions && this.baseInfo.isPersonalPositions.length > 0){\n /*私人订制不显示加入购物车按钮*/\n result.isShow = false;\n }else if(this.baseInfo.isIntegral){\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 }else if (this.baseInfo.price == ''){\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 }else if ($p.baseInfo.price === '' && !$p.baseInfo.isIntegral){//价格判断没有价格并且不是兑换专区\n result.isShow = false;\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 || $p.baseInfo.isIntegral) {\n result.showText = this.baseInfo.showPrice.toFixed(2);\n }else if(this.baseInfo.price === '' && !$p.baseInfo.isIntegral){//价格不为0,和负数判断\n result.showText = '暂无报价';\n }\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:[],packStatus:1};\n _pack.data = _promotion.packs[i];\n $.each(_promotion.packs[i],function(k,v){\n if(_promotion.goodsStatus[v.code] == 0){\n _pack.packStatus = 0;\n }\n });\n _pack.canSell = !!((_pack.packStatus == 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(h.length - 14);\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 $.ajax({\n url: PDUtil.getItemDomain() + '/api/c2c/sharedby.do',\n type: \"GET\",\n data: {\n \"sharecode\": this.shareCode,\n \"sourceurl\": u,\n \"promotionChannels\": promotionChannels,\n \"promotionName\": this.baseInfo.name,\n \"promotionType\": \"0\"\n },\n dataType: \"jsonp\",\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_c2c_sharedby',\n timeout: 5000\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 == 1 && 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 return true;\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 loadAllProductionInfo: function(success, error, completed){\n var _this = this;\n var ss = new Date().getMilliseconds();\n var params = '[{\"uri\":\"/batch/openapi/goods/detail/mget/B00001\",\"param\":{\"code\":'+window[\"code\"] +',\"ss\":'+ss+'}},{\"uri\":\"/batch/promoapi/api/front/getPromoMsg.jhtm\",\"param\":{\"gcode\":'+window[\"code\"]+',\"terminal\":'+window.$p.terminal+',\"shopId\":'+window[\"shopId\"]+', \"ss\":'+ss+'}}]';\n\n $.ajax({ // 获取价格\n type: \"GET\",\n url: PDUtil.getItemDomain() + \"/batch/get?params=\"+params,// 获取 价格 活动 促销语\n dataType: 'jsonp',\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_batch_get',\n timeout: 5000,\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\n var dbData = db.data && db.data[0] || {};\n var detailData = dbData.result && dbData.result[code] || {};\n var promotionData = db.data && db.data[1] || {};\n var _priceData = detailData.price || {};\n var _detail = detailData.detail || {};\n if(db.status == \"200\" && dbData.status == \"0\"){\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 _this.baseInfo.productGroupNo = _detail.productGroupCode || '';\n _this.baseInfo.gmsl = _detail.maxPurchase || 5;/*最大购买数量*/\n _this.baseInfo.purchase = detailData.purchase || 0;/*内购额度*/\n // _this.baseInfo.isHasService = _detail.isHasService || 0;/*是否有服务*/\n // _this.baseInfo.isHasSpec = _detail.isHasSpec || 0;/*是否有规格*/ /*因规格改版,弃用上架流程,废弃这个字段*/\n _this.baseInfo.isHasPersonal = _detail.isHasPersonal || 0;/*是否存在私定*/\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 if(promotionData.success == true){//获取促销语\n _this.baseInfo.pcPromotion = promotionData.t || null;\n }\n /*获取服务器当前时间*/\n _this.nowNumber = db.timestamp;\n // _this.nowNumber = new Date(_this.curDatetime.replace(/-/g, '/')) - 0;\n\n /*获取活动信息*/\n if(detailData.activity && detailData.activity.activityType){\n _this.activity = detailData.activity;\n _this.baseInfo.activityType = detailData.activity.activityType;\n }else{\n _this.activity = null;\n _this.baseInfo.activityType = 0 ;\n }\n /*后台区分终端, 获取价格信息*/\n if (_this.terminal == 1 && _priceData[\"P_C\"] && _priceData[\"P_C\"][\"C_1\"]) {\n // _this.baseInfo.price = _this.baseInfo.showPrice = _priceData[\"P_C\"][\"C\"][\"P_0\"] && _priceData[\"P_C\"][\"C\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C\"][\"P_0\"][\"DV\"][\"V\"];\n _this.baseInfo.price = _this.baseInfo.showPrice = _priceData[\"P_C\"][\"C_1\"][\"P_0\"] && _priceData[\"P_C\"][\"C_1\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C_1\"][\"P_0\"][\"DV\"][\"V\"] || '';\n _this.baseInfo.appPrice = _priceData[\"P_C\"][\"C_3\"][\"P_0\"] && _priceData[\"P_C\"][\"C_3\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C_3\"][\"P_0\"][\"DV\"][\"V\"] || '';\n }\n /*else if(_this.terminal == 2 && _priceData[\"P_C\"] && _priceData[\"P_C\"][\"C_2\"]){\n _this.baseInfo.price = _this.baseInfo.showPrice = _priceData[\"P_C\"][\"C_2\"][\"P_0\"] && _priceData[\"P_C\"][\"C_2\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C_2\"][\"P_0\"][\"DV\"][\"V\"];\n }\n else if(_this.terminal == 3 && _priceData[\"P_C\"] && _priceData[\"P_C\"][\"C_3\"]){\n _this.baseInfo.price = _this.baseInfo.showPrice = _priceData[\"P_C\"][\"C_3\"][\"P_0\"] && _priceData[\"P_C\"][\"C_3\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C_3\"][\"P_0\"][\"DV\"][\"V\"];\n }\n else if(_this.terminal == 4 && _priceData[\"P_C\"] && _priceData[\"P_C\"][\"C_4\"]){\n _this.baseInfo.price = _this.baseInfo.showPrice = _priceData[\"P_C\"][\"C_4\"][\"P_0\"] && _priceData[\"P_C\"][\"C_4\"][\"P_0\"][\"DV\"] && _priceData[\"P_C\"][\"C_4\"][\"P_0\"][\"DV\"][\"V\"];\n }*/\n else {\n _this.baseInfo.price = '';\n }\n _this.baseInfo.marketable = _detail.marketable || 0;/* 上下架状态*/\n /*小心云盘服务购买数量限制为1*/\n if(_this.baseInfo.isService == \"3\"){\n _this.baseInfo.gmsl = 1;\n }\n /* a、商城是Lenovo商城或者EPP商城 b、服务商品类型值为:普通服务商--1、服务码商品--2 c、商品是虚拟商品*/\n if((shopId == '1' || shopId == '3') && (_this.baseInfo.isService == '1' || _this.baseInfo.isService == '2') && _this.baseInfo.isPhysical == '0'){\n _this.baseInfo.gmsl = 1;\n }\n /*懂得商品购买数量为1*/\n if(_this.baseInfo.buOwner == \"90\"){\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 loadProductInfo: function(success, error, completed){\n var _this = this;\n $.ajax({ // 获取价格\n type: \"GET\",\n url: PDUtil.getItemDomain() + \"/cache/detail?code=\" + code + \"&ss=\" + new Date().getMilliseconds(),// 获取 价格 活动 促销语\n dataType: \"jsonp\",\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_cache_detail',\n timeout: 5000,\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 _this.baseInfo.productGroupNo = _detail.productGroupNo || '';\n _this.baseInfo.gmsl = _detail.maxPurchase || 5;\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 /* a、商城是Lenovo商城或者EPP商城 b、服务商品类型值为:普通服务商--1、服务码商品--2 c、商品是虚拟商品*/\n if((shopId == '1' || shopId == '3') && (_this.baseInfo.isService == '1' || _this.baseInfo.isService == '2') && _this.baseInfo.isPhysical == '0'){\n _this.baseInfo.gmsl = 1;\n }\n /*懂得商品购买数量为1*/\n if(_this.baseInfo.buOwner == \"90\"){\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: PDUtil.getItemDomain() + \"/stock/getStockInfo.jhtm?ss=\" + new Date().getMilliseconds(),\n data: {\"proInfos\": myProcodeStr},\n dataType: 'jsonp',\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_stock_getStockInfo',\n timeout: 5000,\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 fData = function(data){\n var coverageInventories = data.coverageInventories;\n var result = [],hasProvince=false,hasCity=false,className = 'normal';\n try{\n for(var i=0; i 0){\n className = 'normal';\n }else{\n className = 'gray';\n }\n d['className'] = className;\n for(var j=0; j 0) {\n _this.baseInfo.thinko2oCities = fData(data[0]);\n // console.log($p.baseInfo.thinko2oCities);\n }\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: PDUtil.getItemDomain() + \"/api/promotions?\" + new Date().getMilliseconds(),// 获取促销信息接口\n dataType: 'jsonp',\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_api_promotions',\n timeout: 5000,\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 * 闪购排队\n * @param data\n * @param success\n * @param error\n */\n jsonpShangouQueue: function (data, success, error) {\n /*\n * data {\n * gcode: window.code, // 商品gcode\n * }\n */\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('sg') + \"getToken.jhtm?ss=\" + new Date().getMilliseconds(),\n data: data,\n dataType: \"jsonp\",\n jsonp: \"callback\",\n success: success,\n error: function () {\n PDUtil.debug('申请Token失败!');\n if(error && typeof error == 'function'){\n error();\n }\n }\n });\n },\n /**\n * 闪购购物车\n * @param data\n * @param success\n * @param error\n */\n jsonpShangouGwc: function (data, success, error) {\n $.ajax({\n type: \"GET\",\n url: __detailConfig.getApiPath('sggwc') + \"napi/seckill/seckill_qiang.jhtm\",\n data: data,\n dataType: \"jsonp\",\n jsonp: \"callback\",\n success: success,\n error: function () {\n PDUtil.debug('闪购排队加入购物车失败!');\n if(error && typeof error == 'function'){\n error();\n }\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') + \"napi/cart/additemtocart.jhtm?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 timeout: 4000\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: PDUtil.getItemDomain() + \"/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 || PDUtil.getItemDomain() + \"/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 ? (PDUtil.getItemDomain() + data.url) : data.url || PDUtil.getItemDomain() + \"/cache/servicelist\",\n data: {code: code, terminal: this.terminal},\n dataType: 'jsonp',\n jsonp: 'jsonpCallback',\n jsonpCallback: 'jQueryJSONP_cache_servicelist',\n timeout: 5000,\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 || (PDUtil.getItemDomain() + \"/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: PDUtil.getItemDomain() + '/api/myfavorites/' + data.url + new Date().getMilliseconds(),\n data: {\n gcode: code,\n plat: this.terminal\n },\n dataType: 'jsonp',\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_api_myfavorites',\n timeout: 5000,\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 * 获取评论列表\n * @param codes 同一规格的所有商品的gcode\n * @param pageindex 第几页\n * @param productId 当前商品gcode\n * @param level 星级\n * @param lable 标签\n * @param success 成功回调函数\n * @param error 失败回调函数\n */\n jsonpEvaluateList: function (codes, pageindex, productId, level, lable, onlyThis, success, error) {\n var productId = productId || window.code || '';\n var currPage = pageindex || 1;\n var _lv = level || 0;\n var _lable = lable || \"\";\n var gcodes = codes || window.code || '';\n var onlyThis = onlyThis || 2;\n $.ajax({\n url: __detailConfig.getApiPath('comment') + \"/comment/frontV2/commentDetail\",\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n timeout: 5000,\n data: {\n \"gcodes\": gcodes,\n \"currPage\": currPage,\n \"productId\": productId,\n \"level\": _lv,\n \"lables\":_lable,\n \"only\": onlyThis\n },\n success: success,\n error: error\n });\n },\n /**\n * 获取评价条数\n */\n jsonpEvaluateRate: function (codes, success, error) {\n $.ajax({\n url: __detailConfig.getApiPath('comment') + \"/comment/frontV2/favorableRate\",\n dataType: \"jsonp\",\n jsonp: \"jsonpcallback\",\n jsonpCallback: \"evaluateNumber\",\n timeout: 5000,\n data: {\n \"gcode\": codes || window.code || ''\n },\n success: success,\n error: error\n });\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: PDUtil.getItemDomain() + \"/api/products/checksn\",\n data: {\"sn\": SNCode, \"num\": self.baseInfo.materialNumber},\n dataType: 'jsonp',\n jsonp: 'callback',\n jsonpCallback: 'jQueryJSONP_api_checksn',\n timeout: 5000,\n success: function (data) {\n success(data);\n },\n error: function () {\n error && error();\n }\n });\n },\n /**\n * 获取虚拟货币+商品价格\n */\n jsonpGetVirtual: function(success, error,completed){\n var _this = this;\n var code = window['code'];\n var aid = $p.baseInfo.virtualAreaCode;\n _this.baseInfo.virtualPrice = 0;\n $.ajax({\n url : __detailConfig.getApiPath('openUrl')+'/goods/price/get',\n dataType:\"jsonp\",\n jsonp:\"jsonpCallback\",\n jsonpCallback: \"jsonpCallback\",\n data : {\n 'code': code,\n 'aid': aid\n },\n success : function(db){\n if(db.status == 0){\n var vcData = db.result && db.result['V_C'];\n if(JSON.stringify(vcData) === '{}'){//虚拟币价格为空\n _this.baseInfo.isIntegral = 0;\n }else{\n var data =vcData['C_1'] || [];\n if(JSON.stringify(data) === '[]'){\n _this.baseInfo.isIntegral = 0;\n }else{//当前平台没有维护虚拟币\n\n if(_this.baseInfo.virtualAreaCode == 'V_0'){//消费积分\n _this.baseInfo.virtualPrice = parseFloat( data['V_0'] && data['V_0']['DV'] && data['V_0']['DV']['V']) || 0;\n }else if(_this.baseInfo.virtualAreaCode == 'V_1'){//乐豆\n _this.baseInfo.virtualPrice = parseFloat( data['V_1'] && data['V_1']['DV'] && data['V_1']['DV']['V']) || 0;\n }else{\n _this.baseInfo.virtualPrice = 0;\n }\n\n _this.baseInfo.showPrice = _this.baseInfo.price = parseFloat(data['P_0'] && data['P_0']['DV'] && data['P_0']['DV']['V']) || 0;\n }\n\n }\n\n }\n },\n complete : function(){\n PDUtil.debug('load vitualprice completed');\n if(completed && typeof completed == \"function\"){\n completed();\n }\n },\n error : function(){\n PDUtil.log('load vtprice error');\n error && error();\n }\n });\n },\n /**\n * 获取当前用户积分\n */\n jsonpgetIntegral:function(data,sucess,error) {\n var stsel = window.passport.ticket;\n var type = data && data.type || ''\n $.ajax({\n url: __detailConfig.getApiPath('jfUrl') + '/dubboScore/searchTotal.jhtml',\n dataType: \"jsonp\",\n jsonp: \"callback\",\n jsonpCallback: \"flightHandlers\",\n timeout: 4000,\n data: {\n sts: stsel,\n type: type\n },\n success: sucess,\n error: function () {\n PDUtil.log('get jf error');\n alert('系统繁忙,请稍后重试!');\n if (error && typeof error == \"function\") {\n error();\n }\n\n },\n });\n },\n /**\n * 规格数据\n */\n jsonpGuige: function(sucess, error) {\n $.ajax({\n url: __detailConfig.getApiPath('openUrl') + '/goods/category/get',\n type: 'get',\n dataType: 'jsonp',\n jsonp: 'jsonpCallback',\n jsonpCallback: 'jsonpCallback',\n data: {'code': window['code'],'version':'1.0'},\n success: sucess,\n error: error\n })\n },\n /**\n * 点击立即购买后调用directbuy接口\n */\n jsonpBuyBefore: function (params, success, error) {\n $.ajax({\n url: __detailConfig.getApiPath('lecoo_normal') + 'napi/cart/directbuy.jhtm' + params,\n // data: data,\n type: 'get',\n dataType: 'jsonp',\n jsonp: 'callbackparam',\n success: function (data) {\n if(data && data.success == true) {\n success(data);\n }else {\n if(data.resultCode == \"10027\" || data.resultCode == \"10029\"){\n alert(data.resultMsg);\n location.reload();\n }else {\n alert(data.resultMsg);\n }\n }\n },\n error: error\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 function formatDate(time) {\n var date = new Date(time);\n var Y = date.getFullYear();\n var M = date.getMonth()+1;\n var D = date.getDate();\n var H = date.getHours();\n var m = date.getMinutes();\n var s = date.getSeconds();\n if(M <= 9){\n M = '0' + M;\n }\n if(D <= 9){\n D = '0' + D;\n }\n if(H <= 9){\n H = '0' + H;\n }\n if(m <= 9){\n m = '0' + m;\n }\n if(s <= 9){\n s = '0' + s;\n }\n return Y+\"-\"+M+\"-\"+D+\" \"+H+\":\"+m+\":\"+s;\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})();"]}