common.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. //请求同意调用
  2. function $DoPost(url) {
  3. var param = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  4. var callback = arguments.length > 2 ? arguments[2] : undefined;
  5. var async = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
  6. $.ajax({
  7. url: url + "?t=" + new Date().getTime(),
  8. type: "POST",
  9. data: param,
  10. async: async,
  11. dataType: "json",
  12. success: function success(r) {
  13. callback(r);
  14. if (r.error || r.errMsg) {
  15. var errTip = r.error || r.errMsg;
  16. weui.toast(errTip, {
  17. duration: 2000,
  18. className: 'custom-toast'
  19. });
  20. }
  21. }
  22. });
  23. }
  24. //获取url参数
  25. function getParam(name) {
  26. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  27. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  28. var context = "";
  29. if (r != null)
  30. context = r[2];
  31. reg = null;
  32. r = null;
  33. return context == null || context == "" || context == "undefined" ? "" : context;
  34. }
  35. //省份 城市 分类
  36. function getAreaClassArr_index(area) {
  37. var cityArr = [];//城市
  38. var provinceArr = [];//省份
  39. for (var i in area) {
  40. var citys = area[i]
  41. if (citys.length > 0) {
  42. cityArr = cityArr.concat(citys);
  43. provinceArr.push(i + "(" + cityArr.join("、") + ")")
  44. } else {
  45. if (i == "全国") {
  46. continue
  47. }
  48. provinceArr.push(i)
  49. }
  50. }
  51. return SortArr(provinceArr)
  52. }
  53. //省份 城市 分类
  54. function getAreaClassArr(area) {
  55. var cityArr = [];//城市
  56. var provinceArr = [];//省份
  57. for (var i in area) {
  58. var citys = area[i]
  59. if (citys.length > 0) {
  60. cityArr = cityArr.concat(citys);
  61. } else {
  62. if (i == "全国") {
  63. continue
  64. }
  65. provinceArr.push(i)
  66. }
  67. }
  68. return [SortArr(provinceArr), SortArr(cityArr)]
  69. }
  70. //对数组进行排序(拼音)
  71. function SortArr(arr) {
  72. arr = arr.sort(function compareFunction(item1, item2) {
  73. return item1.localeCompare(item2);
  74. });
  75. return arr
  76. }
  77. //获取选择
  78. function getSelectBuyset(area, industry) {
  79. if (industry[0] === "全部行业") industry = [];
  80. if (area["全国"]) area = {};
  81. //计算地区数量
  82. var buyset = {
  83. "areacount": -1, //省份数量
  84. "buyerclasscount": -1,
  85. "citys": [] //购买省份中城市数量
  86. };
  87. //行业
  88. if (industry.length != 0) {
  89. buyset.buyerclasscount = industry.length
  90. }
  91. //地区
  92. if (!$.isEmptyObject(area)) {
  93. buyset.areacount = 0;
  94. for (var i in area) {
  95. var citys = area[i];
  96. var thisLen = citys.length;
  97. if (thisLen === 0) {
  98. buyset.areacount++
  99. } else {
  100. buyset.citys.push(thisLen)
  101. }
  102. }
  103. }
  104. return buyset
  105. }
  106. //购买设置 area map
  107. function getBuySet(area, industry, price) {
  108. price = checkPrice(price);
  109. if (industry[0] === "全部行业") industry = [];
  110. if (area["全国"]) area = {};
  111. //计算地区数量
  112. var buyset = {
  113. "areacount": -1, //省份数量
  114. "buyerclasscount": -1,
  115. "citys": [] //购买省份中城市数量
  116. };
  117. //行业
  118. if (industry.length != 0 && industry.length <= price.buyerClassMaxCount) {
  119. buyset.buyerclasscount = industry.length
  120. }
  121. //地区
  122. if (!$.isEmptyObject(area)) {
  123. buyset.areacount = 0;
  124. for (var i in area) {
  125. var citys = area[i];
  126. var thisLen = citys.length;
  127. if (thisLen === 0 || thisLen > price.cityMaxCount) {
  128. buyset.areacount++
  129. } else {
  130. buyset.citys.push(thisLen)
  131. }
  132. }
  133. }
  134. if (buyset.areacount > price.provinceMaxCount) {
  135. buyset.areacount = -1;
  136. buyset.citys = [];
  137. }
  138. return buyset
  139. }
  140. /* vip订阅价格
  141. area:地区 {}
  142. industry:行业 []
  143. time[count,unit] count:时间长度 unit 1:年 2:月
  144. price 价格表
  145. return 价格(单位:分)
  146. */
  147. var priceData;
  148. function getsubVipOrderPrice(area, industry, t, price) {
  149. price = checkPrice(price);
  150. return getsubVipOrderPriceBybuyset(getBuySet(area, industry, price), t, price)
  151. }
  152. function checkPrice(price) {
  153. if (!price) {
  154. if (priceData) {
  155. price = priceData
  156. } else {
  157. $DoPost("/subscribepay/vipsubscribe/getPrice", {}, function (r) {
  158. if (r) {
  159. price = r;
  160. priceData = price;
  161. } else {
  162. weui.toast("加载价格异常", {
  163. duration: 2000,
  164. className: 'custom-toast',
  165. });
  166. }
  167. }, false)
  168. }
  169. } else {
  170. priceData = price
  171. }
  172. return price
  173. }
  174. //根据购买设置 获取支付金额
  175. function getsubVipOrderPriceBybuyset(buyset, t, price) {
  176. price = checkPrice(price);
  177. var vipbuyset = JSON.parse(JSON.stringify(buyset));
  178. if (t[0] > price.monthMaxCount && t[1] === 2) t[0] = 10;//月份十个月以上价格一样
  179. if (vipbuyset.areacount === -1) {//计算全国套餐价格
  180. if (vipbuyset.buyerclasscount === 1) return getSetMealPrice(0, 1, t[1], price) * t[0] / 100; //全国1行业套餐
  181. if (vipbuyset.buyerclasscount === 0) return getSetMealPrice(0, 0, t[1], price) * t[0] / 100; //全国全行业套餐
  182. return getSetMealPrice(0, vipbuyset.buyerclasscount, t[1], price) * t[0] / 100 //全国多行业套餐
  183. }
  184. //var final_price = vipbuyset.areacount * getSetMealPrice(1, vipbuyset.buyerclasscount, t[1], price) * t[0];//计算省份价格
  185. var final_price = 0;//计算省份价格
  186. for (var i in vipbuyset.citys) {
  187. var thisPrice = 0;
  188. if (vipbuyset.citys[i] === 1) {//单城市
  189. thisPrice = getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * t[0];
  190. } else {//多城市
  191. if (vipbuyset.buyerclasscount === 0 || vipbuyset.buyerclasscount === 1) {//多城市 单行业
  192. if (vipbuyset.citys[i] > price.cityMaxCount) {
  193. vipbuyset.areacount++;
  194. } else {
  195. thisPrice = vipbuyset.citys[i] * getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * t[0];
  196. }
  197. } else {//多城市 多行业
  198. //var industry_Price = price.buyerClassPrice * vipbuyset.buyerclasscount;
  199. //var city_Price = price.cityPrice * vipbuyset.citys[i];
  200. //thisPrice = (industry_Price + city_Price) * t[0];
  201. if (vipbuyset.citys[i] > price.cityMaxCount) {
  202. vipbuyset.areacount++;
  203. } else {
  204. thisPrice = getSetMealPrice(2, vipbuyset.buyerclasscount, t[1], price) * vipbuyset.citys[i] * t[0];
  205. // if (t[1] === 1) thisPrice *= 10 //年的价格是月价格的10倍
  206. }
  207. }
  208. }
  209. final_price += thisPrice;
  210. }
  211. final_price += vipbuyset.areacount * getSetMealPrice(1, vipbuyset.buyerclasscount, t[1], price) * t[0];
  212. return final_price / 100
  213. }
  214. //获取套餐价格
  215. //c(city) 全国:0 省:1 市:2
  216. //iCount(industry) 全行业:-1 其他:多个行业
  217. //u(unit) 年:1 月:2
  218. function getSetMealPrice(c, iCount, u, price) {
  219. var t = u === 2; //是否是月单位
  220. switch (c) {
  221. case 0:
  222. if (iCount === -1) {
  223. if (t) return price.month.allProvince_allBuyerClass; //1月全国全行业
  224. return price.year.allProvince_allBuyerClass; //1年全国全行业
  225. } else {
  226. if (t) return price.month.allProvince_oneBuyerClass * iCount; //1月全国icount个行业
  227. return price.year.allProvince_oneBuyerClass * iCount; //1年全国icount个行业
  228. }
  229. case 1:
  230. if (iCount === -1) {
  231. if (t) return price.month.oneProvince_allBuyerClass; //1月1省全行业
  232. return price.year.oneProvince_allBuyerClass //1年1省全行业
  233. } else {
  234. if (t) return price.month.oneProvince_oneBuyerClass * iCount; //1月1省icount个行业
  235. return price.year.oneProvince_oneBuyerClass * iCount //1年1省icount个行业
  236. }
  237. default:
  238. if (iCount === -1) {
  239. if (t) return price.month.oneCity_allBuyerClass; //1月1市全行业
  240. return price.year.oneCity_allBuyerClass //1年1市全行业
  241. } else {
  242. if (t) return price.month.oneCity_oneBuyerClass * iCount; //1月1市icount个行业
  243. return price.year.oneCity_oneBuyerClass * iCount //1年1市icount个行业
  244. }
  245. }
  246. }
  247. //查看用户是否有未执行的订单
  248. function checkOrder(wz) {
  249. var flag = false;
  250. $.ajax({
  251. type: 'post',
  252. url: '/subscribepay/afterPay/checkOrder?t=' + new Date().getTime(),
  253. data: {},
  254. async: false,
  255. dataType: 'json',
  256. success: function (r) {
  257. flag = r.flag;
  258. if (r.flag) {
  259. if (wz != 1) {
  260. weui.toast('订单尚未到期', {
  261. duration: 3000,
  262. className: 'custom-toast',
  263. callback: function () {
  264. console.log('close')
  265. }
  266. });
  267. }
  268. }
  269. }
  270. });
  271. return flag
  272. }
  273. // 时间格式化
  274. Date.prototype.pattern = function (fmt) {
  275. var o = {
  276. "y+": this.getFullYear(),
  277. "M+": this.getMonth() + 1, //月份
  278. "d+": this.getDate(), //日
  279. "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
  280. "H+": this.getHours(), //小时
  281. "m+": this.getMinutes(), //分
  282. "s+": this.getSeconds(), //秒
  283. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  284. "S": this.getMilliseconds() //毫秒
  285. };
  286. var week = {
  287. "0": "日",
  288. "1": "一",
  289. "2": "二",
  290. "3": "三",
  291. "4": "四",
  292. "5": "五",
  293. "6": "六"
  294. };
  295. if (/(y+)/.test(fmt)) {
  296. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  297. }
  298. if (/(E+)/.test(fmt)) {
  299. fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[this.getDay() + ""]);
  300. }
  301. for (var k in o) {
  302. if (new RegExp("(" + k + ")").test(fmt)) {
  303. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  304. }
  305. }
  306. return fmt;
  307. }
  308. //value ;flag 1:年 2:月 endtime 结束时间
  309. function getVipEndDate(flag, value, endtime) {
  310. var EndTime = new Date(endtime * 1000);
  311. var startDay = EndTime.getDate();
  312. var yearNum = EndTime.getFullYear();
  313. var monthNum = EndTime.getMonth();
  314. if (flag === 1) {//将年转换成月
  315. //年
  316. yearNum += value;
  317. } else {
  318. //月
  319. if (monthNum + value > 11) {
  320. monthNum = monthNum + value - 12;
  321. yearNum++
  322. } else {
  323. monthNum += value
  324. }
  325. }
  326. //获取当月最后一天
  327. var lastDay = new Date(yearNum, monthNum+1, 0).getDate();
  328. if (startDay < lastDay) {
  329. return new Date(yearNum, monthNum, startDay, 23, 59, 59).getTime() / 1000;
  330. } else {
  331. return new Date(yearNum, monthNum, lastDay, 23, 59, 59).getTime() / 1000;
  332. }
  333. }