feat(app): 添加多模板关于我们页面及相关路由和404页面
- 新增404页面,优化未找到页面体验,避免被搜索引擎索引 - 增加文件代理接口,隐藏真实文件服务器地址,支持文件请求代理 - 实现/article、/case、/product及/page动态路由兼容列表与详情展示 - 添加动态CMS页面兼容入口处理旧式路径,统一路由与SEO设置 - 新增模板1、模板7、模板2、模板3关于我们页面,实现多模板支持 - 模板增强支持CMS单页内容加载及SEO信息动态设置 - 配置环境变量及Git忽略文件规则辅助开发和构建环境管理
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 首屏:受 hero/banner 开关控制 -->
|
||||
<HeroSection :show-banner="homeBlocks.banner" :show-hero-features="homeBlocks.hero" />
|
||||
|
||||
<!-- 我们的优势:FeatureSection 内部已根据 advantages.enabled 自显隐 -->
|
||||
<FeatureSection />
|
||||
|
||||
<!-- 关于我们 -->
|
||||
<AboutSection
|
||||
title-color="text-gray-900"
|
||||
accent-color="#3b82f6"
|
||||
summary-color="text-gray-600"
|
||||
link-color="text-blue-600"
|
||||
container-class="container mx-auto px-4 sm:px-6 lg:px-8 grid lg:grid-cols-2 gap-12 items-center"
|
||||
image-bg-color="bg-gray-100"
|
||||
image-object-fit="object-cover"
|
||||
/>
|
||||
|
||||
<!-- 推荐/置顶产品(全站跨栏目精选置顶产品 top>0;受后台「产品展示」区块开关控制) -->
|
||||
<RecommendProductsSection
|
||||
v-if="showProducts"
|
||||
title="产品展示"
|
||||
subtitle="了解我们的核心产品与解决方案"
|
||||
accent-color="#3b82f6"
|
||||
title-color="#111827"
|
||||
subtitle-color="#4b5563"
|
||||
:limit="3"
|
||||
:more-link="productNav?.path || '/products'"
|
||||
more-text="查看更多"
|
||||
/>
|
||||
|
||||
<!-- 案例展示(上游无推荐字段,默认最新案例;受后台「案例展示」区块开关控制) -->
|
||||
<RecommendCasesSection
|
||||
v-if="showCases"
|
||||
title="案例展示"
|
||||
subtitle="真实案例呈现,见证客户成功"
|
||||
accent-color="#3b82f6"
|
||||
title-color="#111827"
|
||||
subtitle-color="#4b5563"
|
||||
:limit="3"
|
||||
:more-link="caseNav?.path || '/case'"
|
||||
more-text="查看更多案例"
|
||||
/>
|
||||
|
||||
<!-- 推荐资讯(全站跨栏目精选推荐文章 recommend=1;受后台「最新动态」区块开关控制) -->
|
||||
<RecommendArticlesSection
|
||||
v-if="showNews"
|
||||
title="最新动态"
|
||||
subtitle="了解企业最新资讯与行业动态"
|
||||
accent-color="#3b82f6"
|
||||
title-color="#111827"
|
||||
subtitle-color="#4b5563"
|
||||
:limit="3"
|
||||
:more-link="newsNav?.path || '/news'"
|
||||
more-text="查看更多"
|
||||
/>
|
||||
|
||||
<!-- 联系我们 -->
|
||||
<section v-if="showCta" class="py-16 lg:py-20 bg-blue-50">
|
||||
<div class="container mx-auto px-4 sm:px-6 lg:px-8 text-center">
|
||||
<h2 class="text-2xl sm:text-3xl font-bold text-gray-900 mb-4" data-reveal>
|
||||
准备好开始了吗?
|
||||
</h2>
|
||||
<p class="text-gray-600 max-w-2xl mx-auto mb-8" data-reveal data-reveal-delay="100">
|
||||
立即联系我们,获取专属企业官网解决方案
|
||||
</p>
|
||||
<button
|
||||
type="button"
|
||||
class="inline-flex items-center justify-center px-8 py-3 bg-blue-600 text-white font-semibold rounded-lg hover:bg-blue-700 transition-colors anim-shimmer"
|
||||
@click="openConsult()"
|
||||
>
|
||||
立即咨询
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
/**
|
||||
* 模板 1 - 首页
|
||||
* 产品 / 案例 / 资讯三个区块改为读取「推荐 / 置顶」精选内容(全站跨栏目),
|
||||
* 由共享组件 RecommendProductsSection / RecommendCasesSection / RecommendArticlesSection 承载,
|
||||
* 逻辑见 app/composables/useRecommend.ts。
|
||||
* 各区块显示仍受后台「首页区块总览」开关(siteInfo.setting.features)控制。
|
||||
*/
|
||||
import HeroSection from '../components/HeroSection.vue'
|
||||
import FeatureSection from '../components/FeatureSection.vue'
|
||||
import { useFeatures } from '~/composables/useFeatures'
|
||||
import type { CmsNavigation } from '~/types'
|
||||
|
||||
const { siteInfo, navigations, fetchSiteInfo } = useSite()
|
||||
const { openConsult } = useConsult()
|
||||
const { homeBlocks } = useFeatures([
|
||||
{ title: '企业优势', desc: '快速建立品牌信任感,展示企业实力与核心竞争力。', icon: 'building' },
|
||||
{ title: '核心产品', desc: '清晰的产品展示与分类,帮助客户快速了解产品价值。', icon: 'box' },
|
||||
{ title: '客户案例', desc: '真实案例呈现,增强说服力,促进客户决策。', icon: 'case' },
|
||||
{ title: '在线留言', desc: '便捷的留言咨询通道,不错过任何潜在客户。', icon: 'message' }
|
||||
])
|
||||
|
||||
// 获取站点信息(含导航)
|
||||
await fetchSiteInfo()
|
||||
|
||||
/** 各区块显隐开关(后台首页区块总览) */
|
||||
const showProducts = computed(() => homeBlocks.value.products)
|
||||
const showCases = computed(() => homeBlocks.value.cases)
|
||||
const showNews = computed(() => homeBlocks.value.news)
|
||||
const showCta = computed(() => homeBlocks.value.cta)
|
||||
|
||||
/** 从导航中定位各模块,用于「查看更多」跳转 */
|
||||
const newsNav = computed<CmsNavigation | undefined>(() => {
|
||||
const navs = navigations.value || []
|
||||
return navs.find((n) => n.model === 'article')
|
||||
})
|
||||
const productNav = computed<CmsNavigation | undefined>(() => {
|
||||
const navs = navigations.value || []
|
||||
return navs.find((n) => n.model === 'product')
|
||||
})
|
||||
const caseNav = computed<CmsNavigation | undefined>(() => {
|
||||
const navs = navigations.value || []
|
||||
return navs.find((n) => n.model === 'case')
|
||||
})
|
||||
</script>
|
||||
Reference in New Issue
Block a user