This commit is contained in:
hrx 2026-07-10 16:29:46 +08:00
parent 6ae38e2e11
commit 3f149a6367
9 changed files with 772 additions and 12 deletions

View File

@ -91,7 +91,7 @@
"eslint-plugin-vue": "6.2.2",
"html-webpack-plugin": "3.2.0",
"husky": "1.3.1",
"less": "^3.9.0",
"less": "^3.13.1",
"less-loader": "^4.1.0",
"lint-staged": "8.1.5",
"mockjs": "1.0.1-beta3",

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -0,0 +1,517 @@
.news-view-page {
position: relative;
min-height: 100vh;
overflow-x: hidden;
color: #1f2937;
background:
radial-gradient(circle at 78% 18%, rgba(236, 72, 153, 0.07) 0%, rgba(236, 72, 153, 0) 32%),
radial-gradient(circle at 18% 16%, rgba(59, 130, 246, 0.12) 0%, rgba(59, 130, 246, 0) 36%),
linear-gradient(180deg, #f2f8ff 0%, #f6fbff 36%, #fbfdff 62%, #f5f8ff 100%);
}
.news-shell {
position: relative;
z-index: 1;
max-width: 1280px;
margin: 0 auto;
padding: 0 24px;
}
.orb {
position: fixed;
z-index: 0;
border-radius: 50%;
filter: blur(110px);
opacity: 0.18;
pointer-events: none;
}
.orb-1 {
top: -100px;
left: -100px;
width: 400px;
height: 400px;
background: #3b82f6;
animation: float1 20s ease-in-out infinite;
}
.orb-2 {
right: -150px;
bottom: -150px;
width: 500px;
height: 500px;
background: #3b82f6;
animation: float2 25s ease-in-out infinite;
}
.orb-3 {
top: 50%;
left: 50%;
width: 300px;
height: 300px;
background: #ec4899;
opacity: 0.12;
animation: float3 18s ease-in-out infinite;
}
.news-hero {
position: relative;
padding: 140px 0 72px;
overflow: hidden;
}
.news-hero::before {
position: absolute;
inset: 0;
z-index: 0;
content: '';
// background:
// linear-gradient(135deg, rgba(99,102,241,0.055) 0%, rgba(168,85,247,0.04) 50%, rgba(236,72,153,0.025) 100%),
// linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.62) 100%);
}
.news-hero-glow {
position: absolute;
z-index: 0;
border-radius: 50%;
}
.news-hero-glow-1 {
top: -60px;
right: -100px;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(139,92,246,0.09) 0%, transparent 72%);
}
.news-hero-glow-2 {
bottom: -80px;
left: -120px;
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(59,130,246,0.08) 0%, transparent 72%);
}
.hero-content {
animation: fadeInUp 0.8s ease-out forwards;
}
.hero-badge {
display: inline-block;
padding: 6px 16px;
margin-bottom: 24px;
color: #6366f1;
font-size: 13px;
font-weight: 600;
background: rgba(99, 102, 241, 0.1);
border-radius: 50px;
}
.hero-title-row {
display: flex;
gap: 20px;
align-items: baseline;
margin-bottom: 14px;
}
.hero-title-row h1 {
margin: 0;
color: #1a1a1a;
font-size: 56px;
font-weight: 700;
line-height: 1.2;
}
.about-link {
padding: 0;
color: #6b7280;
font-size: 16px;
white-space: nowrap;
cursor: pointer;
background: transparent;
border: 0;
transition: color 0.2s;
}
.about-link:hover {
color: #2563eb;
}
.hero-content p {
max-width: 600px;
margin: 0;
color: #6b7280;
font-size: 18px;
line-height: 1.8;
}
.filter-section {
padding: 8px 0 34px;
}
.filter-tabs {
display: inline-flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
padding: 8px;
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(226, 232, 240, 0.82);
border-radius: 999px;
box-shadow: 0 12px 34px rgba(31, 45, 61, 0.06);
backdrop-filter: blur(14px);
}
.filter-tab {
min-width: 86px;
min-height: 40px;
padding: 10px 24px;
color: #6b7280;
font-size: 15px;
font-weight: 600;
cursor: pointer;
background: transparent;
border: 1px solid transparent;
border-radius: 50px;
transition: all 0.3s ease;
}
.filter-tab:hover {
color: #1a1a1a;
background: #f3f4f6;
}
.filter-tab.active {
color: #fff;
background: #1a1a1a;
border-color: #1a1a1a;
box-shadow: 0 8px 18px rgba(17, 24, 39, 0.16);
}
.featured-section {
padding-bottom: 52px;
}
.news-featured,
.news-item {
position: relative;
overflow: hidden;
cursor: pointer;
background: #fff;
border: 1px solid rgba(0, 0, 0, 0.04);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.news-featured {
border-radius: 24px;
}
.hover-detail {
position: absolute;
top: 18px;
right: 18px;
z-index: 5;
display: inline-flex;
gap: 4px;
align-items: center;
height: 32px;
padding: 0 14px;
color: #fff;
font-size: 13px;
font-weight: 600;
line-height: 32px;
pointer-events: none;
background: rgba(17, 24, 39, 0.72);
border: 1px solid rgba(255, 255, 255, 0.22);
border-radius: 999px;
opacity: 0;
transform: translateY(-6px);
transition: all 0.24s ease;
backdrop-filter: blur(10px);
}
.news-featured:hover .hover-detail,
.news-item:hover .hover-detail {
opacity: 1;
transform: translateY(0);
}
.news-featured:hover,
.news-item:hover {
border-color: rgba(99, 102, 241, 0.15);
box-shadow: 0 20px 60px rgba(99, 102, 241, 0.12), 0 8px 24px rgba(0, 0, 0, 0.06);
}
.news-featured:hover {
transform: translateY(-4px);
}
.news-item:hover {
transform: translateY(-6px);
}
.news-featured-inner {
display: grid;
grid-template-columns: 1fr 2fr;
min-height: 180px;
}
.news-featured-img,
.news-item-img {
position: relative;
overflow: hidden;
}
.news-featured-img img,
.news-item-img img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
.news-featured:hover img,
.news-item:hover img {
transform: scale(1.04);
}
.news-featured-body {
display: flex;
flex-direction: column;
justify-content: center;
padding: 24px 40px;
}
.news-featured-date {
margin-bottom: 16px;
color: #9ca3af;
font-size: 14px;
}
.category-pill {
display: inline-block;
padding: 4px 12px;
margin-right: 8px;
color: #fff;
font-size: 12px;
font-weight: 600;
border-radius: 20px;
}
.news-featured h2 {
margin: 0 0 16px;
color: #1a1a1a;
font-size: 22px;
font-weight: 700;
line-height: 1.4;
transition: color 0.3s;
}
.news-featured p {
margin: 0 0 24px;
color: #6b7280;
font-size: 15px;
line-height: 1.8;
}
.news-featured:hover h2,
.news-item:hover h3 {
color: #4f46e5;
}
.news-list-section {
padding-bottom: 60px;
}
.news-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 32px;
}
.news-item {
border-radius: 20px;
animation: fadeInUp 0.8s ease-out forwards;
}
.news-item-img {
width: 100%;
height: 220px;
}
.news-item-img-overlay {
position: absolute;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
height: 60%;
background: linear-gradient(to top, rgba(0, 0, 0, 0.4), transparent);
}
.news-item-tag {
position: absolute;
top: 16px;
left: 16px;
z-index: 2;
padding: 4px 12px;
color: #fff;
font-size: 12px;
font-weight: 600;
border-radius: 20px;
backdrop-filter: blur(8px);
}
.news-item-body {
padding: 24px;
}
.news-item-date {
margin-bottom: 10px;
color: #9ca3af;
font-size: 13px;
}
.news-item h3 {
display: -webkit-box;
margin: 0 0 10px;
overflow: hidden;
color: #1a1a1a;
font-size: 18px;
font-weight: 700;
line-height: 1.5;
line-clamp: 2;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
transition: color 0.3s;
}
.news-item p {
display: -webkit-box;
margin: 0;
overflow: hidden;
color: #6b7280;
font-size: 14px;
line-height: 1.7;
line-clamp: 3;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.news-item-glow {
position: absolute;
top: 0;
left: 0;
z-index: 0;
width: 100%;
height: 100%;
pointer-events: none;
background: radial-gradient(circle at 50% 50%, rgba(139, 92, 246, 0.1) 0%, rgba(59, 130, 246, 0.06) 30%, transparent 70%);
opacity: 0;
transition: opacity 0.5s ease;
}
.news-item:hover .news-item-glow,
.news-featured:hover .news-item-glow {
opacity: 1;
}
.pagination {
display: flex;
gap: 8px;
align-items: center;
justify-content: center;
margin-top: 48px;
}
.pagination-btn {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
color: #6b7280;
font-size: 14px;
font-weight: 500;
cursor: pointer;
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 10px;
transition: all 0.2s ease;
}
.pagination-btn:hover {
color: #6366f1;
border-color: #6366f1;
}
.pagination-btn.active {
color: #fff;
background: #1a1a1a;
border-color: #1a1a1a;
}
@keyframes float1 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(50px, -50px) scale(1.1); }
66% { transform: translate(-30px, 30px) scale(0.9); }
}
@keyframes float2 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(-60px, 40px) scale(1.15); }
66% { transform: translate(40px, -60px) scale(0.85); }
}
@keyframes float3 {
0%, 100% { transform: translate(-50%, -50%) scale(1); }
50% { transform: translate(-30%, -70%) scale(1.2); }
}
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(30px); }
to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 1024px) {
.news-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 768px) {
.news-hero {
padding: 120px 0 56px;
}
.hero-title-row {
flex-direction: column;
gap: 10px;
align-items: flex-start;
}
.filter-tabs {
display: flex;
border-radius: 20px;
}
.filter-tab {
min-width: auto;
padding: 8px 16px;
font-size: 14px;
}
.news-featured-inner,
.news-grid {
grid-template-columns: 1fr;
}
.news-featured-img {
height: 220px;
}
.news-featured-body {
padding: 24px;
}
}

View File

@ -631,7 +631,7 @@ export default {
<style scoped lang="scss">
.message-center-wrapper {
position: relative;
z-index: 10000;
z-index:999999999999999999999!important;
}
.drawer, .drawerMobile {

View File

@ -407,6 +407,13 @@ export const constantRoutes = [
hidden: true,
meta: { title: "详情", onCache: true },
},
{
path: "news",
component: () => import("@/views/homePage/news/newsView.vue"),
name: "homePageNews",
hidden: true,
meta: { title: "企业动态", onCache: true },
},
{
path: "new",
component: () => import("@/views/homePage/components/topBox/new/index.vue"),

View File

@ -282,7 +282,7 @@ export default Vue.extend({
{ action: 'trainPlatform' },
{ action: 'agentStore' },
{ action: 'supplySquare' },
{ action: 'about' }
// { action: 'about' }
]
}
},
@ -327,7 +327,7 @@ export default Vue.extend({
trainPlatform: isEn ? 'Train & Infer' : '训推平台',
agentStore: isEn ? 'Agent Store' : '智能体商店',
supplySquare: isEn ? 'Supply Square' : '供需广场',
about: isEn ? 'About Us' : '关于我们'
// about: isEn ? 'About Us' : ''
}
return this.productMenuItems.map(item => ({ ...item, label: labels[item.action] || item.action }))
},
@ -793,7 +793,7 @@ export default Vue.extend({
top: 0;
left: 0;
right: 0;
z-index: 12000;
z-index: 1000;
width: 100%;
height: 82px;
padding: 0 42px;
@ -969,7 +969,7 @@ export default Vue.extend({
top: 100%;
left: 50%;
transform: translateX(-50%);
z-index: 12001;
z-index: 1001;
display: flex;
}

View File

@ -122,7 +122,7 @@
<div class="news-inner">
<div class="news-head">
<h2 class="section-title">{{ $t('home.companyNewsTitle') }}</h2>
<button type="button" class="case-more">{{ $t('home.viewMore') }}</button>
<button type="button" class="case-more" @click="goNews">{{ $t('home.viewMore') }}</button>
</div>
<div class="news-list">
@ -440,7 +440,7 @@ export default {
this.navigateTo('/homePage/agentStore')
},
goNews() {
this.navigateTo('/homePage/new')
this.navigateTo('/homePage/news')
},

View File

@ -0,0 +1,236 @@
<template>
<div class="news-view-page">
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<div class="orb orb-3"></div>
<section class="news-hero">
<div class="news-hero-glow news-hero-glow-1"></div>
<div class="news-hero-glow news-hero-glow-2"></div>
<div class="news-shell">
<div class="hero-content">
<span class="hero-badge">COMPANY NEWS</span>
<div class="hero-title-row">
<h1>企业动态</h1>
<button type="button" class="about-link" @click="goAbout">关于我们 </button>
</div>
<p>了解开元云最新动态把握AI行业前沿资讯与我们一起见证智能跃迁</p>
</div>
</div>
</section>
<section class="filter-section">
<div class="news-shell">
<div class="filter-tabs">
<button
v-for="item in filterTabs"
:key="item.value"
type="button"
class="filter-tab"
:class="{ active: activeCategory === item.value }"
@click="activeCategory = item.value"
>
{{ item.label }}
</button>
</div>
</div>
</section>
<section class="featured-section">
<div class="news-shell">
<article v-if="featuredNews" class="news-featured">
<div class="news-item-glow"></div>
<span class="hover-detail">详情 <i class="el-icon-arrow-right"></i></span>
<div class="news-featured-inner">
<div class="news-featured-img">
<img :src="featuredNews.img || fallbackNewsImage" :alt="featuredNews.title">
</div>
<div class="news-featured-body">
<div class="news-featured-date">
<span class="category-pill" :style="{ background: featuredNews.tagColor }">{{ featuredNews.tag }}</span>
{{ featuredNews.date }}
</div>
<h2>{{ featuredNews.title }}</h2>
<p>{{ featuredNews.desc }}</p>
</div>
</div>
</article>
</div>
</section>
<section class="news-list-section">
<div class="news-shell">
<div class="news-grid">
<article
v-for="(item, index) in filteredNewsList"
:key="item.id"
class="news-item"
:style="{ animationDelay: `${(index + 1) * 0.08}s` }"
>
<div class="news-item-glow"></div>
<span class="hover-detail">详情 <i class="el-icon-arrow-right"></i></span>
<div class="news-item-img">
<img :src="item.img || fallbackNewsImage" :alt="item.title">
<div class="news-item-img-overlay"></div>
<span class="news-item-tag" :style="{ background: item.tagColor }">{{ item.tag }}</span>
</div>
<div class="news-item-body">
<div class="news-item-date">{{ item.date }}</div>
<h3>{{ item.title }}</h3>
<p>{{ item.desc }}</p>
</div>
</article>
</div>
<div class="pagination">
<button type="button" class="pagination-btn"><i class="el-icon-arrow-left"></i></button>
<button type="button" class="pagination-btn active">1</button>
<button type="button" class="pagination-btn">2</button>
<button type="button" class="pagination-btn">3</button>
<button type="button" class="pagination-btn"><i class="el-icon-arrow-right"></i></button>
</div>
</div>
</section>
</div>
</template>
<script>
export default {
name: 'NewsView',
data() {
return {
fallbackNewsImage: require('@/assets/image/news.jpg'),
activeCategory: 'all',
filterTabs: [
{ label: '全部', value: 'all' },
{ label: '企业动态', value: 'company' },
{ label: '产品动态', value: 'product' },
{ label: '行业洞察', value: 'industry' },
{ label: '活动资讯', value: 'event' }
],
newsList: [
{
id: 0,
category: 'company',
tag: '企业动态',
tagColor: 'rgba(16,185,129,0.85)',
date: '2026.6.15',
title: '开元云随贸促会走访东盟',
desc: '开元云科技随贸促会广西分会经贸代表团密集出访越南、老挝,深度参与中国-东盟经贸合作以AI技术赋能区域产业升级推动智能体工厂落地东南亚市场。',
img: '',
featured: true,
content: '<p>开元云科技随贸促会广西分会经贸代表团密集出访越南、老挝,深度参与中国-东盟经贸合作。</p><p>在此次出访中开元云向东南亚市场全面展示了AI智能体工厂的工业级交付能力涵盖智慧工程、智能运维、能源管理等多个核心领域的技术方案。</p><p>此次东盟之行标志着开元云正式开启东南亚市场战略布局未来将持续深化与东盟各国在AI领域的合作以技术赋能区域产业升级。</p>'
},
{
id: 1,
category: 'company',
tag: '企业动态',
tagColor: 'rgba(16,185,129,0.85)',
date: '2026.05.17',
title: '开元云荣登福布斯中国人工智能商业落地示范企业',
desc: '凭借AI智能体工厂的工业级交付能力与央国企标杆案例开元云入选福布斯中国人工智能商业落地示范企业成为行业AI落地标杆。',
content: '<p>凭借AI智能体工厂的工业级交付能力与央国企标杆案例开元云入选福布斯中国人工智能商业落地示范企业。</p><p>此次评选从技术实力、商业落地、行业影响力等多维度综合评估,开元云凭借智能体工厂产品创新力成功跻身示范企业榜单。</p>'
},
{
id: 2,
category: 'product',
tag: '产品动态',
tagColor: 'rgba(99,102,241,0.85)',
date: '2026.05.10',
title: '智能体工厂2.0正式发布全面升级AI交付能力',
desc: '开元云智能体工厂2.0版本重磅上线新增多智能体协同编排、可视化工作流设计等核心功能AI应用交付效率提升300%。',
content: '<p>开元云智能体工厂2.0版本重磅上线,新增多智能体协同编排、可视化工作流设计等核心功能。</p><p>2.0版本支持复杂业务场景的智能体协作、拖拽式工作流构建和增强的文档智能处理能力。</p>'
},
{
id: 3,
category: 'industry',
tag: '行业洞察',
tagColor: 'rgba(13,148,136,0.85)',
date: '2026.04.28',
title: '2026年AI+能源行业趋势:从预测性维护到智能调度',
desc: 'AI技术正在重塑能源行业从发电设备的预测性维护到电网智能调度开元云深度解析行业变革趋势与落地实践。',
content: '<p>AI技术正在重塑能源行业从发电设备的预测性维护到电网智能调度行业正在进入智能化深水区。</p><p>基于机器视觉和传感器数据融合的预测性维护方案已在火电、风电领域广泛应用。</p>'
},
{
id: 4,
category: 'event',
tag: '活动资讯',
tagColor: 'rgba(245,158,11,0.85)',
date: '2026.04.15',
title: '开元云亮相2026中国人工智能大会',
desc: '开元云受邀出席2026中国人工智能大会现场展示智能体工厂最新技术成果与行业领袖共话AI产业化新路径。',
content: '<p>开元云受邀出席2026中国人工智能大会现场展示智能体工厂最新技术成果。</p><p>在大会主论坛上开元云系统阐述了AI技术从实验创新到工业级交付的方法论。</p>'
},
{
id: 5,
category: 'company',
tag: '企业动态',
tagColor: 'rgba(16,185,129,0.85)',
date: '2026.03.22',
title: '开元云与南宁林业局达成智慧林业战略合作',
desc: '开元云携手南宁林业局打造林业空间采伐智审系统融合GIS空间分析、卫星遥感等多源数据审批周期从数天压缩至分钟级。',
img: '',
content: '<p>开元云携手南宁林业局打造林业空间采伐智审系统融合GIS空间分析、卫星遥感等多源数据。</p><p>项目上线后,采伐审批效率显著提升,成为智慧林业标杆案例。</p>'
},
{
id: 6,
category: 'product',
tag: '产品动态',
tagColor: 'rgba(236,72,153,0.85)',
date: '2026.03.08',
title: '机器视觉检测平台升级,支持工业质检全场景覆盖',
desc: '开元云机器视觉检测平台全面升级,新增缺陷分类、尺寸测量、表面检测三大能力模块,覆盖制造业全场景质检需求。',
content: '<p>开元云机器视觉检测平台全面升级,新增缺陷分类、尺寸测量、表面检测三大能力模块。</p><p>该平台已在汽车零部件、3C电子、半导体封装等行业完成部署。</p>'
},
{
id: 7,
category: 'industry',
tag: '行业洞察',
tagColor: 'rgba(37,99,235,0.85)',
date: '2026.02.20',
title: 'AI+教育:大模型如何重构个性化学习路径',
desc: '从知识图谱构建到学习路径智能推荐大模型正在从根本上改变教育模式。开元云分享AI+教育的最新落地实践与思考。',
content: '<p>从知识图谱构建到学习路径智能推荐,大模型正在从根本上改变教育模式。</p><p>基于大模型的自适应学习系统可以实时评估学习者知识掌握程度,动态调整学习路径。</p>'
},
{
id: 8,
category: 'event',
tag: '活动资讯',
tagColor: 'rgba(124,58,237,0.85)',
date: '2026.02.05',
title: '开元云荣获2025年度AI创新企业TOP50',
desc: '在2025年度人工智能创新企业评选中开元云凭借卓越的技术创新能力和丰富的行业落地经验成功入选AI创新企业TOP50。',
content: '<p>在2025年度人工智能创新企业评选中开元云凭借卓越的技术创新能力和丰富的行业落地经验成功入选。</p>'
},
{
id: 9,
category: 'company',
tag: '企业动态',
tagColor: 'rgba(234,88,12,0.85)',
date: '2026.01.18',
title: '开元云完成B轮融资加速AI智能体产业布局',
desc: '开元云科技宣布完成B轮融资融资金额将用于加速AI智能体工厂产品研发、行业解决方案深化及海外市场拓展。',
content: '<p>开元云科技宣布完成B轮融资融资金额将用于加速AI智能体工厂产品研发、行业解决方案深化及海外市场拓展。</p>'
}
]
}
},
computed: {
featuredNews() {
return this.newsList.find(item => item.featured)
},
filteredNewsList() {
return this.newsList.filter(item => !item.featured && (this.activeCategory === 'all' || item.category === this.activeCategory))
}
},
methods: {
goAbout() {
this.$router.push('/homePage/about')
}
}
}
</script>
<style scoped lang="less">
@import url('../../../assets/less/news/news.less');
</style>

View File

@ -32,9 +32,9 @@
<el-form-item label="手机号">
<el-input v-model.trim="queryForm.phone" size="small" clearable placeholder="请输入手机号" @keyup.enter.native="handleSearch" />
</el-form-item>
<el-form-item label="邮箱">
<!-- <el-form-item label="邮箱">
<el-input v-model.trim="queryForm.email" size="small" clearable placeholder="请输入邮箱" @keyup.enter.native="handleSearch" />
</el-form-item>
</el-form-item> -->
<el-form-item label="渠道来源">
<el-select v-model="queryForm.source" size="small" clearable placeholder="全部渠道">
<el-option label="全部渠道" value="" />
@ -238,7 +238,7 @@
@close="saveRemarkOnClose"
>
<div class="remark-content">
<label class="remark-label">备注内容</label>
<el-input
v-model.trim="remarkText"
type="textarea"
@ -801,7 +801,7 @@ export default {
.detail-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 28px 72px;
gap: 0px 72px;
}
.detail-item {