index.ux 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <template>
  2. <div class="user-wrap">
  3. <stack>
  4. <div class="user-info__wrap">
  5. <image src="../../assets/imgs/user_login.png" if="{{haslogin && loginPhone}}"></image>
  6. <image src="../../assets/imgs/user_logo.png" else ></image>
  7. <div class="uesr-info__message">
  8. <text class="user-name" if="{{haslogin && loginPhone}}">书友{{user.id}}</text>
  9. <text class="un-Login" else>未登录</text>
  10. <text>ID:{{ user.id }}</text>
  11. <!-- <text class="vip-card" if="{{user.is_vip}}">免费阅读卡还剩{{ user.vip_days }}</text> -->
  12. </div>
  13. </div>
  14. <div class="my-collect">
  15. <div class="collect-content">
  16. <text class="collect-info"><span class="title">我的账户</span><span class="vip-card" if="{{user.is_vip}}">免费阅读卡还剩{{ user.vip_days }}天</span></text>
  17. <text class="book_coin">书币:{{ user.balance }}</text>
  18. </div>
  19. <text class="pay-btn" @click="pageChange('Pay')">充值</text>
  20. </div>
  21. </stack>
  22. <div class="operator-item__wrap">
  23. <div
  24. class="operator-item"
  25. @click="pageChange('Task')"
  26. if="{{!user.is_vip}}"
  27. >
  28. <div class="item-name">
  29. <image src="../../assets/imgs/task.png"></image>
  30. <text class="orange">每日做任务,小说免费读</text>
  31. </div>
  32. <div class="info-text">
  33. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  34. </div>
  35. </div>
  36. <!-- <div class="operator-item">
  37. <div class="item-name">
  38. <image src="../../assets/imgs/declining.png"></image>
  39. <text
  40. ><span>您还剩</span><span class="red">{{ user.balance }}</span
  41. ><span>书币</span></text
  42. >
  43. </div>
  44. <text class="operator-button" @click="pageChange('Pay')">
  45. 充值
  46. </text>
  47. </div> -->
  48. <div class="operator-item" @click="pageChange('Sign')">
  49. <div class="item-name">
  50. <image src="../../assets/imgs/sign.png"></image>
  51. <text>签到记录</text>
  52. </div>
  53. <div class="info-text">
  54. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  55. </div>
  56. </div>
  57. <div class="operator-item" @click="pageChange('Recharge')">
  58. <div class="item-name">
  59. <image src="../../assets/imgs/recharge_record.png"></image>
  60. <text>充值记录</text>
  61. </div>
  62. <div class="info-text">
  63. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  64. </div>
  65. </div>
  66. <div class="operator-item" @click="pageChange('Consume')">
  67. <div class="item-name">
  68. <image src="../../assets/imgs/consume_record.png"></image>
  69. <text>消费记录</text>
  70. </div>
  71. <div class="info-text">
  72. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  73. </div>
  74. </div>
  75. <div class="operator-item" @click="showCustomerQrcode">
  76. <div class="item-name">
  77. <image src="../../assets/imgs/customer.png"></image>
  78. <text>联系客服</text>
  79. </div>
  80. <div class="info-text">
  81. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  82. </div>
  83. </div>
  84. <!-- <div class="operator-item" @click="pageChange('Agreement')">
  85. <div class="item-name">
  86. <image src="../../assets/imgs/customer.png"></image>
  87. <text>用户协议</text>
  88. </div>
  89. <div class="info-text">
  90. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  91. </div>
  92. </div>
  93. <div class="operator-item" @click="pageChange('Privacy')">
  94. <div class="item-name">
  95. <image src="../../assets/imgs/customer.png"></image>
  96. <text>隐私协议</text>
  97. </div>
  98. <div class="info-text">
  99. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  100. </div>
  101. </div>-->
  102. <div class="operator-item" @click="pageChange('Phone')">
  103. <div class="item-name">
  104. <image src="../../assets/imgs/binding.png"></image>
  105. <text if="{{!(haslogin && loginPhone)}}"> 登录绑定</text>
  106. <text else>退出登录</text>
  107. </div>
  108. <div class="info-text">
  109. <text if="{{!(haslogin && loginPhone)}}"></text>
  110. <text else>已绑定手机号</text>
  111. <image class="arrow" src="../../assets/imgs/arrow-right.png"></image>
  112. </div>
  113. </div>
  114. </div>
  115. <div class="bottom-info">
  116. <text @click="pageChange('Agreement')">用户协议</text><text class="line">|</text><text @click="pageChange('Privacy')">隐私协议</text>
  117. </div>
  118. </div>
  119. </template>
  120. <script>
  121. import router from "@system.router";
  122. import { getUserInfo } from "../../api/index";
  123. import prompt from '@system.prompt';
  124. import storage from '@system.storage';
  125. export default {
  126. props: {
  127. tabindex: {
  128. type: Number,
  129. default: 0
  130. }
  131. },
  132. data() {
  133. return {
  134. user: {},
  135. haslogin: undefined,
  136. loginPhone: undefined,
  137. send_order_id: '',
  138. }
  139. },
  140. async onInit() {
  141. this.$watch('tabindex', 'watchPropsChange');
  142. this.$on('refreshData', this.broadevt);
  143. },
  144. async getUser() {
  145. let user = await getUserInfo();
  146. var reg = /^(\d{3})\d*(\d{4})$/;
  147. if (user.phone) user.dtel = user.phone.replace(reg, '$1****$2')
  148. this.user = user;
  149. let haslogin = (await storage.get({ key: "hasLogin" })).data;
  150. this.loginPhone = (await storage.get({ key: "loginPhone" })).data;
  151. this.haslogin = haslogin;
  152. if (!this.send_order_id) this.send_order_id = user.send_order_id;
  153. },
  154. async watchPropsChange(v) {
  155. if (v === 2) {
  156. let s = (await storage.get({ key: "send_order_id" })).data;
  157. if (s) this.send_order_id = s;
  158. this.getUser();
  159. }
  160. },
  161. broadevt(evt) {
  162. if (evt.detail.current == 2) {
  163. this.getUser()
  164. }
  165. },
  166. showCustomerQrcode() {
  167. this.$emit('customer');
  168. },
  169. pageChange(page) {
  170. if (page == 'Phone' && this.haslogin) {
  171. this.loginOut();
  172. return false;
  173. }
  174. if (page == 'Pay') {
  175. if (this.send_order_id || (this.haslogin && this.loginPhone)) {
  176. router.push({
  177. uri: `/views/${page}`
  178. })
  179. } else {
  180. router.push({
  181. uri: `/views/Phone`
  182. })
  183. }
  184. } else {
  185. router.push({
  186. uri: `/views/${page}`
  187. })
  188. }
  189. },
  190. toUrl(url) {
  191. router.push({
  192. uri: url
  193. })
  194. },
  195. loginOut() {
  196. let self = this;
  197. prompt.showDialog({
  198. title: '提示',
  199. message: '确认是否要退出登录?',
  200. buttons: [
  201. {
  202. text: '确定',
  203. color: '#666'
  204. },
  205. {
  206. text: '取消',
  207. color: '#9900FF'
  208. }
  209. ],
  210. success: function (data) {
  211. if (data.index == 1) {
  212. prompt.showToast({
  213. message: '取消操作'
  214. })
  215. } else {
  216. prompt.showToast({
  217. message: '退出成功'
  218. })
  219. console.log(data)
  220. storage.delete({
  221. key: 'hasLogin',
  222. success: function (data) {
  223. self.getUser();
  224. console.log('handling success')
  225. },
  226. fail: function (data, code) {
  227. console.log(`handling fail, code = ${code}`)
  228. }
  229. })
  230. storage.delete({
  231. key: 'loginPhone',
  232. success: function (data) {
  233. console.log('handling success')
  234. },
  235. fail: function (data, code) {
  236. console.log(`handling fail, code = ${code}`)
  237. }
  238. })
  239. }
  240. },
  241. cancel: function () {
  242. prompt.showToast({
  243. message: '取消操作'
  244. })
  245. },
  246. fail: function (data, code) {
  247. console.log(`handling fail, code = ${code}`)
  248. }
  249. })
  250. }
  251. }
  252. </script>
  253. <style lang="less">
  254. @import "../../assets/less/my.less";
  255. </style>