feat: 官网代码全量更新 (2026-04-18)

这个提交包含在:
wx
2026-04-18 15:13:28 +08:00
父节点 fcac8f88db
当前提交 f91ecbb093
共修改 135 个文件,包含 10307 行新增和 3349 行删除
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section section--warm">
<div class="container">
<CommonSectionTitle title="产品进化" subtitle="从V1到V9,每一次更新都是客户反馈驱动" />
<CommonSectionTitle :title="st('products.evolutionStats', '产品进化')" :subtitle="st('products.evolutionStats', '从V1到V9,每一次更新都是客户反馈驱动', 'subtitle')" />
<div class="evo-stats">
<div class="evo-stat">
<span class="evo-stat-num">{{ stats.iterations }}</span>
@@ -25,6 +25,7 @@
defineProps({
stats: { type: Object, required: true }
})
const st = await useSectionTitles()
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section">
<div class="container">
<CommonSectionTitle title="关于价格" subtitle="透明、清晰、不套路" />
<CommonSectionTitle :title="st('products.pricingPhilosophy', '关于价格')" :subtitle="st('products.pricingPhilosophy', '透明、清晰、不套路', 'subtitle')" />
<div class="pricing-content">
<p>{{ content }}</p>
</div>
@@ -11,6 +11,7 @@
<script setup>
defineProps({ content: { type: String, required: true } })
const st = await useSectionTitles()
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section id="guide" class="section section--gray">
<div class="container">
<CommonSectionTitle title="不知道选哪个?" subtitle="按您的情况推荐" />
<CommonSectionTitle :title="st('products.selectionGuide', '不知道选哪个?')" :subtitle="st('products.selectionGuide', '按您的情况推荐', 'subtitle')" />
<div class="guide-groups">
<div v-for="group in guideGroups" :key="group.title" class="guide-group">
<h3 class="guide-group-title">{{ group.title }}</h3>
@@ -26,6 +26,7 @@ const props = defineProps({
guide: { type: Object, required: true },
versions: { type: Array, required: true },
})
const st = await useSectionTitles()
const guideGroups = computed(() => [
{ title: '按假期长度', items: props.guide.byVacationLength },
+5 -2
查看文件
@@ -7,7 +7,7 @@
<div class="camp-hero">
<div class="camp-mascot">
<img
:src="images.mascot.xiaomengma"
:src="mascotSrc"
alt="小蒙马 - 小蒙马亲子游学营团宠,一只可爱的蒙古小马形象"
width="200"
height="200"
@@ -33,8 +33,11 @@
</template>
<script setup>
import images from '~/data/images.json'
defineProps({ camp: { type: Object, required: true } })
// 从 API 动态读取图片配置(admin 编辑后即时同步)
const { data: images } = await usePublicApi('images')
const mascotSrc = computed(() => images.value?.mascot?.xiaomengma || '/images/mascot/xiaomengma.png')
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section">
<div class="container">
<CommonSectionTitle title="V8 → V9 升级对比" subtitle="7项关键升级一目了然" />
<CommonSectionTitle :title="st('products.compareV8V9', 'V8 → V9 升级对比')" :subtitle="st('products.compareV8V9', '7项关键升级一目了然', 'subtitle')" />
<div class="compare-wrapper">
<div class="compare-table">
<div class="compare-head">
@@ -22,6 +22,7 @@
defineProps({
compare: { type: Object, required: true }
})
const st = await useSectionTitles()
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section section--gray">
<div class="container">
<CommonSectionTitle title="更多V9亮点" subtitle="独家资源 · 自营服务 · 全程无忧" />
<CommonSectionTitle :title="st('products.highlights', '更多V9亮点')" :subtitle="st('products.highlights', '专属资源 · 自营服务 · 全程无忧', 'subtitle')" />
<div class="highlights-list">
<div v-for="item in highlights" :key="item.text" class="highlight-item">
<span class="highlight-label">{{ item.label }}</span>
@@ -16,6 +16,7 @@
defineProps({
highlights: { type: Array, required: true }
})
const st = await useSectionTitles()
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section">
<div class="container">
<CommonSectionTitle title="9次迭代背后的产品哲学" subtitle="不是做加法,而是做取舍" />
<CommonSectionTitle :title="st('products.philosophy', '9次迭代背后的产品哲学')" :subtitle="st('products.philosophy', '不是做加法,而是做取舍', 'subtitle')" />
<div class="philosophy-wrapper">
<div class="philosophy-list">
<div v-for="item in philosophy" :key="item.label" class="philosophy-item">
@@ -24,6 +24,7 @@ defineProps({
philosophy: { type: Array, required: true },
quote: { type: Object, required: true }
})
const st = await useSectionTitles()
</script>
<style lang="less" scoped>
+2 -1
查看文件
@@ -1,7 +1,7 @@
<template>
<section class="section">
<div class="container">
<CommonSectionTitle title="2026年核心升级" subtitle="基于客户反馈的三大重磅升级" />
<CommonSectionTitle :title="st('products.upgrades', '2026年核心升级')" :subtitle="st('products.upgrades', '基于客户反馈的三大重磅升级', 'subtitle')" />
<div class="upgrades-list">
<div v-for="item in upgrades" :key="item.name" class="upgrade-item">
<div class="upgrade-header">
@@ -20,6 +20,7 @@
defineProps({
upgrades: { type: Array, required: true }
})
const st = await useSectionTitles()
</script>
<style lang="less" scoped>