@ -13,8 +13,8 @@
< div class = "nav-list" >
<!-- 首页 -- >
< p : class = "{ active: $route.path.includes('/index') }" >
<!-- 动态判断域名跳转首页 -- >
< a @click =" goHome "> {{ translations [ language ] .home }} < / a >
< a @click =" $router.push('/homePage/index') "> {{ translations [ language ] .home }} < / a >
< / p >
<!-- 产品与服务 : 鼠标移入显示子菜单 -- >
< p @mouseleave ="sildeOut" @mouseenter ="sildeIn(product_service)" >
@ -35,13 +35,18 @@
<!-- 用户区域 : 登录 / 注册按钮和用户下拉菜单 -- >
< div class = "user-area" >
<!-- 中英互译 -- >
<!-- < div class = "language-toggle" @click ="toggleLanguage" >
< span class = "iconfont icon-ditu_diqiu_o" > < / span >
< span class = "language-text" > { { language === 'zh' ? 'English' : '中文' } } < / span >
< / div > -- >
<!-- AI -- >
< i class = "iconfont icon-AIzhushou functions" @click ="handleAIClick" > < / i >
<!-- 客服 -- >
< i class = "iconfont icon-kefu functions" @click ="handleServiceClick" > < / i >
<!-- 控制台按钮 ( 已登录 ) -- >
< a @click ="goB" v-if = "loginState" class="login-btn" > {{ translations [ language ] .console }} < / a >
<!-- 消息 - ->
<!-- 消息 - 修改这里 : 点击时打开消息中心 - ->
< i class = "iconfont icon-xiaoxi functions" @click ="handleMessageClick" > < / i >
<!-- 登录按钮 ( 未登录 ) -- >
< a @ click = " $ router.push ( {
@ -57,25 +62,29 @@
<!-- 用户下拉菜单 ( 已登录 ) -- >
< el-dropdown v-if = "loginState" @visible-change ="handleShow"
class = "avatar-container right-menu-item hover-effect nick-name-style" style = "margin-right: 0" trigger = "click" >
<!-- 头像区域 : 添加点击事件 -- >
< div class = "avatar-wrapper" @click ="goHome" >
< div class = "avatar-wrapper" >
<!-- 显示用户名首字母头像和用户名 -- >
< i
style = "font-size: 18px; color: #262626;font-weight: 400;cursor: pointer;display: flex;justify-content: flex-end;align-items: center" >
< div class = "imgUser" > < img src = "../../../../assets/image/user.png" alt = "" > < / div >
{ { nick _name } }
<!-- 下拉箭头图标 -- >
< i id = "resverIcon" class = "el-icon-arrow-up el-icon--right resverIcon" > < / i >
< / i >
< / div >
<!-- 用户信息下拉菜单内容 -- >
< el-dropdown-menu slot = "dropdown" style = "width: 230px;font-size: 16px;" divided >
<!-- 用户信息头部 -- >
< div style = "display: flex;flex-direction: column;padding:15px 15px;background-color: #f0f2f5" >
< span style = "font-weight: bold;font-size: 20px;margin-bottom: 5px;color: #333333" > { { nick _name } } < / span >
< span style = "font-size: 12px;color:#666;display: flex;justify-content:flex-start;align-items: center" > ID :
<!-- 用户ID , 点击复制按钮可复制 -- >
< span ref = "contentToCopy" >
{ {
userId
} }
< / span >
<!-- 复制按钮 -- >
< svg @click ="copyBtn" class = "copy-btn" viewBox = "0 0 1024 1024" xmlns = "http://www.w3.org/2000/svg"
width = "12" height = "12" style = "fill: #1019ab;" >
< path
@ -84,7 +93,9 @@
< / svg >
< / span >
< / div >
<!-- 分割线 -- >
< el-divider style = "margin: 0!important;" > < / el-divider >
<!-- 客户角色余额和充值按钮 -- >
< div v -if = " role.includes ( ' 客户 ' ) "
style = "padding: 0 18px; width: 100%;height: 60px;display: flex;justify-content: space-between;align-items: center" >
< span style = "color:#666;display: block;font-size: 14px;" class = "moneyNow" > < span
@ -96,9 +107,11 @@
{ { translations [ language ] . recharge } }
< / el-button >
< / div >
<!-- 个人中心菜单项 -- >
< el-dropdown-item v-if = "role.includes('客户')" @click.native="$router.push('/customer/customerInformation')" >
< span style = "display: block" > { { translations [ language ] . personalCenter } } < / span >
< / el-dropdown-item >
<!-- 退出登录菜单项 -- >
< el-dropdown-item @click.native ="logout" >
< span style = "display: block" > { { translations [ language ] . logout } } < / span >
< / el-dropdown-item >
@ -107,9 +120,10 @@
< / div >
< / div >
<!-- 悬浮面板 -- >
<!-- 悬浮面板 : 显示生态与合作的详细子菜单 -- >
< div @mouseleave ="sildeOut" @mouseenter ="keepPanel" v-show = "isShowPanel" class="panel" >
< div class = "inPanel" >
<!-- 左侧面板 : 一级和二级菜单 -- >
< div class = "panelLeft" >
< ul class = "outUl" >
< li style = "cursor: default" class = "outLi" v-for = "item in showPanelData" :key="item.firTitle" >
@ -127,7 +141,9 @@
< / li >
< / ul >
< / div >
<!-- 分隔线 -- >
< span class = "ge" > < / span >
<!-- 左侧面板 : 三级菜单 ( 如果存在且不等于二级菜单标题 ) -- >
< div
v - if = "secMenuData.length > 0 && secMenuData[0].thrMenu && secMenuData[0].thrMenu.length > 0 && secMenuData[0].thrMenu[0].thrTitle != null && secMenuData[0].secTitle !== secMenuData[0].thrMenu[0].thrTitle"
class = "panelLeft" >
@ -138,9 +154,11 @@
< / li >
< / ul >
< / div >
<!-- 分隔线 -- >
< span
v - if = "secMenuData.length > 0 && secMenuData[0].thrMenu && secMenuData[0].thrMenu.length > 0 && secMenuData[0].thrMenu[0].thrTitle != null && secMenuData[0].secTitle !== secMenuData[0].thrMenu[0].thrTitle"
class = "ge" > < / span >
<!-- 右侧面板 : 最细粒度的菜单项 -- >
< div class = "panelRight"
v - if = "showPanelRightData.length > 0 && showPanelRightData[0] && showPanelRightData[0].value" >
< ul class = "leastMenu inBox" >
@ -151,6 +169,7 @@
< / li >
< / ul >
< / div >
<!-- 当没有数据时显示空状态 -- >
< div class = "panelRight" v-else >
< div style = "text-align: center; color: #999; padding: 20px;" >
{ { translations [ language ] . noData } }
@ -171,14 +190,23 @@
< script >
import Vue from 'vue'
/ / 导 入 测 试 数 据 ( 可 能 用 于 本 地 开 发 或 模 拟 )
import { computingData , networkData , storageData , testData } from "@/views/homePage/components/topBox/testData" ;
/ / 导 入 A P I 请 求 函 数
import { reqNavList , reqNewHomeFestival , reqNewHomeSync } from "@/api/newHome" ;
/ / 导 入 V u e x 辅 助 函 数
import { mapGetters , mapState } from "vuex" ;
/ / 导 入 其 他 A P I 函 数
import { getLogoAPI , getUserInfoAPI } from "@/api/login" ;
import { reqApplyChannel } from "@/api/customer/channel" ;
/ / 导 入 s t o r e 实 例
import store from "@/store" ;
/ / 导 入 工 具 函 数
import { getHomePath } from '@/views/setting/tools'
/ / 导 入 语 言 管 理
import { languageStore , languageBus } from '@/utils/language'
/ / 导 入 消 息 中 心 组 件
import MessageCenter from '@/components/MessageCenter/MessageCenter.vue'
export default Vue . extend ( {
@ -188,25 +216,25 @@ export default Vue.extend({
} ,
data ( ) {
return {
messageCenterVisible : false ,
homePath : getHomePath ( ) ,
isShowKbossCharge : false ,
role : sessionStorage . getItem ( "jueseNew" ) == "admin" ? [ ] : sessionStorage . getItem ( "jueseNew" ) ,
userId : sessionStorage . getItem ( "userId" ) ,
firId : "" ,
secId : "" ,
nick _name : "" ,
showTimer : null ,
hideTimer : null ,
showPanelData : [ ] ,
secMenuData : [ ] ,
showPanelRightData : [ ] ,
threeData : [ ] ,
fourData : [ ] ,
product _service : [ ] ,
language : 'zh' ,
languageChangedHandler : null ,
messageCount : 0 ,
messageCenterVisible : false , / / 控 制 消 息 中 心 显 示
homePath : getHomePath ( ) , / / 首 页 路 径
isShowKbossCharge : false , / / 是 否 显 示 K b o s s 充 值 按 钮
role : sessionStorage . getItem ( "jueseNew" ) == "admin" ? [ ] : sessionStorage . getItem ( "jueseNew" ) , / / 用 户 角 色
userId : sessionStorage . getItem ( "userId" ) , / / 用 户 I D
firId : "" , / / 一 级 菜 单 I D
secId : "" , / / 二 级 菜 单 I D
nick _name : "" , / / 用 户 昵 称
showTimer : null , / / 显 示 面 板 的 定 时 器
hideTimer : null , / / 藏 面 板 的 定 时 器
showPanelData : [ ] , / / 展 示 的 面 板 数 据
secMenuData : [ ] , / / 二 级 菜 单 数 据
showPanelRightData : [ ] , / / 展 示 的 右 侧 面 板 数 据
threeData : [ ] , / / 三 级 菜 单 数 据
fourData : [ ] , / / 四 级 菜 单 数 据 ( 未 使 用 )
product _service : [ ] , / / 产 品 服 务 数 据
language : 'zh' , / / 默 认 设 置 为 中 文
languageChangedHandler : null , / / 语 言 变 化 事 件 处 理 器
messageCount : 0 , / / 未 读 消 息 数 量
translations : {
zh : {
home : '首页' ,
@ -225,14 +253,17 @@ export default Vue.extend({
aiAssistant : 'AI助手' ,
customerService : '在线客服' ,
featureComingSoon : '功能即将上线,敬请期待!' ,
/ / 一 级 菜 单 翻 译
'云' : '云' ,
'算' : '算' ,
'网' : '网' ,
'用' : '用' ,
/ / 二 级 菜 单 翻 译
'百度云' : '百度云' ,
'智算' : '智算' ,
'算力网络' : '算力网络' ,
'AI应用' : 'AI应用' ,
/ / 三 级 菜 单 翻 译
'计算' : '计算' ,
'网络' : '网络' ,
'存储' : '存储' ,
@ -248,6 +279,7 @@ export default Vue.extend({
'智能短信' : '智能短信' ,
'智慧医疗' : '智慧医疗' ,
'智慧客服' : '智慧客服' ,
/ / 产 品 名 称 翻 译
'云服务器_GPU' : '云服务器_GPU' ,
'云服务器_BCC' : '云服务器_BCC' ,
'专属服务器' : '专属服务器' ,
@ -336,14 +368,17 @@ export default Vue.extend({
aiAssistant : 'AI Assistant' ,
customerService : 'Customer Service' ,
featureComingSoon : 'Feature coming soon, stay tuned!' ,
/ / 一 级 菜 单 翻 译
'云' : 'Cloud' ,
'算' : 'Computing' ,
'网' : 'Network' ,
'用' : 'Application' ,
/ / 二 级 菜 单 翻 译
'百度云' : 'Baidu Cloud' ,
'智算' : 'Intelligent Computing' ,
'算力网络' : 'Computing Power Network' ,
'AI应用' : 'AI Application' ,
/ / 三 级 菜 单 翻 译
'计算' : 'Compute' ,
'网络' : 'Network' ,
'存储' : 'Storage' ,
@ -359,6 +394,7 @@ export default Vue.extend({
'智能短信' : 'Smart SMS' ,
'智慧医疗' : 'Smart Healthcare' ,
'智慧客服' : 'Smart Customer Service' ,
/ / 产 品 名 称 翻 译
'云服务器_GPU' : 'Cloud Server GPU' ,
'云服务器_BCC' : 'Cloud Server BCC' ,
'专属服务器' : 'Dedicated Server' ,
@ -434,19 +470,30 @@ export default Vue.extend({
}
} ,
created ( ) {
/ / 组 件 创 建 时 初 始 化 h o m e P a t h
this . homePath = getHomePath ( )
/ / 如 果 s e s s i o n S t o r a g e 中 有 u s e r I d , 则 设 置 登 录 状 态 为 t r u e
if ( sessionStorage . getItem ( 'userId' ) ) {
this . $store . commit ( 'setLoginState' , true ) ;
this . $store . commit ( 'setLoginState' , true ) ; / / 同 步 到 V u e x
}
/ / 如 果 不 需 要 显 示 注 册 按 钮 , 则 获 取 用 户 信 息
! this . showRegisterButton && this . getUserInfo ( ) ;
/ / 初 始 化 组 件
this . init ( )
/ / 修 复 : 确 保 从 共 享 状 态 获 取 当 前 语 言
this . initLanguage ( )
/ / 初 始 化 导 航 数 据
this . initData ( )
} ,
mounted ( ) {
/ / 组 件 挂 载 时 , 从 s e s s i o n S t o r a g e 获 取 用 户 名
if ( sessionStorage . getItem ( "username" ) ) {
this . nick _name = sessionStorage . getItem ( "username" ) ;
}
/ / 滚 动 到 顶 部 容 器
this . $nextTick ( ( ) => {
const topContainer = document . getElementById ( 'topContainer' ) ;
if ( topContainer ) {
@ -458,37 +505,40 @@ export default Vue.extend({
} ) ;
} ,
beforeDestroy ( ) {
/ / 移 除 事 件 监 听
if ( this . languageChangedHandler ) {
languageBus . $off ( 'language-changed' , this . languageChangedHandler )
}
} ,
computed : {
/ / 映 射 V u e x 中 的 g e t t e r s
... mapGetters ( [ "sidebar" , "avatar" , "device" ] ) ,
/ / 映 射 V u e x 中 的 s t a t e
... mapState ( {
isShowPanel : ( state ) => state . product . showHomeNav ,
navIndex : ( state ) => state . product . navIndex ,
gridObj : state => state . operationAnalysis . gridObj ,
mybalance : state => state . user . mybalance ,
logoutUrl : state => state . login . logoutUrl ,
loginStateVuex : state => state . login . loginState ,
logoInfoNew : state => state . product . logoInfoNew ,
isShowPanel : ( state ) => state . product . showHomeNav , / / 是 否 显 示 导 航 面 板
navIndex : ( state ) => state . product . navIndex , / / 导 航 索 引
gridObj : state => state . operationAnalysis . gridObj , / / 未 使 用
mybalance : state => state . user . mybalance , / / 用 户 余 额
logoutUrl : state => state . login . logoutUrl , / / 退 出 登 录 U R L
loginStateVuex : state => state . login . loginState , / / V u e x 中 的 登 录 状 态
logoInfoNew : state => state . product . logoInfoNew , / / L o g o 信 息
} ) ,
/ / 计 算 登 录 状 态 : 基 于 V u e x 状 态 或 s e s s i o n S t o r a g e 中 的 u s e r I d
loginState ( ) {
const userId = sessionStorage . getItem ( 'userId' ) ;
return this . loginStateVuex || ( userId !== null && userId !== 'null' && userId !== '' ) ;
} ,
/ / 计 算 是 否 显 示 注 册 按 钮 : 基 于 组 织 类 型 和 用 户 登 录 状 态
showRegisterButton ( ) {
const orgType = window . sessionStorage . getItem ( 'org_type' ) ;
const userId = window . sessionStorage . getItem ( 'userId' ) ;
console . log ( "此时是:" , orgType !== '2' && orgType !== '3' && userId !== null )
return orgType !== '2' && orgType !== '3' && userId === null ;
} ,
/ / 计 算 用 户 名
username ( ) {
return sessionStorage . getItem ( 'username' ) || '' ;
} ,
/ / 判 断 当 前 是 否 为 n c m a t c h . c n 域 名
isNcmatchDomain ( ) {
return window . location . hostname . includes ( 'ncmatch.cn' ) ;
}
} ,
methods : {
/ / 处 理 A I 助 手 点 击
@ -498,6 +548,7 @@ export default Vue.extend({
duration : 3000 ,
showClose : true
} ) ;
} ,
/ / 处 理 客 服 点 击
@ -512,11 +563,14 @@ export default Vue.extend({
/ / 处 理 消 息 图 标 点 击
handleMessageClick ( ) {
if ( this . loginState ) {
/ / 已 登 录 状 态 : 打 开 消 息 中 心
this . messageCenterVisible = true ;
/ / 同 时 调 用 组 件 方 法 确 保 初 始 化
if ( this . $refs . messageCenter ) {
this . $refs . messageCenter . open ( ) ;
}
} else {
/ / 未 登 录 状 态 : 跳 转 到 登 录 页
this . handleGoLogin ( )
}
} ,
@ -528,26 +582,51 @@ export default Vue.extend({
/ / 初 始 化 语 言 状 态
initLanguage ( ) {
/ / 直 接 从 s t o r e 获 取 当 前 语 言 , 确 保 一 致 性
this . language = languageStore . getLanguage ( )
console . log ( 'topBox初始化语言:' , this . language )
/ / 保 存 事 件 处 理 函 数 的 引 用 , 以 便 正 确 移 除
this . languageChangedHandler = ( lang ) => {
console . log ( 'topBox接收到语言变化:' , lang )
this . language = lang
}
/ / 监 听 语 言 变 化 事 件
languageBus . $on ( 'language-changed' , this . languageChangedHandler )
} ,
/ / 切 换 语 言
/ / 切 换 语 言 - 统 一 使 用 共 享 状 态
toggleLanguage ( ) {
const newLanguage = this . language === 'zh' ? 'en' : 'zh' ;
console . log ( 'topBox切换语言到:' , newLanguage ) ;
/ / 使 用 共 享 状 态 管 理 , 确 保 所 有 组 件 同 步
languageStore . setLanguage ( newLanguage ) ;
/ / 调 试 信 息
setTimeout ( ( ) => {
console . log ( '切换后验证 - topBox语言:' , this . language ) ;
console . log ( '切换后验证 - store语言:' , languageStore . getLanguage ( ) ) ;
} , 200 ) ;
} ,
/ / 获 取 翻 译 文 本
/ / 获 取 翻 译 文 本 的 通 用 方 法
getTranslation ( key ) {
if ( ! key ) return ''
return this . translations [ this . language ] ? . [ key ] || key
} ,
/ / 控 制 台 按 钮 点 击 事 件
/ / 调 试 语 言 状 态
debugLanguage ( ) {
console . log ( '=== topBox语言调试信息 ===' ) ;
console . log ( '当前语言:' , this . language ) ;
console . log ( 'languageStore状态:' , languageStore . getLanguage ( ) ) ;
console . log ( 'localStorage状态:' , localStorage . getItem ( 'language' ) ) ;
languageStore . debug ( ) ;
} ,
/ / 控 制 台 按 钮 点 击 事 件 : 根 据 角 色 跳 转 不 同 页 面
goB ( ) {
if ( sessionStorage . getItem ( 'jueseNew' ) . includes ( '客户' ) ) {
this . $router . push ( '/product/productHome' )
@ -559,6 +638,7 @@ export default Vue.extend({
/ / 初 始 化 L o g o 信 息
init ( ) {
let remoteUrl = ''
/ / 根 据 环 境 设 置 A P I 基 础 U R L
if ( window . location . href . includes ( "dev" ) ) {
remoteUrl = 'https://www.kaiyuancloud.cn/dev/reseller/get_ipc_logo.dspy'
} else if ( window . location . href . includes ( "localhost" ) ) {
@ -568,10 +648,13 @@ export default Vue.extend({
}
let params = {
url _link : window . location . href . split ( "#" ) [ 0 ]
url _link : window . location . href . split ( "#" ) [ 0 ] / / 获 取 当 前 页 面 U R L
}
getLogoAPI ( params ) . then ( ( res ) => {
console . log ( "获取接口触发了" )
if ( res . status == true && res . data && res . data . length ) {
console . log ( "res.data[0].additional_msg" , res . data [ 0 ] . additional _msg )
/ / 提 交 L o g o 信 息 到 V u e x
this . $store . commit ( 'setLogoInfoNew' , res . data [ 0 ] . additional _msg ) ;
this . isShow = true
if ( res . data [ 0 ] . orgname == '中关村数智人工智能产业联盟' ) {
@ -582,6 +665,7 @@ export default Vue.extend({
if ( this . photosUrl . orgname != '业主机构' ) {
this . isLogo = true
this . logoImg = this . photosUrl . logo ;
this . $store . commit ( 'setLogo' , this . photosUrl . logo )
this . logoText = this . photosUrl . orgname ;
} else {
@ -589,6 +673,7 @@ export default Vue.extend({
}
} else {
this . $message ( {
/ / m e s s a g e : r e s . m s g ,
message : "获取ipc失败~" ,
type : "error" ,
} ) ;
@ -598,19 +683,24 @@ export default Vue.extend({
/ / 退 出 登 录
async logout ( ) {
this . $store . commit ( 'setLoginState' , false )
this . $store . commit ( 'setLoginState' , false ) / / 设 置 V u e x 登 录 状 态 为 f a l s e
/ / 清 除 本 地 存 储
store . commit ( 'tagsView/resetBreadcrumbState' ) ;
sessionStorage . removeItem ( "auths" ) ;
sessionStorage . removeItem ( "routes" ) ;
sessionStorage . removeItem ( "user" ) ;
sessionStorage . removeItem ( "userId" ) ;
sessionStorage . removeItem ( "org_type" )
localStorage . removeItem ( "auths" ) ;
localStorage . removeItem ( "routes" ) ;
localStorage . removeItem ( "user" ) ;
localStorage . removeItem ( "userId" ) ;
localStorage . removeItem ( "org_type" )
localStorage . removeItem ( 'userId' )
/ / 如 果 当 前 页 面 不 是 首 页 , 则 跳 转 到 首 页
if ( ! window . location . href . includes ( 'homePage/index' ) ) {
await this . $router . push ( getHomePath ( ) ) ;
}
@ -634,7 +724,7 @@ export default Vue.extend({
} )
} ,
/ / 初 始 化 余 额
/ / 初 始 化 余 额 ( 从 s e s s i o n S t o r a g e 获 取 )
initMybalance ( ) {
return sessionStorage . getItem ( 'mybalance' )
} ,
@ -652,8 +742,10 @@ export default Vue.extend({
/ / 获 取 用 户 信 息
async getUserInfo ( ) {
if ( ! this . userId ) return ;
getUserInfoAPI ( { id : this . userId } ) . then ( ( res ) => {
if ( res . status ) {
/ / t h i s . n i c k _ n a m e = r e s . d a t a [ 0 ] . n i c k _ n a m e ;
this . userInfoList = res . data ;
sessionStorage . setItem ( "orgid" , res . data [ 0 ] . orgid ) ;
} else {
@ -668,18 +760,21 @@ export default Vue.extend({
/ / 处 理 下 拉 菜 单 显 示 / 隐 藏 时 的 图 标 旋 转
handleShow ( isShow ) {
let resverNode = document . getElementById ( 'resverIcon' )
if ( isShow ) {
if ( this . role . includes ( '客户' ) ) {
this . $store . dispatch ( 'user/getCustmoersMoney' )
this . $store . dispatch ( 'user/getCustmoersMoney' ) / / 获 取 客 户 余 额
}
resverNode . style . transform = 'rotate(180deg)'
resverNode . style . transform = 'rotate(180deg)' / / 旋 转 图 标
} else {
resverNode . style . transform = 'rotate(0)'
resverNode . style . transform = 'rotate(0)' / / 恢 复 图 标
}
} ,
/ / 鼠 标 进 入 三 级 菜 单 项
sildeThrMenu ( item ) {
console . log ( "it" , item )
let res = [ ]
res . push ( item )
this . showPanelRightData = res
@ -687,12 +782,15 @@ export default Vue.extend({
/ / 点 击 菜 单 项 进 行 跳 转 或 打 开 新 窗 口
clickGo ( item ) {
this . $store . commit ( 'setShowHomeNav' , false )
this . $store . commit ( 'setShowHomeNav' , false ) / / 隐 藏 导 航 面 板
console . log ( "电机的item是" , item )
let userId = sessionStorage . getItem ( 'userId' )
const orgType = window . sessionStorage . getItem ( 'org_type' ) ;
let isKehu = orgType === '2' || orgType === '3' ;
console . log ( "userId" , userId )
if ( item . type === '百度云' ) {
if ( this . loginState ) {
/ / 百 度 云 产 品 跳 转 逻 辑
this . $store . commit ( 'setRedirectUrl' , item . url )
localStorage . setItem ( 'redirectUrl' , item . url )
localStorage . setItem ( 'userRescourseUrl' , item . listUrl )
@ -716,11 +814,12 @@ export default Vue.extend({
}
} else if ( item . type === '阿里云' ) {
if ( this . loginState ) {
/ / 阿 里 云 同 步 和 节 日 活 动 逻 辑
reqNewHomeSync ( ) . then ( response => {
if ( response . status ) {
reqNewHomeFestival ( ) . then ( res => {
if ( res . status ) {
window . open ( res . data )
window . open ( res . data ) / / 打 开 阿 里 云 页 面
} else {
this . $message . warning ( res . msg )
}
@ -769,10 +868,16 @@ export default Vue.extend({
/ / 改 变 面 板 数 据
changeData ( data ) {
this . showPanelData = data || [ ]
/ / 更 安 全 的 初 始 化 方 式
this . secMenuData = data ? . [ 0 ] ? . secMenu || [ ]
/ / 初 始 化 t h r e e D a t a 和 s h o w P a n e l R i g h t D a t a
if ( this . secMenuData . length > 0 ) {
const firstSecMenu = this . secMenuData [ 0 ]
this . threeData = firstSecMenu . thrMenu || [ ]
/ / 处 理 t h r T i t l e 为 n u l l 的 情 况
if ( this . threeData . length > 0 ) {
this . showPanelRightData = this . threeData . map ( item => ( {
... item ,
@ -793,12 +898,14 @@ export default Vue.extend({
/ / 初 始 化 导 航 数 据
initData ( ) {
reqNavList ( { url _link : window . location . href } ) . then ( res => {
console . log ( "res" , res . data . product _service )
if ( res . status ) {
this . product _service = this . buildData ( res . data . product _service )
this . product _service = this . buildData ( res . data . product _service ) / / 构 建 数 据 结 构
this . changeData ( this . product _service )
}
} ) . catch ( error => {
console . error ( "获取导航数据失败:" , error )
/ / 可 以 设 置 一 些 默 认 数 据 或 显 示 错 误 信 息
this . product _service = [ ]
this . changeData ( [ ] )
} )
@ -814,7 +921,7 @@ export default Vue.extend({
secItem . thrMenu . forEach ( thrItem => {
if ( thrItem . value && Array . isArray ( thrItem . value ) ) {
thrItem . value . forEach ( valueItem => {
valueItem . type = secItem . secTitle ;
valueItem . type = secItem . secTitle ; / / 添 加 t y p e 属 性 , 值 为 s e c T i t l e
} ) ;
}
} ) ;
@ -822,12 +929,15 @@ export default Vue.extend({
} ) ;
}
} ) ;
return data ;
return data ; / / 返 回 修 改 后 的 原 始 数 据
} ,
/ / 鼠 标 进 入 二 级 菜 单 项
sildeSecMenu ( item ) {
console . log ( "获取的item时" , item )
this . secId = item . id
/ / 处 理 t h r M e n u 可 能 为 空 或 t h r T i t l e 为 n u l l 的 情 况
if ( ! item . thrMenu || item . thrMenu . length === 0 ) {
this . threeData = [ ]
this . showPanelRightData = [ {
@ -836,10 +946,13 @@ export default Vue.extend({
} ]
return
}
/ / 处 理 t h r T i t l e 为 n u l l 的 情 况
this . threeData = item . thrMenu . map ( menu => ( {
... menu ,
thrTitle : menu . thrTitle || item . secTitle
} ) )
this . showPanelRightData = this . threeData
} ,
@ -858,6 +971,7 @@ export default Vue.extend({
sildeItemIn ( item ) {
this . firId = item . id
this . secId = item . secMenu [ 0 ] . id
console . log ( "获取的item时" , item )
this . secMenuData = item . secMenu || [ ]
this . showPanelRightData = this . secMenuData [ 0 ] . thrMenu || [ ]
} ,
@ -867,10 +981,12 @@ export default Vue.extend({
/ / 鼠 标 进 入 生 态 与 合 作 菜 单
sildeIn ( item ) {
console . log ( "sildeIn" , item )
this . changeData ( item )
if ( this . hideTimer ) {
clearTimeout ( this . hideTimer )
}
/ / 延 时 显 示 面 板 , 避 免 鼠 标 快 速 移 动 时 面 板 闪 烁
this . showTimer = setTimeout ( ( ) => {
this . $store . commit ( 'setShowHomeNav' , true )
} , 100 )
@ -881,6 +997,7 @@ export default Vue.extend({
if ( this . showTimer ) {
clearTimeout ( this . showTimer )
}
/ / 延 时 隐 藏 面 板 , 给 鼠 标 移 动 到 面 板 上 的 时 间
this . hideTimer = setTimeout ( ( ) => {
this . $store . commit ( 'setShowHomeNav' , false )
} , 200 )
@ -897,19 +1014,13 @@ export default Vue.extend({
handleGoLogin ( ) {
let token = this . $store . getters . token ;
if ( ! token ) {
/ / 提 示 登 录
this . $message . warning ( '请先登录哦~' ) ;
this . $router . push ( {
path : '/login'
} ) ;
}
} ,
/ / 首 页 跳 转 方 法
goHome ( ) {
if ( this . isNcmatchDomain ) {
this . $router . push ( '/ncmatchHome/index' ) ;
} else {
this . $router . push ( '/homePage/index' ) ;
}
}
} ,
@ -1007,6 +1118,7 @@ export default Vue.extend({
. language - toggle {
cursor : pointer ;
margin - right : 20 px ;
/ / w i d t h : 6 0 p x ;
text - align : center ;
border - radius : 4 px ;
font - size : 14 px ;
@ -1028,9 +1140,11 @@ export default Vue.extend({
}
a {
/ / p a d d i n g : 8 p x 1 6 p x ;
border - radius : 4 px ;
font - size : 14 px ;
text - decoration : none ;
/ / m a r g i n - l e f t : 1 0 p x ;
transition : all 0.3 s ;
}
@ -1044,6 +1158,7 @@ export default Vue.extend({
}
. register - btn {
/ / h e i g h t : 5 0 p x ;
display : flex ;
justify - content : center ;
align - items : center ;
@ -1116,6 +1231,7 @@ export default Vue.extend({
li {
padding : 10 px ;
/ / c u r s o r : p o i n t e r ;
transition : background - color 0.3 s ;
& : hover {
@ -1234,6 +1350,7 @@ export default Vue.extend({
}
. clickItem {
/ / m a r g i n : 3 0 p x 0 ! i m p o r t a n t ;
margin - bottom : 15 px ! important ;
& : hover {