common.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. /* vip订阅价格
  75. area:地区 {}
  76. industry:行业 []
  77. time[count,unit] count:时间长度 unit 1:年 2:月
  78. price 价格表
  79. return 价格(单位:分)
  80. */
  81. var priceData
  82. function getsubVipOrderPrice(area,industry,t,price){
  83. if(!price){
  84. if(priceData){
  85. price=priceData
  86. }else{
  87. $DoPost("/subscribepay/vipsubscribe/getPrice",{},function(r){
  88. if(r){
  89. price=r;
  90. priceData=price;
  91. }else{
  92. weui.toast("加载价格异常",{
  93. duration: 2000,
  94. className: 'custom-toast',
  95. });
  96. }
  97. },false)
  98. }
  99. }
  100. if(industry[0] == "全部行业")industry= []
  101. if(area["全国"]) area={}
  102. //当行业数量大于最大值price.BuyerClassMaxCount 按照全行业计算
  103. var industryNum = industry.length
  104. if (industryNum > price.buyerClassMaxCount) {
  105. industryNum = 0
  106. }
  107. //计算地区数量
  108. var pCount = -1 //省份数量
  109. var citysCountMap = {} //购买省份中城市数量
  110. if(!$.isEmptyObject(area)){
  111. pCount=0
  112. for(var i in area) {
  113. let citys=area[i]
  114. if(citys.length==0){
  115. pCount++
  116. }else{
  117. if(citys.length > price.cityMaxCount){
  118. pCount++
  119. }else{
  120. citysCountMap[i]= citys.length
  121. }
  122. }
  123. }
  124. }
  125. //当省份数量大于price.ProvinceMaxCount 按照全国计算
  126. if (pCount > price.provinceMaxCount) {
  127. pCount = -1
  128. }
  129. if(t[0]>price.monthMaxCount&&t[1]==2) t[0]=10 //月份十个月以上价格一样
  130. if(pCount == -1){//计算全国套餐价格
  131. if(industryNum==1) return getSetMealPrice(0,1,t[1],price)*t[0]/100 //全国1行业套餐
  132. if(industryNum==0) return getSetMealPrice(0,0,t[1],price)*t[0]/100 //全国全行业套餐
  133. return getSetMealPrice(0,industryNum,t[1],price) * t[0] / 100 //全国多行业套餐
  134. }
  135. var final_price = pCount*getSetMealPrice(1,industryNum,t[1],price)*t[0];//计算省份价格
  136. for(var i in citysCountMap) {
  137. var thisPrice = 0;
  138. var citys = area[i]
  139. if(citysCountMap[i]==1){//单城市
  140. thisPrice = getSetMealPrice(2,industryNum,t[1],price)*t[0];
  141. }else{//多城市
  142. if(industryNum==0||industryNum==1){//多城市 单行业
  143. thisPrice = citysCountMap[i] * getSetMealPrice(2,industryNum,t[1],price) * t[0];
  144. }else{//多城市 多行业
  145. var industry_Price= price.buyerClassPrice * industryNum;
  146. var city_Price = price.cityPrice *citysCountMap[i];
  147. thisPrice = (industry_Price + city_Price) * t[0];
  148. if(t[1]==1) thisPrice *= 10 //年的价格是月价格的10倍
  149. }
  150. }
  151. final_price += thisPrice;
  152. }
  153. return final_price/100
  154. }
  155. //获取套餐价格
  156. //c(city) 全国:0 省:1 市:2
  157. //iCount(industry) 全行业:0 行业:1 其他:多个行业
  158. //u(unit) 年:1 月:2
  159. function getSetMealPrice(c,iCount,u,price){
  160. var t = u==2 //是否是月单位
  161. switch(c){
  162. case 0:
  163. if(iCount==0){
  164. if(t)return price.month.allProvince_allBuyerClass //1月全国全行业
  165. return price.year.allProvince_allBuyerClass //1年全国全行业
  166. }else{
  167. if(t)return price.month.allProvince_oneBuyerClass * iCount //1月全国icount个行业
  168. return price.year.allProvince_oneBuyerClass * iCount //1年全国icount个行业
  169. }
  170. case 1:
  171. if(iCount==0){
  172. if(t)return price.month.oneProvince_allBuyerClass //1月1省全行业
  173. return price.year.oneProvince_allBuyerClass //1年1省全行业
  174. }else{
  175. if(t)return price.month.oneProvince_oneBuyerClass * iCount //1月1省icount个行业
  176. return price.year.oneProvince_oneBuyerClass * iCount //1年1省icount个行业
  177. }
  178. default:
  179. if(iCount==0){
  180. if(t)return price.month.oneCity_allBuyerClass //1月1市全行业
  181. return price.year.oneCity_allBuyerClass //1年1市全行业
  182. }else{
  183. if(t)return price.month.oneCity_oneBuyerClass * iCount //1月1市icount个行业
  184. return price.year.oneCity_oneBuyerClass * iCount //1年1市icount个行业
  185. }
  186. }
  187. }