//请求同意调用 function $DoPost(url) { var param = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var callback = arguments.length > 2 ? arguments[2] : undefined; var async = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; $.ajax({ url: url + "?t=" + new Date().getTime(), type: "POST", data: param, async: async, dataType: "json", success: function success(r) { callback(r); if (r.error || r.errMsg) { var errTip = r.error || r.errMsg; weui.toast(errTip, { duration: 2000, className: 'custom-toast' }); } } }); } //获取url参数 function getParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配 var context = ""; if (r != null) context = r[2]; reg = null; r = null; return context == null || context == "" || context == "undefined" ? "" : context; } //省份 城市 分类 function getAreaClassArr_index(area) { var cityArr = [];//城市 var provinceArr = [];//省份 for (var i in area) { var citys = area[i] if (citys.length > 0) { cityArr = cityArr.concat(citys); provinceArr.push(i + "(" + cityArr.join("、") + ")") } else { if (i == "全国") { continue } provinceArr.push(i) } } return SortArr(provinceArr) } //省份 城市 分类 function getAreaClassArr(area) { var cityArr = [];//城市 var provinceArr = [];//省份 for (var i in area) { var citys = area[i] if (citys.length > 0) { cityArr = cityArr.concat(citys); } else { if (i == "全国") { continue } provinceArr.push(i) } } return [SortArr(provinceArr), SortArr(cityArr)] } //对数组进行排序(拼音) function SortArr(arr) { arr = arr.sort(function compareFunction(item1, item2) { return item1.localeCompare(item2); }); return arr } //获取选择 function getSelectBuyset(area, industry) { if (industry[0] === "全部行业") industry = []; if (area["全国"]) area = {}; //计算地区数量 var buyset = { "areacount": -1, //省份数量 "buyerclasscount": -1, "citys": [] //购买省份中城市数量 }; //行业 if (industry.length != 0) { buyset.buyerclasscount = industry.length } //地区 if (!$.isEmptyObject(area)) { buyset.areacount = 0; for (var i in area) { var citys = area[i]; var thisLen = citys.length; if (thisLen === 0) { buyset.areacount++ } else { buyset.citys.push(thisLen) } } } return buyset } //购买设置 area map function getBuySet(area, industry, price) { price = checkPrice(price); if (industry[0] === "全部行业") industry = []; if (area["全国"]) area = {}; //计算地区数量 var buyset = { "areacount": -1, //省份数量 "buyerclasscount": -1, "citys": [] //购买省份中城市数量 }; //行业 if (industry.length != 0 && industry.length <= price.buyerClassMaxCount) { buyset.buyerclasscount = industry.length } //地区 if (!$.isEmptyObject(area)) { buyset.areacount = 0; for (var i in area) { var citys = area[i]; var thisLen = citys.length; if (thisLen === 0 || thisLen > price.cityMaxCount) { buyset.areacount++ } else { buyset.citys.push(thisLen) } } } if (buyset.areacount > price.provinceMaxCount) { buyset.areacount = -1; buyset.citys = []; } return buyset } /* vip订阅价格 area:地区 {} industry:行业 [] time[count,unit] count:时间长度 unit 1:年 2:月 price 价格表 return 价格(单位:分) */ var priceData; function getsubVipOrderPrice(area, industry, t, price) { price = checkPrice(price); return getsubVipOrderPriceBybuyset(getBuySet(area, industry, price), t, price) } function checkPrice(price) { if (!price) { if (priceData) { price = priceData } else { $DoPost("/subscribepay/vipsubscribe/getPrice", {}, function (r) { if (r) { price = r; priceData = price; } else { weui.toast("加载价格异常", { duration: 2000, className: 'custom-toast', }); } }, false) } } else { priceData = price } return price } //根据购买设置 获取支付金额 function getsubVipOrderPriceBybuyset(buyset, t, price) { price = checkPrice(price); var vipbuyset = JSON.parse(JSON.stringify(buyset)); if (t[0] > price.monthMaxCount && t[1] === 2) t[0] = 10;//月份十个月以上价格一样 if (vipbuyset.areacount === -1) {//计算全国套餐价格 if (vipbuyset.buyerclasscount === 1) return getSetMealPrice(0, 1, t[1], price) * t[0] / 100; //全国1行业套餐 if (vipbuyset.buyerclasscount === 0) return getSetMealPrice(0, 0, t[1], price) * t[0] / 100; //全国全行业套餐 return getSetMealPrice(0, vipbuyset.buyerclasscount, t[1], price) * t[0] / 100 //全国多行业套餐 } //var final_price = vipbuyset.areacount * getSetMealPrice(1, vipbuyset.buyerclasscount, t[1], price) * t[0];//计算省份价格 var final_price = 0;//计算省份价格 for (var i in vipbuyset.citys) { var thisPrice = 0; if (vipbuyset.citys[i] === 1) {//单城市 thisPrice = getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * t[0]; } else {//多城市 if (vipbuyset.buyerclasscount === 0 || vipbuyset.buyerclasscount === 1) {//多城市 单行业 if (vipbuyset.citys[i] > price.cityMaxCount) { vipbuyset.areacount++; } else { thisPrice = vipbuyset.citys[i] * getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * t[0]; } } else {//多城市 多行业 //var industry_Price = price.buyerClassPrice * vipbuyset.buyerclasscount; //var city_Price = price.cityPrice * vipbuyset.citys[i]; //thisPrice = (industry_Price + city_Price) * t[0]; if (vipbuyset.citys[i] > price.cityMaxCount) { vipbuyset.areacount++; } else { thisPrice = getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * vipbuyset.citys[i] * t[0]; // if (t[1] === 1) thisPrice *= 10 //年的价格是月价格的10倍 } } } final_price += thisPrice; } final_price += vipbuyset.areacount * getSetMealPrice(1, vipbuyset.buyerclasscount, t[1], price) * t[0]; return final_price / 100 } //获取套餐价格 //c(city) 全国:0 省:1 市:2 //iCount(industry) 全行业:-1 其他:多个行业 //u(unit) 年:1 月:2 function getSetMealPrice(c, iCount, u, price) { var t = u === 2; //是否是月单位 switch (c) { case 0: if (iCount === -1) { if (t) return price.month.allProvince_allBuyerClass; //1月全国全行业 return price.year.allProvince_allBuyerClass; //1年全国全行业 } else { if (t) return price.month.allProvince_oneBuyerClass * iCount; //1月全国icount个行业 return price.year.allProvince_oneBuyerClass * iCount; //1年全国icount个行业 } case 1: if (iCount === -1) { if (t) return price.month.oneProvince_allBuyerClass; //1月1省全行业 return price.year.oneProvince_allBuyerClass //1年1省全行业 } else { if (t) return price.month.oneProvince_oneBuyerClass * iCount; //1月1省icount个行业 return price.year.oneProvince_oneBuyerClass * iCount //1年1省icount个行业 } default: if (iCount === -1) { if (t) return price.month.oneCity_allBuyerClass; //1月1市全行业 return price.year.oneCity_allBuyerClass //1年1市全行业 } else { if (t) return price.month.oneCity_oneBuyerClass * iCount; //1月1市icount个行业 return price.year.oneCity_oneBuyerClass * iCount //1年1市icount个行业 } } } //查看用户是否有未执行的订单 function checkOrder(wz) { var flag = false; $.ajax({ type: 'post', url: '/subscribepay/afterPay/checkOrder?t=' + new Date().getTime(), data: {}, async: false, dataType: 'json', success: function (r) { flag = r.flag; if (r.flag) { if (wz != 1) { weui.toast('订单尚未到期', { duration: 3000, className: 'custom-toast', callback: function () { console.log('close') } }); } } } }); return flag } // 时间格式化 Date.prototype.pattern = function (fmt) { var o = { "y+": this.getFullYear(), "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时 "H+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; var week = { "0": "日", "1": "一", "2": "二", "3": "三", "4": "四", "5": "五", "6": "六" }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } if (/(E+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[this.getDay() + ""]); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return fmt; } //value ;flag 1:年 2:月 endtime 结束时间 function getVipEndDate(flag, value, endtime) { var EndTime = new Date(endtime * 1000); var startDay = EndTime.getDate(); var yearNum = EndTime.getFullYear(); var monthNum = EndTime.getMonth(); if (flag === 1) {//将年转换成月 //年 yearNum += value; } else { //月 if (monthNum + value > 11) { monthNum = monthNum + value - 12; yearNum++ } else { monthNum += value } } //获取当月最后一天 var lastDay = new Date(yearNum, monthNum+1, 0).getDate(); if (startDay < lastDay) { return new Date(yearNum, monthNum, startDay, 23, 59, 59).getTime() / 1000; } else { return new Date(yearNum, monthNum, lastDay, 23, 59, 59).getTime() / 1000; } }