common.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. //请求同意调用
  2. function $DoPost(url, param = {}, callback, async = true) {
  3. $.ajax({
  4. url: url + "?t=" + new Date().getTime(),
  5. type: "POST",
  6. data: param,
  7. async: async,
  8. dataType: "json",
  9. success: function (r) {
  10. callback(r)
  11. if (r.error || r.errMsg) {
  12. var errTip = r.error || r.errMsg;
  13. weui.toast(errTip, {
  14. duration: 2000,
  15. className: 'custom-toast',
  16. });
  17. }
  18. }
  19. })
  20. }
  21. //获取url参数
  22. function getParam(name) {
  23. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  24. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  25. var context = "";
  26. if (r != null)
  27. context = r[2];
  28. reg = null;
  29. r = null;
  30. return context == null || context == "" || context == "undefined" ? "" : context;
  31. }
  32. //省份 城市 分类
  33. function getAreaClassArr_index(area) {
  34. let cityArr = [];//城市
  35. let provinceArr = [];//省份
  36. for (var i in area) {
  37. let citys = area[i]
  38. if (citys.length > 0) {
  39. cityArr = cityArr.concat(citys);
  40. provinceArr.push(i + "(" + cityArr.join("、") + ")")
  41. } else {
  42. if (i == "全国") {
  43. continue
  44. }
  45. provinceArr.push(i)
  46. }
  47. }
  48. return SortArr(provinceArr)
  49. }
  50. //省份 城市 分类
  51. function getAreaClassArr(area) {
  52. let cityArr = [];//城市
  53. let provinceArr = [];//省份
  54. for (var i in area) {
  55. let citys = area[i]
  56. if (citys.length > 0) {
  57. cityArr = cityArr.concat(citys);
  58. } else {
  59. if (i == "全国") {
  60. continue
  61. }
  62. provinceArr.push(i)
  63. }
  64. }
  65. return [SortArr(provinceArr), SortArr(cityArr)]
  66. }
  67. //对数组进行排序(拼音)
  68. function SortArr(arr) {
  69. arr = arr.sort(function compareFunction(item1, item2) {
  70. return item1.localeCompare(item2);
  71. });
  72. return arr
  73. }
  74. //购买设置
  75. function getBuySet(area, industry) {
  76. if (industry[0] === "全部行业") industry = [];
  77. if (area["全国"]) area = {};
  78. //计算地区数量
  79. var buyset = {
  80. "areacount": -1, //省份数量
  81. "buyerclasscount": -1,
  82. "citys": { //购买省份中城市数量
  83. }
  84. };
  85. //行业
  86. if (industry.length != 0) {
  87. buyset.buyerclasscount = industry.length
  88. }
  89. //地区
  90. if (!$.isEmptyObject(area)) {
  91. buyset.areacount = 0;
  92. for (var i in area) {
  93. let citys = area[i];
  94. if (citys.length === 0) {
  95. buyset.areacount++
  96. } else {
  97. buyset.citys[i] = citys.length
  98. }
  99. }
  100. }
  101. return buyset
  102. }
  103. /* vip订阅价格
  104. area:地区 {}
  105. industry:行业 []
  106. time[count,unit] count:时间长度 unit 1:年 2:月
  107. price 价格表
  108. return 价格(单位:分)
  109. */
  110. function getsubVipOrderPrice(area, industry, t, price) {
  111. return getsubVipOrderPriceBybuyset(getBuySet(area, industry), t, price)
  112. }
  113. var priceData;
  114. //根据购买设置 获取支付金额
  115. function getsubVipOrderPriceBybuyset(buyset, t, price) {
  116. if (!price) {
  117. if (priceData) {
  118. price = priceData
  119. } else {
  120. $DoPost("/subscribepay/vipsubscribe/getPrice", {}, function (r) {
  121. if (r) {
  122. price = r;
  123. priceData = price;
  124. } else {
  125. weui.toast("加载价格异常", {
  126. duration: 2000,
  127. className: 'custom-toast',
  128. });
  129. }
  130. }, false)
  131. }
  132. }
  133. console.log("buyset", JSON.stringify(buyset));
  134. //当省份数量大于price.ProvinceMaxCount 按照全国计算
  135. if (buyset.areacount > price.provinceMaxCount) {
  136. buyset.areacount = -1
  137. }
  138. //当行业数量大于price.buyerClassMaxCount按照全行业
  139. if (buyset.buyerclasscount > price.buyerClassMaxCount) {
  140. buyset.buyerclasscount = -1
  141. }
  142. if (t[0] > price.monthMaxCount && t[1] === 2) t[0] = 10;//月份十个月以上价格一样
  143. if (buyset.areacount === -1) {//计算全国套餐价格
  144. if (buyset.buyerclasscount === 1) return getSetMealPrice(0, 1, t[1], price) * t[0] / 100; //全国1行业套餐
  145. if (buyset.buyerclasscount === 0) return getSetMealPrice(0, 0, t[1], price) * t[0] / 100; //全国全行业套餐
  146. return getSetMealPrice(0, buyset.buyerclasscount, t[1], price) * t[0] / 100 //全国多行业套餐
  147. }
  148. //var final_price = buyset.areacount * getSetMealPrice(1, buyset.buyerclasscount, t[1], price) * t[0];//计算省份价格
  149. var final_price = 0;//计算省份价格
  150. for (var i in buyset.citys) {
  151. var thisPrice = 0;
  152. if (buyset.citys[i] === 1) {//单城市
  153. thisPrice = getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * t[0];
  154. } else {//多城市
  155. if (buyset.buyerclasscount === 0 || buyset.buyerclasscount === 1) {//多城市 单行业
  156. thisPrice = buyset.citys[i] * getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * t[0];
  157. } else {//多城市 多行业
  158. //var industry_Price = price.buyerClassPrice * buyset.buyerclasscount;
  159. //var city_Price = price.cityPrice * buyset.citys[i];
  160. //thisPrice = (industry_Price + city_Price) * t[0];
  161. if (buyset.citys[i] > price.cityMaxCount) {
  162. buyset.areacount++;
  163. } else {
  164. thisPrice = getSetMealPrice(2, buyset.buyerclasscount, t[1], price) * buyset.citys[i] * t[0];
  165. // if (t[1] === 1) thisPrice *= 10 //年的价格是月价格的10倍
  166. }
  167. }
  168. }
  169. final_price += thisPrice;
  170. }
  171. final_price += buyset.areacount * getSetMealPrice(1, buyset.buyerclasscount, t[1], price) * t[0]
  172. return final_price / 100
  173. }
  174. //获取套餐价格
  175. //c(city) 全国:0 省:1 市:2
  176. //iCount(industry) 全行业:-1 其他:多个行业
  177. //u(unit) 年:1 月:2
  178. function getSetMealPrice(c, iCount, u, price) {
  179. var t = u === 2; //是否是月单位
  180. switch (c) {
  181. case 0:
  182. if (iCount === -1) {
  183. if (t) return price.month.allProvince_allBuyerClass; //1月全国全行业
  184. return price.year.allProvince_allBuyerClass; //1年全国全行业
  185. } else {
  186. if (t) return price.month.allProvince_oneBuyerClass * iCount; //1月全国icount个行业
  187. return price.year.allProvince_oneBuyerClass * iCount; //1年全国icount个行业
  188. }
  189. case 1:
  190. if (iCount === -1) {
  191. if (t) return price.month.oneProvince_allBuyerClass; //1月1省全行业
  192. return price.year.oneProvince_allBuyerClass //1年1省全行业
  193. } else {
  194. if (t) return price.month.oneProvince_oneBuyerClass * iCount; //1月1省icount个行业
  195. return price.year.oneProvince_oneBuyerClass * iCount //1年1省icount个行业
  196. }
  197. default:
  198. if (iCount === -1) {
  199. if (t) return price.month.oneCity_allBuyerClass; //1月1市全行业
  200. return price.year.oneCity_allBuyerClass //1年1市全行业
  201. } else {
  202. if (t) return price.month.oneCity_oneBuyerClass * iCount; //1月1市icount个行业
  203. return price.year.oneCity_oneBuyerClass * iCount //1年1市icount个行业
  204. }
  205. }
  206. }
  207. //查看用户是否有未执行的订单
  208. function checkOrder(wz) {
  209. var flag = false;
  210. $.ajax({
  211. type: 'post',
  212. url: '/subscribepay/afterPay/checkOrder?t=' + new Date().getTime(),
  213. data: {},
  214. async: false,
  215. dataType: 'json',
  216. success: function (r) {
  217. flag = r.flag;
  218. if (r.flag) {
  219. if (wz != 1) {
  220. weui.toast('订单尚未到期', {
  221. duration: 3000,
  222. className: 'custom-toast',
  223. callback: function () {
  224. console.log('close')
  225. }
  226. });
  227. }
  228. }
  229. }
  230. });
  231. return flag
  232. }