feat: add customer service chat, optimize case and homepage, fix api proxy
这一提交完成了多项功能升级与优化: 1. 新增全局浮动客服组件,集成腾讯云TRTC聊天能力并添加错误格式化工具 2. 新增图片资源并调整部分静态文件结构 3. 优化案例页面:重构筛选逻辑、新增空状态处理、添加加载更多功能 4. 优化首页布局:修复统计数字动画、调整移动端适配样式、优化轮播逻辑 5. 重构官方内容获取工具:添加缓存机制、优化媒体资源处理 6. 优化API代理配置,移除默认本地代理并新增环境变量配置 7. 新增页面数据恢复刷新逻辑,优化页面交互体验 8. 修复按钮组件冗余代码,调整头部导航移动端样式
This commit is contained in:
+28
-7
@@ -30,15 +30,32 @@ const caseTags = computed(() =>
|
||||
)
|
||||
|
||||
const relatedCases = computed(() =>
|
||||
(pageData.value?.cases || []).filter((item) => item.slug !== slug).slice(0, 4)
|
||||
(pageData.value?.cases || [])
|
||||
.filter((item) => item.slug !== slug && item.isRecommended === true)
|
||||
.slice(0, 4)
|
||||
)
|
||||
const recommendedCases = computed(() =>
|
||||
(pageData.value?.cases || [])
|
||||
.filter(
|
||||
(item) => item.slug !== slug && item.isRecommended === true && item.isFullCase && item.slug
|
||||
)
|
||||
.slice(0, 5)
|
||||
)
|
||||
|
||||
function caseListLink(item) {
|
||||
return item.isFullCase && item.slug ? `/cases/${item.slug}` : '/cases'
|
||||
}
|
||||
|
||||
useHead(() => ({
|
||||
title: `${articleTitle.value}|客户案例`,
|
||||
meta: [
|
||||
{
|
||||
name: 'description',
|
||||
content: caseStudy.value.seoDescription || caseStudy.value.description || caseStudy.value.summary || articleTitle.value
|
||||
content:
|
||||
caseStudy.value.seoDescription ||
|
||||
caseStudy.value.description ||
|
||||
caseStudy.value.summary ||
|
||||
articleTitle.value
|
||||
},
|
||||
{ property: 'og:title', content: articleTitle.value },
|
||||
{ property: 'og:description', content: caseStudy.value.description || caseStudy.value.summary },
|
||||
@@ -229,11 +246,11 @@ function buildCaseArticleHtml(caseData) {
|
||||
</article>
|
||||
|
||||
<aside class="news-sidebar" aria-label="相关推荐">
|
||||
<section class="sidebar-panel">
|
||||
<section v-if="relatedCases.length" class="sidebar-panel">
|
||||
<h2>相关案例</h2>
|
||||
<ol class="hot-list">
|
||||
<li v-for="(item, index) in relatedCases" :key="item.industry">
|
||||
<NuxtLink to="/cases">
|
||||
<li v-for="(item, index) in relatedCases" :key="item.id || item.slug">
|
||||
<NuxtLink :to="caseListLink(item)">
|
||||
<span>{{ index + 1 }}</span>
|
||||
<strong>{{ item.title }}</strong>
|
||||
<em>{{ item.metric }}</em>
|
||||
@@ -242,10 +259,14 @@ function buildCaseArticleHtml(caseData) {
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="sidebar-panel">
|
||||
<section v-if="recommendedCases.length" class="sidebar-panel">
|
||||
<h2>推荐案例</h2>
|
||||
<div class="recommend-list">
|
||||
<NuxtLink v-for="item in relatedCases.slice(0, 3)" :key="item.title" to="/cases">
|
||||
<NuxtLink
|
||||
v-for="item in recommendedCases"
|
||||
:key="item.id || item.slug"
|
||||
:to="`/cases/${item.slug}`"
|
||||
>
|
||||
<img :src="item.cover" :alt="item.title" />
|
||||
<span>
|
||||
<strong>{{ item.title }}</strong>
|
||||
|
||||
Reference in New Issue
Block a user