feat(home): 更新首页布局并优化网站信息展示

- 移除首页业务板块服务卡片区域
- 为面板组件添加固定高度样式
- 更新底部关注我们区域的小程序二维码图片
- 将小程序描述从公众号/小程序调整为仅小程序
- 集成CMS系统获取网站备案号信息
- 优化头部品牌栏布局,使用固定Logo图片替换动态内容
- 移除品牌标题和副标题的显示
- 调整Logo样式移除宽度限制仅保留高度约束
This commit is contained in:
2026-01-27 12:32:34 +08:00
parent d533ed51b7
commit 1d01294f93
4 changed files with 55 additions and 44 deletions

View File

@@ -5,9 +5,9 @@
<a-col :xs="24" :md="8">
<div class="text-base font-semibold text-white">关注我们</div>
<div class="mt-4 flex items-center gap-4">
<a-avatar shape="square" :size="96" />
<a-avatar shape="square" :size="96" src="https://oss.wsdns.cn/20260127/74041127623e4a8faa49a24e0818dae6.png" />
<div class="text-sm leading-6 text-gray-400">
公众号/小程序
小程序
<br />
获取最新动态
</div>
@@ -49,12 +49,27 @@
</template>
<script setup lang="ts">
import { getCmsWebsiteFieldByCode } from '@/api/cms/cmsWebsiteField'
const { data: siteInfo } = useSiteInfo()
const siteName = computed(() => String((siteInfo.value as any)?.data?.websiteName || '桂乐淘'))
const icpText = computed(() => {
const icp = (siteInfo.value as any)?.data?.icpNo
return icp ? `备案号:${icp}` : '备案号:'
const { data: icpField } = useAsyncData('cms-website-field-icpNo', async () => {
try {
return await getCmsWebsiteFieldByCode('icpNo')
} catch {
return null
}
})
const icpNo = computed(() => {
const v = icpField.value?.value ?? icpField.value?.defaultValue
if (typeof v === 'string' && v.trim()) return v.trim()
const fallback = (siteInfo.value as any)?.data?.icpNo
return typeof fallback === 'string' ? fallback.trim() : ''
})
const icpText = computed(() => (icpNo.value ? `备案号:${icpNo.value}` : '备案号:'))
const year = new Date().getFullYear()
</script>

View File

@@ -20,11 +20,7 @@
<div v-if="showBrandbar" class="brandbar">
<div class="mx-auto grid max-w-screen-xl grid-cols-12 items-center gap-6 px-4 py-8">
<NuxtLink to="/" class="col-span-12 flex items-center gap-4 md:col-span-6">
<img class="brand-logo" :src="logoUrl" :alt="siteName" />
<div class="brand-title">
<div class="brand-name">{{ siteName }}</div>
<div class="brand-sub">{{ siteSlogan }}</div>
</div>
<img class="brand-logo" :src="`https://oss.wsdns.cn/20260127/989e5cf82b0847ed9168023baf68f4a9.png`" :alt="siteName" />
</NuxtLink>
<div class="col-span-12 text-right md:col-span-6">
@@ -320,7 +316,6 @@ const todayText = computed(() => {
}
.brand-logo {
width: 62px;
height: 62px;
object-fit: contain;
display: block;

View File

@@ -95,42 +95,42 @@
</div>
</div>
<div class="mt-6 grid grid-cols-12 gap-6">
<div class="col-span-12 lg:col-span-7">
<div class="panel">
<div class="section-pill">
<span class="pill-left">
<AppstoreOutlined />
业务板块
</span>
<span class="pill-right">SERVICES</span>
</div>
<!-- <div class="mt-6 grid grid-cols-12 gap-6">-->
<!-- <div class="col-span-12 lg:col-span-7">-->
<!-- <div class="panel">-->
<!-- <div class="section-pill">-->
<!-- <span class="pill-left">-->
<!-- <AppstoreOutlined />-->
<!-- 业务板块-->
<!-- </span>-->
<!-- <span class="pill-right">SERVICES</span>-->
<!-- </div>-->
<div class="mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2">
<a-card
v-for="s in services"
:key="s.title"
class="guide-card service-card"
:bordered="true"
hoverable
@click="navigateTo('/products')"
>
<a-space>
<a-avatar :size="44" class="guide-icon service-icon">
<component :is="s.icon" />
</a-avatar>
<div>
<div class="guide-title">{{ s.title }}</div>
<div class="guide-desc">{{ s.desc }}</div>
</div>
</a-space>
</a-card>
</div>
</div>
</div>
<!-- <div class="mt-4 grid grid-cols-1 gap-4 sm:grid-cols-2">-->
<!-- <a-card-->
<!-- v-for="s in services"-->
<!-- :key="s.title"-->
<!-- class="guide-card service-card"-->
<!-- :bordered="true"-->
<!-- hoverable-->
<!-- @click="navigateTo('/products')"-->
<!-- >-->
<!-- <a-space>-->
<!-- <a-avatar :size="44" class="guide-icon service-icon">-->
<!-- <component :is="s.icon" />-->
<!-- </a-avatar>-->
<!-- <div>-->
<!-- <div class="guide-title">{{ s.title }}</div>-->
<!-- <div class="guide-desc">{{ s.desc }}</div>-->
<!-- </div>-->
<!-- </a-space>-->
<!-- </a-card>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- </div>-->
</section>
<section class="banner">
@@ -314,6 +314,7 @@ function scrollToCompany() {
.panel {
background: #fff;
height: 360px;
border: 1px solid rgba(0, 0, 0, 0.06);
border-radius: 10px;
overflow: hidden;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 685 B