Index.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div class="flex">
  3. <el-card class="user w-1/3" shadow="hover">
  4. <template #header>
  5. <div class="card-header">
  6. <span>{{ t('profile.user.title') }}</span>
  7. </div>
  8. </template>
  9. <ProfileUser />
  10. </el-card>
  11. <el-card class="user ml-3 w-2/3" shadow="hover">
  12. <template #header>
  13. <div class="card-header">
  14. <span>{{ t('profile.info.title') }}</span>
  15. </div>
  16. </template>
  17. <div>
  18. <el-tabs v-model="activeName" class="profile-tabs" style="height: 400px" tab-position="top">
  19. <el-tab-pane :label="t('profile.info.basicInfo')" name="basicInfo">
  20. <BasicInfo />
  21. </el-tab-pane>
  22. <el-tab-pane :label="t('profile.info.resetPwd')" name="resetPwd">
  23. <ResetPwd />
  24. </el-tab-pane>
  25. <el-tab-pane :label="t('profile.info.userSocial')" name="userSocial">
  26. <UserSocial v-model:activeName="activeName" />
  27. </el-tab-pane>
  28. </el-tabs>
  29. </div>
  30. </el-card>
  31. </div>
  32. </template>
  33. <script lang="ts" setup>
  34. import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components'
  35. const { t } = useI18n()
  36. defineOptions({ name: 'Profile' })
  37. const activeName = ref('basicInfo')
  38. </script>
  39. <style scoped>
  40. .user {
  41. max-height: 960px;
  42. padding: 15px 20px 20px;
  43. }
  44. .card-header {
  45. display: flex;
  46. justify-content: center;
  47. align-items: center;
  48. }
  49. :deep(.el-card .el-card__header, .el-card .el-card__body) {
  50. padding: 15px !important;
  51. }
  52. .profile-tabs > .el-tabs__content {
  53. padding: 32px;
  54. font-weight: 600;
  55. color: #6b778c;
  56. }
  57. .el-tabs--left .el-tabs__content {
  58. height: 100%;
  59. }
  60. </style>