UserBasicInfo.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <el-card shadow="never">
  3. <template #header>
  4. <slot name="header"></slot>
  5. </template>
  6. <el-row >
  7. <el-col :span="5">
  8. <ElAvatar shape="square" :size="140" :src="user.avatar || undefined" />
  9. </el-col>
  10. <el-col :span="19">
  11. <el-descriptions :column="2">
  12. <el-descriptions-item>
  13. <template #label>
  14. <descriptions-item-label label="用户名" icon="ep:user" />
  15. </template>
  16. {{ user.name || '空' }}
  17. </el-descriptions-item>
  18. <el-descriptions-item>
  19. <template #label>
  20. <descriptions-item-label label="昵称" icon="ep:user" />
  21. </template>
  22. {{ user.nickname }}
  23. </el-descriptions-item>
  24. <el-descriptions-item label="手机号">
  25. <template #label>
  26. <descriptions-item-label label="手机号" icon="ep:phone" />
  27. </template>
  28. {{ user.mobile }}
  29. </el-descriptions-item>
  30. <el-descriptions-item>
  31. <template #label>
  32. <descriptions-item-label label="性别" icon="fa:mars-double" />
  33. </template>
  34. <dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="user.sex" />
  35. </el-descriptions-item>
  36. <el-descriptions-item>
  37. <template #label>
  38. <descriptions-item-label label="所在地" icon="ep:location" />
  39. </template>
  40. {{ user.areaName }}
  41. </el-descriptions-item>
  42. <el-descriptions-item>
  43. <template #label>
  44. <descriptions-item-label label="注册 IP" icon="ep:position" />
  45. </template>
  46. {{ user.registerIp }}
  47. </el-descriptions-item>
  48. <el-descriptions-item>
  49. <template #label>
  50. <descriptions-item-label label="生日" icon="fa:birthday-cake" />
  51. </template>
  52. {{ user.birthday ? formatDate(user.birthday) : '空' }}
  53. </el-descriptions-item>
  54. <el-descriptions-item>
  55. <template #label>
  56. <descriptions-item-label label="注册时间" icon="ep:calendar" />
  57. </template>
  58. {{ user.createTime ? formatDate(user.createTime) : '空' }}
  59. </el-descriptions-item>
  60. <el-descriptions-item>
  61. <template #label>
  62. <descriptions-item-label label="最后登录时间" icon="ep:calendar" />
  63. </template>
  64. {{ user.loginDate ? formatDate(user.loginDate) : '空' }}
  65. </el-descriptions-item>
  66. </el-descriptions>
  67. </el-col>
  68. </el-row>
  69. </el-card>
  70. </template>
  71. <script setup lang="ts">
  72. import { DICT_TYPE } from '@/utils/dict'
  73. import { formatDate } from '@/utils/formatTime'
  74. import * as UserApi from '@/api/member/user'
  75. import { DescriptionsItemLabel } from '@/components/Descriptions/index'
  76. const { user } = defineProps<{ user: UserApi.UserVO }>()
  77. </script>
  78. <style scoped lang="scss">
  79. .card-header {
  80. display: flex;
  81. justify-content: space-between;
  82. align-items: center;
  83. }
  84. </style>