fiee-official-website/src/views/myHome/size375/index.vue
2025-06-03 10:45:56 +08:00

593 lines
13 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="home-page">
<section
class="company-overview"
style="max-width: 1200px; margin: 60px auto; padding: 0 40px"
>
<div class="hero-section">
<transition name="fade-up" appear>
<n-h1 class="hero-title">
<div
class="content-blocks"
:class="{ 'slide-in': isInView }"
ref="contentRef"
>
<text>{{ $t("HOME.CONTAIN.TITLEONE.CONTENT") }}</text>
<p>{{ $t("HOME.CONTAIN.TITLEONE.CONTENTTWO") }}</p>
</div>
</n-h1>
</transition>
</div>
</section>
<!-- 公司概况 -->
<section
class="company-overview"
style="max-width: 1200px; margin: 60px auto; padding: 0 40px"
>
<h1 class="section-titles">Company Profile</h1>
<h3 class="section-title">{{ $t("COMPANYOVERVIEW.TITLETWO.TITLE") }}</h3>
<div class="content-block">
<p>{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENT") }}</p>
<p>
<text style="color: black">{{
$t("COMPANYOVERVIEW.TITLETWO.CONTENTTWOTITLE")
}}</text>
{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENTTWO") }}
</p>
<p>{{ $t("COMPANYOVERVIEW.TITLETWO.CONTENTTHREE") }}</p>
</div>
</section>
<!-- 突出成就 -->
<section
class="achievements"
style="
max-width: 1200px;
margin: 60px auto;
padding: 0 40px;
background: #fff;
"
>
<h2 class="section-titles">
{{ $t("COMPANYOVERVIEW.TITLEFIVE.TITLE") }}
</h2>
<p style="font-size: 18px">
{{ $t("COMPANYOVERVIEW.TITLEFIVE.CONTENT").replace("•", "") }}
</p>
</section>
<!-- 新闻模块 -->
<section
class="news-section"
style="max-width: 1200px; margin: 60px auto; padding: 0 40px"
>
<h2 class="section-titles">{{ $t("HOME.CONTAINY.NEWS.TITLE") }}</h2>
<div class="news-card">
<div style="margin-bottom: 20px" v-for="(item, index) in newList">
<div
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div>
<div style="font-size: 18px">{{ item.time }}</div>
<div style="font-size: 18px">
{{ item.title }}
</div>
</div>
<div
style="font-size: 18px"
class="cursor-pointer"
@click="handleLink(item.router, item.time)"
>
View Press Release<img
class="ml-[10px]"
src="@/assets/image/icon/icon-new.png"
alt=""
style="width: 20px; height: 20px"
/>
</div>
</div>
</div>
</div>
</section>
<!-- 新增:股票信息与活动预告双栏模块 -->
<section
class="dual-column-section"
style="max-width: 1200px; margin: 60px auto; padding: 0 40px"
>
<div class="grid-container">
<!-- 股票信息卡片 -->
<div class="info-card stock-card">
<h2 class="card-title">{{ $t("HOME.CONTAINY.STOCK_INFO.TITLE") }}</h2>
<div class="stock-data">
<div class="data-row">
<span style="font-size: 18px" class="data-label"> Time </span>
<span style="font-size: 18px" class="data-value">{{
formatted
}}</span>
</div>
<div class="data-row">
<span style="font-size: 18px" class="data-label">{{
$t("HOME.CONTAINY.STOCK_INFO.LAST_PRICE")
}}</span>
<span style="font-size: 18px" class="data-value"
>${{ stockQuote.price }}</span
>
</div>
<div class="data-row">
<span style="font-size: 18px" class="data-label">{{
$t("HOME.CONTAINY.STOCK_INFO.CHANGE")
}}</span>
<span style="font-size: 18px" class="data-value positive">{{
stockQuote.change || "--"
}}</span>
</div>
<div class="data-row">
<span style="font-size: 18px" class="data-label">{{
$t("HOME.CONTAINY.STOCK_INFO.STOCK_CODE")
}}</span>
<span style="font-size: 18px" class="data-value"
>NASDAQ: MINM</span
>
</div>
<div class="data-row">
<span style="font-size: 18px" class="data-label">{{
$t("HOME.CONTAINY.STOCK_INFO.VOLUME")
}}</span>
<span style="font-size: 18px" class="data-value">{{
stockQuote.volume
}}</span>
</div>
<div class="data-row">
<span style="font-size: 18px" class="data-label">{{
$t("HOME.CONTAINY.STOCK_INFO.MARKET_CAP")
}}</span>
<span style="font-size: 18px" class="data-value"
>${{ stockQuote.marketCap }}</span
>
</div>
</div>
</div>
<!-- 活动预告卡片 -->
<div class="info-card events-card">
<h2 class="card-title">
{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.TITLE") }}
</h2>
<div class="event-item">
<!-- <h3 class="event-name">
{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.EVENT_NAME") }}
</h3> -->
<!-- <div class="event-detail">
<div class="detail-row">
<i class="icon-calendar"></i>
<span
>{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.DATE") }}:
2025年8月12日(二)-2025年8月14日</span
>
</div>
<div class="detail-row">
<i class="icon-location"></i>
<span
>{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.VENUE") }}:
6号馆B厅</span
>
</div>
<div class="detail-row">
<i class="icon-area"></i>
<span
>{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.AREA") }}:
约10,000m²</span
>
</div>
<div class="detail-row">
<i class="icon-booth"></i>
<span
>{{ $t("HOME.CONTAINY.UPCOMING_EVENTS.BOOTHS") }}:
约500个标准展位</span
>
</div>
</div> -->
</div>
</div>
</div>
</section>
</div>
</template>
<script setup>
import { onMounted, ref, onUnmounted, computed } from "vue";
import { useI18n } from "vue-i18n";
import { useStockQuote } from "@/store/stock-quote/index.js";
const { getStockQuate, stockQuote, formatted } = useStockQuote();
getStockQuate();
const { t: $t } = useI18n();
const contentRef = ref(null);
const isInView = ref(false);
let observer = null;
const newList = ref([
{
time: "May 30, 2025 EDT",
title: "FiEE, Inc. Announces Reinitiation of Trading on Nasdaq",
router: "/news",
},
{
time: "2 June, 2025",
title: "FiEE, Inc. Closes Its First Day of Trading on NASDAQ",
router: "/news",
},
]);
onMounted(() => {
if (contentRef.value && "IntersectionObserver" in window) {
observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
isInView.value = true;
// 可选:只触发一次动画
// observer.unobserve(entry.target);
}
});
},
{
root: null,
threshold: 0.1, // 元素进入视口10%时触发
rootMargin: "0px 0px -50px 0px", // 提前50px触发
}
);
observer.observe(contentRef.value);
} else {
// 回退方案如果不支持IntersectionObserver则直接显示
isInView.value = true;
}
});
onUnmounted(() => {
if (observer) {
observer.disconnect();
}
});
import { useRouter } from "vue-router";
const router = useRouter();
const handleLink = (routers, index) => {
router.push({
path: routers,
query: {
data: index,
},
});
};
</script>
<style scoped>
.home-page {
background-image: url("@/assets/image/bg-mobile.png");
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
}
.hero-banner {
height: 600px;
display: flex;
align-items: center;
justify-content: center;
}
/* 顶部大图区域 */
.hero-section {
background: linear-gradient(135deg, #1a2a6c, #895bff, #fdbb2d);
background-size: 400% 400%;
animation: gradientBG 15s ease infinite;
color: white;
padding: 40px 20px;
text-align: left;
margin-bottom: 60px;
border-radius: 8px;
}
/* 动画 */
@keyframes gradientBG {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
.banner-content {
text-align: center;
color: white;
padding: 20px;
background: rgba(0, 0, 0, 0.3);
border-radius: 8px;
}
.main-title {
font-size: 3.5rem;
margin-bottom: 20px;
}
.sub-title {
font-size: 1.5rem;
}
.section-card {
padding: 40px;
border-radius: 12px;
}
.card-content {
font-size: 1.1rem;
line-height: 1.8;
}
.section-title {
font-size: 1.5rem; /* 18px */
margin-bottom: 30px;
color: #895bff;
}
.section-titles {
font-size: 2.5rem;
margin-bottom: 30px;
color: black;
}
.content-block {
font-size: 1.1rem;
line-height: 1.8;
}
.content-blocks {
font-size: 2rem;
color: #fff;
font-weight: bold;
opacity: 0;
transform: translateX(-200px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.content-blocks.slide-in {
opacity: 1;
transform: translateX(0);
}
.mission-content ul {
list-style: disc;
padding-left: 20px;
font-size: 1.1rem;
}
.milestones {
font-size: 1.1rem;
}
.milestone-item {
margin-bottom: 40px;
padding: 20px;
border-left: 3px solid #895bff;
background: #f8fafc;
}
.milestone-item h3 {
font-size: 1.5rem;
margin-bottom: 10px;
color: #895bff;
}
.milestone-item ul {
list-style: none;
padding-left: 0;
}
.milestone-item li {
margin-bottom: 10px;
}
.achievements {
padding: 40px;
border-radius: 12px;
}
/* 新增样式 */
.dual-column-section {
margin-bottom: 80px;
}
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
}
.info-card {
background: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.info-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
}
.card-title {
font-size: 2.5rem;
margin-bottom: 25px;
color: #333;
position: relative;
padding-bottom: 10px;
}
.card-title::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 60px;
height: 3px;
background: linear-gradient(90deg, #121212, #232330);
}
/* 股票信息卡片样式 */
.stock-card {
border-top: 4px solid #895bff;
}
.stock-data {
margin-bottom: 25px;
}
.data-row {
display: flex;
justify-content: space-between;
padding: 12px 0;
border-bottom: 1px solid #f0f0f0;
}
.data-label {
color: #666;
font-weight: 500;
font-size: 18px;
}
.data-value {
font-weight: 600;
font-size: 18px;
}
.positive {
color: #895bff;
}
.stock-chart-placeholder {
height: 200px;
background: #f8fafc;
border-radius: 8px;
margin-top: 20px;
position: relative;
overflow: hidden;
}
.chart-mock {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 80%;
background: linear-gradient(90deg, #e0e7ff, #c7d2fe);
border-radius: 0 0 8px 8px;
}
/* 活动预告卡片样式 */
.events-card {
border-top: 4px solid #10b981;
}
.event-item {
margin-bottom: 20px;
}
.event-name {
font-size: 1.4rem;
color: #333;
margin-bottom: 15px;
}
.detail-row {
display: flex;
align-items: center;
margin-bottom: 12px;
color: #555;
}
.detail-row i {
margin-right: 10px;
color: #895bff;
font-size: 1.2rem;
}
.event-button {
background: linear-gradient(135deg, #895bff, #6a11cb);
color: white;
border: none;
padding: 12px 24px;
border-radius: 6px;
font-weight: 600;
cursor: pointer;
margin-top: 20px;
transition: all 0.3s ease;
}
.event-button:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(137, 91, 255, 0.3);
}
/* 新闻模块样式 */
.news-section {
margin-bottom: 80px;
}
.news-card {
background: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05);
border-left: 4px solid #895bff;
}
.news-date {
color: #888;
font-size: 0.9rem;
margin-bottom: 10px;
}
.news-title {
font-size: 1.5rem;
color: #333;
margin-bottom: 15px;
}
.news-excerpt {
color: black;
line-height: 0.8;
margin-bottom: 20px;
font-size: 18px;
}
.news-link {
color: #895bff;
font-weight: 600;
text-decoration: none;
display: inline-flex;
align-items: center;
}
.news-link:hover {
text-decoration: underline;
}
/* 响应式设计 */
@media (max-width: 768px) {
.grid-container {
grid-template-columns: 1fr;
}
.hero-banner {
height: 400px;
}
.main-title {
font-size: 2.5rem;
}
}
</style>