Files
withmindwebsite/src/views/withmind/index.vue
T
2026-07-15 11:26:10 +08:00

1217 lines
40 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="page flex-col" id="top">
<div class="group_1 flex-row justify-between">
<div class="section_1 flex-col">
<div class="section_2 flex-row">
<img
class="image_1"
referrerpolicy="no-referrer"
src="./assets/img/slice-3-black-1x.png"
srcset="
./assets/img/slice-3-black-1x.png 1x,
./assets/img/slice-3-black-2x.png 2x,
./assets/img/slice-3-black-3x.png 3x
"
/>
<span class="text_1 nav-link" :class="{ 'nav-active': activeSection === 'top' }" data-spy="top" @click="scrollTo('top')">首页</span>
<span class="text_2 nav-link" :class="{ 'nav-active': activeSection === 'about' }" data-spy="about" @click="scrollTo('about')">WithMind</span>
<span class="text_3 nav-link" :class="{ 'nav-active': activeSection === 'skills' }" data-spy="skills" @click="scrollTo('skills')">Skills</span>
<span class="text_4 nav-link" :class="{ 'nav-active': activeSection === 'platform' }" data-spy="platform" @click="scrollTo('platform')">创作平台</span>
<span class="text_nav_practice nav-link" :class="{ 'nav-active': activeSection === 'practice' }" data-spy="practice" @click="scrollTo('practice')">应用实践</span>
<span class="text_5 nav-link" :class="{ 'nav-active': activeSection === 'gateway' }" data-spy="gateway" @click="scrollTo('gateway')">模型网关</span>
<div class="group_3 flex-col"></div>
</div>
<img
class="image_2"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGfa4ede1cb67c8bb29fb955b805bb02d4.png"
/>
<div class="section_5 flex-row justify-between" id="about">
<div class="text-wrapper_1">
<span class="text_6">关于&nbsp;</span>
<img
class="text_7 logo_about"
referrerpolicy="no-referrer"
src="./assets/img/slice-3-black-3x.png"
/>
</div>
<span class="text_8">
WithMind&nbsp;以AI&nbsp;Agent为核心构建专属AI能力体系落地在企业本地专属企业数据持续自我迭代的全员AI赋能系统依托本地私有Agent智能节点&nbsp;+&nbsp;企业私有知识库沉淀&nbsp;+&nbsp;四大行业成熟技能插件真正实现企业知识留得住员工能力带得走销售业绩涨得快团队培训零成本
</span>
</div>
<div class="section_6 flex-row justify-between">
<div class="image-text_1 flex-col justify-between">
<div class="group_4 flex-col">
<div class="box_3 flex-col">
<div class="image-wrapper_1 flex-col">
<img
class="label_1"
referrerpolicy="no-referrer"
src="./assets/img/Slice_6@3x.png"
/>
</div>
</div>
</div>
<div class="text-group_1 flex-col justify-between">
<span class="text_9">降本一个顶一个团队</span>
<span class="text_10">无需再设专职策划讲师或行政答疑岗系统自动化处理话术政策变更5分钟在线生效无需研发介入大幅减少重复性人力投入</span>
</div>
</div>
<div class="group_5 flex-col"></div>
<div class="image-text_2 flex-col justify-between">
<div class="block_1 flex-col">
<div class="block_2 flex-col">
<div class="image-wrapper_2 flex-col">
<img
class="label_2"
referrerpolicy="no-referrer"
src="./assets/img/Slice_7@3x.png"
/>
</div>
</div>
</div>
<div class="text-group_2 flex-col justify-between">
<span class="text_11">增效能力统一升级</span>
<span class="text_12">全员同步最优话术与知识库新人一周即可具备成熟能力系统自动推送最新优秀案例团队能力始终拉齐无短板员工</span>
</div>
</div>
<div class="group_6 flex-col"></div>
<div class="image-text_3 flex-col justify-between">
<div class="image-wrapper_3 flex-col">
<img
class="image_3"
referrerpolicy="no-referrer"
src="./assets/img/Slice_8@3x.png"
/>
</div>
<div class="text-group_3 flex-col justify-between">
<span class="text_13">留资企业资产沉淀</span>
<span class="text_14">典型案例与处理流程一键归档形成企业专属知识库人员流动不带走经验新员工可随时复用内容随业务增长持续增值</span>
</div>
</div>
<div class="group_7 flex-col"></div>
<div class="image-text_4 flex-col justify-between">
<div class="image-wrapper_4 flex-col">
<img
class="image_4"
referrerpolicy="no-referrer"
src="./assets/img/Slice_9@3x.png"
/>
</div>
<div class="text-group_4 flex-col justify-between">
<span class="text_15">安全本地私有化部署</span>
<span class="text_16">全部数据存于企业自有服务器物理隔离公网满足金融政务等高合规要求企业拥有完整权限与审计能力安全自主可控</span>
</div>
</div>
</div>
<div class="image-wrapper_5 flex-col">
<img
class="image_5"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGace196b5119f6099423d6ad80890e799.png"
/>
</div>
</div>
<img
class="image_6"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG9a319156e7bafe4887f1fbd806cdec9f.png"
/>
</div>
<div class="group_8 flex-row justify-between" id="platform">
<div class="group_9 flex-col justify-between">
<div class="section_7 flex-row justify-between">
<div class="text-wrapper_2 flex-col justify-between">
<span class="text_17">知识库</span>
<span class="text_18">让知识随时可用</span>
</div>
<img
class="image_7"
referrerpolicy="no-referrer"
src="./assets/img/slice-15-1x.png"
srcset="
./assets/img/slice-15-1x.png 1x,
./assets/img/slice-15-2x.png 2x,
./assets/img/slice-15-3x.png 3x
"
/>
</div>
<span class="paragraph_1">
不仅是资料存档更是活化的第二大脑
<br />
<br />
知识支持自动抓取网页文档音视频与数据库内容智能标签与向量检索让信息秒级定位版本追溯团队共编权限分级确保每一次更新都精准同步沉淀为可复用的组织资产
</span>
</div>
<img
class="image_8"
referrerpolicy="no-referrer"
src="./assets/img/knowledge-base.png"
/>
</div>
<div class="group_10 flex-row justify-between" id="agent">
<img
class="image_9"
referrerpolicy="no-referrer"
src="./assets/img/agent.png"
/>
<div class="box_4 flex-col justify-between">
<div class="group_11 flex-row justify-between">
<div class="text-wrapper_3 flex-col justify-between">
<span class="text_19">Agent</span>
<span class="text_20">让任务自动执行</span>
</div>
<div class="image-wrapper_6 flex-col">
<img
class="image_10"
referrerpolicy="no-referrer"
src="./assets/img/Slice_16@3x.png"
/>
</div>
</div>
<span class="paragraph_2">
不只是问答机器人更是你的自动执行伙伴
<br />
<br />
可设定目标拆分任务调用工具如搜索API代码执行),主动生成周报分析数据起草脚本甚至根据知识库变化动态调整策略支持多轮对话与意图识别让复杂工作流像聊天一样自然流转
</span>
</div>
</div>
<div class="group_12 flex-row justify-between" id="media">
<div class="block_3 flex-col justify-between">
<div class="group_13 flex-row justify-between">
<div class="text-wrapper_4 flex-col justify-between">
<span class="text_21">AI创作</span>
<span class="text_22">让内容高效而生</span>
</div>
<div class="group_14 flex-col"><div class="box_5 flex-col"></div></div>
</div>
<span class="paragraph_3">
不止于发布更是数据驱动的运营中枢
<br />
<br />
将图文视频互动组件适配至公众号抖音小红书等平台内置热点追踪AI润色与多版本标题生成发布后实时回传阅读转化互动数据反哺知识库与Agent策略形成创作-分发-优化的智能增长飞轮
</span>
</div>
<img
class="image_11"
referrerpolicy="no-referrer"
src="./assets/img/new-media.png"
/>
</div>
<div class="practice_text_wrapper_13 flex-row" id="practice"><span class="practice_text_23">应用实践</span></div>
<div class="practice_box_23 flex-row justify-between">
<div class="practice_box_24 flex-col justify-between">
<img
class="practice_image_13"
referrerpolicy="no-referrer"
src="./assets/img/suishi.png"
/>
<span class="practice_text_24">员工随时问AI清晰解答</span>
</div>
<div class="practice_image_text_15 flex-col justify-between">
<img
class="practice_image_15"
referrerpolicy="no-referrer"
src="./assets/img/jike.png"
/>
<span class="practice_text_group_5">员工即刻获取文案标签</span>
</div>
<div class="practice_image_text_16 flex-col justify-between">
<img
class="practice_image_16"
referrerpolicy="no-referrer"
src="./assets/img/xinren.png"
/>
<span class="practice_text_group_6">新人快速开单标准化话术</span>
</div>
<div class="practice_box_25 flex-col justify-between">
<img
class="practice_image_17"
referrerpolicy="no-referrer"
src="./assets/img/24xinren.png"
/>
<span class="practice_text_25">24小时新员工培训导师</span>
</div>
</div>
<!-- 应用实践 row2:3 + 1 视频(独立 4 个元素手写一排) -->
<div class="practice_row2 flex-row justify-between" id="row2">
<div class="practice_row2_item flex-col justify-between">
<img
class="practice_row2_img"
referrerpolicy="no-referrer"
src="/img/wuxu.png"
/>
<span class="practice_row2_caption">无需设计功底一键生成品牌视觉</span>
</div>
<div class="practice_row2_item flex-col justify-between">
<img
class="practice_row2_img"
referrerpolicy="no-referrer"
src="/img/yici.png"
/>
<span class="practice_row2_caption">一次可创作多图文/视频</span>
</div>
<div class="practice_row2_item flex-col justify-between">
<img
class="practice_row2_img"
referrerpolicy="no-referrer"
src="/img/qiye.png"
/>
<span class="practice_row2_caption">企业品牌海报</span>
</div>
<div
class="practice_row2_item practice_row2_item--video flex-col justify-between"
@click="openVideo('xuanchuan')"
>
<div class="practice_row2_video_placeholder">
<img
class="practice_row2_img"
referrerpolicy="no-referrer"
src="/img/chahua2.png"
/>
<div class="practice_row2_play_icon_big"></div>
</div>
<span class="practice_row2_caption">企业宣传视频</span>
</div>
</div>
<!-- 视频弹窗(v7.2,Vue 状态控制) -->
<transition name="modal">
<div
v-if="videoModalOpen"
class="video-modal-mask"
@click.self="closeVideo"
>
<div class="video-modal-box" @click.stop>
<button class="video-modal-close" @click="closeVideo" aria-label="关闭">×</button>
<video
v-if="videoModalOpen"
ref="modalVideo"
class="video-modal-video"
referrerpolicy="no-referrer"
:src="videoModalSrc"
controls
preload="metadata"
></video>
</div>
</div>
</transition>
<div class="group_15 flex-row" id="gateway">
<div class="group_16 flex-col">
<div class="group_17 flex-col">
<div class="image-wrapper_7 flex-col">
<img
class="image_12"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGfa5a4d0305f975e1f89ebd5054eca3fc.png"
/>
</div>
</div>
<div class="group_18 flex-col">
<div class="block_4 flex-row">
<div class="text-group_5 flex-col justify-between">
<span class="text_23">统一的大模型接口网关</span>
<span class="text_24">多模型统一接入只需将基址替换为</span>
</div>
</div>
<div class="block_5 flex-row">
<div class="block_6 flex-row">
<span class="text_25">http://localhost:3001</span>
<span class="text_26">/v1/responses</span>
<div class="box_6 flex-col">
<div class="group_19 flex-col"><div class="section_9 flex-col"></div></div>
</div>
</div>
</div>
<div class="block_7 flex-row justify-between">
<div class="box_7 flex-row">
<div class="image-text_5 flex-row justify-between">
<div class="image-wrapper_8 flex-col">
<img
class="thumbnail_1"
referrerpolicy="no-referrer"
src="./assets/img/miyao@3x.png"
/>
</div>
<span class="text-group_6">获取秘钥</span>
</div>
</div>
<div class="box_8 flex-row">
<div class="image-text_6 flex-row justify-between">
<div class="image-wrapper_9 flex-col">
<img
class="thumbnail_2"
referrerpolicy="no-referrer"
src="./assets/img/wendang@3x.png"
/>
</div>
<span class="text-group_7">文档</span>
</div>
</div>
</div>
<div class="text-wrapper_5 flex-row"><span class="text_27">支持众多的大模型供应商</span></div>
<div class="image-wrapper_10 flex-row justify-between">
<img
class="image_13"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGa36d7108339c344eeeb5868149056ba0.png"
/>
<img
class="image_14"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG0e55bb84ca516dc8d186c4ef260c84ef.png"
/>
<img
class="image_15"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG121e93ad99e596f8c2abad8493162198.png"
/>
<img
class="image_16"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG651d971a96e1d79fef9a2f64a82c6fd6.png"
/>
<img
class="image_17"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG30e6ee8bfc1c6fb98ca605a89050ebb0.png"
/>
<img
class="image_18"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG5a7047986d873811d83480d935a68040.png"
/>
<img
class="image_19"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG6339c9767782f4f2d34a14f575e02710.png"
/>
<img
class="image_20"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG552022fefe8d80467ff8bfd944893380.png"
/>
</div>
<div class="image-wrapper_11 flex-row justify-between">
<img
class="image_21"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG52defb376a26965ebe5333983c2f74a6.png"
/>
<img
class="image_22"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGcedce18e53d33e55860230c6c03e8fe4.png"
/>
<img
class="image_23"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG8cd91f2bf78d9ce5632d5fa0dea4b809.png"
/>
<img
class="image_24"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGc8a8dad5223015796a2cb323e72e0cba.png"
/>
<img
class="image_25"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGf1ab2b0af31a1c7bf9b765093dbf7f14.png"
/>
<img
class="image_26"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGeb71a6274624ba6dd100a9854c08c4c3.png"
/>
<img
class="image_27"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG4386c42b8a6daf9ebd91147466a14dfd.png"
/>
</div>
<div class="block_8 flex-col"></div>
<div class="block_9 flex-col"></div>
</div>
</div>
</div>
<div class="group_20 flex-row">
<div class="group_21 flex-col">
<div class="group_22 flex-row">
<img
class="footer-logo"
referrerpolicy="no-referrer"
src="./assets/img/slice-3-white-1x.png"
srcset="
./assets/img/slice-3-white-1x.png 1x,
./assets/img/slice-3-white-2x.png 2x,
./assets/img/slice-3-white-3x.png 3x
"
/>
<span class="text_28 nav-link" @click="scrollTo('about')">关于 WithMind</span>
<span class="text_29 nav-link" @click="scrollTo('skills')">Skills</span>
<span class="text_30 nav-link" @click="scrollTo('platform')">创作平台</span>
<span class="text_nav_practice_footer nav-link" @click="scrollTo('practice')">应用实践</span>
<span class="text_31 nav-link" @click="scrollTo('gateway')">模型网关</span>
</div>
<div class="group_23 flex-row">
<div class="group_24 flex-col justify-between">
<span class="text_32">
告别孤岛式协作一键接入知识库Agent与新媒体分发渠道让数据行动与传播无缝闭环满足从灵感迸发到内容落地的全链路需求
</span>
<div class="image-text_7 flex-col justify-between nav-link" @click="scrollTo('gateway')">
<img
class="image_29"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNG3cc2d58da2ae33f445a1471d8f218d42.png"
/>
<span class="text-group_8">在线咨询</span>
</div>
</div>
<div class="text-group_9 flex-col">
<span class="text_33 nav-link" @click="scrollTo('about')">WithMind</span>
<span class="text_34 nav-link" @click="scrollTo('skills')">核心价值</span>
</div>
<div class="text-wrapper_6 flex-col">
<span class="text_35 nav-link" @click="scrollTo('skills')">企业管理大师</span>
<span class="text_36 nav-link" @click="scrollTo('skills')">新媒体专家</span>
<span class="text_37 nav-link" @click="scrollTo('skills')">销冠助手</span>
<span class="text_38 nav-link" @click="scrollTo('skills')">培训导师</span>
</div>
<div class="text-group_10 flex-col">
<span class="text_39 nav-link" @click="scrollTo('platform')">知识库</span>
<span class="text_40 nav-link" @click="scrollTo('agent')">Agent</span>
<span class="text_41 text_41_ai_create nav-link" @click="scrollTo('media')">AI创作</span>
</div>
<div class="practice_footer_col flex-col">
<span class="practice_footer_col_item nav-link" @click="scrollTo('practice')">员工问答</span>
<span class="practice_footer_col_item nav-link" @click="scrollTo('practice')">获取文案</span>
<span class="practice_footer_col_item nav-link" @click="scrollTo('practice')">标准话术</span>
<span class="practice_footer_col_item nav-link" @click="scrollTo('practice')">培训导师</span>
<span class="practice_footer_col_item practice_footer_col_item--video nav-link" @click="scrollTo('row2')">图文/视频</span>
</div>
<div class="text-group_11 flex-col">
<span class="text_42 nav-link" @click="scrollTo('gateway')">获取秘钥</span>
<span class="text_43 nav-link" @click="scrollTo('gateway')">文档</span>
</div>
</div>
<div class="text-wrapper_7 flex-row justify-between">
<span class="text_44">
&nbsp;©&nbsp;2026&nbsp;武汉智韵未来科技有限公司&nbsp;All&nbsp;right&nbsp;sreserved
</span>
<span class="text_45">备案号鄂ICP备11111111号</span>
</div>
<div class="group_25 flex-col"></div>
</div>
</div>
<div class="group_26 flex-col"></div>
<img
class="image_30"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGb29d3722a6dc7b251885dd340188decb.png"
/>
<div class="group_27 flex-row" id="skills">
<div class="text-group_12 flex-col justify-between">
<div class="text-wrapper_8">
<span class="text_46">Skills</span>
<span class="text_47">&nbsp;核心能力</span>
</div>
<span class="text_48">四大核心技能插件覆盖企业高频应用场景</span>
</div>
<div class="group_28 flex-col">
<div class="group_28_top flex-col">
<img
class="label_3"
referrerpolicy="no-referrer"
src="./assets/img/Slice_11@3x.png"
/>
<span class="text_49">企业管理大师</span>
<span class="text_50">覆盖行政人事财务等制度流程<br />员工自助查询减少答疑实现<br />管理自动化标准化</span>
</div>
<div class="group_29 flex-col">
<div class="block_12 flex-col">
<img
class="label_4"
referrerpolicy="no-referrer"
src="./assets/img/Slice_13@3x.png"
/>
</div>
<div class="text-group_13 flex-col justify-between">
<span class="text_51">新媒体专家</span>
<span class="text_52">支持策划文案脚本规划等创作结合业务定制可落地方案零成本拥有内容团队</span>
</div>
</div>
</div>
<div class="group_30 flex-col justify-between">
<div class="box_12 flex-col">
<img
class="box_13"
referrerpolicy="no-referrer"
src="./assets/img/Slice_12@3x.png"
/>
<div class="text-group_14 flex-col justify-between">
<span class="text_53">销冠助手</span>
<span class="text_54">内置全流程话术100%学习产品案例生成专属话术统一销售口径提升转化率</span>
</div>
</div>
<div class="box_15 flex-col">
<div class="image-wrapper_12 flex-col">
<img
class="image_31"
referrerpolicy="no-referrer"
src="./assets/img/Slice_14@3x.png"
/>
</div>
<div class="text-group_15 flex-col justify-between">
<span class="text_55">培训导师</span>
<span class="text_56">24小时在线自动学习内部资料支持培训考核知识沉淀传承新人快速上手</span>
</div>
</div>
</div>
</div>
<img
class="image_34"
referrerpolicy="no-referrer"
src="./assets/img/Slice_5.png"
/>
<div class="group_34 flex-col">
<div class="section_11 flex-row">
<div class="text-wrapper_9 flex-col justify-between">
<span class="paragraph_4">
WithMind
<br />
企业专属私有化AI知识大脑
</span>
<span class="text_59">
用一个Key聚百模之力让您的业务永远拥有最合适的AI大脑而无需为模型选择与维护烦恼专注打造核心竞争力
</span>
</div>
<img
class="image-26-knowledge"
referrerpolicy="no-referrer"
src="./assets/img/FigmaDDSSlicePNGe134cacc91c0bf8d272766810f8b17be.png"
/>
</div>
<div class="section_12 flex-row">
<div class="box_16 flex-row" @click="onLearnMore">
<div class="image-text_8 flex-row justify-between">
<span class="text-group_17">了解更多</span>
<div class="image-wrapper_16 flex-col">
<img
class="thumbnail_3"
referrerpolicy="no-referrer"
src="./assets/img/Slice_19@3x.png"
/>
</div>
</div>
</div>
</div>
<div class="section_13 flex-col"></div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
constants: {},
activeSection: 'top',
scrollLocked: false,
videoModalOpen: false,
videoModalSrc: '',
videoModalKey: ''
};
},
mounted() {
this.initScrollSpy();
window.addEventListener('keydown', this.onModalKeydown);
},
beforeDestroy() {
window.removeEventListener('keydown', this.onModalKeydown);
},
methods: {
initScrollSpy() {
const sectionIds = ['about', 'skills', 'platform', 'agent', 'media', 'practice', 'gateway'];
const compute = () => {
const scrollY = window.scrollY || window.pageYOffset || 0;
if (scrollY < 100) return 'top';
const trigger = 200;
let activeId = 'top';
for (const id of sectionIds) {
const el = document.getElementById(id);
if (!el) continue;
const top = el.getBoundingClientRect().top;
if (top <= trigger) {
activeId = id;
} else {
break;
}
}
return activeId;
};
const update = () => {
if (this.scrollLocked) return;
if (Date.now() < (this.scrollSuppressUntil || 0)) return;
this.activeSection = compute();
};
const observer = new IntersectionObserver(() => update(), {
rootMargin: '0px 0px -200px 0px',
threshold: 0
});
sectionIds.forEach((id) => {
const el = document.getElementById(id);
if (el) observer.observe(el);
});
let ticking = false;
window.addEventListener('scroll', () => {
if (ticking) return;
ticking = true;
requestAnimationFrame(() => {
ticking = false;
update();
});
}, { passive: true });
update();
},
onLearnMore(event) {
const btn = event.currentTarget;
if (btn) {
btn.classList.add('btn-flash');
setTimeout(() => btn.classList.remove('btn-flash'), 300);
}
setTimeout(() => this.scrollTo('about'), 200);
},
openVideo(key) {
// 视频文件与封面映射集中放这里,以后加视频就在这加分支
const map = {
xuanchuan: {
src: '/img/xuanchuan.mp4'
}
};
const cfg = map[key];
if (!cfg) return;
this.videoModalKey = key;
this.videoModalSrc = cfg.src;
this.videoModalOpen = true;
// 锁住页面滚动,避免背景跟着滚
document.body.style.overflow = 'hidden';
// 等 <video> 节点挂载到 DOM 后自动播放
// (用户已点过一次封面,这次点击属于手势,大部分浏览器允许出声)
this.$nextTick(() => {
const v = this.$refs.modalVideo;
if (v) {
const p = v.play();
if (p && typeof p.catch === 'function') {
p.catch(() => { /* 被浏览器策略拦下时静默,可手动点 controls 播 */ });
}
}
});
},
closeVideo() {
this.videoModalOpen = false;
document.body.style.overflow = '';
// 等 transition 走完再清 src(防止 src 提前清掉导致 video 元素残留边框)
setTimeout(() => {
this.videoModalSrc = '';
}, 250);
},
onModalKeydown(e) {
if (e.key === 'Escape' && this.videoModalOpen) {
this.closeVideo();
}
},
scrollTo(id) {
this.activeSection = id;
const suppressMs = 2000;
this.scrollSuppressUntil = Date.now() + suppressMs;
// 用一个标志区分"用户点击锁定"和"自由滚动"
// 锁定期间,scroll/IO 触发的 update() 全部 return,绝不覆盖 activeSection
this.scrollLocked = true;
setTimeout(() => {
this.scrollSuppressUntil = 0;
this.activeSection = id;
// 再延迟 200ms 才解锁,防止抑制期结束后第一次 scroll 事件又触发 compute
setTimeout(() => { this.scrollLocked = false; }, 200);
}, suppressMs);
if (id === 'top') {
window.scrollTo({ top: 0, behavior: 'smooth' });
return;
}
const el = document.getElementById(id);
if (el) {
if (id === 'gateway') {
const top = el.getBoundingClientRect().top + window.pageYOffset - 300;
window.scrollTo({ top: top, behavior: 'smooth' });
} else if (id === 'skills') {
const top = el.getBoundingClientRect().top + window.pageYOffset - 200;
window.scrollTo({ top: top, behavior: 'smooth' });
} else if (id === 'row2') {
// 应用实践 row2:scrollTo 偏移收窄,标题已对齐底部
const top = el.getBoundingClientRect().top + window.pageYOffset - 60;
window.scrollTo({ top: top, behavior: 'smooth' });
} else {
const top = el.getBoundingClientRect().top + window.pageYOffset - 460;
window.scrollTo({ top: top, behavior: 'smooth' });
}
}
}
}
};
</script>
<style scoped lang="css" src="./assets/index.rem.css" />
<style scoped>
.section_2 {
position: fixed;
top: 0;
left: 0;
z-index: 100;
will-change: transform;
transform: translateZ(0);
}
.section_1 {
margin-top: 2.133rem;
}
.nav-link {
cursor: pointer;
transition: opacity 0.2s;
position: relative;
z-index: 101;
}
.nav-link:hover {
opacity: 0.7;
}
/* scroll-spy 高亮:当前可见 section 对应的 nav 链接变蓝
跟 text_1/text_7 (WithMind 标题) 同色 rgba(25, 140, 255, 1) */
.nav-link.nav-active {
color: rgba(25, 140, 255, 1) !important;
}
/* 应用实践 nav 项(全局 CSS 的 .text_nav_practice 没被 scope,需要单独覆盖高亮) */
.text_nav_practice.nav-active {
color: rgba(25, 140, 255, 1) !important;
}
.box_16 {
cursor: pointer !important;
transition: background-color 0.3s, transform 0.15s, box-shadow 0.2s;
}
.box_16:hover {
background-color: rgba(40, 40, 40, 1) !important;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.btn-flash {
background-color: rgba(60, 60, 60, 1) !important;
transform: scale(0.95);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2) inset;
}
.footer-logo {
width: 6.347rem;
height: 0.854rem;
display: block;
object-fit: contain;
margin: 0;
}
.text-group_1,
.text-group_2,
.text-group_3,
.text-group_4 {
align-items: center !important;
}
.text_10,
.text_12,
.text_14,
.text_16 {
}
/* 底部 footer 版权信息上方加横线分隔(用 !important 覆盖全局 .text-wrapper_7) */
.text-wrapper_7 {
border-top: 1px solid rgba(255, 255, 255, 0.5) !important;
padding-top: 1.067rem !important;
height: auto !important;
z-index: 2 !important;
}
.group_20,
.group_21 {
height: 16rem !important;
}
.image-26-knowledge {
width: 9.04rem;
height: 8.72rem;
margin: 0.747rem 4.16rem 0 8.907rem;
display: block;
}
/* ============ 应用实践板块 ============ */
.practice_text_wrapper_13 {
width: 4.694rem;
height: 1.707rem;
margin: 6.4rem 0 0 6.934rem;
position: relative;
top: -20px;
}
.practice_text_23 {
width: 4.694rem;
height: 1.707rem;
overflow-wrap: break-word;
color: rgba(22, 22, 22, 1);
font-size: 1.173rem;
font-family: Source Han Sans CN-Medium;
font-weight: 500;
text-align: left;
white-space: nowrap;
line-height: 1.707rem;
}
.practice_box_23 {
width: 37.334rem;
min-height: 8.267rem;
margin: 0.8rem 0 0 6.934rem;
}
.practice_box_24 {
width: 8.534rem;
min-height: 8.267rem;
}
/* 旧 border 样式清理(已删除模板中的 wrapper div,这些类不再使用) */
.practice_image_13 {
width: 8.534rem;
height: 6.934rem;
object-fit: contain;
}
.practice_text_24 {
width: 8.534rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(86, 86, 86, 1);
font-size: 0.533rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
white-space: nowrap;
line-height: 0.96rem;
margin-top: 40px;
}
.practice_image_text_15 {
width: 8.534rem;
min-height: 8.267rem;
margin-left: 1.067rem;
}
.practice_image_15 {
width: 8.534rem;
height: 6.934rem;
object-fit: contain;
}
.practice_text_group_5 {
width: 8.534rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(86, 86, 86, 1);
font-size: 0.533rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
white-space: nowrap;
line-height: 0.96rem;
margin-top: 40px;
}
.practice_image_text_16 {
width: 8.534rem;
min-height: 8.267rem;
margin-left: 1.067rem;
}
.practice_image_16 {
width: 8.534rem;
height: 6.934rem;
object-fit: contain;
}
.practice_text_group_6 {
width: 8.534rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(86, 86, 86, 1);
font-size: 0.533rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
white-space: nowrap;
line-height: 0.96rem;
margin-top: 40px;
}
.practice_box_25 {
width: 8.534rem;
min-height: 8.267rem;
margin-left: 1.067rem;
}
.practice_image_17 {
width: 8.534rem;
height: 6.934rem;
object-fit: contain;
}
.practice_text_25 {
width: 8.534rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(86, 86, 86, 1);
font-size: 0.533rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
white-space: nowrap;
line-height: 0.96rem;
margin-top: 40px;
}
/* ============ 应用实践 row2 (v7, 3 图 + 1 视频) ============ */
.practice_row2 {
width: 37.334rem;
min-height: 8.267rem;
margin: 130px 0 0 6.934rem;
}
.practice_row2_item {
width: 8.534rem;
min-height: 8.267rem;
display: flex;
flex-direction: column;
}
.practice_row2_item + .practice_row2_item {
margin-left: 1.067rem;
}
.practice_row2_img {
width: 8.534rem;
height: 6.934rem;
object-fit: contain;
border-radius: 16px;
background-color: rgba(255, 255, 255, 1);
}
.practice_row2_caption {
width: 8.534rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(86, 86, 86, 1);
font-size: 0.533rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
white-space: nowrap;
line-height: 0.96rem;
margin-top: 40px;
}
/* 视频卡片占位框 (用于绝对定位中央大三角 ▶;chahua2.png 自带浅蓝边,容器层不再叠 border/背景) */
.practice_row2_video_placeholder {
position: relative;
width: 8.534rem;
height: 6.934rem;
border-radius: 16px;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
/* 视频封面 + 播放图标叠加层 (yici.png 项) */
.practice_row2_video_placeholder .practice_row2_img {
border-radius: 16px;
}
.practice_row2_play_icon {
position: absolute;
right: 0.32rem;
bottom: 0.32rem;
width: 1.067rem;
height: 1.067rem;
border-radius: 50%;
background-color: rgba(0, 0, 0, 0.55);
color: rgba(255, 255, 255, 1);
font-size: 0.48rem;
line-height: 1.067rem;
text-align: center;
pointer-events: none;
}
/* 第 4 项占位文字 */
.practice_row2_video_pending {
color: rgba(153, 153, 153, 1);
font-size: 0.48rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: center;
}
/* 实际 <video> 元素:撑满占位框,cover 裁切,圆角同图片 */
.practice_row2_video {
display: block;
width: 8.534rem;
height: 6.934rem;
object-fit: cover;
border-radius: 16px;
background-color: rgba(0, 0, 0, 1);
}
/* 中间大三角播放按钮 (v7.2,v7.1 的右下角小三角换成中间大号) */
.practice_row2_play_icon_big {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 1.707rem;
height: 1.707rem;
border-radius: 50%;
background-color: rgba(0, 0, 0, 0.55);
color: rgba(255, 255, 255, 1);
font-size: 0.747rem;
line-height: 1.707rem;
text-align: center;
pointer-events: none;
transition: transform 0.2s, background-color 0.2s;
}
/* 鼠标悬浮视频位置(item)时,大三角放大、加深 */
.practice_row2_item--video {
cursor: pointer;
}
.practice_row2_item--video:hover .practice_row2_play_icon_big {
transform: translate(-50%, -50%) scale(1.12);
background-color: rgba(0, 0, 0, 0.72);
}
/* 鼠标悬浮视频位置时,封面图轻微变暗(强调可点) */
.practice_row2_item--video:hover .practice_row2_img {
filter: brightness(0.92);
transition: filter 0.2s;
}
.practice_row2_img {
transition: filter 0.2s;
}
/* =================== 视频弹窗 (v7.2) =================== */
.video-modal-mask {
position: fixed;
inset: 0;
z-index: 1000;
background-color: rgba(0, 0, 0, 0.72);
display: flex;
align-items: center;
justify-content: center;
backdrop-filter: blur(4px);
}
.video-modal-box {
position: relative;
width: 70vw;
max-width: 53.333rem;
background-color: rgba(0, 0, 0, 1);
border-radius: 12px;
overflow: hidden;
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.6);
}
.video-modal-video {
display: block;
width: 100%;
height: auto;
max-height: 75vh;
background-color: rgba(0, 0, 0, 1);
}
.video-modal-close {
position: absolute;
top: 0.533rem;
right: 0.533rem;
z-index: 10;
width: 1.6rem;
height: 1.6rem;
border-radius: 50%;
border: none;
background-color: rgba(0, 0, 0, 0.6);
color: rgba(255, 255, 255, 1);
font-size: 1.067rem;
line-height: 1.6rem;
cursor: pointer;
transition: background-color 0.2s, transform 0.15s;
}
.video-modal-close:hover {
background-color: rgba(255, 255, 255, 0.18);
transform: scale(1.06);
}
/* 弹窗过渡动画 */
.modal-enter-active,
.modal-leave-active {
transition: opacity 0.22s ease;
}
.modal-enter-active .video-modal-box,
.modal-leave-active .video-modal-box {
transition: transform 0.22s ease, opacity 0.22s ease;
}
.modal-enter,
.modal-leave-to {
opacity: 0;
}
.modal-enter .video-modal-box,
.modal-leave-to .video-modal-box {
transform: scale(0.94);
opacity: 0;
}
/* ============ footer 应用实践列 ============ */
.practice_footer_col {
width: 1.92rem;
min-height: 5.12rem;
height: auto;
margin-left: 0.847rem;
}
.practice_footer_col_item {
width: 1.92rem;
height: 0.96rem;
overflow-wrap: break-word;
color: rgba(153, 153, 153, 1);
font-size: 0.48rem;
font-family: Source Han Sans CN-Regular;
font-weight: 400;
text-align: right;
line-height: 0.96rem;
cursor: pointer;
}
.practice_footer_col_item + .practice_footer_col_item {
margin-top: 0.427rem;
}
/* 第 5 项"图文/视频":hover 加深,点开视频(跟其他导航 hover 同亮度逻辑) */
.practice_footer_col_item--video {
cursor: pointer;
white-space: nowrap;
/* "图文/视频" 5 个字符超出 1.92rem 列宽,这里允许它向右溢出显示 */
overflow: visible;
}
.practice_footer_col_item--video:hover {
color: rgba(255, 255, 255, 1);
}
</style>