427 lines
10 KiB
Vue
427 lines
10 KiB
Vue
|
<template>
|
||
|
<div class="home-page">
|
||
|
<div class="company-overview">
|
||
|
<!-- 顶部大图区域 -->
|
||
|
<div class="hero-section">
|
||
|
<transition name="fade-up" appear>
|
||
|
<n-h1 class="hero-title">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETWO.TITLE")
|
||
|
}}</n-h1>
|
||
|
</transition>
|
||
|
<transition name="fade-up" appear>
|
||
|
<n-p class="hero-subtitle">
|
||
|
{{ $t("COMPANYOVERVIEW.HERO_SUBTITLE") }}
|
||
|
</n-p>
|
||
|
</transition>
|
||
|
</div>
|
||
|
|
||
|
<!-- 公司简介部分 -->
|
||
|
<section class="section intro-section">
|
||
|
<n-h2 class="section-title">{{
|
||
|
$t("COMPANYOVERVIEW.INTRO_TITLE")
|
||
|
}}</n-h2>
|
||
|
<n-p class="section-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETWO.CONTENT")
|
||
|
}}</n-p>
|
||
|
<n-p class="section-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETWO.CONTENTTWO")
|
||
|
}}</n-p>
|
||
|
<n-p class="section-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETWO.CONTENTTHREE")
|
||
|
}}</n-p>
|
||
|
</section>
|
||
|
|
||
|
<!-- 使命愿景卡片 -->
|
||
|
<section class="mission-section">
|
||
|
<div class="mission-cards">
|
||
|
<n-card hoverable class="mission-card" v-motion-pop>
|
||
|
<n-h3 class="card-title">{{
|
||
|
$t("COMPANYOVERVIEW.MISSION_TITLE")
|
||
|
}}</n-h3>
|
||
|
<n-p class="card-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETHREE.CONTENT")
|
||
|
}}</n-p>
|
||
|
</n-card>
|
||
|
|
||
|
<n-card hoverable class="mission-card" v-motion-pop>
|
||
|
<n-h3 class="card-title">{{
|
||
|
$t("COMPANYOVERVIEW.VISION_TITLE")
|
||
|
}}</n-h3>
|
||
|
<n-p class="card-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLETHREE.CONTENTTWO")
|
||
|
}}</n-p>
|
||
|
</n-card>
|
||
|
</div>
|
||
|
</section>
|
||
|
|
||
|
<!-- 里程碑时间轴 -->
|
||
|
<!-- 里程碑时间轴 -->
|
||
|
<section class="section timeline-section">
|
||
|
<n-h2 class="section-title">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.TITLE")
|
||
|
}}</n-h2>
|
||
|
<div class="timeline">
|
||
|
<!-- 1977-2015 -->
|
||
|
<div class="timeline-item" v-motion-slide-visible-once-bottom>
|
||
|
<div class="timeline-dot"></div>
|
||
|
<div class="timeline-content">
|
||
|
<n-h3 class="timeline-year">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.SUBHEADING")
|
||
|
}}</n-h3>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraph.ONE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraph.TWO")
|
||
|
}}</n-p>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- 2020 -->
|
||
|
<div class="timeline-item" v-motion-slide-visible-once-bottom>
|
||
|
<div class="timeline-dot"></div>
|
||
|
<div class="timeline-content">
|
||
|
<n-h3 class="timeline-year">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.SUBHEADINGTWO")
|
||
|
}}</n-h3>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphTwo.ONE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphTwo.TWO")
|
||
|
}}</n-p>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- 2021 -->
|
||
|
<div class="timeline-item" v-motion-slide-visible-once-bottom>
|
||
|
<div class="timeline-dot"></div>
|
||
|
<div class="timeline-content">
|
||
|
<n-h3 class="timeline-year">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.SUBHEADINGTHREE")
|
||
|
}}</n-h3>
|
||
|
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphTHREE.ONE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphTHREE.TWO")
|
||
|
}}</n-p>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- 2023-2024 -->
|
||
|
<div class="timeline-item" v-motion-slide-visible-once-bottom>
|
||
|
<div class="timeline-dot"></div>
|
||
|
<div class="timeline-content">
|
||
|
<n-h3 class="timeline-year">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.SUBHEADINGFOREFF")
|
||
|
}}</n-h3>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFOUR.ONE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFOUR.TWO")
|
||
|
}}</n-p>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- 2025 -->
|
||
|
<div class="timeline-item" v-motion-slide-visible-once-bottom>
|
||
|
<div class="timeline-dot"></div>
|
||
|
<div class="timeline-content">
|
||
|
<n-h3 class="timeline-year">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.SUBHEADINGFIVE")
|
||
|
}}</n-h3>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFIVE.ONE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFIVE.TWO")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFIVE.THREE")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFIVE.FOUR")
|
||
|
}}</n-p>
|
||
|
<n-p class="timeline-desc">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFOUR.paragraphFIVE.FIVE")
|
||
|
}}</n-p>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</section>
|
||
|
|
||
|
<!-- 成就部分 -->
|
||
|
<section class="achievement-section" v-motion-fade>
|
||
|
<n-h2 class="section-title">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFIVE.TITLE")
|
||
|
}}</n-h2>
|
||
|
<n-p class="section-content">{{
|
||
|
$t("COMPANYOVERVIEW.TITLEFIVE.CONTENT")
|
||
|
}}</n-p>
|
||
|
<div class="achievement-stats">
|
||
|
<n-statistic
|
||
|
v-for="(stat, index) in stats"
|
||
|
:key="index"
|
||
|
class="stat-item"
|
||
|
v-motion-slide-visible-once-bottom
|
||
|
:style="{ '--delay': index * 0.1 + 's' }"
|
||
|
>
|
||
|
<template #label>{{ $t(stat.labelKey) }}</template>
|
||
|
{{ stat.number }}
|
||
|
</n-statistic>
|
||
|
</div>
|
||
|
</section>
|
||
|
</div>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script setup>
|
||
|
import { ref } from "vue";
|
||
|
import { useI18n } from "vue-i18n";
|
||
|
const { t: $t } = useI18n();
|
||
|
|
||
|
const stats = ref([
|
||
|
{ number: "48+", labelKey: "COMPANYOVERVIEW.STATS.YEARS_IN_BUSINESS" },
|
||
|
{ number: "100+", labelKey: "COMPANYOVERVIEW.STATS.PATENTS" },
|
||
|
{ number: "Global", labelKey: "COMPANYOVERVIEW.STATS.FOOTPRINT" },
|
||
|
{ number: "NASDAQ", labelKey: "COMPANYOVERVIEW.STATS.LISTED_SINCE" },
|
||
|
]);
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
.home-page {
|
||
|
background-image: url("@/assets/image/bg.png");
|
||
|
background-size: 100% 100%;
|
||
|
background-position: center;
|
||
|
background-repeat: no-repeat;
|
||
|
}
|
||
|
.company-overview {
|
||
|
max-width: 1200px;
|
||
|
margin: 0 auto;
|
||
|
padding: 0 20px;
|
||
|
color: var(--text-color);
|
||
|
}
|
||
|
|
||
|
/* 顶部大图区域 */
|
||
|
.hero-section {
|
||
|
background: linear-gradient(135deg, #1a2a6c, #b21f1f, #fdbb2d);
|
||
|
background-size: 400% 400%;
|
||
|
animation: gradientBG 15s ease infinite;
|
||
|
color: white;
|
||
|
padding: 120px 0;
|
||
|
text-align: center;
|
||
|
margin-bottom: 60px;
|
||
|
border-radius: 8px;
|
||
|
}
|
||
|
|
||
|
.hero-title {
|
||
|
font-size: 3.5rem;
|
||
|
margin-bottom: 20px;
|
||
|
font-weight: 700;
|
||
|
}
|
||
|
|
||
|
.hero-subtitle {
|
||
|
font-size: 1.5rem;
|
||
|
opacity: 0.9;
|
||
|
}
|
||
|
|
||
|
/* 通用部分样式 */
|
||
|
.section {
|
||
|
margin-bottom: 80px;
|
||
|
}
|
||
|
|
||
|
.section-title {
|
||
|
font-size: 2.2rem;
|
||
|
margin-bottom: 30px;
|
||
|
position: relative;
|
||
|
display: inline-block;
|
||
|
}
|
||
|
|
||
|
.section-title:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
bottom: -10px;
|
||
|
left: 0;
|
||
|
width: 60px;
|
||
|
height: 4px;
|
||
|
background: linear-gradient(to right, #1a2a6c, #fdbb2d);
|
||
|
border-radius: 2px;
|
||
|
}
|
||
|
|
||
|
.section-content {
|
||
|
font-size: 1.1rem;
|
||
|
line-height: 1.8;
|
||
|
margin-bottom: 20px;
|
||
|
color: var(--text-color-secondary);
|
||
|
}
|
||
|
|
||
|
/* 使命愿景卡片 */
|
||
|
.mission-section {
|
||
|
margin: 80px 0;
|
||
|
}
|
||
|
|
||
|
.mission-cards {
|
||
|
display: grid;
|
||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||
|
gap: 30px;
|
||
|
}
|
||
|
|
||
|
.mission-card {
|
||
|
background: white;
|
||
|
padding: 40px 30px;
|
||
|
border-radius: 12px;
|
||
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
|
||
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||
|
}
|
||
|
|
||
|
.mission-card:hover {
|
||
|
transform: translateY(-5px);
|
||
|
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.12);
|
||
|
}
|
||
|
|
||
|
.card-title {
|
||
|
font-size: 1.5rem;
|
||
|
margin-bottom: 20px;
|
||
|
color: #895bff;
|
||
|
}
|
||
|
|
||
|
.card-content {
|
||
|
font-size: 1.05rem;
|
||
|
line-height: 1.7;
|
||
|
}
|
||
|
|
||
|
/* 时间轴样式 */
|
||
|
.timeline {
|
||
|
position: relative;
|
||
|
padding-left: 50px;
|
||
|
margin-top: 50px;
|
||
|
}
|
||
|
|
||
|
.timeline:before {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 20px;
|
||
|
height: 100%;
|
||
|
width: 4px;
|
||
|
background: linear-gradient(to bottom, #895bff, #fdbb2d);
|
||
|
}
|
||
|
|
||
|
.timeline-item {
|
||
|
position: relative;
|
||
|
margin-bottom: 50px;
|
||
|
}
|
||
|
|
||
|
.timeline-dot {
|
||
|
position: absolute;
|
||
|
left: -50px;
|
||
|
top: 5px;
|
||
|
width: 40px;
|
||
|
height: 40px;
|
||
|
border-radius: 50%;
|
||
|
background: #895bff;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
color: white;
|
||
|
font-weight: bold;
|
||
|
box-shadow: 0 0 0 6px rgba(26, 42, 108, 0.2);
|
||
|
}
|
||
|
|
||
|
.timeline-year {
|
||
|
font-size: 1.4rem;
|
||
|
margin-bottom: 15px;
|
||
|
color: #1a2a6c;
|
||
|
}
|
||
|
|
||
|
.timeline-desc {
|
||
|
font-size: 1.05rem;
|
||
|
line-height: 1.7;
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
|
||
|
/* 成就部分 */
|
||
|
.achievement-section {
|
||
|
background: #f9fafc;
|
||
|
padding: 60px;
|
||
|
border-radius: 12px;
|
||
|
margin: 80px 0;
|
||
|
}
|
||
|
|
||
|
.achievement-stats {
|
||
|
display: grid;
|
||
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||
|
gap: 30px;
|
||
|
margin-top: 50px;
|
||
|
}
|
||
|
|
||
|
.stat-item {
|
||
|
text-align: center;
|
||
|
padding: 30px 20px;
|
||
|
background: white;
|
||
|
border-radius: 8px;
|
||
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
|
||
|
transition: transform 0.3s ease;
|
||
|
}
|
||
|
|
||
|
.stat-item:hover {
|
||
|
transform: translateY(-5px);
|
||
|
}
|
||
|
|
||
|
.stat-number {
|
||
|
font-size: 2.5rem;
|
||
|
color: #1a2a6c;
|
||
|
margin-bottom: 10px;
|
||
|
}
|
||
|
|
||
|
.stat-label {
|
||
|
font-size: 1.1rem;
|
||
|
color: var(--text-color-secondary);
|
||
|
}
|
||
|
|
||
|
/* 动画 */
|
||
|
@keyframes gradientBG {
|
||
|
0% {
|
||
|
background-position: 0% 50%;
|
||
|
}
|
||
|
50% {
|
||
|
background-position: 100% 50%;
|
||
|
}
|
||
|
100% {
|
||
|
background-position: 0% 50%;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* 响应式设计 */
|
||
|
@media (max-width: 768px) {
|
||
|
.hero-title {
|
||
|
font-size: 2.5rem;
|
||
|
}
|
||
|
|
||
|
.hero-subtitle {
|
||
|
font-size: 1.2rem;
|
||
|
}
|
||
|
|
||
|
.section-title {
|
||
|
font-size: 1.8rem;
|
||
|
}
|
||
|
|
||
|
.timeline {
|
||
|
padding-left: 30px;
|
||
|
}
|
||
|
|
||
|
.timeline-dot {
|
||
|
left: -30px;
|
||
|
width: 30px;
|
||
|
height: 30px;
|
||
|
}
|
||
|
|
||
|
.achievement-section {
|
||
|
padding: 40px 20px;
|
||
|
}
|
||
|
}
|
||
|
</style>
|