Index.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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" 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" name="Profile">
  34. import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
  35. const { t } = useI18n()
  36. const activeName = ref('basicInfo')
  37. </script>
  38. <style scoped>
  39. .user {
  40. max-height: 960px;
  41. padding: 15px 20px 20px;
  42. }
  43. .card-header {
  44. display: flex;
  45. justify-content: center;
  46. align-items: center;
  47. }
  48. :deep(.el-card .el-card__header, .el-card .el-card__body) {
  49. padding: 15px !important;
  50. }
  51. .profile-tabs > .el-tabs__content {
  52. padding: 32px;
  53. font-weight: 600;
  54. color: #6b778c;
  55. }
  56. .el-tabs--left .el-tabs__content {
  57. height: 100%;
  58. }
  59. </style>