Index.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <div class="flex">
  3. <el-card class="w-1/3 user" 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="w-2/3 user" style="margin-left: 10px" 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" tab-position="top" style="height: 400px" class="profile-tabs">
  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 />
  27. </el-tab-pane>
  28. </el-tabs>
  29. </div>
  30. </el-card>
  31. </div>
  32. </template>
  33. <script setup lang="ts">
  34. import { ref } from 'vue'
  35. import { useI18n } from '@/hooks/web/useI18n'
  36. import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
  37. const { t } = useI18n()
  38. const activeName = ref('basicInfo')
  39. </script>
  40. <style scoped>
  41. .user {
  42. max-height: 960px;
  43. padding: 15px 20px 20px 20px;
  44. }
  45. .card-header {
  46. display: flex;
  47. justify-content: center;
  48. align-items: center;
  49. }
  50. :deep(.el-card .el-card__header, .el-card .el-card__body) {
  51. padding: 15px !important;
  52. }
  53. .profile-tabs > .el-tabs__content {
  54. padding: 32px;
  55. color: #6b778c;
  56. font-weight: 600;
  57. }
  58. .el-tabs--left .el-tabs__content {
  59. height: 100%;
  60. }
  61. </style>