ProfileUser.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <div>
  3. <div class="text-center">
  4. <UserAvatar :img="userInfo?.avatar" />
  5. </div>
  6. <ul class="list-group list-group-striped">
  7. <li class="list-group-item">
  8. <Icon icon="ep:user" class="mr-5px" />{{ t('profile.user.username') }}
  9. <div class="pull-right">{{ userInfo?.username }}</div>
  10. </li>
  11. <li class="list-group-item">
  12. <Icon icon="ep:phone" class="mr-5px" />{{ t('profile.user.mobile') }}
  13. <div class="pull-right">{{ userInfo?.mobile }}</div>
  14. </li>
  15. <li class="list-group-item">
  16. <Icon icon="fontisto:email" class="mr-5px" />{{ t('profile.user.email') }}
  17. <div class="pull-right">{{ userInfo?.email }}</div>
  18. </li>
  19. <li class="list-group-item">
  20. <Icon icon="carbon:tree-view-alt" class="mr-5px" />{{ t('profile.user.dept') }}
  21. <div class="pull-right" v-if="userInfo?.dept">{{ userInfo?.dept.name }}</div>
  22. </li>
  23. <li class="list-group-item">
  24. <Icon icon="ep:suitcase" class="mr-5px" />{{ t('profile.user.posts') }}
  25. <div class="pull-right" v-if="userInfo?.posts">
  26. {{ userInfo?.posts.map((post) => post.name).join(',') }}
  27. </div>
  28. </li>
  29. <li class="list-group-item">
  30. <Icon icon="icon-park-outline:peoples" class="mr-5px" />{{ t('profile.user.roles') }}
  31. <div class="pull-right" v-if="userInfo?.roles">
  32. {{ userInfo?.roles.map((role) => role.name).join(',') }}
  33. </div>
  34. </li>
  35. <li class="list-group-item">
  36. <Icon icon="ep:calendar" class="mr-5px" />{{ t('profile.user.createTime') }}
  37. <div class="pull-right">{{ dayjs(userInfo?.createTime).format('YYYY-MM-DD') }}</div>
  38. </li>
  39. </ul>
  40. </div>
  41. </template>
  42. <script setup lang="ts">
  43. import dayjs from 'dayjs'
  44. import UserAvatar from './UserAvatar.vue'
  45. import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'
  46. const { t } = useI18n()
  47. const userInfo = ref<ProfileVO>()
  48. const getUserInfo = async () => {
  49. const users = await getUserProfileApi()
  50. userInfo.value = users
  51. }
  52. onMounted(async () => {
  53. await getUserInfo()
  54. })
  55. </script>
  56. <style scoped>
  57. .text-center {
  58. text-align: center;
  59. position: relative;
  60. height: 120px;
  61. }
  62. .list-group-striped > .list-group-item {
  63. border-left: 0;
  64. border-right: 0;
  65. border-radius: 0;
  66. padding-left: 0;
  67. padding-right: 0;
  68. }
  69. .list-group {
  70. padding-left: 0px;
  71. list-style: none;
  72. }
  73. .list-group-item {
  74. border-bottom: 1px solid #e7eaec;
  75. border-top: 1px solid #e7eaec;
  76. margin-bottom: -1px;
  77. padding: 11px 0px;
  78. font-size: 13px;
  79. }
  80. .pull-right {
  81. float: right !important;
  82. }
  83. </style>