activationcode.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div class='activationcode'>
  3. <div class="user_info flex_r flex_jb">
  4. <img class="userimg" :src="userinfo.head_pic" />
  5. <div class="u_info">
  6. <div class="p1">{{ userinfo.nickname }}</div>
  7. <div class="p1">手机号:{{ userinfo.mobile }}</div>
  8. <div class="p3">加入时间:{{ localInfo.create_time }}</div>
  9. </div>
  10. </div>
  11. <div class="con">
  12. <div class="box1">
  13. <div class="tab" :class="{active:level_id==i.i}" v-for="(i,s) in tabs" :key="s" @click="onto(i)">
  14. <div class="p1">{{ i.n }}</div>
  15. <div class="p2">剩余生成数:{{Purview[i.k]}}</div>
  16. </div>
  17. </div>
  18. </div>
  19. <div class="bntbar">
  20. <div class="btn" @click="activationCode">立即生成</div>
  21. </div>
  22. <div class="codebox">
  23. <div class="msg">待使用:</div>
  24. <div class="codes">
  25. <div class="code_it" v-for="(i,s) in codes" :key="s">
  26. <div class="l_tit">{{ i.name }}</div>
  27. <div class="l_li">
  28. <div class="code" v-for="(a,b) in i.codes" :key="b" @click="copyText(a)">{{ a }}</div>
  29. </div>
  30. </div>
  31. </div>
  32. <!-- <div class="code" @click="copyText(code)">{{ code }}</div> -->
  33. <div class="smsg">(*点击激活码可复制)</div>
  34. </div>
  35. </div>
  36. </template>
  37. <script>
  38. import { post } from "@/request/api.js";
  39. import uniCopy from "@/utils/copy";
  40. export default {
  41. name: 'activationcode',
  42. props: {},
  43. components: {},
  44. data() {
  45. return {
  46. userinfo: uni.getStorageSync('userinfo'),
  47. localInfo: {},
  48. Purview: {},
  49. code: undefined,
  50. codes: {},
  51. tabs: [
  52. { n: "VIP", i: 1, k: "vip_num" },
  53. { n: "群主", i: 2, k: "lord_num" },
  54. { n: "合伙人", i: 3, k: "helper_num" },
  55. { n: "副总", i: 4, k: "vice_num" },
  56. ],
  57. level_id: 1,
  58. }
  59. },
  60. methods: {
  61. async getLU() {
  62. this.localInfo = await uni.Luserfun()
  63. },
  64. getPurview() {
  65. post("local/getPurview").then(res => {
  66. if (res.code == 0) {
  67. this.Purview = res.data
  68. }
  69. })
  70. post("local/waitActivation").then(res => {
  71. if (res.code == 0) {
  72. this.codes = res.data
  73. }
  74. })
  75. },
  76. activationCode() {
  77. post("local/activationCode",{
  78. level_id: this.level_id
  79. }).then(res => {
  80. if (res.code == 0) {
  81. this.getPurview();
  82. }
  83. })
  84. },
  85. copyText(e) {
  86. uniCopy({
  87. content: e,
  88. success: (res) => {},
  89. error: (e) => {},
  90. });
  91. },
  92. onto(i){
  93. if(this.Purview[i.k] > 0) this.level_id = i.i
  94. }
  95. },
  96. onLoad(da) {
  97. this.getPurview();
  98. this.getLU();
  99. },
  100. onShow() {},
  101. mounted() {},
  102. }
  103. </script>
  104. <style scoped lang='scss'>
  105. page {
  106. background-color: #fff;
  107. }
  108. .activationcode{
  109. padding-bottom: 60rpx;
  110. }
  111. .user_info{
  112. padding: 38rpx 32rpx;
  113. border-bottom: 1px solid #e5e5e5;
  114. .userimg{
  115. width: 160rpx;
  116. height: 160rpx;
  117. border-radius: 10rpx;
  118. }
  119. .u_info{
  120. width: calc(100% - 160rpx);
  121. padding: 4rpx 0 4rpx 30rpx;
  122. display: flex;
  123. flex-direction: column;
  124. justify-content: space-between;
  125. .p1{
  126. font-size: 36rpx;
  127. }
  128. .p3{
  129. font-size: 28rpx;
  130. color: #999;
  131. }
  132. }
  133. }
  134. .con{
  135. padding: 28rpx 32rpx;
  136. .box1{
  137. margin: 0 -15rpx;
  138. }
  139. .tab{
  140. display: inline-block;
  141. background-color: rgba($color: #000, $alpha: 0.06);
  142. width: calc(50% - 30rpx);
  143. margin: 15rpx;
  144. text-align: center;
  145. padding: 22rpx 26rpx;
  146. border-radius: 10rpx;
  147. .p1{
  148. font-size: 36rpx;
  149. font-weight: bold;
  150. margin-bottom: 10rpx;
  151. }
  152. .p2{
  153. font-size: 24epx;
  154. color: #666;
  155. }
  156. &.active{
  157. background-color: #d3aa79;
  158. .p1,.p2{
  159. color: #fff;
  160. }
  161. }
  162. }
  163. }
  164. .bntbar{
  165. padding: 0 32rpx;
  166. .btn{
  167. font-weight: bold;
  168. height: 90rpx;
  169. line-height: 90rpx;
  170. text-align: center;
  171. background: radial-gradient(circle, #d3aa79,#ebcda8);
  172. border-radius: 45rpx;
  173. }
  174. }
  175. .codebox{
  176. padding: 0 32rpx;
  177. margin-top: 50rpx;
  178. .msg{
  179. margin-bottom: 30rpx;
  180. font-size: 32rpx;
  181. font-weight: bold;
  182. color: #666;
  183. }
  184. .codes{
  185. background-color: rgba($color: #000, $alpha: 0.08);
  186. border-radius: 10rpx;
  187. padding: 26rpx 30rpx;
  188. }
  189. .l_tit{
  190. color: #666;
  191. font-size: 30rpx;
  192. }
  193. .l_li{
  194. margin: 10rpx -20rpx 30rpx;
  195. }
  196. .code_it{
  197. &:last-child{
  198. .l_li{
  199. margin-bottom: 0;
  200. }
  201. }
  202. }
  203. .code{
  204. display: inline-block;
  205. color: #000;
  206. width: calc((100% - 120rpx) / 3);
  207. background-color: #fff;
  208. border-radius: 10rpx;
  209. margin: 8rpx 20rpx;
  210. text-align: center;
  211. padding: 10rpx 0;
  212. }
  213. .smsg{
  214. font-size: 23rpx;
  215. margin-top: 10rpx;
  216. }
  217. }
  218. </style>