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"> <a-col :xs="24" :md="8">
<div class="text-base font-semibold text-white">关注我们</div> <div class="text-base font-semibold text-white">关注我们</div>
<div class="mt-4 flex items-center gap-4"> <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"> <div class="text-sm leading-6 text-gray-400">
公众号/小程序 小程序
<br /> <br />
获取最新动态 获取最新动态
</div> </div>
@@ -49,12 +49,27 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { getCmsWebsiteFieldByCode } from '@/api/cms/cmsWebsiteField'
const { data: siteInfo } = useSiteInfo() const { data: siteInfo } = useSiteInfo()
const siteName = computed(() => String((siteInfo.value as any)?.data?.websiteName || '桂乐淘')) const siteName = computed(() => String((siteInfo.value as any)?.data?.websiteName || '桂乐淘'))
const icpText = computed(() => {
const icp = (siteInfo.value as any)?.data?.icpNo const { data: icpField } = useAsyncData('cms-website-field-icpNo', async () => {
return icp ? `备案号:${icp}` : '备案号:' 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() const year = new Date().getFullYear()
</script> </script>

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 685 B