首页更新
This commit is contained in:
parent
15bd988891
commit
19b9cf3cfd
@ -18,19 +18,80 @@ export default {
|
||||
switchEnSuccess: 'Switched to English'
|
||||
},
|
||||
home: {
|
||||
heroTitle: 'One Platform, Across All Industries',
|
||||
heroSubtitle: 'Intelligent Leap',
|
||||
heroSlogan: 'Making AI Everywhere, Make AI Easy',
|
||||
heroTitle: 'One Platform ● Intelligent Leap ● Across All Industries.',
|
||||
heroSubtitle: '',
|
||||
heroSlogan: 'Make AI Everywhere, Make AI Easy',
|
||||
solutionsBtn: 'Solutions',
|
||||
contactSalesBtn: 'Contact Sales',
|
||||
aiSolutionsTitle: 'AI + Solutions',
|
||||
successCasesTitle: 'Success Stories',
|
||||
moreCases: 'View More Cases',
|
||||
successCasesTitle: 'Use Cases',
|
||||
moreCases: 'View All Use Cases →',
|
||||
ctaTitle: 'How Do These Solutions Work in Practice?',
|
||||
ctaDesc: 'Get industry-specific AI solutions.',
|
||||
contactUsArrow: 'Contact Us →',
|
||||
companyNewsTitle: 'Company News',
|
||||
viewMore: 'View More →'
|
||||
viewMore: 'View More →',
|
||||
footerProducts: 'Products & Services',
|
||||
footerContact: 'Contact Us',
|
||||
onlineChat: 'Online Chat',
|
||||
solutionCards: {
|
||||
collaboration: {
|
||||
title: 'Collaborative Intelligence',
|
||||
subtitle: 'Multi-Agent Coordination'
|
||||
},
|
||||
spatial: {
|
||||
title: 'Spatial Intelligence',
|
||||
subtitle: 'GIS Smart Analysis'
|
||||
},
|
||||
predictive: {
|
||||
title: 'Predictive Insight',
|
||||
subtitle: 'Intelligent Forecasting Engine'
|
||||
},
|
||||
vision: {
|
||||
title: 'Microscopic Insight',
|
||||
subtitle: 'Machine Vision Inspection'
|
||||
},
|
||||
qa: {
|
||||
title: 'Instant Answers',
|
||||
subtitle: 'Intelligent Q&A Knowledge Base'
|
||||
},
|
||||
protection: {
|
||||
title: 'Continuous Protection',
|
||||
subtitle: 'Intelligent Device Monitoring'
|
||||
},
|
||||
document: {
|
||||
title: 'Document Intelligence',
|
||||
subtitle: 'Smart Document Parsing'
|
||||
},
|
||||
edge: {
|
||||
title: 'Edge Intelligence',
|
||||
subtitle: 'Edge AI Inference'
|
||||
}
|
||||
},
|
||||
cases: {
|
||||
railway: {
|
||||
name: 'China Railway Group · AI Industry Bidding Agent Engine',
|
||||
title: 'Smart Engineering',
|
||||
desc: 'AI-Powered Bidding Process'
|
||||
},
|
||||
forestry: {
|
||||
name: 'Nanning Forestry Bureau · Smart Harvesting',
|
||||
title: 'Smart Harvesting',
|
||||
desc: 'AI-Powered Forestry Spatial Intelligence Review'
|
||||
},
|
||||
beigang: {
|
||||
name: 'AI Empowerment · Beibu Gulf Big Data',
|
||||
title: 'Digital & Intelligent Upgrade',
|
||||
desc: 'Three Core AI Agent Platforms'
|
||||
}
|
||||
},
|
||||
news: {
|
||||
tag: 'Company News',
|
||||
firstTitle: 'Open Computing AI Visits ASEAN with CCPIT',
|
||||
firstDesc: 'Open Computing AI joined the CCPIT Guangxi branch delegation on business visits to Vietnam and Laos, where it engaged in deep discussions on AI agent deployment, cross-border digital infrastructure cooperation, and smart city solutions — further expanding its footprint in Southeast Asian markets.',
|
||||
secondTitle: 'Open Computing AI Named Forbes China AI Commercial Application Demonstration Enterprise',
|
||||
secondDesc: 'Recognized for its industrial-grade AI agent factory delivery capabilities and benchmark cases among central and state-owned enterprises, Open Computing AI was named a Forbes China AI Commercial Application Demonstration Enterprise — underscoring its leadership in turning AI technology into scalable, real-world industry solutions.'
|
||||
}
|
||||
},
|
||||
...autoMessages
|
||||
}
|
||||
|
||||
@ -30,7 +30,68 @@ export default {
|
||||
ctaDesc: '获取行业专属 AI 解决方案',
|
||||
contactUsArrow: '联系我们 →',
|
||||
companyNewsTitle: '企业动态',
|
||||
viewMore: '查看更多 →'
|
||||
viewMore: '查看更多 →',
|
||||
footerProducts: '产品服务',
|
||||
footerContact: '联系我们',
|
||||
onlineChat: '在线咨询',
|
||||
solutionCards: {
|
||||
collaboration: {
|
||||
title: '群智协作',
|
||||
subtitle: '多智能体协同'
|
||||
},
|
||||
spatial: {
|
||||
title: '空间觉醒',
|
||||
subtitle: 'GIS智能分析'
|
||||
},
|
||||
predictive: {
|
||||
title: '先见一步',
|
||||
subtitle: '智能预测引擎'
|
||||
},
|
||||
vision: {
|
||||
title: '洞察入微',
|
||||
subtitle: '机器视觉检测'
|
||||
},
|
||||
qa: {
|
||||
title: '一问即达',
|
||||
subtitle: '智能问答知识库'
|
||||
},
|
||||
protection: {
|
||||
title: '全程守护',
|
||||
subtitle: '设备智能监控'
|
||||
},
|
||||
document: {
|
||||
title: '触文即懂',
|
||||
subtitle: '智能文档解析'
|
||||
},
|
||||
edge: {
|
||||
title: '端侧即算',
|
||||
subtitle: '边缘AI推理'
|
||||
}
|
||||
},
|
||||
cases: {
|
||||
railway: {
|
||||
name: '中国中铁 · 慧投标智能体',
|
||||
title: '智慧工程',
|
||||
desc: 'AI驱动投标全流程,从标书解读到报价编制,中标率提升显著'
|
||||
},
|
||||
forestry: {
|
||||
name: '南宁林业局',
|
||||
title: '智慧采伐',
|
||||
desc: '从采伐审批到科学监管——空间智能融合,让数据真正服务林区治理。'
|
||||
},
|
||||
beigang: {
|
||||
name: '北港大数据',
|
||||
title: 'AI赋能,数智升级',
|
||||
desc: '从投标到决策,从合同到管理——全链路AI智能体,让业务快人一步'
|
||||
}
|
||||
},
|
||||
news: {
|
||||
tag: '企业动态',
|
||||
firstTitle: '开元云随贸促会走访东盟',
|
||||
firstDesc: '开元云科技随贸促会广西分会经贸代表团密集出访越南、老挝,深度参与区域 AI 产业合作与数字经济交流。',
|
||||
secondTitle: '开元云荣登福布斯中国人工智能商业落地示范企业',
|
||||
secondDesc: '凭借 AI 智能体工厂的工业级交付能力与央国企标杆案例,开元云入选福布斯中国人工智能商业落地示范企业。'
|
||||
}
|
||||
},
|
||||
...autoMessages
|
||||
}
|
||||
|
||||
@ -289,6 +289,11 @@ var onOverflow = ["/shoppingManagement", "/supplierManagement"];
|
||||
|
||||
// 修复:在路由守卫中恢复用户状态和重新生成路由
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
if (to.path === '/login' || to.path.startsWith('/login/')) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
|
||||
// 清空面包屑状态的代码
|
||||
// store.commit('tagsView/resetBreadcrumbState');
|
||||
|
||||
@ -351,78 +356,6 @@ window.addEventListener('beforeunload', function () {
|
||||
Object.keys(filters).forEach(key => {
|
||||
Vue.filter(key, filters[key])
|
||||
})
|
||||
// 在 main.js 的 router.beforeEach 中添加
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 清空面包屑状态的代码
|
||||
// store.commit('tagsView/resetBreadcrumbState');
|
||||
|
||||
// 新增:检测是否为移动设备
|
||||
// const userAgent = navigator.userAgent;
|
||||
// const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent);
|
||||
|
||||
// // 如果是移动设备且访问的是根路径,重定向到移动端首页
|
||||
// if (isMobile && to.path === '/') {
|
||||
// next('/h5HomePage');
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // 如果是移动设备且访问的不是移动端页面,重定向到移动端首页
|
||||
// if (isMobile && !to.meta?.isMobile && to.path !== '/h5HomePage' && !to.path.startsWith('/h5HomePage/')) {
|
||||
// next('/h5HomePage');
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 如果已登录且有token,但Vuex状态丢失,从sessionStorage恢复
|
||||
if (store.getters.token && (!store.getters.user || !store.getters.userType)) {
|
||||
console.log("检测到状态丢失,从sessionStorage恢复用户状态");
|
||||
|
||||
const user = sessionStorage.getItem('user');
|
||||
const auths = sessionStorage.getItem('auths');
|
||||
const userType = sessionStorage.getItem('userType');
|
||||
const orgType = sessionStorage.getItem('orgType');
|
||||
|
||||
if (user) {
|
||||
store.commit('user/SET_USER', user);
|
||||
}
|
||||
if (auths) {
|
||||
store.commit('user/SET_AUTHS', JSON.parse(auths));
|
||||
}
|
||||
if (userType) {
|
||||
store.commit('user/SET_USER_TYPE', userType);
|
||||
}
|
||||
if (orgType) {
|
||||
store.commit('user/SET_ORG_TYPE', parseInt(orgType));
|
||||
}
|
||||
|
||||
// 重新生成路由
|
||||
try {
|
||||
const accessRoutes = store.dispatch('permission/generateRoutes', {
|
||||
user: store.getters.user,
|
||||
auths: store.getters.auths,
|
||||
userType: store.getters.userType,
|
||||
orgType: store.getters.orgType
|
||||
});
|
||||
|
||||
// 重新添加路由
|
||||
router.addRoutes(accessRoutes);
|
||||
|
||||
// 重定向到当前路由以确保路由更新
|
||||
next({ ...to, replace: true });
|
||||
return;
|
||||
} catch (error) {
|
||||
console.error('重新生成路由失败:', error);
|
||||
}
|
||||
}
|
||||
|
||||
onOverflow.forEach(element => {
|
||||
if (to.path == element) {
|
||||
document.querySelector("body").setAttribute("style", "overflow: auto !important;")
|
||||
}
|
||||
});
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
new Vue({
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -21,7 +21,7 @@
|
||||
|
||||
|
||||
<div class="footer-link-col">
|
||||
<h4 class="footer-col-title">产品服务</h4>
|
||||
<h4 class="footer-col-title">{{ $t('home.footerProducts') }}</h4>
|
||||
<ul class="footer-link-list">
|
||||
<li
|
||||
v-for="item in footerProductServices"
|
||||
@ -36,7 +36,7 @@
|
||||
</div>
|
||||
|
||||
<div class="footer-contact-col">
|
||||
<h4 class="footer-col-title">联系我们</h4>
|
||||
<h4 class="footer-col-title">{{ $t('home.footerContact') }}</h4>
|
||||
<ul class="footer-contact-list">
|
||||
<li>地址:<span>{{ footerHomeInfo.adress }}</span></li>
|
||||
<li>邮箱:<span>{{ footerHomeInfo.email }}</span></li>
|
||||
@ -47,7 +47,7 @@
|
||||
<div class="qr-code">
|
||||
<img src="./img/img.png" alt="">
|
||||
</div>
|
||||
<span class="qr-content">微信客服</span>
|
||||
<span class="qr-content">{{ $t('home.onlineChat') }}</span>
|
||||
</div>
|
||||
<div class="qr-box">
|
||||
<div class="qr-code">
|
||||
@ -370,10 +370,6 @@ export default Vue.extend({
|
||||
transform: translateX(3px);
|
||||
}
|
||||
|
||||
.footer-contact-col {
|
||||
// width: 360px;
|
||||
}
|
||||
|
||||
.footer-contact-list {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<div class="hero-title-row">
|
||||
<h1>{{ $t('home.heroTitle') }}</h1>
|
||||
</div>
|
||||
<h2>{{ $t('home.heroSubtitle') }}</h2>
|
||||
<h2 v-if="$t('home.heroSubtitle')">{{ $t('home.heroSubtitle') }}</h2>
|
||||
<p>{{ $t('home.heroSlogan') }}</p>
|
||||
<div class="hero-actions">
|
||||
<button type="button" class="use-btn">{{ $t('home.solutionsBtn') }}</button>
|
||||
@ -62,7 +62,7 @@
|
||||
</div>
|
||||
<div class="carousel-dots">
|
||||
<button
|
||||
v-for="(item, index) in solutionCards"
|
||||
v-for="(item, index) in localizedSolutionCards"
|
||||
:key="item.title"
|
||||
type="button"
|
||||
:class="{ active: index === currentSolutionIndex }"
|
||||
@ -84,7 +84,7 @@
|
||||
|
||||
<div class="case-grid">
|
||||
<article
|
||||
v-for="item in caseCards"
|
||||
v-for="item in localizedCaseCards"
|
||||
:key="item.title"
|
||||
class="case-card"
|
||||
>
|
||||
@ -127,7 +127,7 @@
|
||||
|
||||
<div class="news-list">
|
||||
<article
|
||||
v-for="(item, index) in newsList"
|
||||
v-for="(item, index) in localizedNewsList"
|
||||
:key="item.title"
|
||||
class="news-card"
|
||||
:class="{ 'news-card-active': index === activeNewsIndex }"
|
||||
@ -228,7 +228,7 @@ export default {
|
||||
{
|
||||
title: '一问即达',
|
||||
subtitle: '智能问答知识库',
|
||||
detailTitle: '智能知识问答',
|
||||
detailTitle: '智能问答知识库',
|
||||
detailSubTitle: '燃机 AI 诊断助手',
|
||||
detailDesc: '融合专家知识库,支持中英文自然语言多轮对话,自动生成诊断建议。',
|
||||
metrics: [
|
||||
@ -337,15 +337,62 @@ export default {
|
||||
showTalkVisible() {
|
||||
return this.$store.state.product.showTalk
|
||||
},
|
||||
localizedSolutionCards() {
|
||||
const keyMap = {
|
||||
'群智协作': 'collaboration',
|
||||
'空间觉醒': 'spatial',
|
||||
'先见一步': 'predictive',
|
||||
'洞察入微': 'vision',
|
||||
'一问即达': 'qa',
|
||||
'全程守护': 'protection',
|
||||
'触文即懂': 'document',
|
||||
'端侧即算': 'edge'
|
||||
}
|
||||
return this.solutionCards.map((card) => {
|
||||
const key = keyMap[card.title]
|
||||
if (!key) return card
|
||||
return {
|
||||
...card,
|
||||
title: this.$t(`home.solutionCards.${key}.title`),
|
||||
subtitle: this.$t(`home.solutionCards.${key}.subtitle`)
|
||||
}
|
||||
})
|
||||
},
|
||||
localizedCaseCards() {
|
||||
const keys = ['railway', 'forestry', 'beigang']
|
||||
return this.caseCards.map((card, index) => {
|
||||
const key = keys[index]
|
||||
if (!key) return card
|
||||
return {
|
||||
...card,
|
||||
name: this.$t(`home.cases.${key}.name`),
|
||||
title: this.$t(`home.cases.${key}.title`),
|
||||
desc: this.$t(`home.cases.${key}.desc`)
|
||||
}
|
||||
})
|
||||
},
|
||||
localizedNewsList() {
|
||||
const keys = ['first', 'second']
|
||||
return this.newsList.map((item, index) => {
|
||||
const key = keys[index]
|
||||
if (!key) return item
|
||||
return {
|
||||
...item,
|
||||
tag: this.$t('home.news.tag'),
|
||||
title: this.$t(`home.news.${key}Title`),
|
||||
desc: this.$t(`home.news.${key}Desc`)
|
||||
}
|
||||
})
|
||||
},
|
||||
visibleSolutionCards() {
|
||||
const slots = [-3, -2, -1, 0, 1, 2, 3]
|
||||
const len = this.solutionCards.length
|
||||
const len = this.localizedSolutionCards.length
|
||||
return slots.map((slot) => {
|
||||
const index = (this.currentSolutionIndex + slot + len) % len
|
||||
return {
|
||||
slot,
|
||||
index,
|
||||
card: this.solutionCards[index]
|
||||
card: this.localizedSolutionCards[index]
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -387,6 +434,9 @@ export default {
|
||||
goCases() {
|
||||
this.navigateTo('/homePage/agentStore')
|
||||
},
|
||||
goNews() {
|
||||
this.navigateTo('/homePage/new')
|
||||
},
|
||||
|
||||
|
||||
nextSolution() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user