fix: 补全骨架屏渲染机制

- 补全各个页面的骨架屏渲染机制修改
This commit is contained in:
2025-12-19 13:26:26 +08:00
parent f2533767d2
commit aa26731731
5 changed files with 77 additions and 61 deletions

View File

@ -47,3 +47,9 @@
currentPage.value = 1; // 重置页码 currentPage.value = 1; // 重置页码
}); });
</script> </script>
<style scoped>
.el-tabs {
width: 100%;
}
</style>

View File

@ -4,11 +4,17 @@
<h1 class="page-title">{{ $t('navigation.downloads') }}</h1> <h1 class="page-title">{{ $t('navigation.downloads') }}</h1>
<app-breadcrumb class="breadcrumb" :items="breadcrumbItems" /> <app-breadcrumb class="breadcrumb" :items="breadcrumbItems" />
</div> </div>
<div v-if="!pending" class="page-content"> <div class="page-content">
<el-skeleton
:loading="pending"
:rows="6"
animated
:throttle="{ leading: 500, trailing: 500 }"
>
<template #default>
<file-card :file-id="id" :file="file" /> <file-card :file-id="id" :file="file" />
</div> </template>
<div v-else> </el-skeleton>
<el-skeleton :rows="6" animated />
</div> </div>
</div> </div>
</template> </template>

View File

@ -1,6 +1,5 @@
<template> <template>
<div class="page-container"> <div class="page-container">
<div v-if="!pending">
<div v-if="product"> <div v-if="product">
<!-- 面包屑导航 --> <!-- 面包屑导航 -->
<app-breadcrumb class="breadcrumb" :items="breadcrumbItems" /> <app-breadcrumb class="breadcrumb" :items="breadcrumbItems" />
@ -19,15 +18,6 @@
/> />
</div> </div>
</div> </div>
<div v-else class="loading">
<el-skeleton style="--el-skeleton-circle-size: 400px">
<template #template>
<el-skeleton-item variant="circle" />
</template>
</el-skeleton>
<el-skeleton :rows="5" animated />
</div>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -37,7 +27,7 @@
// 获取路由参数 // 获取路由参数
const id = route.params.slug as string; const id = route.params.slug as string;
const { data: product, pending, error } = await useProduct(id); const { data: product, error } = await useProduct(id);
const breadcrumbItems = computed(() => [ const breadcrumbItems = computed(() => [
{ label: $t('navigation.home'), to: localePath('/') }, { label: $t('navigation.home'), to: localePath('/') },

View File

@ -1,11 +1,23 @@
<template> <template>
<div class="search-page"> <div class="search-page">
<search-header v-model="keyword" /> <search-header v-model="keyword" />
<div v-if="loading" class="search-state"> <div class="search-state">
<el-skeleton :rows="4" animated /> <el-skeleton
</div> :loading="loading"
<search-tabs v-else-if="hasResults" :search-items="searchItems" /> animated
<div v-else class="search-state"> :throttle="{ leading: 500, trailing: 500 }"
>
<template #template>
<el-skeleton-item
v-for="i in 10"
:key="i"
variant="rect"
class="skeleton-item"
/>
</template>
<template #default>
<search-tabs v-if="hasResults" :search-items="searchItems" />
<div v-else>
<el-empty <el-empty
:description=" :description="
route.query.query route.query.query
@ -14,6 +26,9 @@
" "
/> />
</div> </div>
</template>
</el-skeleton>
</div>
</div> </div>
</template> </template>
@ -96,7 +111,11 @@
.search-state { .search-state {
display: flex; display: flex;
justify-content: center; justify-content: center;
padding: 3rem 0; }
.skeleton-item {
height: 80px;
margin-bottom: 1rem;
} }
@media (max-width: 640px) { @media (max-width: 640px) {

View File

@ -1,6 +1,5 @@
<template> <template>
<div class="page-container"> <div class="page-container">
<div v-if="!pending">
<div v-if="solution"> <div v-if="solution">
<div class="page-header"> <div class="page-header">
<app-breadcrumb class="breadcrumb" :items="breadcrumbItems" /> <app-breadcrumb class="breadcrumb" :items="breadcrumbItems" />
@ -16,10 +15,6 @@
/> />
</div> </div>
</div> </div>
<div v-else class="loading">
<el-skeleton :rows="5" animated />
</div>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -29,7 +24,7 @@
// 获取路由参数 // 获取路由参数
const id = route.params.slug as string; const id = route.params.slug as string;
const { data: solution, pending, error } = await useSolution(id); const { data: solution, error } = await useSolution(id);
const breadcrumbItems = computed(() => [ const breadcrumbItems = computed(() => [
{ label: $t('navigation.home'), to: localePath('/') }, { label: $t('navigation.home'), to: localePath('/') },