-
- 暂无数据
+
+
应用入口
+
+
+
+
+
@@ -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 0000000000000000000000000000000000000000..79c4b04c06504131995bc16c6ce0897cb1b3883c
GIT binary patch
literal 53080
zcmb@udpy(s`#=8Nn8TvTlylBDhqBC>42?OAZ4NOyIJO}rrP9GDURlUFEwpBvbCD70
zpmIp17^x&lQb
caN0|$7Np8-jOyF&2TRQ!aq
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