sign_in.html 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. {extend name="public/container"}
  2. {block name="title"}签到{/block}
  3. {block name="head_top"}
  4. <style>
  5. body {
  6. background-color: #f5f5f5;
  7. }
  8. </style>
  9. {/block}
  10. {block name="content"}
  11. <div v-cloak id="app">
  12. <div class="sign-in">
  13. <div class="header">
  14. <div class="cont">
  15. <div class="image" @click="myUser">
  16. <img :src="userInfo.avatar" class="img">
  17. </div>
  18. <div class="text" @click="myUser">
  19. <div class="name" v-html="userInfo.nickname"></div>
  20. <div class="info">{$gold_name}: {{ userInfo.gold_num }}</div>
  21. </div>
  22. <a class="btn" :href="$h.U({c: 'my', a: 'sign_in_list'})">明细</a>
  23. </div>
  24. </div>
  25. <div class="main">
  26. <div class="head">
  27. <div class="list">
  28. <div class="item">
  29. <div class="image">
  30. <img :src="isSign ? '{__WAP_PATH}zsff/images/stars2.png' : '{__WAP_PATH}zsff/images/stars1.png'"
  31. class="star">
  32. </div>
  33. <div class="day">每日签到获得{$gold_coin}{$gold_name}</div>
  34. </div>
  35. </div>
  36. <button class="btn" v-if="isSign" type="button" @click="show_sign_image">已签到</button>
  37. <button class="btn" v-else type="button" @click="sign">立即签到</button>
  38. </div>
  39. <div class="foot">
  40. <img src="{__WAP_PATH}zsff/images/lock.png" class="lock">
  41. <div class="panel">
  42. <div class="name">已累计签到</div>
  43. <div class="count">
  44. <div class="cont">
  45. <div class="wrap">
  46. <div v-for="(item, index) in updateTotal" :key="index" class="item">{{ item }}</div>
  47. </div>
  48. <div class="unit">天</div>
  49. </div>
  50. </div>
  51. </div>
  52. <div v-if="records.length" class="record">
  53. <div v-for="(item, index) in records" :key="index" class="item">
  54. <div class="text">
  55. <div class="name">签到</div>
  56. <div class="time">{{ item.add_time }}</div>
  57. </div>
  58. <div class="num">+{{ item.number }}</div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="mask" v-show="is_poster" @click="is_poster = false"></div>
  64. <div class="poster" v-show="is_poster">
  65. <img :src="filename" />
  66. <p>长按保存,分享朋友</p>
  67. </div>
  68. </div>
  69. <shortcut></shortcut>
  70. </div>
  71. <script>
  72. var signed="{$signed}",signCount={$signCount},sign_image = '{$sign_image}';
  73. require(['vue', 'helper', 'store', '{__WAP_PATH}zsff/js/shortcut.js'], function (Vue, $h, app) {
  74. new Vue({
  75. el: '#app',
  76. data: {
  77. userInfo: {},
  78. total: signCount,
  79. isSign: signed ? true : false,
  80. records: [],
  81. filename: '',
  82. is_poster: false
  83. },
  84. computed: {
  85. updateTotal: function () {
  86. let str = '0000',
  87. total = this.total,
  88. len = 0;
  89. if (!total) {
  90. return str;
  91. }
  92. if (typeof total === 'number') {
  93. total = total.toString();
  94. }
  95. len = total.length;
  96. if (len >= 4) {
  97. return total;
  98. }
  99. str += total;
  100. str = str.substring(len);
  101. return str;
  102. }
  103. },
  104. created: function () {
  105. this.getUserInfo();
  106. this.getUserSign();
  107. },
  108. methods: {
  109. sign: function () {
  110. var that = this;
  111. app.baseGet($h.U({ c: 'auth_api', a: 'user_sign' }), function (res) {
  112. that.isSign = true;
  113. that.is_poster = true;
  114. that.filename = res.data.data;
  115. that.userInfo.gold_num++;
  116. that.total = that.total + 1;
  117. that.getUserSign();
  118. return $h.pushMsg(res.data.msg);
  119. }, function (res) {
  120. that.is_poster = false;
  121. that.isSign = false;
  122. });
  123. },
  124. show_sign_image: function () {
  125. var that = this;
  126. that.is_poster = true;
  127. that.filename = sign_image;
  128. },
  129. getUserSign: function () {
  130. app.baseGet($h.U({ c: 'auth_api', a: 'getUserList' }), function (res) {
  131. this.records = res.data.data;
  132. }.bind(this));
  133. },
  134. myUser: function () {
  135. window.location.href = $h.U({
  136. c: 'my',
  137. a: 'index'
  138. });
  139. },
  140. getUserInfo: function () {
  141. var that = this;
  142. app.baseGet($h.U({ c: 'auth_api', a: 'userInfo' }), function (res) {
  143. that.userInfo = res.data.data;
  144. });
  145. }
  146. }
  147. });
  148. });
  149. </script>
  150. {/block}