userInfoPage.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <div class="appStore">
  3. <div class="topC">
  4. <img @click="backPage" src="../../../assets/images/appStoreCopy/backPage.svg" alt="" />
  5. <div>{{ userinfo.username }}</div>
  6. </div>
  7. <div class="infoCon">
  8. <div style="font-size: 14px;">账户</div>
  9. <!-- <div class="Blo">
  10. <div style="display: flex;align-items: center;gap: 10px;">
  11. <img src="../../../assets/images/appStoreCopy/tel.svg" alt="" />
  12. 账号
  13. </div>
  14. <span style="color: #969BA3;">{{ userinfo.accountNumber }}</span>
  15. </div> -->
  16. <div class="Blo">
  17. <div style="display: flex;align-items: center;gap: 10px;">
  18. <img src="../../../assets/images/appStoreCopy/sch.svg" alt="" />
  19. 学校
  20. </div>
  21. <span style="color: #969BA3;">{{ userinfo.schoolName }}</span>
  22. </div>
  23. <div @click="exitLogin" class="Blo">
  24. <div style="display: flex;align-items: center;gap: 10px;">
  25. <img src="../../../assets/images/appStoreCopy/logOut.svg" alt="" />
  26. 退出登录
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. </template>
  32. <script>
  33. import { mapGetters } from 'vuex'
  34. import { loginOut } from '@/api/user'
  35. export default {
  36. data() {
  37. return {}
  38. },
  39. computed: {
  40. ...mapGetters(['userinfo'])
  41. },
  42. methods: {
  43. backPage() {
  44. this.$router.push('/appStoreCopy')
  45. },
  46. // 退出登录
  47. exitLogin() {
  48. this.$dialog({
  49. message: '是否现在退出登录?你将回到登录界面',
  50. showCancelButton: true,
  51. beforeClose: (action, done) => {
  52. if (action === 'confirm') {
  53. loginOut()
  54. .then(res => {
  55. this.$toast({
  56. message: '退出成功',
  57. type: 'success'
  58. })
  59. this.$store.dispatch('user/logout')
  60. window.location.reload()
  61. done()
  62. })
  63. .catch(err => {
  64. console.error(err)
  65. done()
  66. })
  67. } else {
  68. // 拦截取消操作
  69. done()
  70. }
  71. }
  72. })
  73. }
  74. }
  75. }
  76. </script>
  77. <style lang="scss" scoped>
  78. .appStore {
  79. width: 100vw;
  80. height: 100vh;
  81. box-sizing: border-box;
  82. // padding: 5px;
  83. background-color: #f9f8f8;
  84. display: flex;
  85. flex-direction: column;
  86. overflow: auto;
  87. }
  88. .topC {
  89. display: flex;
  90. justify-content: center;
  91. width: 100%;
  92. align-items: center;
  93. height: 50px;
  94. padding: 0px 12px;
  95. box-sizing: border-box;
  96. position: relative;
  97. font-family: PingFang HK;
  98. font-weight: 600;
  99. font-size: 15px;
  100. line-height: 20px;
  101. flex-shrink: 0;
  102. img {
  103. position: absolute;
  104. top: 50%;
  105. left: 10px;
  106. transform: translate(0, -50%);
  107. width: 23px;
  108. }
  109. }
  110. .infoCon {
  111. margin-top: 35px;
  112. padding: 15px;
  113. box-sizing: border-box;
  114. display: flex;
  115. flex-direction: column;
  116. gap: 10px;
  117. font-family: PingFang HK;
  118. font-weight: 400;
  119. font-size: 14px;
  120. .Blo {
  121. display: flex;
  122. justify-content: space-between;
  123. background: #fff;
  124. align-items: center;
  125. padding: 15px 20px;
  126. border-radius: 10px;
  127. }
  128. }
  129. </style>