my.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <view>
  3. <view class="top pr">
  4. <image src="/static/images/my/my-bg2.png" mode="widthFix" style="width: 100%;"></image>
  5. <view class="userInfo" v-if="userInfo.name">
  6. <fs-cell justify="left" bgColor="transparent">
  7. <template #title>
  8. <fs-avatar border :src="userInfo.photo" size="120rpx" link="./userInfo" v-if="userInfo.photo"></fs-avatar>
  9. <fs-wx-avatar v-else></fs-wx-avatar>
  10. </template>
  11. <template #value>
  12. <view class="cell-right">
  13. <view class="title">{{userInfo.name || userInfo.nickName}}</view>
  14. <view class="sub">{{userInfo.phone}}</view>
  15. </view>
  16. </template>
  17. </fs-cell>
  18. </view>
  19. <navigator url="../login/login" class="login" v-else>登录</navigator>
  20. <view class="top-menu">
  21. <fs-card>
  22. <fs-grid :columnNum="4">
  23. <fs-grid-item>
  24. <fs-icon type="icon-image" size="40rpx"></fs-icon>
  25. <view class="content">菜单1</view>
  26. </fs-grid-item>
  27. <fs-grid-item>
  28. <fs-icon type="icon-image" size="40rpx"></fs-icon>
  29. <view class="content">菜单2</view>
  30. </fs-grid-item>
  31. <fs-grid-item>
  32. <fs-icon type="icon-image" size="40rpx"></fs-icon>
  33. <view class="content">菜单3</view>
  34. </fs-grid-item>
  35. <fs-grid-item>
  36. <fs-icon type="icon-image" size="40rpx"></fs-icon>
  37. <view class="content">菜单4</view>
  38. </fs-grid-item>
  39. </fs-grid>
  40. </fs-card>
  41. </view>
  42. </view>
  43. <fs-cell-group arrow border>
  44. <fs-cell link="./licensePlate/list" value="车辆管理">
  45. <template #title>
  46. <fs-icon type="icon-car" colorType="primary"></fs-icon>
  47. </template>
  48. </fs-cell>
  49. <fs-cell link="./address/list" value="地址管理">
  50. <template #title>
  51. <fs-icon type="icon-location" colorType="primary"></fs-icon>
  52. </template>
  53. </fs-cell>
  54. <fs-cell link="./org" value="组织架构">
  55. <template #title>
  56. <fs-icon type="icon-org" colorType="primary"></fs-icon>
  57. </template>
  58. </fs-cell>
  59. <fs-cell link="./addrbook/list" value="通讯录">
  60. <template #title>
  61. <fs-icon type="icon-tongxunlu" colorType="primary"></fs-icon>
  62. </template>
  63. </fs-cell>
  64. <fs-cell link="./notice" value="我的消息">
  65. <template #title>
  66. <fs-icon type="icon-notice" colorType="primary"></fs-icon>
  67. </template>
  68. </fs-cell>
  69. <fs-cell link="./feedback" value="意见反馈">
  70. <template #title>
  71. <fs-icon type="icon-feedback" colorType="primary"></fs-icon>
  72. </template>
  73. </fs-cell>
  74. <fs-cell link="./version" value="版本记录">
  75. <template #title>
  76. <fs-icon type="icon-version" colorType="primary"></fs-icon>
  77. </template>
  78. </fs-cell>
  79. </fs-cell-group>
  80. <fs-gutter height="120rpx"></fs-gutter>
  81. <fs-button type="primary" round block @click="handleLogout">退出登录</fs-button>
  82. <fs-gutter height="60rpx"></fs-gutter>
  83. </view>
  84. </template>
  85. <script setup>
  86. import { computed, ref } from 'vue'
  87. import { useStore } from 'vuex'
  88. const store = useStore()
  89. const userInfo = computed(() => store.state.userInfo)
  90. const handleLogout = () => {
  91. store.dispatch('logout').then(res => {
  92. console.log('logout')
  93. })
  94. }
  95. </script>
  96. <style lang="scss" scoped>
  97. .top{
  98. .userInfo {
  99. position: absolute;
  100. left: 20rpx;
  101. top: 40rpx;
  102. .title,
  103. .sub {
  104. color: #fff;
  105. }
  106. }
  107. &-menu{
  108. margin-top: -70rpx;
  109. margin-bottom: 40rpx;
  110. position: relative;
  111. z-index: 100;
  112. }
  113. }
  114. .login {
  115. position: absolute;
  116. left: 50%;
  117. top: 50%;
  118. transform: translate(-50%, 50%);
  119. margin-top: -50px;
  120. color: #fff;
  121. border: 1px solid #fff;
  122. height: 40px;
  123. line-height: 40px;
  124. width: 100px;
  125. border-radius: 20px;
  126. text-align: center;
  127. }
  128. .logout{
  129. margin: 0 var(--gutter);
  130. }
  131. </style>