🎈 perf: 更新移动端用户主页

This commit is contained in:
Litrix 2024-12-25 13:05:35 +08:00
parent 790384fb8e
commit 057fa60981
2 changed files with 32 additions and 7 deletions

View File

@ -1,7 +1,9 @@
<template>
<div>
<h4 class="p">编辑资料</h4>
<el-divider />
<template v-if="!smLess">
<h4 class="p">编辑资料</h4>
<el-divider />
</template>
<div class="p outer flex">
<el-avatar class="self-center" :size="100" :src="getAvatarURL(userStore.userInfo!.avatar)" />
<div class="self-center flex gap-2">
@ -51,6 +53,7 @@
import { getAvatarURL, request } from '@/api';
import { usernameLength } from '@/components/app/LoginRegisterDialog.vue';
import { ordinarySchema, uploadAvatarRespSchema } from '@/schemas/response';
import { useMediaStore } from '@/stores/media';
import { useUserStore } from '@/stores/user';
import { Close, Upload } from '@element-plus/icons-vue';
import {
@ -59,8 +62,10 @@ import {
type FormRules,
type UploadRequestHandler,
} from 'element-plus';
import { storeToRefs } from 'pinia';
import { defineComponent, reactive, ref } from 'vue';
import type { RouteLocationNormalized } from 'vue-router';
const { smLess } = storeToRefs(useMediaStore());
function validate({ params: { id } }: RouteLocationNormalized) {
if (!useUserStore().isSelf(id as string)) {
ElMessage.error('不能编辑其他用户哦');

View File

@ -46,7 +46,11 @@
<user-menu :user-info="userInfo" />
</el-card>
<el-card class="main flex-1">
<router-view />
<router-view custom v-slot="{ Component }">
<keep-alive>
<component :is="Component" />
</keep-alive>
</router-view>
</el-card>
</div>
</template>
@ -59,11 +63,24 @@
</template>
</div>
</template>
<div class="m-t-150px flex-1 flex flex-col bg-white rounded-t-20px overflow-hidden" v-else>
<div class="m-t-150px flex-1 flex flex-col bg-light gap-10px rounded-t-20px" v-else>
<template v-if="userInfo">
<user-menu :user-info="userInfo" mobile />
<div class="flex-1 bg-white">
<router-view />
<div class="relative flex h-200px bg-white p-20px rounded-t-20px">
<el-avatar
class="absolute border-2 border-solid border-light top--50px left-25px"
:size="100"
:src="getAvatarURL(userInfo.avatar)"
></el-avatar>
</div>
<div class="flex-1 flex flex-col">
<user-menu :user-info="userInfo" mobile />
<div class="main flex-1 bg-white">
<router-view custom v-slot="{ Component }">
<keep-alive>
<component :is="Component" />
</keep-alive>
</router-view>
</div>
</div>
</template>
</div>
@ -91,6 +108,9 @@
.main {
--el-card-padding: 10px 0;
--main-h-padding: 10px;
&:not(.el-card) {
padding: var(--el-card-padding);
}
}
</style>
<script lang="ts" setup>