feat: 看板排版调整,多语言翻译
This commit is contained in:
1
src/assets/svg/base.svg
Normal file
1
src/assets/svg/base.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1706690434521" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4424" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M343.467 430.933c12.8-12.8 12.8-34.133 0-49.066-34.134-34.134-34.134-89.6 0-123.734 12.8-12.8 12.8-34.133 0-49.066-6.4-6.4-14.934-10.667-23.467-10.667s-17.067 4.267-23.467 10.667c-27.733 29.866-44.8 68.266-44.8 110.933 0 40.533 14.934 81.067 44.8 110.933 6.4 6.4 14.934 10.667 23.467 10.667s17.067-4.267 23.467-10.667z m-128-292.266C209.067 132.267 200.533 128 192 128s-17.067 4.267-23.467 10.667c-98.133 102.4-98.133 262.4 0 364.8C172.8 507.733 183.467 512 192 512s17.067-4.267 23.467-10.667c12.8-12.8 12.8-36.266 0-49.066-70.4-74.667-70.4-192 0-266.667 12.8-12.8 12.8-34.133 0-46.933zM512 405.333c34.133 0 66.133-21.333 78.933-51.2s6.4-68.266-19.2-91.733C548.267 238.933 512 230.4 480 243.2s-53.333 44.8-53.333 78.933c2.133 44.8 38.4 83.2 85.333 83.2z m343.467-266.666c-6.4-6.4-12.8-10.667-23.467-10.667-8.533 0-17.067 2.133-23.467 8.533l-2.133 2.134c-12.8 12.8-12.8 36.266 0 49.066 70.4 74.667 70.4 192 0 266.667-12.8 12.8-12.8 36.267 0 49.067 6.4 6.4 14.933 10.666 23.467 10.666s17.066-4.266 23.466-10.666c46.934-49.067 72.534-115.2 72.534-181.334 4.266-70.4-23.467-134.4-70.4-183.466zM512 473.6c-21.333 0-42.667-6.4-61.867-14.933L285.867 896h76.8l44.8-53.333h209.066l44.8 53.333h76.8L573.867 456.533C556.8 467.2 535.467 473.6 512 473.6z m0 25.6l53.333 187.733H460.8L512 499.2zM407.467 791.467l51.2-53.334H563.2l51.2 53.334H407.467z m270.933-582.4c-12.8 12.8-12.8 34.133 0 49.066 34.133 34.134 34.133 89.6 0 123.734-12.8 12.8-12.8 34.133 0 49.066 6.4 6.4 14.933 10.667 23.467 10.667 8.533 0 17.066-4.267 23.466-8.533 59.734-61.867 59.734-160 0-221.867-6.4-6.4-14.933-10.667-23.466-10.667-8.534 0-17.067 2.134-23.467 8.534z" fill="#4096ff" p-id="4425"></path><path d="M343.467 430.933c12.8-12.8 12.8-34.133 0-49.066-34.134-34.134-34.134-89.6 0-123.734 12.8-12.8 12.8-34.133 0-49.066-6.4-6.4-14.934-10.667-23.467-10.667s-17.067 4.267-23.467 10.667c-27.733 29.866-44.8 68.266-44.8 110.933 0 40.533 14.934 81.067 44.8 110.933 6.4 6.4 14.934 10.667 23.467 10.667s17.067-4.267 23.467-10.667z m-128-292.266C209.067 132.267 200.533 128 192 128s-17.067 4.267-23.467 10.667c-98.133 102.4-98.133 262.4 0 364.8C172.8 507.733 183.467 512 192 512s17.067-4.267 23.467-10.667c12.8-12.8 12.8-36.266 0-49.066-70.4-74.667-70.4-192 0-266.667 12.8-12.8 12.8-34.133 0-46.933zM512 405.333c34.133 0 66.133-21.333 78.933-51.2s6.4-68.266-19.2-91.733C548.267 238.933 512 230.4 480 243.2s-53.333 44.8-53.333 78.933c2.133 44.8 38.4 83.2 85.333 83.2z m343.467-266.666c-6.4-6.4-12.8-10.667-23.467-10.667-8.533 0-17.067 2.133-23.467 8.533l-2.133 2.134c-12.8 12.8-12.8 36.266 0 49.066 70.4 74.667 70.4 192 0 266.667-12.8 12.8-12.8 36.267 0 49.067 6.4 6.4 14.933 10.666 23.467 10.666s17.066-4.266 23.466-10.666c46.934-49.067 72.534-115.2 72.534-181.334 4.266-70.4-23.467-134.4-70.4-183.466zM512 473.6c-21.333 0-42.667-6.4-61.867-14.933L285.867 896h76.8l44.8-53.333h209.066l44.8 53.333h76.8L573.867 456.533C556.8 467.2 535.467 473.6 512 473.6z m0 25.6l53.333 187.733H460.8L512 499.2zM407.467 791.467l51.2-53.334H563.2l51.2 53.334H407.467z m270.933-582.4c-12.8 12.8-12.8 34.133 0 49.066 34.133 34.134 34.133 89.6 0 123.734-12.8 12.8-12.8 34.133 0 49.066 6.4 6.4 14.933 10.667 23.467 10.667 8.533 0 17.066-4.267 23.466-8.533 59.734-61.867 59.734-160 0-221.867-6.4-6.4-14.933-10.667-23.466-10.667-8.534 0-17.067 2.134-23.467 8.534z" fill="#4096ff" p-id="4426"></path></svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
1
src/assets/svg/userIMS.svg
Normal file
1
src/assets/svg/userIMS.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1706691279549" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5990" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M504.685714 519.314286H307.2c-14.628571 0-29.257143 7.314286-36.571429 21.942857-7.314286 14.628571-7.314286 29.257143 0 36.571428 7.314286 14.628571 21.942857 21.942857 36.571429 21.942858h190.171429c21.942857 0 36.571429-14.628571 43.885714-36.571429 0-21.942857-14.628571-43.885714-36.571429-43.885714zM716.8 358.4H307.2c-21.942857 0-36.571429 14.628571-36.571429 36.571429s14.628571 36.571429 36.571429 36.571428h402.285714c21.942857 0 36.571429-14.628571 36.571429-36.571428 7.314286-21.942857-7.314286-36.571429-29.257143-36.571429z" fill="#4096ff" p-id="5991"></path><path d="M512 14.628571C226.742857 14.628571 0 219.428571 0 460.8c0 117.028571 51.2 226.742857 138.971429 314.514286v197.485714c0 14.628571 7.314286 21.942857 14.628571 29.257143 7.314286 7.314286 14.628571 14.628571 29.257143 14.628571 7.314286 0 14.628571-7.314286 21.942857-7.314285l153.6-109.714286c51.2 14.628571 102.4 21.942857 153.6 21.942857 285.257143 0 512-204.8 512-453.485714C1024 219.428571 797.257143 14.628571 512 14.628571z m0 819.2c-51.2 0-102.4-7.314286-146.285714-21.942857-14.628571-7.314286-29.257143 0-36.571429 7.314286l-109.714286 73.142857v-131.657143c0-7.314286 0-21.942857-14.628571-29.257143-80.457143-73.142857-124.342857-168.228571-124.342857-263.314285 0-204.8 190.171429-373.028571 431.542857-373.028572 241.371429 0 431.542857 168.228571 431.542857 373.028572s-190.171429 365.714286-431.542857 365.714285z" fill="#4096ff" p-id="5992"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
1
src/assets/svg/userSMF.svg
Normal file
1
src/assets/svg/userSMF.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1706691291048" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6285" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M964.348424 509.865574L556.935274 692.602355c-38.943904 16.476267-53.922329 16.476267-89.870548 0L59.651576 509.865574C38.681782 499.380677 32.690412 455.943246 32.690412 433.475609a652.834638 652.834638 0 0 0 64.407226 31.454692L512 656.654136l414.902362-191.723835s37.446062-19.471952 64.407226-31.454692c0 23.965479-7.489212 67.402911-26.961164 76.389965z m0-191.723835L556.935274 500.87852c-38.943904 16.476267-53.922329 16.476267-89.870548 0L59.651576 318.141739c-31.454692-16.476267-31.454692-70.398596 0-89.870548L467.064726 14.079719c35.948219-17.97411 58.415856-19.471952 89.870548 0l407.41315 214.191472c29.956849 16.476267 29.956849 76.389966 0 89.870548zM512 50.027938L97.097638 273.206465 512 448.454033l414.902362-175.247568z m0 774.983691l414.902362-191.723836s37.446062-19.471952 64.407226-31.454691c0 23.965479-7.489212 67.402911-26.961164 76.389965L556.935274 861.259416c-38.943904 16.476267-53.922329 16.476267-89.870548 0L59.651576 678.223067C38.681782 666.539896 32.690412 624.300739 32.690412 601.833102a652.834638 652.834638 0 0 0 64.407226 31.454691z m0 150.682952l414.902362-191.723836s37.446062-19.471952 64.407226-31.454691c0 23.965479-7.489212 67.402911-26.961164 76.389965L556.935274 1011.6428c-38.943904 16.476267-53.922329 16.476267-89.870548 0l-407.41315-182.736781c-20.969794-11.98274-26.961164-53.922329-26.961164-76.389965a652.834638 652.834638 0 0 0 64.407226 31.454691z" p-id="6286" fill="#4096ff"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -494,8 +494,10 @@ export default {
|
||||
fullscreen: "Click on the full-screen display",
|
||||
skim: {
|
||||
users: "Users",
|
||||
userTitle:'User Information',
|
||||
session: "Sessions",
|
||||
base: "Base Stations",
|
||||
baseTitle:'Radios Information',
|
||||
},
|
||||
upfFlow:{
|
||||
title: "User Plane Throughput",
|
||||
@@ -503,13 +505,14 @@ export default {
|
||||
down:'Downlink'
|
||||
},
|
||||
upfFlowTotal:{
|
||||
title:'Traffic Information',
|
||||
up:'Uplink',
|
||||
down:'Downlink'
|
||||
},
|
||||
alarmTypeBar:{
|
||||
alarmSum:'Alarm Summary',
|
||||
topTitle:"TOP 3",
|
||||
},
|
||||
},
|
||||
resources: {
|
||||
title: "Resource Summary",
|
||||
sysMem: "Memory",
|
||||
@@ -519,7 +522,7 @@ export default {
|
||||
topology: {
|
||||
title: "Network Topology",
|
||||
normal: "Normal",
|
||||
abnormal: "AbNormal",
|
||||
abnormal: "Abnormal",
|
||||
},
|
||||
userActivity: {
|
||||
title: "User Activity",
|
||||
|
||||
@@ -494,15 +494,18 @@ export default {
|
||||
fullscreen: "点击全屏显示",
|
||||
skim: {
|
||||
users: "用户数",
|
||||
userTitle:'用户信息',
|
||||
session: "会话数",
|
||||
base: "基站数",
|
||||
baseTitle:'基站信息',
|
||||
},
|
||||
upfFlow:{
|
||||
title: "用户面吞吐量",
|
||||
up:'上行',
|
||||
down:'下行'
|
||||
},
|
||||
upfFlowTotal:{
|
||||
upfFlowTotal:{
|
||||
title:'流量信息',
|
||||
up:'上行',
|
||||
down:'下行'
|
||||
},
|
||||
|
||||
@@ -110,35 +110,53 @@
|
||||
|
||||
/* 概览区域 */
|
||||
.skim {
|
||||
min-height: 6.167rem;
|
||||
height: 14%;
|
||||
min-height: 7.78rem;
|
||||
height: 14.4%;
|
||||
}
|
||||
.skim .inner {
|
||||
.skim .inner .data {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
height: 90%;
|
||||
}
|
||||
.skim .inner .item {
|
||||
width: 50%;
|
||||
.skim .inner .data .item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
width: 33%;
|
||||
}
|
||||
.skim .inner .item h4 {
|
||||
font-size: 1.167rem;
|
||||
padding-left: 0.2rem;
|
||||
.skim .inner .data .item div {
|
||||
font-size: 1.467rem;
|
||||
color: #fff;
|
||||
margin-bottom: 0.333rem;
|
||||
margin-bottom: 0;
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
line-height: 2rem;
|
||||
}
|
||||
.skim .inner .item span {
|
||||
font-size: 0.667rem;
|
||||
.skim .inner .data .item span {
|
||||
color: #4c9bfd;
|
||||
font-size: 0.833rem;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
line-height: 2rem;
|
||||
}
|
||||
.skim .inner .data .item span::before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 0;
|
||||
background-image: linear-gradient(to right, #fff, #fff0);
|
||||
height: 1px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* 用户行为 */
|
||||
.userActivity {
|
||||
min-height: 22rem;
|
||||
height: 82%;
|
||||
min-height: 35.8rem;
|
||||
height: 66.3%;
|
||||
}
|
||||
.userActivity .inner .chart {
|
||||
width: 100%;
|
||||
@@ -146,15 +164,19 @@
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
/* 总流量 */
|
||||
/* 流量统计 */
|
||||
.upfFlowTotal {
|
||||
min-height: 6.167rem;
|
||||
height: 14%;
|
||||
min-height: 7.5rem;
|
||||
height: 14.6%;
|
||||
}
|
||||
.upfFlowTotal .inner .filter {
|
||||
.upfFlowTotal .inner h3 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.upfFlowTotal .inner h3 .filter {
|
||||
display: flex;
|
||||
}
|
||||
.upfFlowTotal .inner .filter span {
|
||||
.upfFlowTotal .inner h3 .filter span {
|
||||
display: block;
|
||||
height: 0.75rem;
|
||||
line-height: 1;
|
||||
@@ -164,37 +186,46 @@
|
||||
border-right: 0.083rem solid #00f2f1;
|
||||
cursor: pointer;
|
||||
}
|
||||
.upfFlowTotal .inner .filter span:first-child {
|
||||
.upfFlowTotal .inner h3 .filter span:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
.upfFlowTotal .inner .filter span:last-child {
|
||||
.upfFlowTotal .inner h3 .filter span:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
.upfFlowTotal .inner .filter span.active {
|
||||
.upfFlowTotal .inner h3 .filter span.active {
|
||||
color: #fff;
|
||||
font-size: 0.833rem;
|
||||
}
|
||||
.upfFlowTotal .data {
|
||||
.upfFlowTotal .inner .chart {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.upfFlowTotal .inner .chart .data {
|
||||
display: flex;
|
||||
margin-top: 1.833rem;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
height: 72%;
|
||||
}
|
||||
.upfFlowTotal .item {
|
||||
width: 50%;
|
||||
.upfFlowTotal .inner .chart .data .item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
}
|
||||
.upfFlowTotal h4 {
|
||||
font-size: 1.167rem;
|
||||
.upfFlowTotal .inner .chart .data .item h4 {
|
||||
font-size: 1.467rem;
|
||||
color: #fff;
|
||||
margin-bottom: 0.417rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.upfFlowTotal span {
|
||||
.upfFlowTotal .inner .chart .data .item span {
|
||||
color: #4c9bfd;
|
||||
font-size: 0.667rem;
|
||||
font-size: 0.867rem;
|
||||
}
|
||||
|
||||
/* 资源情况 */
|
||||
.resources {
|
||||
min-height: 14rem;
|
||||
height: 26%;
|
||||
min-height: 13.6rem;
|
||||
height: 25.5%;
|
||||
}
|
||||
.resources .inner .chart {
|
||||
width: 100%;
|
||||
@@ -212,480 +243,3 @@
|
||||
height: 100%;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
/* 监控 */
|
||||
.monitor {
|
||||
height: 20rem;
|
||||
}
|
||||
.monitor .inner {
|
||||
padding: 1rem 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.monitor .tabs {
|
||||
padding: 0 1.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
.monitor .tabs a {
|
||||
color: #1950c4;
|
||||
font-size: 0.75rem;
|
||||
padding: 0 1.125rem;
|
||||
}
|
||||
|
||||
.monitor .tabs a:first-child {
|
||||
border-right: 0.083rem solid #00f2f1;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.monitor .tabs a.active {
|
||||
color: #fff;
|
||||
}
|
||||
.monitor .content {
|
||||
flex: 1;
|
||||
display: none;
|
||||
position: relative;
|
||||
}
|
||||
.monitor .head {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
font-size: 0.583rem;
|
||||
padding: 0.5rem 1.5rem;
|
||||
color: #68d8fe;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 1.05;
|
||||
}
|
||||
.monitor .col:nth-child(1) {
|
||||
width: 3.2rem;
|
||||
}
|
||||
.monitor .col:nth-child(2) {
|
||||
width: 8.4rem;
|
||||
/* 不换行 一行省略*/
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.monitor .col:nth-child(3) {
|
||||
width: 3.2rem;
|
||||
}
|
||||
.monitor .marquee-view {
|
||||
position: absolute;
|
||||
top: 1.6rem;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.monitor .row {
|
||||
line-height: 1.05;
|
||||
padding: 0.5rem 1.5rem;
|
||||
color: #61a8ff;
|
||||
font-size: 0.5rem;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.monitor .row:hover {
|
||||
color: #68d8ff;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.monitor .row:hover .icon-dot {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.monitor .icon-dot {
|
||||
position: absolute;
|
||||
left: 0.64rem;
|
||||
opacity: 0;
|
||||
}
|
||||
.monitor .marquee-view {
|
||||
position: absolute;
|
||||
top: 1.6rem;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.monitor .row {
|
||||
line-height: 1.05;
|
||||
padding: 0.5rem 1.5rem;
|
||||
color: #61a8ff;
|
||||
font-size: 0.5rem;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.monitor .row:hover {
|
||||
color: #68d8ff;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.monitor .row:hover .icon-dot {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.monitor .icon-dot {
|
||||
position: absolute;
|
||||
left: 0.64rem;
|
||||
opacity: 0;
|
||||
}
|
||||
/* ------------------------------------------------------------动画 */
|
||||
@keyframes row {
|
||||
0% {
|
||||
}
|
||||
100% {
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
/* 调用动画 */
|
||||
.monitor .marquee {
|
||||
/* //infinite永久调用动画 */
|
||||
animation: row 10s linear infinite;
|
||||
}
|
||||
/*鼠标划入 停止动画 */
|
||||
.monitor .marquee:hover {
|
||||
animation-play-state: paused;
|
||||
}
|
||||
/* 点位 */
|
||||
.point {
|
||||
height: 14.167rem;
|
||||
}
|
||||
.point .chart {
|
||||
display: flex;
|
||||
margin-top: 1rem;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.point .pie {
|
||||
width: 13rem;
|
||||
height: 10rem;
|
||||
margin-left: -0.4rem;
|
||||
}
|
||||
.point .data {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
width: 7rem;
|
||||
padding: 1.5rem 1.25rem;
|
||||
box-sizing: border-box;
|
||||
background-image: url(../images/rect.png);
|
||||
background-size: cover;
|
||||
}
|
||||
.point h4 {
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 1.167rem;
|
||||
color: #fff;
|
||||
}
|
||||
.point span {
|
||||
display: block;
|
||||
color: #4c9bfd;
|
||||
font-size: 0.667rem;
|
||||
}
|
||||
/* 地图 */
|
||||
.map {
|
||||
height: 24.1rem;
|
||||
margin-bottom: 0.833rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.map h3 {
|
||||
line-height: 1;
|
||||
padding: 0.667rem 0;
|
||||
margin: 0;
|
||||
font-size: 0.833rem;
|
||||
color: #fff;
|
||||
}
|
||||
.map .icon-cube {
|
||||
color: #68d8fe;
|
||||
}
|
||||
.map .chart {
|
||||
flex: 1;
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
.map .geo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
/* 用户模块 */
|
||||
.users {
|
||||
height: 14.167rem;
|
||||
display: flex;
|
||||
}
|
||||
.users .chart {
|
||||
display: flex;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.users .bar {
|
||||
width: 24.5rem;
|
||||
height: 10rem;
|
||||
}
|
||||
.users .data {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
width: 7rem;
|
||||
padding: 1.5rem 1.25rem;
|
||||
box-sizing: border-box;
|
||||
background-image: url(../images/rect.png);
|
||||
background-size: cover;
|
||||
}
|
||||
.users h4 {
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 1.167rem;
|
||||
color: #fff;
|
||||
}
|
||||
.users span {
|
||||
display: block;
|
||||
color: #4c9bfd;
|
||||
font-size: 0.667rem;
|
||||
}
|
||||
|
||||
/* 销售区域 */
|
||||
.sales {
|
||||
height: 10.333rem;
|
||||
}
|
||||
.sales .caption {
|
||||
display: flex;
|
||||
line-height: 1;
|
||||
}
|
||||
.sales h3 {
|
||||
height: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
border-right: 0.083rem solid #00f2f1;
|
||||
}
|
||||
.sales a {
|
||||
padding: 0.167rem;
|
||||
font-size: 0.667rem;
|
||||
margin: -0.125rem 0 0 0.875rem;
|
||||
border-radius: 0.125rem;
|
||||
color: #0bace6;
|
||||
}
|
||||
.sales a.active {
|
||||
background-color: #4c9bfd;
|
||||
color: #fff;
|
||||
}
|
||||
.sales .inner {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.sales .chart {
|
||||
flex: 1;
|
||||
padding-top: 0.6rem;
|
||||
position: relative;
|
||||
}
|
||||
.sales .label {
|
||||
position: absolute;
|
||||
left: 1.75rem;
|
||||
top: 0.75rem;
|
||||
color: #4996f5;
|
||||
font-size: 0.583rem;
|
||||
}
|
||||
.sales .line {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
/* 渠道区块 */
|
||||
.wrap {
|
||||
display: flex;
|
||||
}
|
||||
.channel,
|
||||
.quarter {
|
||||
flex: 1;
|
||||
height: 9.667rem;
|
||||
}
|
||||
.channel {
|
||||
margin-right: 0.833rem;
|
||||
}
|
||||
.channel .data {
|
||||
overflow: hidden;
|
||||
}
|
||||
.channel .item {
|
||||
margin-top: 0.85rem;
|
||||
}
|
||||
.channel .item:first-child {
|
||||
float: left;
|
||||
}
|
||||
.channel .item:last-child {
|
||||
float: right;
|
||||
}
|
||||
.channel h4 {
|
||||
color: #fff;
|
||||
font-size: 1.333rem;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
.channel small {
|
||||
font-size: 50%;
|
||||
}
|
||||
.channel span {
|
||||
display: block;
|
||||
color: #4c9bfd;
|
||||
font-size: 0.583rem;
|
||||
}
|
||||
/* 季度区块 */
|
||||
.quarter .inner {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 -0.25rem;
|
||||
}
|
||||
.quarter .chart {
|
||||
flex: 1;
|
||||
padding-top: 0.75rem;
|
||||
}
|
||||
.quarter .box {
|
||||
position: relative;
|
||||
}
|
||||
.quarter .label {
|
||||
transform: translate(-50%, -30%);
|
||||
color: #fff;
|
||||
font-size: 1.25rem;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
}
|
||||
.quarter .label small {
|
||||
font-size: 50%;
|
||||
}
|
||||
.quarter .gauge {
|
||||
height: 3.5rem;
|
||||
}
|
||||
.quarter .data {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.quarter .item {
|
||||
width: 50%;
|
||||
}
|
||||
.quarter h4 {
|
||||
color: #fff;
|
||||
font-size: 1rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.quarter span {
|
||||
display: block;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
color: #4c9bfd;
|
||||
font-size: 0.583rem;
|
||||
}
|
||||
/* 排行榜 */
|
||||
.top {
|
||||
height: 11.8rem;
|
||||
}
|
||||
.top .inner {
|
||||
display: flex;
|
||||
}
|
||||
.top .all {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 7rem;
|
||||
color: #4c9bfd;
|
||||
font-size: 0.6rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.top .all ul {
|
||||
padding-left: 0.5rem;
|
||||
margin-top: 0.5rem;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.top .all li {
|
||||
overflow: hidden;
|
||||
}
|
||||
.top .all [class^='icon-'] {
|
||||
font-size: 1.5rem;
|
||||
vertical-align: middle;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
.top .province {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
color: #fff;
|
||||
}
|
||||
.top .province i {
|
||||
padding: 0 0.5rem;
|
||||
margin-top: 0.208rem;
|
||||
float: right;
|
||||
font-style: normal;
|
||||
font-size: 0.583rem;
|
||||
color: #0bace6;
|
||||
}
|
||||
.top .province s {
|
||||
display: inline-block;
|
||||
transform: scale(0.8);
|
||||
text-decoration: none;
|
||||
}
|
||||
.top .province .icon-up {
|
||||
color: #dc3c33;
|
||||
}
|
||||
.top .province .icon-down {
|
||||
color: #36be90;
|
||||
}
|
||||
.top .province .data {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
margin-top: 0.6rem;
|
||||
}
|
||||
.top .province ul {
|
||||
flex: 1;
|
||||
line-height: 1;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.top .province ul li {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.top .province ul span {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.top .province ul.sup {
|
||||
font-size: 0.583rem;
|
||||
}
|
||||
.top .province ul.sup li {
|
||||
color: #4995f4;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
.top .province ul.sup li.active {
|
||||
color: #a3c6f2;
|
||||
background-color: rgba(10, 67, 188, 0.2);
|
||||
}
|
||||
.top .province ul.sub {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
font-size: 0.5rem;
|
||||
background-color: rgba(10, 67, 188, 0.2);
|
||||
}
|
||||
.top .province ul.sub li {
|
||||
color: #52ffff;
|
||||
padding: 0.417rem 0.6rem;
|
||||
}
|
||||
.clock {
|
||||
position: absolute;
|
||||
top: -1.5rem;
|
||||
right: 1.667rem;
|
||||
font-size: 0.833rem;
|
||||
color: #0bace6;
|
||||
}
|
||||
.clock i {
|
||||
margin-right: 5px;
|
||||
font-size: 0.833rem;
|
||||
}
|
||||
@media screen and (max-width: 1600px) {
|
||||
.top span {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
.top .province ul.sup li {
|
||||
padding: 0.4rem 0.5rem;
|
||||
}
|
||||
.top .province ul.sub li {
|
||||
padding: 0.23rem 0.5rem;
|
||||
}
|
||||
.quarter span {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<script setup lang="ts">
|
||||
import { onBeforeUnmount, onMounted, reactive, ref } from 'vue';
|
||||
import svgBase from '@/assets/svg/base.svg';
|
||||
import svgUserIMS from '@/assets/svg/userIMS.svg';
|
||||
import svgUserSMF from '@/assets/svg/userSMF.svg';
|
||||
import useI18n from '@/hooks/useI18n';
|
||||
import Topology from './components/Topology/index.vue';
|
||||
import NeResources from './components/NeResources/index.vue';
|
||||
@@ -112,7 +115,6 @@ onMounted(() => {
|
||||
pageSize: 1,
|
||||
}),
|
||||
listBase5G({
|
||||
//
|
||||
neType: 'AMF',
|
||||
neId: '001',
|
||||
id: '',
|
||||
@@ -183,33 +185,62 @@ onBeforeUnmount(() => {
|
||||
<!--概览-->
|
||||
<div class="skim panel">
|
||||
<div class="inner">
|
||||
<div class="item">
|
||||
<h4>{{ skimState.udmSubNum }}</h4>
|
||||
<span>
|
||||
<UserOutlined style="color: #006cff" />
|
||||
{{ t('views.dashboard.overview.skim.users') }}
|
||||
</span>
|
||||
<h3>
|
||||
<IdcardOutlined style="color: #68d8fe" />
|
||||
{{ t('views.dashboard.overview.skim.userTitle') }}
|
||||
</h3>
|
||||
<div class="data">
|
||||
<div class="item">
|
||||
<div>
|
||||
<UserOutlined
|
||||
style="color: #4096ff; margin-right: 8px; font-size: 1.1rem"
|
||||
/>
|
||||
{{ skimState.udmSubNum }}
|
||||
</div>
|
||||
<span>
|
||||
{{ t('views.dashboard.overview.skim.users') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="item" style="margin: 0 12px">
|
||||
<div>
|
||||
<img :src="svgUserIMS" style="width: 18px; margin-right: 8px" />
|
||||
{{ skimState.imsUeNum }}
|
||||
</div>
|
||||
<span>
|
||||
IMS {{ t('views.dashboard.overview.skim.session') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div>
|
||||
<img :src="svgUserSMF" style="width: 18px; margin-right: 8px" />
|
||||
{{ skimState.smfUeNum }}
|
||||
</div>
|
||||
<span>
|
||||
Data {{ t('views.dashboard.overview.skim.session') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h4>{{ skimState.nbNum }}</h4>
|
||||
<span>
|
||||
<GlobalOutlined style="color: #edcb35" />
|
||||
{{ t('views.dashboard.overview.skim.base') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h4>{{ skimState.imsUeNum }}</h4>
|
||||
<span>
|
||||
<UserSwitchOutlined style="color: #6acca3" />
|
||||
IMS {{ t('views.dashboard.overview.skim.session') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h4>{{ skimState.smfUeNum }}</h4>
|
||||
<span>
|
||||
<UserSwitchOutlined style="color: #6acca3" />
|
||||
Data {{ t('views.dashboard.overview.skim.session') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="skim panel">
|
||||
<div class="inner">
|
||||
<h3>
|
||||
<GlobalOutlined style="color: #68d8fe" />
|
||||
{{ t('views.dashboard.overview.skim.baseTitle') }}
|
||||
</h3>
|
||||
<div class="data">
|
||||
<div class="item">
|
||||
<div style="align-items: flex-start">
|
||||
<img
|
||||
:src="svgBase"
|
||||
style="width: 18px; margin-right: 8px; height: 2rem"
|
||||
/>
|
||||
{{ skimState.nbNum }}
|
||||
</div>
|
||||
<span>
|
||||
{{ t('views.dashboard.overview.skim.base') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -262,48 +293,58 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<!-- UPF总流量 -->
|
||||
<!-- 流量统计 -->
|
||||
<div class="upfFlowTotal panel">
|
||||
<div class="inner">
|
||||
<!-- 筛选 -->
|
||||
<div class="filter">
|
||||
<span
|
||||
:data-key="v"
|
||||
:class="{ active: upfTFActive === i }"
|
||||
v-for="(v, i) in ['0', '7', '30']"
|
||||
:key="v"
|
||||
@click="
|
||||
() => {
|
||||
upfTFActive = i;
|
||||
}
|
||||
"
|
||||
>
|
||||
{{
|
||||
v === '0'
|
||||
? '24' + t('common.units.hour')
|
||||
: v + t('common.units.day')
|
||||
}}
|
||||
<h3>
|
||||
<span>
|
||||
<SwapOutlined style="color: #68d8fe" />
|
||||
{{ t('views.dashboard.overview.upfFlowTotal.title') }}
|
||||
</span>
|
||||
</div>
|
||||
<!-- 数据 -->
|
||||
<div class="data">
|
||||
<div class="item">
|
||||
<h4>{{ upfTotalFlow[upfTFActive].up }}</h4>
|
||||
<span>
|
||||
<ArrowUpOutlined style="color: #597ef7" />
|
||||
{{ t('views.dashboard.overview.upfFlowTotal.up') }}
|
||||
|
||||
<!-- 筛选 -->
|
||||
<div class="filter">
|
||||
<span
|
||||
:data-key="v"
|
||||
:class="{ active: upfTFActive === i }"
|
||||
v-for="(v, i) in ['0', '7', '30']"
|
||||
:key="v"
|
||||
@click="
|
||||
() => {
|
||||
upfTFActive = i;
|
||||
}
|
||||
"
|
||||
>
|
||||
{{
|
||||
v === '0'
|
||||
? '24' + t('common.units.hour')
|
||||
: v + t('common.units.day')
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<h4>{{ upfTotalFlow[upfTFActive].down }}</h4>
|
||||
<span>
|
||||
<ArrowDownOutlined style="color: #52c41a" />
|
||||
{{ t('views.dashboard.overview.upfFlowTotal.down') }}
|
||||
</span>
|
||||
</h3>
|
||||
<div class="chart">
|
||||
<!-- 数据 -->
|
||||
<div class="data">
|
||||
<div class="item">
|
||||
<span>
|
||||
<ArrowUpOutlined style="color: #597ef7" />
|
||||
{{ t('views.dashboard.overview.upfFlowTotal.up') }}
|
||||
</span>
|
||||
<h4>{{ upfTotalFlow[upfTFActive].up }}</h4>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span>
|
||||
<ArrowDownOutlined style="color: #52c41a" />
|
||||
{{ t('views.dashboard.overview.upfFlowTotal.down') }}
|
||||
</span>
|
||||
<h4>{{ upfTotalFlow[upfTFActive].down }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 资源情况 -->
|
||||
<div class="resources panel">
|
||||
<div class="inner">
|
||||
@@ -317,6 +358,7 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 告警统计 -->
|
||||
<div class="alarmType panel">
|
||||
<div class="inner">
|
||||
|
||||
Reference in New Issue
Block a user