index.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. <style type="text/css">
  2. .a_pop_up{
  3. display: none;
  4. position: fixed;
  5. left: 0;
  6. top: 0;
  7. right: 0;
  8. bottom: 0;
  9. white-space: nowrap;
  10. text-align: center;
  11. z-index:2;
  12. }
  13. .bg_color{
  14. background-color: rgba(0,0,0,.8);
  15. }
  16. .a_pop_up_box,
  17. .a_pop_jgb{
  18. overflow: hidden;
  19. display: inline-block;
  20. vertical-align: middle;
  21. white-space: normal;
  22. }
  23. .a_pop_jgb{
  24. margin-left: -1px;
  25. height: 100%;
  26. width: 1px;
  27. }
  28. .a_pop_up_box{
  29. min-width: 4.9rem;
  30. padding: .3rem .2rem;
  31. background-color: #fff;
  32. border-radius: .1rem;
  33. box-sizing: border-box;
  34. }
  35. .pop_box_height{
  36. min-height: 3.2rem;
  37. }
  38. .a_pop_up_box strong{
  39. display: block;
  40. text-align: center;
  41. font-size: .32rem;
  42. color: #414141;
  43. line-height: .8rem;
  44. }
  45. .a_pop_up_box span{
  46. display: block;
  47. text-align: center;
  48. font-size: .3rem;
  49. color: #414141;
  50. line-height: .5rem;
  51. }
  52. .a_pop_up_box a{
  53. display: block;
  54. margin: .2rem .5rem;
  55. background-color: #ff2f10;
  56. font-size: .34rem;
  57. color: #fff;
  58. line-height: .8rem;
  59. border-radius: .06rem;
  60. }
  61. </style>
  62. <!DOCTYPE html>
  63. <html lang="en">
  64. <head>
  65. <meta charset="UTF-8">
  66. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  67. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  68. <link rel="stylesheet" href="{:asset('/css/frontend/share/index.css')}">
  69. <title>邀请好友,关注立赚200书币</title>
  70. <script>
  71. (function(doc,win){
  72. var doc = doc.documentElement;
  73. doc.addEventListener('DOMContentLoaded', Resize, false);
  74. // 当DOM加载后执行
  75. win.addEventListener('resize', Resize, false);
  76. // 当屏幕发生变化时执行
  77. function Resize(){
  78. // 规定750px宽度下,1rem = 100px
  79. doc.style.fontSize=(doc.clientWidth > 1000 ? 1000 : doc.clientWidth)/7.5 +'px';
  80. }
  81. Resize()
  82. window.log_host = '{$log_host}';
  83. window.theme = '{$Think.config.template.view_theme}';
  84. })(document,window)
  85. </script>
  86. </head>
  87. <body>
  88. <!-- 首次打开页面,渲染此div -->
  89. <div id="init-content" class="content">
  90. <div class="loop-message">
  91. <ul>
  92. <!-- <li>XXX0邀请了2位好友,收到2000书币</li>-->
  93. {foreach name="$barrage" item="vo" key="k"}
  94. <li>{$vo}</li>
  95. {/foreach}
  96. </ul>
  97. </div>
  98. <img class="content-item" src="{:asset('/img/frontend/share/01-1.jpg')}"/>
  99. <img class="content-item" src="{:asset('/img/frontend/share/01-2.jpg')}"/>
  100. <div class="content-item">
  101. <img class="content-item" src="{:asset('/img/frontend/share/01-3.jpg')}"/>
  102. <div class="hidden-button main-button open-dialog" style="cursor: pointer"></div>
  103. </div>
  104. <div class="content-item">
  105. <img src="{:asset('/img/frontend/share/01-4.jpg')}"/>
  106. <span class="tips">发送到微信群收益最大化哟~不信来试试</span>
  107. </div>
  108. <img class="content-item" src="{:asset('/img/frontend/share/01-con-1.jpg')}"/>
  109. <div class="content-item activity-rules rules-1">
  110. {if condition="!empty($share_rules)"}
  111. {$share_rules}
  112. {else/}
  113. <p>
  114. <span class="activity-rules-dot">1</span>每邀请一位好友点击邀请链接,并首次关注公众号,您(以下或称为“邀请者”)会获得奖励200书币奖励。
  115. </p>
  116. <p>
  117. <span class="activity-rules-dot">2</span>您可点击“立即领取”按钮将邀请码粘贴给好友或者微信群,好友通过点击邀请链接并关注公众号,则视为您邀请好友成功。
  118. </p>
  119. {/if}
  120. </div>
  121. <img class="content-item" src="{:asset('/img/frontend/share/01-con-3.jpg')}"/>
  122. <div class="content-item">
  123. <img class="content-item" src="{:asset('/img/frontend/share/01-6.jpg')}"/>
  124. <div class="hidden-button bottom-button open-dialog" style="cursor: pointer"></div>
  125. </div>
  126. </div>
  127. <!-- 已分享过渲染此div -->
  128. <div id="shared-cntent" class="content hide">
  129. <div class="loop-message">
  130. <ul>
  131. {foreach name="$barrage" item="vo" key="k"}
  132. <li>{$vo}</li>
  133. {/foreach}
  134. </ul>
  135. </div>
  136. <img class="content-item" src="{:asset('/img/frontend/share/02-1.jpg')}"/>
  137. <div class="content-item">
  138. <img class="content-item" src="{:asset('/img/frontend/share/02-2.jpg')}"/>
  139. <div class="hidden-button shared-main-button open-dialog" style="cursor: pointer"></div>
  140. </div>
  141. <div class="content-item">
  142. <img class="content-item" src="{:asset('/img/frontend/share/02-3.jpg')}"/>
  143. <span class="tips shared-tips">发送到微信群收益最大化哟~不信来试试</span>
  144. </div>
  145. <div class="content-item">
  146. <img class="content-item" src="{:asset('/img/frontend/share/02-4.jpg')}"/>
  147. <!-- 已参加活动信息 -->
  148. <div class="shared-data">
  149. <!-- 已邀请好友 -->
  150. <div class="shared-data-item">
  151. <div class="shared-data-item-title">已邀请好友</div>
  152. <div class="shared-data-item-content">
  153. <span class="shared-data-item-number count_num">{$data['count']}</span>
  154. <span class="shared-data-item-text">人</span>
  155. </div>
  156. </div>
  157. <!-- 已到账书币 -->
  158. <div class="shared-data-item">
  159. <div class="shared-data-item-title">已到账书币</div>
  160. <div class="shared-data-item-content">
  161. <span class="shared-data-item-number">{$data['getKandian']}</span>
  162. <span class="shared-data-item-text">书币</span>
  163. </div>
  164. </div>
  165. <!-- 在途书币 -->
  166. <div class="shared-data-item">
  167. <div class="shared-data-item-title">在途书币</div>
  168. <div class="shared-data-item-content">
  169. <span class="shared-data-item-number">{$data['totalKandian']-$data['getKandian']}</span>
  170. <span class="shared-data-item-text">书币</span>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. <div class="content-item">
  176. <img class="content-item" src="{:asset('/img/frontend/share/02-5.jpg')}"/>
  177. <!-- 还没有邀请到好友 -->
  178. {if condition="empty($data['list'])"}
  179. <div class="no-friends">
  180. <img src="{:asset('/img/frontend/share/cry-guy.png')}" alt="">
  181. <p>
  182. 竟然没有好友,邀请好友关注赚立200书币,<br>还不赶快去试试?</p>
  183. </div>
  184. {else/}
  185. <!-- 已邀请好友 -->
  186. <div id="share-list" class="invited-friends">
  187. <!-- 已邀请但未关注公众号 -->
  188. {foreach name="$data['list']" item="vv" key="kk"}
  189. {if condition="$vv['is_fan'] != 1"}
  190. <div class="invited-friend userlist">
  191. <div class="invited-friend-left">
  192. <span class="invited-friend-avator"> <img src="{$vv['to_user_avatar']}"></span>
  193. <span class="invited-friend-nickname">{$vv['to_user_nickname']}</span>
  194. </div>
  195. <div class="invited-friend-right">
  196. <span class="invited-friend-no-coins open-dialog update_user" value="111" data-userid="{$vv['user_id']}" data-touserid="{$vv['to_user_id']}" style="cursor: pointer">已邀请,提醒好友</span>
  197. </div>
  198. </div>
  199. {else/}
  200. <!-- 已关注公众号 -->
  201. <div class="invited-friend">
  202. <div class="invited-friend-left">
  203. <!-- <span class="invited-friend-avator"></span>-->
  204. <span class="invited-friend-avator"> <img src="{$vv['to_user_avatar']}"></span>
  205. <span class="invited-friend-nickname">{$vv['to_user_nickname']}</span>
  206. </div>
  207. <div class="invited-friend-right">
  208. <span class="invited-friend-earned-coins">+{$vv['kandian']}书币</span>
  209. </div>
  210. </div>
  211. {/if}
  212. {/foreach}
  213. <input id="page-num" type="hidden" value="{$data['pageNum']}">
  214. <input id="len-num" type="hidden" value="{$data['lenNum']}">
  215. </div>
  216. {/if}
  217. </div>
  218. <input id="is_open_share" type="hidden" value="{$is_open_share}">
  219. <input id="to_url" type="hidden" value="{$to_url}">
  220. <img class="content-item" src="{:asset('/img/frontend/share/02-con-1.jpg')}"/>
  221. <div class="content-item activity-rules rules-2">
  222. {if condition="!empty($share_rules)"}
  223. {$share_rules}
  224. {else/}
  225. <p>
  226. <span class="activity-rules-dot">1</span>每邀请一位好友点击邀请链接,并首次关注公众号,您(以下或称为“邀请者”)会获得奖励200书币奖励。
  227. </p>
  228. <p>
  229. <span class="activity-rules-dot">2</span>您可点击“立即领取”按钮将邀请码粘贴给好友或者微信群,好友通过点击邀请链接并关注公众号,则视为您邀请好友成功。
  230. </p>
  231. {/if}
  232. </div>
  233. <img class="content-item" src="{:asset('/img/frontend/share/02-con-3.jpg')}"/>
  234. <div class="content-item">
  235. <img class="content-item" src="{:asset('/img/frontend/share/02-7.jpg')}"/>
  236. <div class="hidden-button bottom-button open-dialog" style="cursor: pointer"></div>
  237. </div>
  238. </div>
  239. <div id="share-dialog" class="share-dialog">
  240. <img src="{:asset('/img/frontend/share/04.png')}">
  241. <!-- data-clipboard-text中放置要复制的口令内容 -->
  242. <div class="hidden-button dialog-button" data-clipboard-text='{$content}'></div>
  243. </div>
  244. <input id="isfirst" type="hidden" value="{$data['count']}">
  245. <div class="a_pop_up bg_color" style="display: none">
  246. <div class="a_pop_up_box pop_box_height">
  247. <strong>活动已结束</strong>
  248. <span>敬请期待下次活动</span>
  249. <a href="{$to_url}">去看书</a>
  250. </div>
  251. <div class="a_pop_jgb"></div>
  252. </div>
  253. <script src="{:asset('/js/frontend/share/clipboard.min.js')}"></script>
  254. <script type="text/javascript" src="{:asset('/libs/zepto/zepto.min.js')}"></script>
  255. <script type="text/javascript" src="{:asset('/libs/Zepto-Cookie/zepto.cookie.min.js')}"></script>
  256. <script type="text/javascript" src="{:asset('/js/frontend/common.js?v=5')}"></script>
  257. <script type="text/javascript" src="{:asset('/js/frontend/cps_log.js')}"></script>
  258. <script>
  259. // 用户分享状态,默认为false
  260. var IS_SHARED = true;
  261. var is_open_share = $('#is_open_share').val();
  262. if ( is_open_share != 1 ){
  263. $('.a_pop_up').show();
  264. }
  265. /**
  266. *
  267. */
  268. function showCorrectContent() {
  269. var defaultContent = document.getElementById('init-content');
  270. var sharedContent = document.getElementById('shared-cntent');
  271. var isfirst = document.getElementById('isfirst');
  272. IS_SHARED = isfirst.value;
  273. console.log(IS_SHARED);
  274. if(IS_SHARED > 0){
  275. defaultContent.style.display = 'none';
  276. sharedContent.style.display = 'block';
  277. } else {
  278. var isfirst = $.fn.cookie('isfirst');
  279. if ( isfirst == 1 ){
  280. defaultContent.style.display = 'none';
  281. sharedContent.style.display = 'block';
  282. }else{
  283. defaultContent.style.display = 'block';
  284. sharedContent.style.display = 'none';
  285. }
  286. }
  287. }
  288. showCorrectContent()
  289. window.onload = function(){
  290. var dialog = document.getElementById('share-dialog')
  291. // 分享弹窗添加事件监听,允许用户手动关闭弹窗
  292. dialog.addEventListener('click', function(e){
  293. e = e || window.event
  294. if(e.currentTarget !== e.target) {
  295. return
  296. }
  297. hideDialog()
  298. }, false)
  299. var body = document.body;
  300. body.addEventListener('click', function(e) {
  301. e = e || window.event
  302. var target = e.target;
  303. if(target.classList.contains('open-dialog')){
  304. showDialog()
  305. }
  306. if(target.classList.contains('update_user')){
  307. var userId = e.srcElement.getAttribute('data-userid');
  308. var toUserId = e.srcElement.getAttribute('data-touserid');
  309. // update_user(userId,toUserId);
  310. }
  311. }, false)
  312. // 实现口令添加到剪切板功能,基于clipboard.js[https://github.com/zenorocha/clipboard.js]
  313. var clipboard = new ClipboardJS('.dialog-button');
  314. // 复制成功
  315. clipboard.on('success', function(e) {
  316. e.clearSelection();
  317. // 复制成功后应关闭分享弹窗
  318. hideDialog()
  319. cpslog([702, {map:{share:'share_copy_click'}},'share_copy_click']);
  320. $('.a_pop_up_box').html("<strong style='font-size:0.35rem'>邀请口令已复制</strong>");
  321. $('.a_pop_up_box').removeClass('pop_box_height');
  322. $('.a_pop_up').removeClass('bg_color');
  323. $('.a_pop_up').show();
  324. $.fn.cookie('isfirst','1');
  325. window.setTimeout(function () {
  326. $('.a_pop_up').hide();
  327. location.reload();
  328. },3000);
  329. // TODO: 复制成功后若有其他操作,可写在这里
  330. });
  331. clipboard.on('error', function(e) {
  332. hideDialog()
  333. // console.log(e);
  334. // TODO: 复制失败,提醒用户重新点击按钮
  335. });
  336. }
  337. //提醒好友更新有效时间
  338. function update_user(userId,toUserId){
  339. var users = {};
  340. users.userId = userId;
  341. users.toUserId = toUserId;
  342. $.ajax({
  343. type:"get",
  344. url:"/api/share/updateUserSourceTime",
  345. data: users,
  346. success : function(result) {
  347. // console.log(result);
  348. if(result.code == 1 && result.msg.content != ''){
  349. $('.dialog-button').attr('data-clipboard-text',result.msg.content);
  350. }
  351. }
  352. })
  353. }
  354. var params = {};
  355. var countNum = $('.count_num').text();
  356. params.pageNum = $('#page-num').val();
  357. params.lenNum = $('#len-num').val();
  358. var share = $('#share-list');
  359. share.scroll(function () {
  360. var sonHeight = $('.invited-friend').height();
  361. var sonNum = $('.invited-friend').length;
  362. //判断是否滑动到底部
  363. if ( sonHeight * sonNum == share.height() + share.scrollTop() && params.pageNum*params.lenNum < countNum ){
  364. params.pageNum++;
  365. $.ajax({
  366. type:"POST",
  367. url:"/api/share/getShareList",
  368. data: params,
  369. success : function(result) {
  370. // console.log(result.code);
  371. if(result.code == 1 && result.msg != ''){
  372. $.each(result.msg,function(i,n){
  373. var str;
  374. if(n.is_fan == 1){
  375. str += ' <div class="invited-friend userlist">';
  376. str += '<div class="invited-friend-left">';
  377. str += '<span class="invited-friend-avator" ><img src="'+n.to_user_avatar+'"> </span>';
  378. str += '<span class="invited-friend-nickname">'+n.to_user_nickname+'</span>';
  379. str += '</div> <div class="invited-friend-right">';
  380. str += '<span class="invited-friend-earned-coins">+'+n.kandian+'书币</span> </div></div>';
  381. }else{
  382. str += ' <div class="invited-friend userlist">';
  383. str += '<div class="invited-friend-left">';
  384. str += '<span class="invited-friend-avator" ><img src="'+n.to_user_avatar+'"> </span>';
  385. str += '<span class="invited-friend-nickname">'+n.to_user_nickname+'</span>';
  386. str += '</div> <div class="invited-friend-right">';
  387. str += '<span class="invited-friend-no-coins open-dialog update_user" data-userid="'+n.user_id+'" data-touserid="'+n.to_user_id+'" style="cursor: pointer">已邀请,提醒好友</span> </div></div>';
  388. }
  389. share.append(str);
  390. })
  391. }
  392. }
  393. })
  394. }
  395. })
  396. function share_list(){
  397. // console.log(share.scrollTop);
  398. // console.log(pageNum*share.scrollHeight);
  399. }
  400. // 显示分享弹窗
  401. function showDialog() {
  402. changeDialogStatus(true)
  403. }
  404. // 隐藏分享弹窗
  405. function hideDialog() {
  406. changeDialogStatus(false)
  407. }
  408. function changeDialogStatus(isShow) {
  409. var ele = document.getElementById('share-dialog'),
  410. classList = ele.classList
  411. body = document.body;
  412. if(isShow){
  413. // 防止打开弹窗后用户划动屏幕遮罩层下内容仍可滚动
  414. body.style.overflow = 'hidden';
  415. classList.add('show');
  416. }else{
  417. // 打开内容滚动
  418. body.style.overflow = 'auto';
  419. classList.remove('show')
  420. }
  421. }
  422. </script>
  423. </body>
  424. </html>