Index.vue 1.7 KB

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