This commit is contained in:
hrx 2025-12-26 14:34:07 +08:00
parent 29182497fd
commit 4a662436ef
3 changed files with 24 additions and 299 deletions

View File

@ -99,7 +99,8 @@
"svg-sprite-loader": "4.1.3", "svg-sprite-loader": "4.1.3",
"svgo": "1.2.0", "svgo": "1.2.0",
"vue-happy-scroll": "^2.1.1", "vue-happy-scroll": "^2.1.1",
"vue-template-compiler": "2.6.10" "vue-template-compiler": "2.6.10",
"webpack": "^4.47.0"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",

View File

@ -14,20 +14,20 @@
<!-- 首页 --> <!-- 首页 -->
<p :class="{ active: isActiveHome }"> <p :class="{ active: isActiveHome }">
<!-- 动态判断域名跳转首页 --> <!-- 动态判断域名跳转首页 -->
<a @click="goHome">{{ translations[language].home }}</a> <a @click="goHome">首页</a>
</p> </p>
<!-- 产品与服务鼠标移入显示子菜单 --> <!-- 产品与服务鼠标移入显示子菜单 -->
<p @mouseleave="sildeOut" @mouseenter="sildeIn(product_service)"> <p @mouseleave="sildeOut" @mouseenter="sildeIn(product_service)">
<a>{{ translations[language].ecosystem }}</a> <a>产品与服务</a>
</p> </p>
<!-- 供需广场 --> <!-- 供需广场 -->
<p :class="{ active: $route.path.includes('/supply') }"> <p :class="{ active: $route.path.includes('/supply') }">
<a @click="$router.push('/ncmatchHome/supplyAndDemandSquare')">{{ translations[language].supply }}</a> <a @click="$router.push('/ncmatchHome/supplyAndDemandSquare')">供需广场</a>
</p> </p>
<!-- 关于我们 --> <!-- 关于我们 -->
<p :class="{ active: $route.path.includes('/about') }" @mouseleave="sildeOut" <p :class="{ active: $route.path.includes('/about') }" @mouseleave="sildeOut"
@click="$router.push('/homePage/about')"> @click="$router.push('/homePage/about')">
<a>{{ translations[language].aboutUs }}</a> <a>关于我们</a>
</p> </p>
</div> </div>
</nav> </nav>
@ -40,7 +40,7 @@
<!-- 客服 --> <!-- 客服 -->
<i class="iconfont icon-kefu functions" @click="handleServiceClick"></i> <i class="iconfont icon-kefu functions" @click="handleServiceClick"></i>
<!-- 控制台按钮已登录 --> <!-- 控制台按钮已登录 -->
<a @click="goB" v-if="loginState" class="login-btn">{{ translations[language].console }}</a> <a @click="goB" v-if="loginState" class="login-btn">控制台</a>
<!-- 消息 --> <!-- 消息 -->
<i class="iconfont icon-xiaoxi functions" @click="handleMessageClick"></i> <i class="iconfont icon-xiaoxi functions" @click="handleMessageClick"></i>
<!-- 登录按钮未登录 --> <!-- 登录按钮未登录 -->
@ -49,10 +49,9 @@
query: { query: {
fromPath: 'homePage' fromPath: 'homePage'
} }
})" v-if="!loginState" class="login-btn">{{ translations[language].login }}</a> })" v-if="!loginState" class="login-btn">登录</a>
<!-- 注册按钮未登录 --> <!-- 注册按钮未登录 -->
<a @click="$router.push('/registrationPage')" v-if="!loginState" class="register-btn">{{ <a @click="$router.push('/registrationPage')" v-if="!loginState" class="register-btn">立即注册</a>
translations[language].register }}</a>
<!-- 用户下拉菜单已登录 --> <!-- 用户下拉菜单已登录 -->
<el-dropdown v-if="loginState" @visible-change="handleShow" <el-dropdown v-if="loginState" @visible-change="handleShow"
@ -88,19 +87,19 @@
<div v-if="role.includes('客户')" <div v-if="role.includes('客户')"
style="padding: 0 18px; width: 100%;height: 60px;display: flex;justify-content: space-between;align-items: center"> 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 <span style="color:#666;display: block;font-size: 14px;" class="moneyNow"><span
style="display: block;margin-bottom: 5px">{{ translations[language].balance }}</span>{{ style="display: block;margin-bottom: 5px">余额</span>{{
mybalance ? mybalance : initMybalance() mybalance ? mybalance : initMybalance()
}} </span> }} </span>
<el-button v-if="!isShowKbossCharge" type="primary" @click="$router.push('/kbossCharge')" plain <el-button v-if="!isShowKbossCharge" type="primary" @click="$router.push('/kbossCharge')" plain
style="padding: 8px; "> style="padding: 8px; ">
{{ translations[language].recharge }} 充值
</el-button> </el-button>
</div> </div>
<el-dropdown-item v-if="role.includes('客户')" @click.native="$router.push('/customer/customerInformation')"> <el-dropdown-item v-if="role.includes('客户')" @click.native="$router.push('/customer/customerInformation')">
<span style="display: block">{{ translations[language].personalCenter }}</span> <span style="display: block">个人中心</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click.native="logout"> <el-dropdown-item @click.native="logout">
<span style="display: block">{{ translations[language].logout }}</span> <span style="display: block">退出登录</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@ -115,13 +114,13 @@
<li style="cursor: default" class="outLi" v-for="item in showPanelData" :key="item.firTitle"> <li style="cursor: default" class="outLi" v-for="item in showPanelData" :key="item.firTitle">
<span style="cursor: default!important;" :class="['tilte', 'activeFir']"> <span style="cursor: default!important;" :class="['tilte', 'activeFir']">
{{ {{
getTranslation(item.firTitle) item.firTitle
}} }}
</span> </span>
<ul class="inUl"> <ul class="inUl">
<li class="inLi" v-for="i in item.secMenu" :key="i.id"> <li class="inLi" v-for="i in item.secMenu" :key="i.id">
<span style="position: relative" @mouseenter="sildeSecMenu(i)" <span style="position: relative" @mouseenter="sildeSecMenu(i)"
:class="['twoMenuStyle', secId === i.id ? 'activeSec' : '']">{{ getTranslation(i.secTitle) }}</span> :class="['twoMenuStyle', secId === i.id ? 'activeSec' : '']">{{ i.secTitle }}</span>
</li> </li>
</ul> </ul>
</li> </li>
@ -134,7 +133,7 @@
<ul> <ul>
<li style="font-size: 14px!important;" @mouseenter="sildeThrMenu(thr)" v-for="(thr, index) in threeData" <li style="font-size: 14px!important;" @mouseenter="sildeThrMenu(thr)" v-for="(thr, index) in threeData"
:key="index"> :key="index">
{{ getTranslation(thr.thrTitle) }} {{ thr.thrTitle }}
</li> </li>
</ul> </ul>
</div> </div>
@ -146,14 +145,14 @@
<ul class="leastMenu inBox"> <ul class="leastMenu inBox">
<li class="clickItem" style="font-size: 14px!important;margin: 8px 0;cursor: pointer" <li class="clickItem" style="font-size: 14px!important;margin: 8px 0;cursor: pointer"
v-for="itemR in showPanelRightData[0].value" :key="itemR.id" @click="clickGo(itemR)"> v-for="itemR in showPanelRightData[0].value" :key="itemR.id" @click="clickGo(itemR)">
{{ getTranslation(itemR.name) }} <span v-if="itemR.discount" class="zhe">{{ {{ itemR.name }} <span v-if="itemR.discount" class="zhe">{{
itemR.discount }}</span> itemR.discount }}</span>
</li> </li>
</ul> </ul>
</div> </div>
<div class="panelRight" v-else> <div class="panelRight" v-else>
<div style="text-align: center; color: #999; padding: 20px;"> <div style="text-align: center; color: #999; padding: 20px;">
{{ translations[language].noData }} 暂无数据
</div> </div>
</div> </div>
</div> </div>
@ -178,7 +177,6 @@ import { getLogoAPI, getUserInfoAPI } from "@/api/login";
import { reqApplyChannel } from "@/api/customer/channel"; import { reqApplyChannel } from "@/api/customer/channel";
import store from "@/store"; import store from "@/store";
import { getHomePath } from '@/views/setting/tools' import { getHomePath } from '@/views/setting/tools'
import { languageStore, languageBus } from '@/utils/language'
import MessageCenter from '@/components/MessageCenter/MessageCenter.vue' import MessageCenter from '@/components/MessageCenter/MessageCenter.vue'
export default Vue.extend({ export default Vue.extend({
@ -204,233 +202,7 @@ export default Vue.extend({
threeData: [], threeData: [],
fourData: [], fourData: [],
product_service: [], product_service: [],
language: 'zh', messageCount: 0
languageChangedHandler: null,
messageCount: 0,
translations: {
zh: {
home: '首页',
ecosystem: '产品与服务',
supply: '供需广场',
aboutUs: '关于我们',
balance: '余额',
recharge: '充值',
personalCenter: '个人中心',
logout: '退出登录',
searchPlaceholder: '搜索',
console: '控制台',
login: '登录',
register: '立即注册',
noData: '暂无数据',
aiAssistant: 'AI助手',
customerService: '在线客服',
featureComingSoon: '功能即将上线,敬请期待!',
'云': '云',
'算': '算',
'网': '网',
'用': '用',
'百度云': '百度云',
'智算': '智算',
'算力网络': '算力网络',
'AI应用': 'AI应用',
'计算': '计算',
'网络': '网络',
'存储': '存储',
'数据库': '数据库',
'泛CDN': '泛CDN',
'AI能力引擎': 'AI能力引擎',
'云与业务安全': '云与业务安全',
'大数据平台': '大数据平台',
'云原生平台': '云原生平台',
'智能内容科技': '智能内容科技',
'SME企业服务': 'SME企业服务',
'视频云平台': '视频云平台',
'智能短信': '智能短信',
'智慧医疗': '智慧医疗',
'智慧客服': '智慧客服',
'云服务器_GPU': '云服务器_GPU',
'云服务器_BCC': '云服务器_BCC',
'专属服务器': '专属服务器',
'轻量应用服务器': '轻量应用服务器',
'专线接入': '专线接入',
'对等连接': '对等连接',
'智能云解析': '智能云解析',
'弹性公网IP': '弹性公网IP',
'IPv6公网网关': 'IPv6公网网关',
'共享带宽': '共享带宽',
'NAT网关': 'NAT网关',
'智能流量管理': '智能流量管理',
'EIP带宽包': 'EIP带宽包',
'VPN网关': 'VPN网关',
'服务网卡': '服务网卡',
'云智能网': '云智能网',
'负载均衡': '负载均衡',
'文件存储': '文件存储',
'对象存储': '对象存储',
'云磁盘': '云磁盘',
'内容分发网络': '内容分发网络',
'数据可视化私有化': '数据可视化私有化',
'消息服务 for Kafka': '消息服务 for Kafka',
'云数据库RDS': '云数据库RDS',
'MapReduce': 'MapReduce',
'云数据库SCS for Redis': '云数据库SCS for Redis',
'云数据库HBase': '云数据库HBase',
'云数据库DocDB for MongoDB': '云数据库DocDB for MongoDB',
'数据传输服务': '数据传输服务',
'音视频直播': '音视频直播',
'动态加速': '动态加速',
'文字识别': '文字识别',
'语音能力引擎': '语音能力引擎',
'自然语言处理': '自然语言处理',
'图像识别': '图像识别',
'图像搜索': '图像搜索',
'卡证识别': '卡证识别',
'图像增强与特效': '图像增强与特效',
'人脸识别': '人脸识别',
'机器翻译': '机器翻译',
'密钥管理服务': '密钥管理服务',
'主机安全': '主机安全',
'云防火墙': '云防火墙',
'应用防火墙': '应用防火墙',
'入侵检测系统': '入侵检测系统',
'云堡垒机': '云堡垒机',
'DDoS防护服务': 'DDoS防护服务',
'实时音视频': '实时音视频',
'音视频处理': '音视频处理',
'Elasticsearch': 'Elasticsearch',
'数据仓库DORIS': '数据仓库DORIS',
'商标知产服务': '商标知产服务',
'容器引擎': '容器引擎',
'工商财税服务': '工商财税服务',
'媒体内容分析': '媒体内容分析',
'备案服务': '备案服务',
'智能门户': '智能门户',
'容器镜像服务': '容器镜像服务',
'域名服务': '域名服务',
'简单消息服务': '简单消息服务',
'容器云': '容器云',
'裸金属': '裸金属',
'一体机-昆仑芯': '一体机-昆仑芯',
'一体机-天数智芯': '一体机-天数智芯',
'互联网专线': '互联网专线',
'SDWAN': 'SDWAN',
'DCI': 'DCI',
'AI专线': 'AI专线',
'灵医智能体': '灵医智能体',
'客悦·智能客服': '客悦·智能客服'
},
en: {
home: 'Home',
ecosystem: 'Products & Services',
supply: 'Supply',
aboutUs: 'About Us',
balance: 'Balance',
recharge: 'Recharge',
personalCenter: 'Personal Center',
logout: 'Logout',
searchPlaceholder: 'Search',
console: 'Console',
login: 'Login',
register: 'Register Now',
noData: 'No Data',
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',
'数据库': 'Database',
'泛CDN': 'CDN',
'AI能力引擎': 'AI Engine',
'云与业务安全': 'Cloud & Business Security',
'大数据平台': 'Big Data Platform',
'云原生平台': 'Cloud Native Platform',
'智能内容科技': 'Intelligent Content Tech',
'SME企业服务': 'SME Enterprise Service',
'视频云平台': 'Video Cloud Platform',
'智能短信': 'Smart SMS',
'智慧医疗': 'Smart Healthcare',
'智慧客服': 'Smart Customer Service',
'云服务器_GPU': 'Cloud Server GPU',
'云服务器_BCC': 'Cloud Server BCC',
'专属服务器': 'Dedicated Server',
'轻量应用服务器': 'Lightweight App Server',
'专线接入': 'Direct Connect',
'对等连接': 'Peer Connection',
'智能云解析': 'Smart Cloud DNS',
'弹性公网IP': 'Elastic Public IP',
'IPv6公网网关': 'IPv6 Public Gateway',
'共享带宽': 'Shared Bandwidth',
'NAT网关': 'NAT Gateway',
'智能流量管理': 'Smart Traffic Management',
'EIP带宽包': 'EIP Bandwidth Package',
'VPN网关': 'VPN Gateway',
'服务网卡': 'Service Network Card',
'云智能网': 'Cloud Smart Network',
'负载均衡': 'Load Balancer',
'文件存储': 'File Storage',
'对象存储': 'Object Storage',
'云磁盘': 'Cloud Disk',
'内容分发网络': 'Content Delivery Network',
'数据可视化私有化': 'Data Visualization Private',
'消息服务 for Kafka': 'Message Service for Kafka',
'云数据库RDS': 'Cloud Database RDS',
'MapReduce': 'MapReduce',
'云数据库SCS for Redis': 'Cloud Database SCS for Redis',
'云数据库HBase': 'Cloud Database HBase',
'云数据库DocDB for MongoDB': 'Cloud Database DocDB for MongoDB',
'数据传输服务': 'Data Transfer Service',
'音视频直播': 'Audio/Video Live',
'动态加速': 'Dynamic Acceleration',
'文字识别': 'Text Recognition',
'语音能力引擎': 'Speech Engine',
'自然语言处理': 'Natural Language Processing',
'图像识别': 'Image Recognition',
'图像搜索': 'Image Search',
'卡证识别': 'Card/Certificate Recognition',
'图像增强与特效': 'Image Enhancement & Effects',
'人脸识别': 'Face Recognition',
'机器翻译': 'Machine Translation',
'密钥管理服务': 'Key Management Service',
'主机安全': 'Host Security',
'云防火墙': 'Cloud Firewall',
'应用防火墙': 'Application Firewall',
'入侵检测系统': 'Intrusion Detection System',
'云堡垒机': 'Cloud Bastion Host',
'DDoS防护服务': 'DDoS Protection Service',
'实时音视频': 'Real-time Audio/Video',
'音视频处理': 'Audio/Video Processing',
'Elasticsearch': 'Elasticsearch',
'数据仓库DORIS': 'Data Warehouse DORIS',
'商标知产服务': 'Trademark & IP Service',
'容器引擎': 'Container Engine',
'工商财税服务': 'Business & Tax Service',
'媒体内容分析': 'Media Content Analysis',
'备案服务': 'Filing Service',
'智能门户': 'Smart Portal',
'容器镜像服务': 'Container Image Service',
'域名服务': 'Domain Name Service',
'简单消息服务': 'Simple Message Service',
'容器云': 'Container Cloud',
'裸金属': 'Bare Metal',
'一体机-昆仑芯': 'All-in-One Kunlun Chip',
'一体机-天数智芯': 'All-in-One Days Chip',
'互联网专线': 'Internet Leased Line',
'SDWAN': 'SDWAN',
'DCI': 'DCI',
'AI专线': 'AI Leased Line',
'灵医智能体': 'LingYi Medical AI',
'客悦·智能客服': 'KeYue Smart Customer Service'
}
}
} }
}, },
created() { created() {
@ -440,7 +212,6 @@ export default Vue.extend({
} }
!this.showRegisterButton && this.getUserInfo(); !this.showRegisterButton && this.getUserInfo();
this.init() this.init()
this.initLanguage()
this.initData() this.initData()
}, },
mounted() { mounted() {
@ -457,11 +228,6 @@ export default Vue.extend({
} }
}); });
}, },
beforeDestroy() {
if (this.languageChangedHandler) {
languageBus.$off('language-changed', this.languageChangedHandler)
}
},
computed: { computed: {
...mapGetters(["sidebar", "avatar", "device"]), ...mapGetters(["sidebar", "avatar", "device"]),
...mapState({ ...mapState({
@ -502,7 +268,7 @@ export default Vue.extend({
// AI // AI
handleAIClick() { handleAIClick() {
this.$message.info({ this.$message.info({
message: this.translations[this.language].featureComingSoon, message: '功能即将上线,敬请期待!',
duration: 3000, duration: 3000,
showClose: true showClose: true
}); });
@ -511,7 +277,7 @@ export default Vue.extend({
// //
handleServiceClick() { handleServiceClick() {
this.$message.info({ this.$message.info({
message: this.translations[this.language].featureComingSoon, message: '功能即将上线,敬请期待!',
duration: 3000, duration: 3000,
showClose: true showClose: true
}); });
@ -534,27 +300,6 @@ export default Vue.extend({
this.messageCount = count; this.messageCount = count;
}, },
//
initLanguage() {
this.language = languageStore.getLanguage()
this.languageChangedHandler = (lang) => {
this.language = lang
}
languageBus.$on('language-changed', this.languageChangedHandler)
},
//
toggleLanguage() {
const newLanguage = this.language === 'zh' ? 'en' : 'zh';
languageStore.setLanguage(newLanguage);
},
//
getTranslation(key) {
if (!key) return ''
return this.translations[this.language]?.[key] || key
},
// //
goB() { goB() {
if (sessionStorage.getItem('jueseNew').includes('客户')) { if (sessionStorage.getItem('jueseNew').includes('客户')) {
@ -567,6 +312,8 @@ export default Vue.extend({
this.$router.push('/sales/distributorManagement') this.$router.push('/sales/distributorManagement')
}else if(sessionStorage.getItem('jueseNew').includes('财务')){ }else if(sessionStorage.getItem('jueseNew').includes('财务')){
this.$router.push('/finance/supplierSettlementStatistics') this.$router.push('/finance/supplierSettlementStatistics')
}else if(sessionStorage.getItem('jueseNew').includes('admin')){
this.$router.push('/superAdministrator/addAdmin')
} }
}, },
@ -1025,29 +772,6 @@ export default Vue.extend({
} }
} }
.language-toggle {
cursor: pointer;
margin-right: 20px;
text-align: center;
border-radius: 4px;
font-size: 14px;
text-decoration: none;
transition: all 0.3s;
color: #333;
z-index: 1001;
display: flex;
align-items: center;
.icon-ditu_diqiu_o {
margin-right: 5px;
font-size: 24px !important;
}
&:hover {
color: #1E6FFF;
}
}
a { a {
border-radius: 4px; border-radius: 4px;
font-size: 14px; font-size: 14px;

View File

@ -915,7 +915,7 @@ export default {
} }
} else { } else {
this.$router.push(getHomePath()); this.$router.push(getHomePath());
} }``
} else if (res.roles.includes('运营')) { } else if (res.roles.includes('运营')) {
this.$router.push('/operation/supplierManagement'); this.$router.push('/operation/supplierManagement');
} else if (res.roles.includes('销售')) { } else if (res.roles.includes('销售')) {