feat: 20250612 首页、Navbar、Footer等组件
This commit is contained in:
parent
893e34bdcc
commit
4f5a36621f
4
components.d.ts
vendored
4
components.d.ts
vendored
@ -8,7 +8,11 @@ export {}
|
|||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
|
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||||
|
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||||
|
Footer: typeof import('./src/components/Footer.vue')['default']
|
||||||
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
|
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
|
||||||
|
Navbar: typeof import('./src/components/Navbar.vue')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
Test: typeof import('./src/components/Test.vue')['default']
|
Test: typeof import('./src/components/Test.vue')['default']
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vueuse/core": "^13.3.0",
|
"@vueuse/core": "^13.3.0",
|
||||||
"axios": "^1.9.0",
|
"axios": "^1.9.0",
|
||||||
|
"element-plus": "^2.10.1",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"postcss-px-to-viewport": "^1.1.1",
|
"postcss-px-to-viewport": "^1.1.1",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
@ -52,6 +53,7 @@
|
|||||||
"postcss": "^8.4.24",
|
"postcss": "^8.4.24",
|
||||||
"postcss-px-to-viewport-8-plugin": "^1.2.5",
|
"postcss-px-to-viewport-8-plugin": "^1.2.5",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
|
"sass": "^1.89.2",
|
||||||
"typescript": "5.1.6",
|
"typescript": "5.1.6",
|
||||||
"unplugin-auto-import": "^19.3.0",
|
"unplugin-auto-import": "^19.3.0",
|
||||||
"unplugin-vue-components": "^28.7.0",
|
"unplugin-vue-components": "^28.7.0",
|
||||||
|
|||||||
@ -32,7 +32,7 @@ module.exports = {
|
|||||||
plugins: {
|
plugins: {
|
||||||
'postcss-px-to-viewport-8-plugin': {
|
'postcss-px-to-viewport-8-plugin': {
|
||||||
unitToConvert: 'px',
|
unitToConvert: 'px',
|
||||||
viewportWidth: 750,
|
viewportWidth: 1920,
|
||||||
unitPrecision: 5,
|
unitPrecision: 5,
|
||||||
viewportUnit: 'vw',
|
viewportUnit: 'vw',
|
||||||
fontViewportUnit: 'vw',
|
fontViewportUnit: 'vw',
|
||||||
|
|||||||
36
src/App.vue
36
src/App.vue
@ -1,42 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<!-- 导航栏 -->
|
<!-- 路由出口:渲染 Layout 及子页面 -->
|
||||||
<nav>
|
|
||||||
<ul>
|
|
||||||
<li><router-link to="/">首页</router-link></li>
|
|
||||||
<li><router-link to="/about">关于我们</router-link></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<!-- 路由出口:渲染当前页面 -->
|
|
||||||
<main>
|
|
||||||
<router-view />
|
<router-view />
|
||||||
</main>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// App 组件逻辑
|
// 无需额外逻辑
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style scoped lang="less">
|
||||||
nav ul {
|
@import '@/styles/global.less';
|
||||||
display: flex;
|
|
||||||
list-style: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav li {
|
|
||||||
margin-right: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav a.router-link-exact-active {
|
|
||||||
color: #007bff;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
BIN
src/assets/images/logo.png
Normal file
BIN
src/assets/images/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
14
src/main.ts
14
src/main.ts
@ -5,7 +5,18 @@ import App from './App.vue'
|
|||||||
import routes from './router/routes'
|
import routes from './router/routes'
|
||||||
import i18n from './locales/i18n' // 导入i18n配置
|
import i18n from './locales/i18n' // 导入i18n配置
|
||||||
import './style.css'
|
import './style.css'
|
||||||
|
import '@/styles/global.less' // 引入全局样式
|
||||||
// 修正:明确 meta.title 的类型为 string
|
// 修正:明确 meta.title 的类型为 string
|
||||||
|
|
||||||
|
// 引入 element-plus 核心库
|
||||||
|
import ElementPlus from 'element-plus'
|
||||||
|
// 引入 element-plus 全局样式(可根据需求选择是否自定义主题,这里先引入默认样式)
|
||||||
|
// import 'element-plus/dist/index.css'
|
||||||
|
// 如果你需要使用 Element Plus 提供的国际化(i18n)功能,还需引入对应的语言包,比如中文
|
||||||
|
|
||||||
|
// 修正:使用正确的语言包路径(从 es/locale/lang 导入)
|
||||||
|
import zhCn from 'element-plus/es/locale/lang/zh-cn'
|
||||||
|
// 使用 ElementPlus 插件,并配置国际化等选项(这里以配置中文为例)
|
||||||
declare module 'vue-router' {
|
declare module 'vue-router' {
|
||||||
interface RouteMeta {
|
interface RouteMeta {
|
||||||
title?: string // 明确指定为 string 类型
|
title?: string // 明确指定为 string 类型
|
||||||
@ -22,6 +33,9 @@ export const createApp = ViteSSG(
|
|||||||
ctx => {
|
ctx => {
|
||||||
// 安装 i18n 插件
|
// 安装 i18n 插件
|
||||||
ctx.app.use(i18n)
|
ctx.app.use(i18n)
|
||||||
|
ctx.app.use(ElementPlus, {
|
||||||
|
locale: zhCn
|
||||||
|
})
|
||||||
|
|
||||||
// 路由守卫:设置页面标题
|
// 路由守卫:设置页面标题
|
||||||
ctx.router.beforeEach((to, _from, next) => {
|
ctx.router.beforeEach((to, _from, next) => {
|
||||||
|
|||||||
@ -1,40 +1,53 @@
|
|||||||
// src/router/routes.ts
|
// src/router/routes.ts
|
||||||
import type { RouteRecordRaw } from 'vue-router' // 添加type关键字
|
import type { RouteRecordRaw } from 'vue-router' // 添加type关键字
|
||||||
import Home from '@/views/Home.vue'
|
import Home from '@/views/Home/Home.vue'
|
||||||
import About from '@/views/About.vue'
|
// import About from '@/views/About.vue'
|
||||||
import I18nDemo from '../views/I18nDemo.vue'
|
// import I18nDemo from '../views/I18nDemo.vue'
|
||||||
|
import Layout from '@/layout/Layout.vue'
|
||||||
const routes: RouteRecordRaw[] = [
|
const routes: RouteRecordRaw[] = [
|
||||||
{
|
|
||||||
path: '/i18n-demo',
|
|
||||||
name: 'I18nDemo',
|
|
||||||
component: I18nDemo,
|
|
||||||
meta: {
|
|
||||||
title: '国际化演示'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
name: 'Home',
|
component: Layout,
|
||||||
component: Home,
|
children: [
|
||||||
meta: {
|
{ path: '', name: 'Home', component: Home },
|
||||||
title: '首页 - 极简官网' // 明确指定title为string类型
|
{ path: 'news', name: 'News', component: () => import('@/views/News.vue') },
|
||||||
} as { title: string } // 强制类型断言
|
{ path: 'network', name: 'Network', component: () => import('@/views/Network.vue') },
|
||||||
},
|
{ path: 'dating', name: 'Dating', component: () => import('@/views/Dating.vue') },
|
||||||
{
|
{ path: 'app', name: 'App', component: () => import('@/views/App.vue') },
|
||||||
path: '/about',
|
{ path: 'ecosystem', name: 'Ecosystem', component: () => import('@/views/Ecosystem.vue') },
|
||||||
name: 'About',
|
{ path: 'about', name: 'About', component: () => import('@/views/About.vue') }
|
||||||
component: About,
|
]
|
||||||
meta: {
|
|
||||||
title: '关于我们 - 极简官网'
|
|
||||||
} as { title: string }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: '/:pathMatch(.*)*',
|
|
||||||
name: 'NotFound',
|
|
||||||
component: () => import('@/views/NotFound.vue'),
|
|
||||||
meta: { title: '404 - 页面不存在' } as { title: string }
|
|
||||||
}
|
}
|
||||||
|
// {
|
||||||
|
// path: '/i18n-demo',
|
||||||
|
// name: 'I18nDemo',
|
||||||
|
// component: I18nDemo,
|
||||||
|
// meta: {
|
||||||
|
// title: '国际化演示'
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: '/',
|
||||||
|
// name: 'Home',
|
||||||
|
// component: Home,
|
||||||
|
// meta: {
|
||||||
|
// title: '首页 - 极简官网' // 明确指定title为string类型
|
||||||
|
// } as { title: string } // 强制类型断言
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: '/about',
|
||||||
|
// name: 'About',
|
||||||
|
// component: About,
|
||||||
|
// meta: {
|
||||||
|
// title: '关于我们 - 极简官网'
|
||||||
|
// } as { title: string }
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// path: '/:pathMatch(.*)*',
|
||||||
|
// name: 'NotFound',
|
||||||
|
// component: () => import('@/views/NotFound.vue'),
|
||||||
|
// meta: { title: '404 - 页面不存在' } as { title: string }
|
||||||
|
// }
|
||||||
]
|
]
|
||||||
|
|
||||||
export default routes
|
export default routes
|
||||||
|
|||||||
@ -62,9 +62,9 @@ button:focus-visible {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
max-width: 1280px;
|
/*max-width: 1280px;*/
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 2rem;
|
/*padding: 2rem;*/
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
31
src/views/Home/Home.vue
Normal file
31
src/views/Home/Home.vue
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<template>
|
||||||
|
<div class="home-page">
|
||||||
|
<!-- Banner 模块-->
|
||||||
|
<Banner />
|
||||||
|
<!-- 核心价值模块-->
|
||||||
|
<CoreValue />
|
||||||
|
<!-- 应用场景模块-->
|
||||||
|
<UseCases />
|
||||||
|
<!-- 全球服务模块-->
|
||||||
|
<GlobalService />
|
||||||
|
<!-- 客户反馈模块-->
|
||||||
|
<CustomerFeedback />
|
||||||
|
<!-- 合作伙伴模块-->
|
||||||
|
<Partners />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import Banner from './sections/Banner.vue'
|
||||||
|
import CoreValue from './sections/CoreValue.vue'
|
||||||
|
import UseCases from './sections/UseCases.vue'
|
||||||
|
import GlobalService from './sections/GlobalService.vue'
|
||||||
|
import CustomerFeedback from './sections/CustomerFeedback.vue'
|
||||||
|
import Partners from './sections/Partners.vue'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.home-page {
|
||||||
|
// 可设置全局背景或间距,按需扩展
|
||||||
|
}
|
||||||
|
</style>
|
||||||
95
src/views/Home/sections/Banner.vue
Normal file
95
src/views/Home/sections/Banner.vue
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<template>
|
||||||
|
<section class="banner">
|
||||||
|
<div class="banner-bg">
|
||||||
|
<!-- 替换为实际背景图路径 -->
|
||||||
|
<img src="https://images.health.ufutx.com/202506/12/e6ea04327d2b5dbd9e4ae441431018df.png" alt="Banner背景" />
|
||||||
|
</div>
|
||||||
|
<!-- <div class="banner-content">-->
|
||||||
|
<!-- <h1 class="main-title">友福同享智能AI健康方案</h1>-->
|
||||||
|
<!-- <h2 class="sub-title">智慧科技创造未来</h2>-->
|
||||||
|
<!-- <button class="action-btn">用AI智能创造未来</button>-->
|
||||||
|
<!-- <p class="contact-phone">181-4852-2763</p>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 暂无逻辑,纯展示
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.banner {
|
||||||
|
//width: 100%;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
.banner-bg {
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-content {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
.main-title {
|
||||||
|
font-size: 48px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub-title {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-btn {
|
||||||
|
padding: 12px 30px;
|
||||||
|
font-size: 18px;
|
||||||
|
background-color: #007bff;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #005eb8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-phone {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应式适配
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.banner-content {
|
||||||
|
.main-title {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
.sub-title {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.action-btn {
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 10px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
50
src/views/Home/sections/CoreValue.vue
Normal file
50
src/views/Home/sections/CoreValue.vue
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<section class="core-value">
|
||||||
|
<div class="container">
|
||||||
|
<h3 class="section-title">核心价值</h3>
|
||||||
|
<p class="section-desc">友福同享AI健康解决方案应用场景</p>
|
||||||
|
<!-- 替换为实际图示路径 -->
|
||||||
|
<img
|
||||||
|
src="https://images.health.ufutx.com/202506/12/5bbcb1bc1347f58df6a38aecc41dbe30.png"
|
||||||
|
alt="核心价值图示"
|
||||||
|
class="diagram"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 暂无逻辑,纯展示
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.core-value {
|
||||||
|
padding: 80px 0;
|
||||||
|
//background-color: #f9fcff;
|
||||||
|
|
||||||
|
.container {
|
||||||
|
//max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-desc {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.diagram {
|
||||||
|
//max-width: 800px;
|
||||||
|
width: 1920px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
188
src/views/Home/sections/CustomerFeedback.vue
Normal file
188
src/views/Home/sections/CustomerFeedback.vue
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<template>
|
||||||
|
<section class="feedback-section">
|
||||||
|
<h2 class="feedback-title">客户反馈</h2>
|
||||||
|
<div class="feedback-list">
|
||||||
|
<div v-for="(item, index) in feedbackList" :key="index" class="feedback-card">
|
||||||
|
<div class="avatar-container">
|
||||||
|
<img :src="item.avatar" alt="avatar" class="avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="feedback-info">
|
||||||
|
<p class="username">{{ item.username }}</p>
|
||||||
|
<p class="comment">{{ item.comment }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 模拟假数据(头像统一使用你提供的链接)
|
||||||
|
const feedbackList = [
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '界面简约清晰,功能强大',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '派小喵萌宠',
|
||||||
|
comment: '预约操作简单方便,客户体验好评',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '派小喵萌宠',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '派小喵萌宠',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '派小喵萌宠',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '章小样',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
username: '派小喵萌宠',
|
||||||
|
comment: '操作简单,容易上手',
|
||||||
|
avatar: 'https://images.health.ufutx.com/202506/12/1c0c9dad7586e6fd00ab781064acc822.png'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
// 基础变量(可继承项目全局样式)
|
||||||
|
@bg-color: #f9fbff;
|
||||||
|
@card-bg: #ffffff;
|
||||||
|
@radius: 12px;
|
||||||
|
@padding: 16px;
|
||||||
|
@gap: 24px;
|
||||||
|
@avatar-size: 40px;
|
||||||
|
@text-color: #333;
|
||||||
|
@subtext-color: #999;
|
||||||
|
@transition: all 0.3s ease;
|
||||||
|
|
||||||
|
.feedback-section {
|
||||||
|
background-color: @bg-color;
|
||||||
|
padding: 48px @padding;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.feedback-title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedback-list {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: @gap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedback-card {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-color: @card-bg;
|
||||||
|
border-radius: @radius;
|
||||||
|
padding: @padding;
|
||||||
|
width: 240px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
||||||
|
transition: @transition;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-container {
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-right: 12px;
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
width: @avatar-size;
|
||||||
|
height: @avatar-size;
|
||||||
|
border-radius: 50%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedback-info {
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
.username {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment {
|
||||||
|
font-size: 14px;
|
||||||
|
color: @subtext-color;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应式适配
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.feedback-card {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 320px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
50
src/views/Home/sections/GlobalService.vue
Normal file
50
src/views/Home/sections/GlobalService.vue
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<section class="global-service">
|
||||||
|
<div class="container">
|
||||||
|
<h3 class="section-title">我们全球服务覆盖范围</h3>
|
||||||
|
<p class="section-desc">覆盖国家/地区:6+ · 客户产业覆盖范围:15+</p>
|
||||||
|
<!-- 替换为实际地图路径 -->
|
||||||
|
<img
|
||||||
|
src="https://images.health.ufutx.com/202506/12/2acedc9535b108d6cd079b34bb01e78e.jpeg"
|
||||||
|
alt="世界地图"
|
||||||
|
class="world-map"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 暂无逻辑,纯展示
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.global-service {
|
||||||
|
padding: 80px 0;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-desc {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.world-map {
|
||||||
|
max-width: 1000px;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
124
src/views/Home/sections/Partners.vue
Normal file
124
src/views/Home/sections/Partners.vue
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<template>
|
||||||
|
<section class="partner-section">
|
||||||
|
<div class="partner-header">
|
||||||
|
<h2 class="partner-title">合作伙伴</h2>
|
||||||
|
<p class="partner-subtitle">正与众多客户一起创造更多价值</p>
|
||||||
|
</div>
|
||||||
|
<div class="partner-logos">
|
||||||
|
<div v-for="index in 21" :key="index" class="partner-logo-item">
|
||||||
|
<!-- <img :src="logo.src" :alt="logo.alt" class="partner-logo" />-->
|
||||||
|
<img
|
||||||
|
src="https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png"
|
||||||
|
alt="新浪健康"
|
||||||
|
class="partner-logo"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 使用提供的图片链接作为所有合作伙伴Logo
|
||||||
|
// const partnerLogos = [
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// src: 'https://images.health.ufutx.com/202506/12/10fb15c77258a991b0028080a64fb42d.png',
|
||||||
|
// alt: '新浪健康'
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '@/styles/global.less';
|
||||||
|
|
||||||
|
.partner-section {
|
||||||
|
width: 100%;
|
||||||
|
padding: @space-xl @container-padding;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.partner-header {
|
||||||
|
.mb(50px);
|
||||||
|
|
||||||
|
.partner-title {
|
||||||
|
font-size: @font-size-xxl;
|
||||||
|
font-weight: @font-weight-bold;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: @space-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-subtitle {
|
||||||
|
font-size: @font-size-md;
|
||||||
|
color: @text-color-secondary;
|
||||||
|
.mt(20px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-logos {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||||
|
gap: @space-xl;
|
||||||
|
justify-items: center;
|
||||||
|
.px(160px);
|
||||||
|
.partner-logo-item {
|
||||||
|
width: 100%;
|
||||||
|
height: 80px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.partner-logo {
|
||||||
|
width: 230px;
|
||||||
|
//max-height: 60px;
|
||||||
|
object-fit: contain;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应式适配
|
||||||
|
@media (max-width: @tablet-breakpoint) {
|
||||||
|
.partner-logos {
|
||||||
|
gap: @space-md;
|
||||||
|
|
||||||
|
.partner-logo-item {
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.partner-logo {
|
||||||
|
max-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
113
src/views/Home/sections/UseCases.vue
Normal file
113
src/views/Home/sections/UseCases.vue
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<template>
|
||||||
|
<section class="scene-section">
|
||||||
|
<h2 class="scene-title">友福同享AI健康解决方案应用场景</h2>
|
||||||
|
<div class="scene-list">
|
||||||
|
<div v-for="(item, index) in sceneList" :key="index" class="scene-item">
|
||||||
|
<img :src="item.icon" alt="场景图标" class="scene-icon" />
|
||||||
|
<p class="scene-name">{{ item.name }}</p>
|
||||||
|
<p class="scene-desc">{{ item.desc }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
const sceneList = [
|
||||||
|
{
|
||||||
|
name: '地区政府/社区健康服务',
|
||||||
|
desc: '',
|
||||||
|
icon: 'https://images.health.ufutx.com/202506/12/d2b5ca33bd970f64a6301fa75ae2eb22.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '医院体检中心/健康管理机构',
|
||||||
|
desc: '',
|
||||||
|
icon: 'https://images.health.ufutx.com/202506/12/d2b5ca33bd970f64a6301fa75ae2eb22.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '企业员工健康管理',
|
||||||
|
desc: '降低企业医疗成本,提升员工健康与生产力。',
|
||||||
|
icon: 'https://images.health.ufutx.com/202506/12/d2b5ca33bd970f64a6301fa75ae2eb22.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '健康产业链供应商',
|
||||||
|
desc: '',
|
||||||
|
icon: 'https://images.health.ufutx.com/202506/12/d2b5ca33bd970f64a6301fa75ae2eb22.png'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '健康管理专业培训',
|
||||||
|
desc: '',
|
||||||
|
icon: 'https://images.health.ufutx.com/202506/12/d2b5ca33bd970f64a6301fa75ae2eb22.png'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import '@/styles/global.less';
|
||||||
|
|
||||||
|
.scene-section {
|
||||||
|
padding: @space-xl 0;
|
||||||
|
text-align: center;
|
||||||
|
background-color: @bg-color;
|
||||||
|
|
||||||
|
.scene-title {
|
||||||
|
font-size: @font-size-lg;
|
||||||
|
font-weight: @font-weight-bold;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: @space-xl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-list {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: @space-lg;
|
||||||
|
max-width: @container-width;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-item {
|
||||||
|
width: 220px;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
height: 336px;
|
||||||
|
padding: 0px 16px;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
flex: 1 0 0;
|
||||||
|
background: linear-gradient(180deg, #fff 0%, #ecf2ff 100%);
|
||||||
|
transition: all 0.3s ease; // 基础过渡动画
|
||||||
|
|
||||||
|
// 悬停放大效果
|
||||||
|
&:hover {
|
||||||
|
transform: scale(1.1); // 放大5%
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); // 增强阴影
|
||||||
|
}
|
||||||
|
.scene-icon {
|
||||||
|
width: 150px;
|
||||||
|
margin-bottom: @space-md;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-name {
|
||||||
|
font-size: @font-size-md;
|
||||||
|
font-weight: @font-weight-medium;
|
||||||
|
color: @text-color;
|
||||||
|
margin-bottom: @space-xs;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-desc {
|
||||||
|
font-size: @font-size-sm;
|
||||||
|
color: @text-color-light;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: @tablet-breakpoint) {
|
||||||
|
.scene-item {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 280px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -5,20 +5,38 @@ import path from 'path' // 引入 path 模块
|
|||||||
import viteImagemin from 'vite-plugin-imagemin' // 新插件
|
import viteImagemin from 'vite-plugin-imagemin' // 新插件
|
||||||
import AutoImport from 'unplugin-auto-import/vite'
|
import AutoImport from 'unplugin-auto-import/vite'
|
||||||
import Components from 'unplugin-vue-components/vite'
|
import Components from 'unplugin-vue-components/vite'
|
||||||
|
// 引入 ElementPlus 相关解析器
|
||||||
|
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
|
||||||
|
|
||||||
import legacy from '@vitejs/plugin-legacy'
|
import legacy from '@vitejs/plugin-legacy'
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
|
|
||||||
legacy({
|
legacy({
|
||||||
targets: ['ie >= 11'],
|
targets: ['ie >= 11'],
|
||||||
additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
|
additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
|
||||||
modernPolyfills: true // 启用现代浏览器的 polyfill
|
modernPolyfills: true // 启用现代浏览器的 polyfill
|
||||||
}),
|
}),
|
||||||
AutoImport({
|
AutoImport({
|
||||||
imports: ['vue', 'vue-router'] // 自动导入 Vue、Vue Router API
|
imports: ['vue', 'vue-router'], // 自动导入 Vue、Vue Router API
|
||||||
|
// 自动导入 Vue 相关函数,以及 ElementPlus 的相关函数等
|
||||||
|
resolvers: [
|
||||||
|
ElementPlusResolver({
|
||||||
|
importStyle: 'sass', // 可选:按需导入样式
|
||||||
|
directives: true, // 导入指令
|
||||||
|
version: '2.3.6' // 版本号
|
||||||
|
})
|
||||||
|
]
|
||||||
}),
|
}),
|
||||||
Components({
|
Components({
|
||||||
|
// 自动导入 ElementPlus 的组件
|
||||||
|
resolvers: [
|
||||||
|
ElementPlusResolver({
|
||||||
|
importStyle: 'sass',
|
||||||
|
directives: true
|
||||||
|
})
|
||||||
|
],
|
||||||
dirs: ['src/components'] // 自动扫描组件目录
|
dirs: ['src/components'] // 自动扫描组件目录
|
||||||
}),
|
}),
|
||||||
viteImagemin({
|
viteImagemin({
|
||||||
@ -42,6 +60,17 @@ export default defineConfig({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
css: {
|
||||||
|
preprocessorOptions: {
|
||||||
|
less: {
|
||||||
|
// 关键配置:自动注入 global.less
|
||||||
|
additionalData: `@import "@/styles/global.less";`,
|
||||||
|
|
||||||
|
// 可选:如果需要自定义 Less 选项
|
||||||
|
javascriptEnabled: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
'@': path.resolve(__dirname, 'src') // 添加路径别名
|
'@': path.resolve(__dirname, 'src') // 添加路径别名
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user