-
- 暂无数据
+
+
应用入口
+
+
+
+
+
@@ -296,7 +291,7 @@ export default Vue.extend({
messageCenterVisible: false,
homePath: getHomePath(),
isShowKbossCharge: false,
- role: sessionStorage.getItem("jueseNew") == "admin" ? [] : sessionStorage.getItem("jueseNew"),
+ role: sessionStorage.getItem("jueseNew") == "admin" ? "" : (sessionStorage.getItem("jueseNew") || ""),
userId: sessionStorage.getItem("userId"),
firId: "",
secId: "",
@@ -325,17 +320,44 @@ export default Vue.extend({
if (sessionStorage.getItem("username")) {
this.nick_name = sessionStorage.getItem("username");
}
+
+ // ===== 强制透明背景(导航栏 + 页面根元素) =====
this.$nextTick(() => {
+ // 1. 导航栏强制透明
const topContainer = document.getElementById('topContainer');
if (topContainer) {
+ topContainer.style.background = 'transparent';
+ topContainer.style.backgroundColor = 'transparent';
+ topContainer.style.backgroundImage = 'none';
topContainer.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
+ // 父容器和占位符
+ const nav = document.querySelector('.top-nav');
+ if (nav) {
+ nav.style.background = 'transparent';
+ nav.style.backgroundColor = 'transparent';
+ nav.style.backgroundImage = 'none';
+ }
+ const placeholder = document.querySelector('.top-nav-placeholder');
+ if (placeholder) {
+ placeholder.style.background = 'transparent';
+ placeholder.style.backgroundColor = 'transparent';
+ placeholder.style.backgroundImage = 'none';
+ }
+
+ // 2. 页面背景强制透明(关键!解决根本问题)
+ document.body.style.background = 'transparent';
+ document.body.style.backgroundColor = 'transparent';
+ document.documentElement.style.background = 'transparent';
+ document.documentElement.style.backgroundColor = 'transparent';
});
+ window.addEventListener('kboss-open-ai-chat', this.handleExternalAIOpen);
},
beforeDestroy() {
+ window.removeEventListener('kboss-open-ai-chat', this.handleExternalAIOpen);
this.stopAIPanelDrag()
},
computed: {
@@ -361,11 +383,9 @@ export default Vue.extend({
username() {
return sessionStorage.getItem('username') || '';
},
- // 判断当前是否为ncmatch.cn域名
isNcmatchDomain() {
return window.location.hostname.includes('ncmatch.cn');
},
- // 首页激活状态计算
isActiveHome() {
if (this.isNcmatchDomain) {
return this.$route.path.includes('/ncmatchHome/index');
@@ -382,7 +402,6 @@ export default Vue.extend({
if (this.aiPanelPosition.left === null || this.aiPanelPosition.top === null) {
return {}
}
-
return {
left: `${this.aiPanelPosition.left}px`,
top: `${this.aiPanelPosition.top}px`,
@@ -392,43 +411,38 @@ export default Vue.extend({
}
},
methods: {
- // 点击 TOKEN 市集:未登录也允许进入,但按单页面模式展示。
+ navigateTo(path) {
+ this.$store.commit('setShowHomeNav', false)
+ if (this.$route.path === path) return
+ this.$router.push(path)
+ },
handleModelSquareClick() {
- if (!this.loginState) {
- this.$router.push({
- path: '/tokenMarket',
- query: {
- category: 'TOKEN市集',
- single: '1'
- }
- })
- return
- }
+ this.$store.commit('setShowHomeNav', false)
this.$router.push({
- path: '/product',
+ path: '/homePage/tokenMarket',
query: {
- category: 'TOKEN市集'
+ category: 'TOKEN市集',
+ single: '1'
}
})
},
-
- // 跳转算力市场
goComputeMarket() {
- this.$router.push('/homePage/computeMarket')
+ this.navigateTo('/homePage/computeMarket')
},
-
- // 跳转训推平台
goTrainPlatform() {
- this.$router.push('/homePage/trainPlatform')
+ this.navigateTo('/homePage/trainPlatform')
},
-
- // 跳转智能体商店
goAgentStore() {
- this.$router.push('/homePage/agentStore')
+ this.navigateTo('/homePage/agentStore')
+ },
+ goSupplySquare() {
+ this.navigateTo('/ncmatchHome/supplyAndDemandSquare')
+ },
+ goAbout() {
+ this.navigateTo('/homePage/about')
},
-
- // 跳转元境
async goYuanjing() {
+ this.$store.commit('setShowHomeNav', false)
const yuanJingBaseUrl = window.location.origin === 'https://dev.opencomputing.cn'
? 'https://aidev.opencomputing.cn'
: 'https://ai.opencomputing.cn'
@@ -436,52 +450,33 @@ export default Vue.extend({
window.open(`${yuanJingBaseUrl}/`, '_blank')
return
}
-
const yuanJingWindow = window.open('', '_blank')
-
try {
const res = await gotoYuanJingAPI({
user_id: sessionStorage.getItem('userId')
})
-
const deerer = this.getYuanJingAuthorization(res)
-
if (!deerer) {
- if (yuanJingWindow) {
- yuanJingWindow.close()
- }
+ if (yuanJingWindow) yuanJingWindow.close()
this.$message.error((res && res.msg) || '获取元境授权参数失败')
return
}
-
const loginUrl = `${yuanJingBaseUrl}/#/getCookie?deerer=${encodeURIComponent(deerer)}`
-
if (yuanJingWindow) {
yuanJingWindow.location.href = loginUrl
} else {
window.location.href = loginUrl
}
} catch (error) {
- if (yuanJingWindow) {
- yuanJingWindow.close()
- }
+ if (yuanJingWindow) yuanJingWindow.close()
this.$message.error('跳转元境失败,请稍后重试')
}
},
getYuanJingAuthorization(res) {
- if (!res) {
- return ''
- }
-
- if (typeof res === 'string') {
- return res
- }
-
+ if (!res) return ''
+ if (typeof res === 'string') return res
const data = res.data || res
- if (typeof data === 'string') {
- return data
- }
-
+ if (typeof data === 'string') return data
return data.Authorization || data.authorization || data.token || data.header || data.value || ''
},
isPanelFirClickable(item) {
@@ -495,13 +490,11 @@ export default Vue.extend({
this.goYuanjing()
return
}
-
if (title === 'TOKEN市集' || title === 'token市集') {
this.$store.commit('setShowHomeNav', false)
this.handleModelSquareClick()
}
},
- // 处理AI助手点击
handleAIClick() {
this.aiDialogVisible = true
this.$nextTick(() => {
@@ -509,226 +502,146 @@ export default Vue.extend({
this.scrollAIChatToBottom()
})
},
-
+ handleExternalAIOpen() {
+ this.handleAIClick()
+ },
closeAIPanel() {
this.aiDialogVisible = false
this.stopAIPanelDrag()
},
-
resetAIChat() {
this.aiMessages = []
this.aiInput = ''
},
-
useAISuggestion(question) {
this.sendAIMessage(question)
},
-
initAIPanelPosition() {
- if (this.aiPanelPosition.left !== null && this.aiPanelPosition.top !== null) {
- return
- }
-
+ if (this.aiPanelPosition.left !== null && this.aiPanelPosition.top !== null) return
const panel = this.$refs.aiChatPanel
if (!panel) return
-
const panelWidth = panel.offsetWidth || 380
const panelHeight = panel.offsetHeight || 620
-
this.aiPanelPosition = {
left: Math.max(window.innerWidth - panelWidth - 24, 16),
top: Math.max(window.innerHeight - panelHeight - 24, 16)
}
},
-
startAIPanelDrag(event) {
if (event.button !== 0) return
- if (event.target && event.target.closest('.ai-chat-panel__close')) {
- return
- }
-
+ if (event.target && event.target.closest('.ai-chat-panel__close')) return
const panel = this.$refs.aiChatPanel
if (!panel) return
-
const rect = panel.getBoundingClientRect()
this.aiPanelDragging = true
this.aiPanelDragOffset = {
x: event.clientX - rect.left,
y: event.clientY - rect.top
}
-
window.addEventListener('mousemove', this.handleAIPanelDrag)
window.addEventListener('mouseup', this.stopAIPanelDrag)
document.body.style.userSelect = 'none'
},
-
handleAIPanelDrag(event) {
if (!this.aiPanelDragging) return
-
const panel = this.$refs.aiChatPanel
if (!panel) return
-
const panelWidth = panel.offsetWidth || 380
const panelHeight = panel.offsetHeight || 620
- const minLeft = 0
- const minTop = 0
+ const minLeft = 0, minTop = 0
const maxLeft = Math.max(window.innerWidth - panelWidth, 0)
const maxTop = Math.max(window.innerHeight - panelHeight, 0)
-
const nextLeft = event.clientX - this.aiPanelDragOffset.x
const nextTop = event.clientY - this.aiPanelDragOffset.y
-
this.aiPanelPosition = {
left: Math.min(Math.max(nextLeft, minLeft), maxLeft),
top: Math.min(Math.max(nextTop, minTop), maxTop)
}
},
-
stopAIPanelDrag() {
this.aiPanelDragging = false
window.removeEventListener('mousemove', this.handleAIPanelDrag)
window.removeEventListener('mouseup', this.stopAIPanelDrag)
document.body.style.userSelect = ''
},
-
handleAIKeydown(event) {
if (event.key === 'Enter' && !event.shiftKey) {
event.preventDefault()
this.sendAIMessage()
}
},
-
async sendAIMessage(quickQuestion) {
const message = (quickQuestion || this.aiInput).trim()
if (!message || this.aiLoading) return
-
- this.aiMessages.push({
- role: 'user',
- content: message
- })
+ this.aiMessages.push({ role: 'user', content: message })
this.aiInput = ''
-
const loadingMessageIndex = this.aiMessages.push({
role: 'assistant',
content: '[正在检索并生成回答...]'
}) - 1
-
this.aiLoading = true
- this.$nextTick(() => {
- this.scrollAIChatToBottom()
- })
-
+ this.$nextTick(() => this.scrollAIChatToBottom())
try {
const response = await reqAIChat({ message }, (content) => {
if (!content) return
-
- this.$set(this.aiMessages, loadingMessageIndex, {
- role: 'assistant',
- content
- })
- this.$nextTick(() => {
- this.scrollAIChatToBottom()
- })
+ this.$set(this.aiMessages, loadingMessageIndex, { role: 'assistant', content })
+ this.$nextTick(() => this.scrollAIChatToBottom())
})
-
if (response && response.content) {
- this.$set(this.aiMessages, loadingMessageIndex, {
- role: 'assistant',
- content: response.content
- })
+ this.$set(this.aiMessages, loadingMessageIndex, { role: 'assistant', content: response.content })
} else {
- this.$set(this.aiMessages, loadingMessageIndex, {
- role: 'assistant',
- content: '暂时没有获取到回复,请稍后再试。'
- })
+ this.$set(this.aiMessages, loadingMessageIndex, { role: 'assistant', content: '暂时没有获取到回复,请稍后再试。' })
}
} catch (error) {
- this.$set(this.aiMessages, loadingMessageIndex, {
- role: 'assistant',
- content: '抱歉,当前服务繁忙,请稍后再试。'
- })
+ this.$set(this.aiMessages, loadingMessageIndex, { role: 'assistant', content: '抱歉,当前服务繁忙,请稍后再试。' })
} finally {
this.aiLoading = false
- this.$nextTick(() => {
- this.scrollAIChatToBottom()
- })
+ this.$nextTick(() => this.scrollAIChatToBottom())
}
},
-
escapeAIHtml(content) {
return String(content || '')
.replace(/&/g, '&')
.replace(//g, '>')
},
-
formatAIInline(content) {
return this.escapeAIHtml(content).replace(/\*\*(.+?)\*\*/g, '
$1')
},
-
formatAIContent(content) {
if (!content) return ''
-
const normalizedContent = String(content)
.replace(/\r\n/g, '\n')
.replace(/ {2,}/g, '\n')
.replace(/\n{3,}/g, '\n\n')
-
const lines = normalizedContent.split('\n')
-
return lines.map((line) => {
const trimmed = line.trim()
-
- if (!trimmed) {
- return '
'
- }
-
+ if (!trimmed) return '
'
if (/^-\s+/.test(trimmed)) {
return `
${this.formatAIInline(trimmed.replace(/^-\s+/, ''))}
`
}
-
if (/^\*\*(.+?)\*\*$/.test(trimmed)) {
return `
${this.formatAIInline(trimmed)}
`
}
-
return `
${this.formatAIInline(trimmed)}
`
}).join('')
},
-
scrollAIChatToBottom() {
const messageBox = this.$refs.aiChatMessages
- if (messageBox) {
- messageBox.scrollTop = messageBox.scrollHeight
- }
+ if (messageBox) messageBox.scrollTop = messageBox.scrollHeight
},
-
- // 处理客服点击
- handleServiceClick() {
- this.$message.info({
- message: '功能即将上线,敬请期待!',
- duration: 3000,
- showClose: true
- });
- },
-
- // 处理消息图标点击
handleMessageClick() {
if (this.loginState) {
this.messageCenterVisible = true;
- if (this.$refs.messageCenter) {
- this.$refs.messageCenter.open();
- }
+ if (this.$refs.messageCenter) this.$refs.messageCenter.open();
} else {
this.handleGoLogin()
}
},
-
- // 处理未读消息数量更新
handleUnreadCountUpdate(count) {
this.messageCount = count;
},
-
- // 控制台按钮点击事件
goB() {
if (sessionStorage.getItem('jueseNew').includes('客户')) {
this.$router.push('/product/productHome')
@@ -744,8 +657,6 @@ export default Vue.extend({
this.$router.push('/superAdministrator/addAdmin')
}
},
-
- // 初始化Logo信息
init() {
let remoteUrl = ''
if (window.location.href.includes("dev")) {
@@ -755,10 +666,7 @@ export default Vue.extend({
} else {
remoteUrl = 'https://www.kaiyuancloud.cn/reseller/get_ipc_logo.dspy'
}
-
- let params = {
- url_link: window.location.href.split("#")[0]
- }
+ let params = { url_link: window.location.href.split("#")[0] }
getLogoAPI(params).then((res) => {
if (res.status == true && res.data && res.data.length) {
this.$store.commit('setLogoInfoNew', res.data[0].additional_msg);
@@ -766,7 +674,6 @@ export default Vue.extend({
if (res.data[0].orgname == '中关村数智人工智能产业联盟') {
this.logoUrlOut = 'https://www.ncmatch.cn'
}
-
this.photosUrl = res.data[0];
if (this.photosUrl.orgname != '业主机构') {
this.isLogo = true
@@ -777,15 +684,10 @@ export default Vue.extend({
this.$store.commit('setLogo', "")
}
} else {
- this.$message({
- message: "获取ipc失败~",
- type: "error",
- });
+ this.$message({ message: "获取ipc失败~", type: "error" });
}
});
},
-
- // 退出登录
async logout() {
let redirectPath = ''
if (this.$route && this.$route.fullPath && !this.$route.fullPath.includes('/login')) {
@@ -816,13 +718,9 @@ export default Vue.extend({
query: redirectPath ? { redirect: redirectPath } : {}
});
},
-
- // 修改密码
edituserPassword() {
this.passwordDialog = true;
},
-
- // 申请渠道管理
channelFirstBtn() {
reqApplyChannel({ user_id: this.userId }).then(res => {
if (res.code == "100" || res.code == "210") {
@@ -834,13 +732,9 @@ export default Vue.extend({
}
})
},
-
- // 初始化余额
initMybalance() {
return sessionStorage.getItem('mybalance')
},
-
- // 复制用户ID
copyBtn() {
const textToCopy = this.$refs.contentToCopy.innerText;
navigator.clipboard.writeText(textToCopy).then(() => {
@@ -849,8 +743,6 @@ export default Vue.extend({
console.error('复制失败', error);
});
},
-
- // 获取用户信息
async getUserInfo() {
if (!this.userId) return;
getUserInfoAPI({ id: this.userId }).then((res) => {
@@ -858,15 +750,10 @@ export default Vue.extend({
this.userInfoList = res.data;
sessionStorage.setItem("orgid", res.data[0].orgid);
} else {
- this.$message({
- message: res.msg,
- type: "error",
- });
+ this.$message({ message: res.msg, type: "error" });
}
});
},
-
- // 处理下拉菜单显示/隐藏时的图标旋转
handleShow(isShow) {
let resverNode = document.getElementById('resverIcon')
if (isShow) {
@@ -878,15 +765,11 @@ export default Vue.extend({
resverNode.style.transform = 'rotate(0)'
}
},
-
- // 鼠标进入三级菜单项
sildeThrMenu(item) {
let res = []
res.push(item)
this.showPanelRightData = res
},
-
- // 点击菜单项进行跳转或打开新窗口
clickGo(item) {
this.$store.commit('setShowHomeNav', false)
let userId = sessionStorage.getItem('userId')
@@ -899,66 +782,35 @@ export default Vue.extend({
localStorage.setItem('userRescourseUrl', item.listUrl)
this.$router.push({
name: 'baiduProductShow',
- params: {
- listUrl: item.listUrl,
- url: item.url
- }
+ params: { listUrl: item.listUrl, url: item.url }
})
} else {
- this.$router.push({
- path: "/login",
- query: {
- fromPath: 'homePage',
- type: 'bd',
- listUrl: item.listUrl,
- url: item.url
- }
- })
+ this.$router.push({ path: "/login", query: { fromPath: 'homePage', type: 'bd', listUrl: item.listUrl, url: item.url } })
}
} else if (item.type === '阿里云') {
if (this.loginState) {
reqNewHomeSync().then(response => {
if (response.status) {
reqNewHomeFestival().then(res => {
- if (res.status) {
- window.open(res.data)
- } else {
- this.$message.warning(res.msg)
- }
+ if (res.status) window.open(res.data)
+ else this.$message.warning(res.msg)
})
} else {
this.$message.warning(response.msg)
}
})
} else {
- this.$router.push({
- path: "/login",
- query: {
- fromPath: 'homePage',
- type: 'ali',
- }
- })
+ this.$router.push({ path: "/login", query: { fromPath: 'homePage', type: 'ali' } })
}
} else if (item.type === '智算' || item.type === '算力网络') {
if (item.name === '容器云') {
if (this.loginState) {
this.$router.push('/product/productHome/k8s/createK8s')
} else {
- this.$router.push({
- path: "/login",
- query: {
- fromPath: 'homePage',
- type: 'rqy',
- }
- })
+ this.$router.push({ path: "/login", query: { fromPath: 'homePage', type: 'rqy' } })
}
} else {
- this.$router.push({
- path: '/homePage/detail',
- query: {
- id: item.id,
- }
- })
+ this.$router.push({ path: '/homePage/detail', query: { id: item.id } })
}
} else if (item.name === '灵医智能体') {
this.$router.push('/homePage/hospital')
@@ -966,8 +818,6 @@ export default Vue.extend({
this.$router.push('/homePage/customerService')
}
},
-
- // 改变面板数据
changeData(data) {
this.showPanelData = data || []
this.secMenuData = data?.[0]?.secMenu || []
@@ -980,18 +830,13 @@ export default Vue.extend({
thrTitle: item.thrTitle || firstSecMenu.secTitle
}))
} else {
- this.showPanelRightData = [{
- thrTitle: firstSecMenu.secTitle,
- value: []
- }]
+ this.showPanelRightData = [{ thrTitle: firstSecMenu.secTitle, value: [] }]
}
} else {
this.threeData = []
this.showPanelRightData = []
}
},
-
- // 初始化导航数据
initData() {
reqNavList({ url_link: window.location.href }).then(res => {
if (res.status) {
@@ -1004,8 +849,6 @@ export default Vue.extend({
this.changeData([])
})
},
-
- // 构建导航数据结构
buildData(data) {
let res = [];
data.forEach(item => {
@@ -1025,16 +868,11 @@ export default Vue.extend({
});
return data;
},
-
- // 鼠标进入二级菜单项
sildeSecMenu(item) {
this.secId = item.id
if (!item.thrMenu || item.thrMenu.length === 0) {
this.threeData = []
- this.showPanelRightData = [{
- thrTitle: item.secTitle,
- value: []
- }]
+ this.showPanelRightData = [{ thrTitle: item.secTitle, value: [] }]
return
}
this.threeData = item.thrMenu.map(menu => ({
@@ -1043,76 +881,41 @@ export default Vue.extend({
}))
this.showPanelRightData = this.threeData
},
-
- // 返回测试数据
- networkData() {
- return networkData
- },
- storageData() {
- return storageData
- },
- testData() {
- return testData
- },
-
- // 鼠标进入一级菜单项
+ networkData() { return networkData },
+ storageData() { return storageData },
+ testData() { return testData },
sildeItemIn(item) {
this.firId = item.id
this.secId = item.secMenu[0].id
this.secMenuData = item.secMenu || []
this.showPanelRightData = this.secMenuData[0].thrMenu || []
},
- computingData() {
- return computingData
- },
-
- // 鼠标进入生态与合作菜单
+ computingData() { return computingData },
sildeIn(item) {
this.changeData(item)
- if (this.hideTimer) {
- clearTimeout(this.hideTimer)
- }
+ if (this.hideTimer) clearTimeout(this.hideTimer)
this.showTimer = setTimeout(() => {
this.$store.commit('setShowHomeNav', true)
}, 100)
},
-
- // 鼠标离开导航区域
sildeOut() {
- if (this.showTimer) {
- clearTimeout(this.showTimer)
- }
+ if (this.showTimer) clearTimeout(this.showTimer)
this.hideTimer = setTimeout(() => {
this.$store.commit('setShowHomeNav', false)
}, 200)
},
-
- // 鼠标进入面板区域,取消隐藏
keepPanel() {
- if (this.hideTimer) {
- clearTimeout(this.hideTimer)
- }
+ if (this.hideTimer) clearTimeout(this.hideTimer)
},
-
- // 处理登录跳转逻辑
handleGoLogin() {
let token = this.$store.getters.token;
if (!token) {
this.$message.warning('请先登录哦~');
- this.$router.push({
- path: '/login'
- });
+ this.$router.push({ path: '/login' });
}
},
-
- // 首页跳转方法 - 根据域名判断跳转到不同的首页
goHome() {
- console.log('=== goHome 方法开始 ===');
- console.log('当前完整URL:', window.location.href);
- console.log('当前hostname:', window.location.hostname);
- console.log('isNcmatchDomain判断结果:', this.isNcmatchDomain);
- console.log('准备跳转的路径:', this.isNcmatchDomain ? '/ncmatchHome/index' : '/homePage/index');
-
+ this.$store.commit('setShowHomeNav', false)
if (this.isNcmatchDomain) {
this.$router.push('/ncmatchHome/index');
} else {
@@ -1124,218 +927,392 @@ export default Vue.extend({
+
\ No newline at end of file
diff --git a/f/web-kboss/src/views/homePage/components/topBox/new/index.vue b/f/web-kboss/src/views/homePage/components/topBox/new/index.vue
index 9ccd53a..0a21c7c 100644
--- a/f/web-kboss/src/views/homePage/components/topBox/new/index.vue
+++ b/f/web-kboss/src/views/homePage/components/topBox/new/index.vue
@@ -1,5 +1,5 @@
-
+
new
diff --git a/f/web-kboss/src/views/homePage/components/topBox/sale/index.vue b/f/web-kboss/src/views/homePage/components/topBox/sale/index.vue
index 4fa88f8..6d63bf8 100644
--- a/f/web-kboss/src/views/homePage/components/topBox/sale/index.vue
+++ b/f/web-kboss/src/views/homePage/components/topBox/sale/index.vue
@@ -1,5 +1,5 @@
- sale
+ sale
+
+
diff --git a/f/web-kboss/src/views/homePage/mainPage/img/case/beigang-big-data-case.jpg b/f/web-kboss/src/views/homePage/mainPage/img/case/beigang-big-data-case.jpg
new file mode 100644
index 0000000..79c4b04
Binary files /dev/null and b/f/web-kboss/src/views/homePage/mainPage/img/case/beigang-big-data-case.jpg differ
diff --git a/f/web-kboss/src/views/homePage/mainPage/img/case/case-hero-bg.jpg b/f/web-kboss/src/views/homePage/mainPage/img/case/case-hero-bg.jpg
new file mode 100644
index 0000000..e217f76
Binary files /dev/null and b/f/web-kboss/src/views/homePage/mainPage/img/case/case-hero-bg.jpg differ
diff --git a/f/web-kboss/src/views/homePage/mainPage/img/case/china-railway-bidding-case.jpg b/f/web-kboss/src/views/homePage/mainPage/img/case/china-railway-bidding-case.jpg
new file mode 100644
index 0000000..f783796
Binary files /dev/null and b/f/web-kboss/src/views/homePage/mainPage/img/case/china-railway-bidding-case.jpg differ
diff --git a/f/web-kboss/src/views/homePage/mainPage/img/case/nanning-forestry-case.jpg b/f/web-kboss/src/views/homePage/mainPage/img/case/nanning-forestry-case.jpg
new file mode 100644
index 0000000..b8e0f02
Binary files /dev/null and b/f/web-kboss/src/views/homePage/mainPage/img/case/nanning-forestry-case.jpg differ
diff --git a/f/web-kboss/src/views/homePage/mainPage/img/case/ocai-mascot.jpg b/f/web-kboss/src/views/homePage/mainPage/img/case/ocai-mascot.jpg
new file mode 100644
index 0000000..8559ff9
Binary files /dev/null and b/f/web-kboss/src/views/homePage/mainPage/img/case/ocai-mascot.jpg differ
diff --git a/f/web-kboss/src/views/homePage/mainPage/index.vue b/f/web-kboss/src/views/homePage/mainPage/index.vue
index 2fc29f3..72de20c 100644
--- a/f/web-kboss/src/views/homePage/mainPage/index.vue
+++ b/f/web-kboss/src/views/homePage/mainPage/index.vue
@@ -1,1122 +1,1444 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
一个平台,千行百业
-
-
-
好用还省钱,Token 就上开元云
-
OPC公共服务平台
-
- 为 OPC 而生,极致性价比一站式模型平台
-
-
-
-
-
-
-
-
+
智能跃迁
+
让AI无处不在,让智能如此简单
+
+
+
+
+
+
+
AI+解决方案
+
+
+
+
+
+
+
{{ item.card.title }}
+
+
{{ item.card.subtitle }}
-
Token市集
-
汇聚海量精品模型,以更低成本畅享极致 AI 体验
-
-
-
-
-
-
-
-
+
+
{{ item.card.detailTitle }}
+
{{ item.card.detailSubTitle }}
+
{{ item.card.detailDesc }}
+
+ -
+ {{ metric.value }}
+ {{ metric.label }}
+
+
-
创镜工坊
-
以文筑境,以镜生画,全场景 AI 影像创作
-
-
-
-
-
-
-
-
-
-
云枢基座
-
深耕基础云服务,筑牢 AI 平台数字根基
-
-
-
-
-
-
- 50+
- 精品模型
-
-
- 99.9%
- 服务可用性
-
-
- 4800+
- 企业用户
-
-
- 低至0.001
- 每千Token起步价
+
+
+
+
+
+
+
+
+
+
+
+
成功案例
+
-
-
-
-
+
-->
+
+
+
企业动态
+
+
-
-
+
+
+
+
+
+
+ {{ item.tag }}
+
+
+
{{ item.title }}
+
{{ item.desc }}
+
+
+
+
+
-
-
- 您还没有完善企业信息,完善企业信息审核通过后您可以发布需求与商品。
-
-
+
diff --git a/f/web-kboss/src/views/homePage/ncmatch/index.vue b/f/web-kboss/src/views/homePage/ncmatch/index.vue
index 32d9176..9b1c261 100644
--- a/f/web-kboss/src/views/homePage/ncmatch/index.vue
+++ b/f/web-kboss/src/views/homePage/ncmatch/index.vue
@@ -5,7 +5,7 @@
-
+
@@ -239,6 +239,12 @@ export default Vue.extend({
background-color: #f6f8fd;
}
+.ncmatch-router-view {
+ width: 100%;
+ padding-top: 0;
+ box-sizing: border-box;
+}
+
.footer {
padding: 35px 0;
width: 100%;
diff --git a/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue
index ffc5208..0d65a85 100644
--- a/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue
+++ b/f/web-kboss/src/views/homePage/ncmatch/supplyAndDemandSquare/index.vue
@@ -750,6 +750,7 @@ export default {
.plaza-page {
position: relative;
min-height: 100vh;
+ padding-top: 82px;
overflow-x: hidden;
background: linear-gradient(180deg, #f0f7ff 0%, #ffffff 60%, #f5f8ff 100%);
color: #1a1a1a;
diff --git a/f/web-kboss/src/views/homePage/solve/hospital/index.vue b/f/web-kboss/src/views/homePage/solve/hospital/index.vue
index ce4a23e..ba0e8ca 100644
--- a/f/web-kboss/src/views/homePage/solve/hospital/index.vue
+++ b/f/web-kboss/src/views/homePage/solve/hospital/index.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/f/web-kboss/src/views/homePage/trainPlatform/index.vue b/f/web-kboss/src/views/homePage/trainPlatform/index.vue
index b2650eb..7a4a822 100644
--- a/f/web-kboss/src/views/homePage/trainPlatform/index.vue
+++ b/f/web-kboss/src/views/homePage/trainPlatform/index.vue
@@ -158,5 +158,9 @@ export default {
diff --git a/f/web-kboss/src/views/product/allProduct/index.vue b/f/web-kboss/src/views/product/allProduct/index.vue
index ae2749e..efa588a 100644
--- a/f/web-kboss/src/views/product/allProduct/index.vue
+++ b/f/web-kboss/src/views/product/allProduct/index.vue
@@ -1,6 +1,5 @@