script.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. var getNode = function(id){
  2. return document.getElementById(id)
  3. }
  4. // 正则获取地址栏参数
  5. function getQueryString(name) {
  6. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
  7. var r = window.location.search.substr(1).match(reg)
  8. if (r != null) {
  9. return unescape(r[2])
  10. }
  11. return null
  12. }
  13. var yuyue = getNode("yuyue") // 预约按钮
  14. var share = getNode("share") // 分享按钮
  15. var modal = getNode("zy-h5-modal") // 预约弹框
  16. var modalZz = getNode("zy-h5-fix-z") // 弹框遮罩层
  17. var submitModal = getNode("submitModal") // 提交预约
  18. var canselModal = getNode("canselModal") // 取消预约
  19. var userPhone = getNode("userPhone") // 预约手机号
  20. var joinerNum = getNode("joinerNum") // 参与人数
  21. var storeHead = getNode("store-head") // 头部门店名称
  22. var store = getNode("store") // 门店
  23. var address = getNode("address") // 地址
  24. var tel = getNode("tel") // 电话
  25. var storeId = getQueryString('orgId') || 0 // 门店id
  26. var companyId = ''
  27. // test, 测试 local、dev:本地开发环境 pre :预发布 pro:生产
  28. if(baseType == 'test'){
  29. var reqUrl = 'http://192.168.16.100:9110/saas/clz/'
  30. }else if(baseType == 'local'){
  31. var reqUrl = 'http://192.168.16.104:9110/saas/clz/'
  32. }else if(baseType == 'dev'){
  33. var reqUrl = 'http://192.168.16.104:9110/saas/clz/'
  34. }else if(baseType == 'pre'){
  35. var reqUrl = 'http://md.test.zyucgj.com/saas/clz/'
  36. }else if(baseType == 'pro'){
  37. var reqUrl = 'http://md.chelingzhu.com/saas/clz/'
  38. }else if(baseType == 'qbx'){
  39. var reqUrl = 'https://md.qiubcar.com/saas/clz/'
  40. }
  41. // 如果是小程序打开的
  42. if(getQueryString('win') == 'mini'){
  43. $("#share").hide()
  44. }
  45. // 隐藏预约弹框
  46. var closeYy = function (){
  47. userPhone.value = ''
  48. modal.style.display = 'none'
  49. modalZz.style.display = 'none'
  50. }
  51. window.onload = function(){
  52. // 分享初始化
  53. setTimeout(function(){
  54. shareCls.getWxCofing(reqUrl)
  55. },500)
  56. if(staticHtmlPath){ // 发布
  57. onLoading() // 加载中
  58. checkActiveValid()
  59. }else{ // 预览
  60. getActivityData() // 获取活动信息
  61. }
  62. // 校验活动是否还在进行
  63. function checkActiveValid(){
  64. $.ajax({
  65. url: reqUrl + 'zycar-mgr/active/checkActiveValid/' + activeId,
  66. type: 'get',
  67. header: { contentType: 'application/json;charset=UTF-8' },
  68. // 设置的是请求参数
  69. data: {},
  70. dataType: 'json',
  71. success: function (res) {
  72. if(res.status == 200){
  73. if(res.data){
  74. getActivityData() // 获取活动信息
  75. }else{
  76. closeLoading() // 关闭加载状态
  77. alert('该活动已经结束!')
  78. }
  79. }
  80. }
  81. })
  82. }
  83. // 获取活动信息
  84. function getActivityData(){
  85. // 获取活动信息 (海报和门店二维码)
  86. $.ajax({
  87. url: reqUrl + 'active/findActiveAttach/' + activeId,
  88. type: 'get',
  89. header: { contentType: 'application/json;charset=UTF-8' },
  90. // 设置的是请求参数
  91. data: {},
  92. dataType: 'json',
  93. success: function (res) {
  94. if(res.status == 200){
  95. var data = res.data
  96. if(staticHtmlPath){ // 发布
  97. // var joinerNumVal = parseInt(data.initBuyNum) + parseInt(data.joinerNum)
  98. // joinerNum.innerHTML = joinerNumVal
  99. $('.zy-h5-store-info').show()
  100. }
  101. // 根据门店id处理对应页面展示
  102. if(storeId){ // 门店端发布活动会传有门店id参数
  103. // 获取门店信息
  104. $.ajax({
  105. url: reqUrl + 'cross/store/' + storeId,
  106. type: 'get',
  107. header: { contentType: 'application/json;charset=UTF-8' },
  108. // 设置的是请求参数
  109. data: {},
  110. dataType: 'json',
  111. success: function (result) {
  112. if(result.status == 200){
  113. var data = result.data
  114. storeHead.innerHTML = data.name || ''
  115. store.innerHTML = data.name || ''
  116. var addrCityName = data.addrCityName || ''
  117. var addrDistrictName = data.addrDistrictName || ''
  118. var addrDetail = data.addrDetail || ''
  119. address.innerHTML = addrCityName + addrDistrictName + addrDetail
  120. tel.innerHTML = data.managerMobile
  121. document.getElementById("tel-link").href = 'tel:' + data.managerMobile
  122. companyId = data.companyId
  123. joinerList(companyId) // 参与人列表数据
  124. }
  125. },
  126. })
  127. }else{ // 运营端发布活动无门店id参数
  128. joinerList() // 参与人列表数据
  129. }
  130. closeLoading() // 关闭加载状态
  131. }
  132. },
  133. })
  134. }
  135. // 关闭加载状态
  136. function closeLoading(){
  137. if(staticHtmlPath){ // 发布
  138. // 关闭加载状态
  139. document.getElementById('foo').style.display = 'none'
  140. modalZz.style.display = 'none'
  141. // 不是微信端打开的页面
  142. if(!browser.versions.weixin){
  143. document.querySelector('.zy-h5-bf-bar').style.display = 'none'
  144. document.querySelector('.zy-h5-fx-bar').style.display = 'none'
  145. }else{
  146. document.querySelector('.zy-h5-bf-bar').style.display = 'flex'
  147. document.querySelector('.zy-h5-fx-bar').style.display = 'block'
  148. }
  149. }
  150. }
  151. // 加载中
  152. function onLoading(){
  153. // 隐藏参与和分享按钮
  154. document.querySelector('.zy-h5-bf-bar').style.display = 'none'
  155. document.querySelector('.zy-h5-fx-bar').style.display = 'none'
  156. modalZz.style.display = 'block' // 遮罩层
  157. var opts = {
  158. lines: 9, // The number of lines to draw
  159. length: 0, // The length of each line
  160. width: 10, // The line thickness
  161. radius: 15, // The radius of the inner circle
  162. corners: 1, // Corner roundness (0..1)
  163. rotate: 0, // The rotation offset
  164. color: '#2979ff', // #rgb or #rrggbb
  165. speed: 1, // Rounds per second
  166. trail: 60, // Afterglow percentage
  167. shadow: false, // Whether to render a shadow
  168. hwaccel: false, // Whether to use hardware acceleration
  169. className: 'spinner', // The CSS class to assign to the spinner
  170. zIndex: 2e9, // The z-index (defaults to 2000000000)
  171. top: 'auto', // Top position relative to parent in px
  172. left: 'auto' // Left position relative to parent in px
  173. };
  174. var target = document.getElementById('foo');
  175. var spinner = new Spinner(opts).spin(target);
  176. }
  177. // 打开预约弹框
  178. yuyue.onclick = function(){
  179. modal.style.display = 'block'
  180. modalZz.style.display = 'block'
  181. }
  182. // 关闭预约弹框
  183. canselModal.onclick = function(){
  184. closeYy()
  185. }
  186. // 提交预约
  187. submitModal.onclick = function(){
  188. // 提交代码到后台
  189. var mobile = userPhone.value
  190. if(mobile==''){
  191. alert("请输入手机号码");
  192. return false;
  193. }
  194. if(!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(mobile))){
  195. alert("手机号码错误,请重填");
  196. return false;
  197. }
  198. var obj = JSON.stringify({
  199. "joinerMobile": mobile, // 参与手机号
  200. "activeId": activeId, // 活动id
  201. "tenantId": storeId, // 门店id
  202. "companyId": companyId // 公司id
  203. })
  204. // 立即参与
  205. $.ajax({
  206. url: reqUrl + 'active/signUp',
  207. type: 'post',
  208. contentType: 'application/json;charset=UTF-8',
  209. // 设置的是请求参数
  210. data: obj,
  211. dataType: 'json',
  212. success: function (res) {
  213. if(res.status == 200){
  214. closeYy()
  215. }
  216. alert(res.message)
  217. }
  218. })
  219. }
  220. // 分享
  221. share.onclick = function(){
  222. var domain = window.location.protocol + '//' + window.location.host
  223. if(storeId){
  224. window.location.href = domain + '/active/poster.html?id=' + activeId + '&reqUrl=' + reqUrl + '&orgId=' + storeId
  225. }else{
  226. window.location.href = domain + '/active/poster.html?id=' + activeId + '&reqUrl=' + reqUrl
  227. }
  228. }
  229. // 门店活动统计(参与者轮播)
  230. function joinerList(companyId){
  231. var obj = JSON.stringify({
  232. activeId: activeId, // 活动id
  233. tenantId: storeId, // 门店id
  234. companyId: companyId, // 公司id
  235. status: 9 // 9是假数据的标识
  236. })
  237. // 获取门店信息
  238. $.ajax({
  239. url: reqUrl + 'cross/active/joinerByActive/1/1000',
  240. type: 'post',
  241. contentType: 'application/json;charset=UTF-8',
  242. // 设置的是请求参数
  243. data: obj,
  244. dataType: 'json',
  245. success: function (res) {
  246. if(res.status == 200){
  247. var data = res.data.list
  248. var html = `<div class="kh-list-tr kh-list-tr-head">
  249. <div class="kh-list-td">手机号</div>
  250. <div class="kh-list-td">报名状态</div>
  251. </div>`
  252. for(var i = 0; i < data.length; i++){
  253. html += `<div class="kh-list-tr">
  254. <div class="kh-list-td">${data[i].joinerMobile}</div>
  255. <div class="kh-list-td">已报名</div>
  256. </div>`
  257. }
  258. document.getElementById("kh-list").innerHTML = html
  259. joinerNum.innerHTML = data.length
  260. }
  261. },
  262. })
  263. }
  264. }