站点配置功能完成,关联配置功能完成
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 70 KiB |
@ -1,977 +0,0 @@
|
|||||||
*{
|
|
||||||
margin:0;
|
|
||||||
padding:0;
|
|
||||||
}
|
|
||||||
ul{
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
/* border: 0; */
|
|
||||||
outline: none;
|
|
||||||
/* background-color: rgba(0, 0, 0, 0); */
|
|
||||||
}
|
|
||||||
a{
|
|
||||||
text-decoration: none;
|
|
||||||
/* color: #333333; */
|
|
||||||
color: #fff;
|
|
||||||
outline: medium none;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
/* 隐藏 input type="number" 的箭头按钮 */
|
|
||||||
input[type="number"]::-webkit-outer-spin-button,
|
|
||||||
input[type="number"]::-webkit-inner-spin-button {
|
|
||||||
-webkit-appearance: none; /* WebKit 浏览器 */
|
|
||||||
margin: 0; /* Firefox 不显示箭头 */
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="number"] {
|
|
||||||
-moz-appearance: textfield; /* Firefox */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@media screen and (min-width: 1280px) {
|
|
||||||
body{
|
|
||||||
overflow-x:hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
header .nav-list{
|
|
||||||
color:#fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hide{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col{
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0;
|
|
||||||
outline: 0;
|
|
||||||
border: 0;
|
|
||||||
vertical-align: baseline;
|
|
||||||
font-weight: inherit;
|
|
||||||
font-style: inherit;
|
|
||||||
font-size: 100%;
|
|
||||||
font-family: inherit;
|
|
||||||
overflow:hidden;
|
|
||||||
}
|
|
||||||
/* select option 样式 */
|
|
||||||
select{
|
|
||||||
box-sizing: border-box;
|
|
||||||
font-size:12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 实时数据表 */
|
|
||||||
|
|
||||||
.col.echarts-chart:after{
|
|
||||||
display:block;
|
|
||||||
content:'';
|
|
||||||
clear:both;
|
|
||||||
}
|
|
||||||
.echarts-btn{
|
|
||||||
position: relative;
|
|
||||||
height:20px;
|
|
||||||
}
|
|
||||||
.echarts-btn>span{
|
|
||||||
/* float:right; */
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.echarts-text span{
|
|
||||||
font-size:14px;
|
|
||||||
color:#92A3A8; /*#333*/
|
|
||||||
margin-right:8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.realdata{
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
z-index: 10;
|
|
||||||
width: 95vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn{
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 5px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.record-btn{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
background: url(../img/LiveData/record.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
/* border-radius: 50%; */
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
.record-btn.ready{
|
|
||||||
background: url(../img/LiveData/record_ready.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
.record-btn.live{
|
|
||||||
background: url(../img/LiveData/recording.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
.record-btn.live{
|
|
||||||
transform: scale(0.9);
|
|
||||||
animation: geetest_wait 2s linear infinite both;
|
|
||||||
}
|
|
||||||
@keyframes geetest_wait{
|
|
||||||
0%{transform: scale(0.9);}
|
|
||||||
50%{transform: scale(0.5);}
|
|
||||||
100%{transform: scale(0.9);}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.refresh-btn{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.8);
|
|
||||||
background: url(../img/LiveData/total.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.refresh-btn.ready{
|
|
||||||
background: url(../img/LiveData/total_ready.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.btn:active{
|
|
||||||
background:#eee;
|
|
||||||
border-color:1px solid #333;
|
|
||||||
}
|
|
||||||
.associated-noise{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/noise.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prps{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/prps_cluster.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
pointer-events: auto;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prps.ready{
|
|
||||||
background: url(../img/LiveData/prps.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prpd{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/prpd_cluster.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.prpd.ready{
|
|
||||||
background: url(../img/LiveData/prpd.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.start{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/play.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.start.ready{
|
|
||||||
background: url(../img/LiveData/stop.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.show{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/show.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu-right{
|
|
||||||
margin-left: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.show.ready{
|
|
||||||
background: url(../img/LiveData/hide.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.big{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/big.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.big.ready{
|
|
||||||
background: url(../img/LiveData/big_ready.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
cursor: not-allowed;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.small{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/small.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.small.ready{
|
|
||||||
background: url(../img/LiveData/small_ready.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
cursor: not-allowed;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.zoom{
|
|
||||||
position: absolute;
|
|
||||||
z-index: 101;
|
|
||||||
bottom: 50px;
|
|
||||||
left: 10px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
#total-time{
|
|
||||||
width:70px
|
|
||||||
}
|
|
||||||
|
|
||||||
.adaptive-noise{
|
|
||||||
display: inline-block;
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
transform: scale(0.9);
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: url(../img/LiveData/adaptive-noise_off.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.associated-noise.ready{
|
|
||||||
background: url(../img/LiveData/noise_ready.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.adaptive-noise.ready{
|
|
||||||
background: url(../img/LiveData/adaptive-noise_on.png) 0 0 no-repeat transparent;
|
|
||||||
background-size: cover;
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slide{
|
|
||||||
text-align: left;
|
|
||||||
border-radius: 5px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.slide-name{
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
cursor: default;
|
|
||||||
white-space: nowrap;
|
|
||||||
content: attr(data-content);
|
|
||||||
color: #fff;
|
|
||||||
font-size: 10px;
|
|
||||||
line-height: 1.333;
|
|
||||||
text-shadow: none;
|
|
||||||
padding: 1px 5px;
|
|
||||||
background: #1890ff;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.pm-slide-box .slide-name{
|
|
||||||
left:-65px;
|
|
||||||
top:6px;
|
|
||||||
}
|
|
||||||
.noisy-slide-box .slide-name{
|
|
||||||
left:3px;
|
|
||||||
top:0px;
|
|
||||||
}
|
|
||||||
.cdf-slide-box .slide-name{
|
|
||||||
left:-70px;
|
|
||||||
top:10px;
|
|
||||||
}
|
|
||||||
.pm-slide-box{
|
|
||||||
position:absolute;
|
|
||||||
width:600px;
|
|
||||||
height:30px;
|
|
||||||
left:40%;
|
|
||||||
margin-left:-300px;
|
|
||||||
}
|
|
||||||
.pm-slide{
|
|
||||||
position:absolute;
|
|
||||||
width:100%;
|
|
||||||
top:12px;
|
|
||||||
margin:0 auto;
|
|
||||||
font-size:12px;
|
|
||||||
z-index:100;
|
|
||||||
height:8px;
|
|
||||||
background: url(../img/sprite-skin-nice.png) repeat-x;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
#addPointNumDiv{
|
|
||||||
position: absolute;
|
|
||||||
bottom: 25px;
|
|
||||||
left: 20%;
|
|
||||||
}
|
|
||||||
.noisy-slide-box{
|
|
||||||
width:26px;
|
|
||||||
}
|
|
||||||
.noisy-slide{
|
|
||||||
position: absolute;
|
|
||||||
margin:auto;
|
|
||||||
left:-6px;
|
|
||||||
height:350px;
|
|
||||||
margin:25px 0 0 20px;
|
|
||||||
width:8px!important;
|
|
||||||
background: url(../img/sprite-skin-nice-1.png) repeat-y!important;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
.cdf-slide-box{
|
|
||||||
width:40vw;
|
|
||||||
height:20px;
|
|
||||||
}
|
|
||||||
.cdf-slide{
|
|
||||||
position:absolute;
|
|
||||||
width:100%;
|
|
||||||
top:15px;
|
|
||||||
margin:0 auto;
|
|
||||||
font-size:12px;
|
|
||||||
z-index:100;
|
|
||||||
height:8px;
|
|
||||||
background: url(../img/sprite-skin-nice.png) repeat-x;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu-top{
|
|
||||||
display: flex;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.menu-right{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.text-bottom{
|
|
||||||
height: 50px;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 10;
|
|
||||||
bottom: 0;
|
|
||||||
right: 10px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
.content{
|
|
||||||
position: relative;
|
|
||||||
width:100%;
|
|
||||||
margin-top:80px;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
.left-box{
|
|
||||||
position: fixed;
|
|
||||||
width:180px;
|
|
||||||
height:600px;
|
|
||||||
background-color:#fbfbfb;
|
|
||||||
border:1px solid #999;
|
|
||||||
border-top-color:transparent;
|
|
||||||
-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
||||||
-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
||||||
box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
|
||||||
z-index: 101;
|
|
||||||
}
|
|
||||||
.right-box{
|
|
||||||
position: relative;
|
|
||||||
width:100%;
|
|
||||||
min-width:1000px;
|
|
||||||
top:0;
|
|
||||||
left:180px;
|
|
||||||
}
|
|
||||||
.crumbs{
|
|
||||||
padding-top:40px;
|
|
||||||
padding-bottom:30px;
|
|
||||||
}
|
|
||||||
.selectStyle{
|
|
||||||
border-radius: 2px;
|
|
||||||
height: 22px;
|
|
||||||
width: 80px;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
text-align:center;
|
|
||||||
text-align-last:center
|
|
||||||
}
|
|
||||||
.selectStyle:hover{
|
|
||||||
border-color: #1890ff
|
|
||||||
}
|
|
||||||
.selectStyle option{
|
|
||||||
text-align:center;
|
|
||||||
text-align-last:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.site-box{
|
|
||||||
width:98%;
|
|
||||||
min-width:1045px;
|
|
||||||
/* max-width:1600px;
|
|
||||||
margin:auto; */
|
|
||||||
/* height:500px; */
|
|
||||||
margin-top:30px;
|
|
||||||
margin-left:1%;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.echarts-box{
|
|
||||||
/* max-width:1600px; */
|
|
||||||
height:auto;
|
|
||||||
padding:5px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 15px;
|
|
||||||
box-shadow: 0 1px 2px rgba(0,0,0,0.2);
|
|
||||||
min-width:1040px;
|
|
||||||
margin:auto;
|
|
||||||
margin-top:10px;
|
|
||||||
/* margin-bottom:20px; */
|
|
||||||
}
|
|
||||||
.mainer{
|
|
||||||
display:flex;
|
|
||||||
flex-flow:row wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @media screen and (min-width: 1920px) { */
|
|
||||||
/* body {
|
|
||||||
background-color:#b9e8f898;
|
|
||||||
} */
|
|
||||||
.auto-box{
|
|
||||||
/* width:788px; */
|
|
||||||
width:50%;
|
|
||||||
/* max-width:788px; */
|
|
||||||
border:1px solid #d9edf7;
|
|
||||||
/* padding:10px; */
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius:10px;
|
|
||||||
/* margin-right:1%;
|
|
||||||
margin-bottom:10px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
.loading-box{
|
|
||||||
/* width:360px; */
|
|
||||||
width:90%;
|
|
||||||
/* width:45%; */
|
|
||||||
/* height:300px; */
|
|
||||||
min-height:180px;
|
|
||||||
float:left;
|
|
||||||
/*background: @body-background;*/
|
|
||||||
}
|
|
||||||
.loading-box-mini{
|
|
||||||
min-height:106.5px;
|
|
||||||
display: inline-block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.auto-box canvas{
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
.pm-slide-box{
|
|
||||||
left:auto;
|
|
||||||
position:relative;
|
|
||||||
}
|
|
||||||
.pm-slide-box .slide-name {
|
|
||||||
left: auto;
|
|
||||||
right: 104%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cdf-slide{
|
|
||||||
position:absolute;
|
|
||||||
width:100%;
|
|
||||||
top:15px;
|
|
||||||
margin:0 auto;
|
|
||||||
font-size:12px;
|
|
||||||
z-index:100;
|
|
||||||
height:8px;
|
|
||||||
background: url(../img/sprite-skin-nice.png) repeat-x;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 1800px) {
|
|
||||||
.noisy-slide-box{
|
|
||||||
margin-right:20px!important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 1600px) {
|
|
||||||
.pm-slide-box{
|
|
||||||
width:40%;
|
|
||||||
right:-60%;
|
|
||||||
margin-left:-32%;
|
|
||||||
}
|
|
||||||
.echarts-text span {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (max-width: 1599px){
|
|
||||||
.pm-slide-box{
|
|
||||||
width:40%;
|
|
||||||
right:-35%;
|
|
||||||
margin-left:-32%;
|
|
||||||
}
|
|
||||||
.pm-slide-box .slide-name {
|
|
||||||
opacity:0;
|
|
||||||
left: -20px;
|
|
||||||
top: 21px;
|
|
||||||
}
|
|
||||||
.echarts-text span {
|
|
||||||
font-size: 0.7rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@media screen and (max-width: 1439px) {
|
|
||||||
.site-box {
|
|
||||||
margin-left: 15px;
|
|
||||||
}
|
|
||||||
.pm-slide-box{
|
|
||||||
/* width:30%; */
|
|
||||||
width:38%;
|
|
||||||
/*right:-60%;*/
|
|
||||||
margin-left:-33%;
|
|
||||||
}
|
|
||||||
.sel-opt.sm{
|
|
||||||
width:80px;
|
|
||||||
}
|
|
||||||
.pm-slide-box .slide-name {
|
|
||||||
opacity:0;
|
|
||||||
left: -20px;
|
|
||||||
top: 21px;
|
|
||||||
}
|
|
||||||
.echarts-text span {
|
|
||||||
font-size: 0.6rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (max-width: 750px) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 590px) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.pm-slide{
|
|
||||||
position:absolute;
|
|
||||||
width:100%;
|
|
||||||
top:12px;
|
|
||||||
margin:0 auto;
|
|
||||||
font-size:12px;
|
|
||||||
z-index:100;
|
|
||||||
height:8px;
|
|
||||||
background: url(../img/sprite-skin-nice.png) repeat-x;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
.noisy-slide-box{
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.noisy-slide{
|
|
||||||
position: absolute;
|
|
||||||
margin:auto;
|
|
||||||
left:-6px;
|
|
||||||
height:80%;
|
|
||||||
/* height:250px; */
|
|
||||||
margin:25px 0 0 20px;
|
|
||||||
width:8px!important;
|
|
||||||
background: url(../img/sprite-skin-nice-1.png) repeat-y!important;
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
.noisy-slide .ui-slider-handle:after {
|
|
||||||
top: -18px;
|
|
||||||
left: -28px;
|
|
||||||
}
|
|
||||||
.ui-slider-handle{
|
|
||||||
width:20px;
|
|
||||||
height:20px;
|
|
||||||
outline:none;
|
|
||||||
}
|
|
||||||
.pm-slide .ui-slider-handle {
|
|
||||||
top: -8px;
|
|
||||||
}
|
|
||||||
.cdf-slide .ui-slider-handle {
|
|
||||||
top: -8px;
|
|
||||||
}
|
|
||||||
.noisy-slide-box{
|
|
||||||
float:right!important;
|
|
||||||
margin-right:10px;
|
|
||||||
margin-top: 45px;
|
|
||||||
}
|
|
||||||
.btn.mr50{
|
|
||||||
margin-right:1%!important;
|
|
||||||
}
|
|
||||||
/* } */
|
|
||||||
/* @media screen and (max-width:1919px){
|
|
||||||
body {
|
|
||||||
background-color:#b9e8f898;
|
|
||||||
}
|
|
||||||
.auto-box{
|
|
||||||
width:1022px;
|
|
||||||
margin:0 auto;
|
|
||||||
border:1px solid #d9edf7;
|
|
||||||
padding:10px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius:10px;
|
|
||||||
margin-bottom:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#box3D1,#box2D1,#box3D2,#box2D2,#box3D3,#box2D3,#box3D4,#box2D4{
|
|
||||||
width:480px;
|
|
||||||
height:380px;
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
.noisy-slide .ui-slider-handle:after{
|
|
||||||
top: -18px;
|
|
||||||
left: -20px;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.noisy-slide-box{
|
|
||||||
float:right!important;
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
|
|
||||||
/* .col{
|
|
||||||
min-width:1000px;
|
|
||||||
} */
|
|
||||||
/************* 数据图表 ************/
|
|
||||||
|
|
||||||
|
|
||||||
#box3D canvas,#box2D canvas{
|
|
||||||
width:100%;
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
.col{
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*量程*/
|
|
||||||
.radiogroup{
|
|
||||||
margin-top:5px;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio {
|
|
||||||
color: #fff;
|
|
||||||
font-weight: 300;
|
|
||||||
line-height: 1;
|
|
||||||
cursor: pointer;
|
|
||||||
white-space: nowrap;
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio, .el-radio--medium.is-bordered .el-radio__label {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
.el-radio, .el-radio__inner, .el-radio__input {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio__input {
|
|
||||||
white-space: nowrap;
|
|
||||||
cursor: pointer;
|
|
||||||
outline: 0;
|
|
||||||
line-height: 1;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.el-radio__input.is-checked .el-radio__inner {
|
|
||||||
border-color: #2DAFB8;
|
|
||||||
background: #2DAFB8;
|
|
||||||
}
|
|
||||||
.el-radio__inner {
|
|
||||||
border: 1px solid #99a4ac;
|
|
||||||
border-radius: 100%;
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
background-color: #fff;
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio__input.is-checked .el-radio__inner::after {
|
|
||||||
-webkit-transform: translate(-50%,-50%) scale(1);
|
|
||||||
transform: translate(-50%,-50%) scale(1);
|
|
||||||
}
|
|
||||||
.el-radio__inner::after {
|
|
||||||
width: 4px;
|
|
||||||
height: 4px;
|
|
||||||
border-radius: 100%;
|
|
||||||
background-color: #fff;
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
-webkit-transform: translate(-50%,-50%) scale(0);
|
|
||||||
transform: translate(-50%,-50%) scale(0);
|
|
||||||
-webkit-transition: -webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);
|
|
||||||
transition: -webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);
|
|
||||||
transition: transform .15s cubic-bezier(.71,-.46,.88,.6);
|
|
||||||
transition: transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio__original {
|
|
||||||
opacity: 0;
|
|
||||||
outline: 0;
|
|
||||||
position: absolute;
|
|
||||||
z-index: -1;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-radio__input.is-checked+.el-radio__label {
|
|
||||||
color: #2DAFB8;
|
|
||||||
}
|
|
||||||
.el-radio__label {
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: bold;
|
|
||||||
/*padding-left: 5px;*/
|
|
||||||
}
|
|
||||||
.el-radio+.el-radio {
|
|
||||||
/*margin-left: 30px;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*量程end*/
|
|
||||||
|
|
||||||
/* 弹出修改框 */
|
|
||||||
.alert {
|
|
||||||
z-index: 2;
|
|
||||||
border: 1px solid rgba(0,0,0,.2);
|
|
||||||
width: 598px;
|
|
||||||
height: auto;
|
|
||||||
border-radius: 6px;
|
|
||||||
box-shadow: 0 5px 15px rgba(0,0,0,.5);
|
|
||||||
background: #fff;
|
|
||||||
z-index: 1000;
|
|
||||||
position: fixed;
|
|
||||||
left: 50%;
|
|
||||||
top: 20%;
|
|
||||||
margin-left: -299px;
|
|
||||||
display: none;
|
|
||||||
line-height: 1.428571429;
|
|
||||||
}
|
|
||||||
.model-head {
|
|
||||||
padding: 15px;
|
|
||||||
color: #73879C;
|
|
||||||
border-bottom: 1px solid #e5e5e5;
|
|
||||||
}
|
|
||||||
.close {
|
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
background: 0 0;
|
|
||||||
border: 0;
|
|
||||||
float: right;
|
|
||||||
font-size: 14px !important;
|
|
||||||
font-weight: 700;
|
|
||||||
text-shadow: 0 1px 0 #fff;
|
|
||||||
opacity: 0.4;
|
|
||||||
margin-top: 5px;
|
|
||||||
line-height: 1;
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
#close:hover {
|
|
||||||
cursor: pointer;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
#mask {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
background: #000;
|
|
||||||
opacity: 0.3;
|
|
||||||
display: none;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
.model-content {
|
|
||||||
position: relative;
|
|
||||||
padding: 15px;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
.model-foot {
|
|
||||||
padding: 15px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.modal-title {
|
|
||||||
margin: 0;
|
|
||||||
line-height: 1.428571429;
|
|
||||||
font-size: 18px;
|
|
||||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
.foot-btn {
|
|
||||||
/* width: 100%; */
|
|
||||||
/* height: 58px; */
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
padding: 10px 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.main.page{
|
|
||||||
margin-top:0;
|
|
||||||
border:0;
|
|
||||||
min-width:800px;
|
|
||||||
}
|
|
||||||
.alert .block{
|
|
||||||
margin-top:0;
|
|
||||||
margin-bottom:0;
|
|
||||||
}
|
|
||||||
.text-right input.lg {
|
|
||||||
width: 300px;
|
|
||||||
}
|
|
||||||
#type-imgf{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
#select-type-img{
|
|
||||||
margin-top:4px;
|
|
||||||
margin-left:10px;
|
|
||||||
}
|
|
||||||
#type-describe{
|
|
||||||
margin-top:5px;
|
|
||||||
padding:10px;
|
|
||||||
color:#666;
|
|
||||||
font-size:14px;
|
|
||||||
}
|
|
||||||
#type-describe.err{
|
|
||||||
border:1px solid #f00;
|
|
||||||
}
|
|
||||||
#save-btn{
|
|
||||||
margin-left:-10px;
|
|
||||||
}
|
|
||||||
#cancel-btn{
|
|
||||||
margin-left:100px;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 左侧专家库树 */
|
|
||||||
.libraryList li span{
|
|
||||||
/* max-width:120px; */
|
|
||||||
/* white-space:normal; */
|
|
||||||
/* word-break:break-all; */
|
|
||||||
/* overflow:hidden; */
|
|
||||||
white-space: nowrap;
|
|
||||||
/* text-overflow: ellipsis; */
|
|
||||||
}
|
|
||||||
.libraryList li span:hover{
|
|
||||||
background:#ddd;
|
|
||||||
}
|
|
||||||
.libraryList li span.select{
|
|
||||||
background:#468847;
|
|
||||||
}
|
|
||||||
.tree{
|
|
||||||
padding-right:0;
|
|
||||||
}
|
|
||||||
.tree ul{
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 按钮组样式 */
|
|
||||||
.btn-group button {
|
|
||||||
line-height: 20px;
|
|
||||||
border-radius: 2px;
|
|
||||||
background-color: #FFF; /* Green background */
|
|
||||||
border: 1px solid #d9d9d9; /* Green border */
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: #000000d9; /* White text */
|
|
||||||
padding: 0 7px; /* Some padding */
|
|
||||||
cursor: pointer; /* Pointer/hand icon */
|
|
||||||
float: left; /* Float the buttons side by side */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Clear floats (clearfix hack) */
|
|
||||||
.btn-group:after {
|
|
||||||
content: "";
|
|
||||||
clear: both;
|
|
||||||
display: table;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-group button:not(:last-child) {
|
|
||||||
border-right: none; /* Prevent double borders */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add a background color on hover */
|
|
||||||
.btn-group button:hover {
|
|
||||||
background-color: #1890ff;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.btn-group .active {
|
|
||||||
background-color: #1890ff;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.channelNum{
|
|
||||||
display:inline-block;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
.monitorType{
|
|
||||||
position: absolute;
|
|
||||||
right: 20px;
|
|
||||||
font-size: 20px!important;
|
|
||||||
color:#A1BEC6!important;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.2 KiB |
@ -1,603 +0,0 @@
|
|||||||
const createAxisInfo = (size, minSize = 0) => {
|
|
||||||
const textY = minSize ? (360 / (size + (-minSize))) * minSize - 30 : -30;
|
|
||||||
let data = {};
|
|
||||||
let prps = [
|
|
||||||
{
|
|
||||||
type: 'plan',
|
|
||||||
size: 50,
|
|
||||||
color: 0x1890ff,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'curveLine',
|
|
||||||
line: [
|
|
||||||
[0, minSize ? 0 : size / 2, 0],
|
|
||||||
[0, minSize ? minSize : 0, 90],
|
|
||||||
[0, size, 270],
|
|
||||||
[0, minSize ? 0 : size / 2, 360],
|
|
||||||
],
|
|
||||||
color: 0x1890ff,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, minSize, 0,
|
|
||||||
0, size, 0,
|
|
||||||
0, size, 360,
|
|
||||||
0, minSize, 360,
|
|
||||||
0, minSize, 0,
|
|
||||||
|
|
||||||
0, 0, 0,
|
|
||||||
50, 0, 0,
|
|
||||||
50, 0, 360,
|
|
||||||
0, 0, 360,
|
|
||||||
0, 0, 0,
|
|
||||||
|
|
||||||
// 0, minSize, 0,
|
|
||||||
// 0, size, 0,
|
|
||||||
// 50, size, 0,
|
|
||||||
// 50, minSize, 0,
|
|
||||||
// 0, minSize, 0,
|
|
||||||
],
|
|
||||||
color: 0x1890ff,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, 0, 90,
|
|
||||||
50, 0, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
10, 0, 0,
|
|
||||||
10, 0, 360,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'X',
|
|
||||||
num: 4,
|
|
||||||
margin: 10,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, (minSize ? minSize + (size / 2) : size / 4), 0,
|
|
||||||
0, (minSize ? minSize + (size / 2) : size / 4), 360,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Y',
|
|
||||||
num: 3,
|
|
||||||
margin: minSize ? size / 2 : size / 4,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, minSize, 90,
|
|
||||||
0, size, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
// {
|
|
||||||
// type: 'line',
|
|
||||||
// line: [
|
|
||||||
// 10, minSize, 0,
|
|
||||||
// 10, size, 0,
|
|
||||||
// ],
|
|
||||||
// color: 0xcccccc,
|
|
||||||
// position: 'X',
|
|
||||||
// num: 4,
|
|
||||||
// margin: 10,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// type: 'line',
|
|
||||||
// line: [
|
|
||||||
// 0, (minSize ? minSize + (size / 4) : size / 4), 0,
|
|
||||||
// 50, (minSize ? minSize + (size / 4) : size / 4), 0,
|
|
||||||
// ],
|
|
||||||
// color: 0xcccccc,
|
|
||||||
// position: 'Y',
|
|
||||||
// num: 3 + (minSize ? -minSize / (size / 4) : 0),
|
|
||||||
// margin: size / 4,
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['0'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['10'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [288, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['20'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [216, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['30'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [144, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['40'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [72, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['50'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#FF0000',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, -40, 360],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['0'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#0000cc',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [390, -40, 330],
|
|
||||||
textAlign: 'right',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['90'],
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
color: '#0000cc',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [380, -40, 250],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['180'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 20.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [380, -40, 160],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['270'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 20.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [380, -40, 70],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['360'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 20.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [380, -40, -20],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
let prpd = [
|
|
||||||
{
|
|
||||||
type: 'curveLine',
|
|
||||||
line: [
|
|
||||||
[0, minSize ? 0 : size / 2, 0],
|
|
||||||
[0, minSize ? minSize : 0, 90],
|
|
||||||
[0, size, 270],
|
|
||||||
[0, minSize ? 0 : size / 2, 360],
|
|
||||||
],
|
|
||||||
color: 0x1890ff,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, minSize, 0,
|
|
||||||
0, size, 0,
|
|
||||||
0, size, 360,
|
|
||||||
0, minSize, 360,
|
|
||||||
0, minSize, 0,
|
|
||||||
|
|
||||||
],
|
|
||||||
color: 0x1890ff,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, 0, 90,
|
|
||||||
50, 0, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, (minSize ? minSize + (size / 2) : size / 4), 0,
|
|
||||||
0, (minSize ? minSize + (size / 2) : size / 4), 360,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Y',
|
|
||||||
num: 3,
|
|
||||||
margin: minSize ? size / 2 : size / 4,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, minSize, 90,
|
|
||||||
0, size, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['0'],
|
|
||||||
w: 40,
|
|
||||||
h: 25,
|
|
||||||
color: '#0000cc',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, textY, 340],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['90'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: '#0000cc',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, textY, 270],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['180'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, textY - 2, 180],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['270'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, textY - 2, 90],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['360'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: '#0000cc',
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [360, textY - 2, 0],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
let prpd3d = [
|
|
||||||
{
|
|
||||||
type: 'plan',
|
|
||||||
line: [minSize ? size * 2 : size, 360, minSize],
|
|
||||||
color: 0x32494B,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'curveLine',
|
|
||||||
line: [
|
|
||||||
[minSize ? 0 : size / 2, 0, 0],
|
|
||||||
[size, 0, 90],
|
|
||||||
[minSize, 0, 270],
|
|
||||||
[minSize ? 0 : size / 2, 0, 360],
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
minSize, 0, 0,
|
|
||||||
size, 0, 0,
|
|
||||||
size, 0, 360,
|
|
||||||
minSize, 0, 360,
|
|
||||||
minSize, 0, 0,
|
|
||||||
|
|
||||||
0, 0, 0,
|
|
||||||
0, 50, 0,
|
|
||||||
0, 50, 360,
|
|
||||||
0, 0, 360,
|
|
||||||
0, 0, 0,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
minSize, 0, 90,
|
|
||||||
size, 0, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
(minSize ? minSize + (size / 2) : size / 4), 0, 0,
|
|
||||||
(minSize ? minSize + (size / 2) : size / 4), 0, 360,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'X',
|
|
||||||
num: 3,
|
|
||||||
margin: (minSize ? size / 2 : size / 4),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, 0, 90,
|
|
||||||
0, 50, 90,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Z',
|
|
||||||
num: 3,
|
|
||||||
margin: 90,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'line',
|
|
||||||
line: [
|
|
||||||
0, 10, 0,
|
|
||||||
0, 10, 360,
|
|
||||||
],
|
|
||||||
color: 0xcccccc,
|
|
||||||
position: 'Y',
|
|
||||||
num: 4,
|
|
||||||
margin: 10,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['0'],
|
|
||||||
w: 40,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 20, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['10'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 72, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['20'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 144, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['30'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 216, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['40'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 288, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['50'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, 360, 380],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['0'],
|
|
||||||
w: 40,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? 200 : 400, -40, 330],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['90'],
|
|
||||||
w: 47,
|
|
||||||
h: 25,
|
|
||||||
color: 0xcccccc,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? 200 : 400, -40, 230],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['180'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: 0xcccccc,
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? 200 : 400, -40, 140],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['270'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: 0xcccccc,
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? 200 : 400, -40, 50],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'text',
|
|
||||||
content: ['360'],
|
|
||||||
w: 75,
|
|
||||||
h: 25,
|
|
||||||
ch: 9,
|
|
||||||
cw: 5.7,
|
|
||||||
color: 0xcccccc,
|
|
||||||
size: 22.3,
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? 200 : 400, -40, -40],
|
|
||||||
},
|
|
||||||
]
|
|
||||||
let set = [7.2, 360 / (size + (-minSize)), 1];
|
|
||||||
let isGIS = size <= 80;
|
|
||||||
let YAxisText = minSize ? [
|
|
||||||
[size, 180],
|
|
||||||
[size / 2, 90],
|
|
||||||
[0, 0],
|
|
||||||
[minSize / 2, -90],
|
|
||||||
[minSize, -180],
|
|
||||||
] : [
|
|
||||||
[isGIS ? size == 80 ? 0 : `-${80 - size}` : size],
|
|
||||||
[isGIS ? `-${80 - (size * 0.75)}` : size * 0.75,],
|
|
||||||
[isGIS ? `-${80 - (size * 0.5)}` : size * 0.5,],
|
|
||||||
[isGIS ? `-${80 - (0.25 * size)}` : size * 0.25,],
|
|
||||||
[isGIS ? `-80` : 0,],
|
|
||||||
];
|
|
||||||
let infoNum = [
|
|
||||||
{
|
|
||||||
w: 40,
|
|
||||||
h: 20,
|
|
||||||
size: 16,
|
|
||||||
}, {
|
|
||||||
w: 55,
|
|
||||||
h: 25,
|
|
||||||
size: 22.3,
|
|
||||||
}, {
|
|
||||||
w: 70,
|
|
||||||
h: 25,
|
|
||||||
size: 22.3,
|
|
||||||
}, {
|
|
||||||
w: 100,
|
|
||||||
h: 30,
|
|
||||||
size: 26.3,
|
|
||||||
}, {
|
|
||||||
w: 115,
|
|
||||||
h: 32,
|
|
||||||
size: 28.3,
|
|
||||||
}
|
|
||||||
]
|
|
||||||
YAxisText.forEach((item, index) => {
|
|
||||||
item[0] = item[0].toString();
|
|
||||||
let length = item[0].length;
|
|
||||||
let info = {
|
|
||||||
type: 'text',
|
|
||||||
content: item,
|
|
||||||
w: infoNum[length - 1].w,
|
|
||||||
h: infoNum[length - 1].h,
|
|
||||||
cw: length >= 3 ? 5.7 : '',
|
|
||||||
ch: length >= 3 ? 9 : '',
|
|
||||||
size: infoNum[length - 1].size,
|
|
||||||
color: '#00ff00',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [index, minSize ? item[1] : 360 - (index * 90), length === 1 ? 410 : 430],
|
|
||||||
textAlign: 'right',
|
|
||||||
};
|
|
||||||
let infoPrpd = {
|
|
||||||
type: 'text',
|
|
||||||
content: item,
|
|
||||||
w: infoNum[length - 1].w,
|
|
||||||
h: infoNum[length - 1].h,
|
|
||||||
cw: length >= 3 ? 5.7 : '',
|
|
||||||
ch: length >= 3 ? 9 : '',
|
|
||||||
size: infoNum[length - 1].size,
|
|
||||||
color: '#00ff00',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [0, minSize ? item[1] : 360 - (index * 90), length === 1 ? 385 : 395],
|
|
||||||
textAlign: 'right',
|
|
||||||
};
|
|
||||||
let info3d = {
|
|
||||||
type: 'text',
|
|
||||||
content: item,
|
|
||||||
w: infoNum[length - 1].w,
|
|
||||||
h: infoNum[length - 1].h,
|
|
||||||
cw: length >= 3 ? 5.7 : '',
|
|
||||||
ch: length >= 3 ? 9 : '',
|
|
||||||
size: infoNum[length - 1].size,
|
|
||||||
color: '#00ff00',
|
|
||||||
font: 'normal 500px Arial,sans-serif',
|
|
||||||
xyz: [minSize ? item[1] - 20 : 360 - (index * 90), -40, 380],
|
|
||||||
textAlign: 'right',
|
|
||||||
};
|
|
||||||
prps.push(info);
|
|
||||||
prpd.push(infoPrpd);
|
|
||||||
prpd3d.push(info3d);
|
|
||||||
})
|
|
||||||
data[size] = { set, prps, prpd, prpd3d }
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
export { createAxisInfo }
|
|
@ -1,27 +0,0 @@
|
|||||||
//全屏
|
|
||||||
const fullScreen = () => {
|
|
||||||
var element = document.documentElement;
|
|
||||||
if (element.requestFullscreen) {
|
|
||||||
element.requestFullscreen();
|
|
||||||
} else if (element.msRequestFullscreen) {
|
|
||||||
element.msRequestFullscreen();
|
|
||||||
} else if (element.mozRequestFullScreen) {
|
|
||||||
element.mozRequestFullScreen();
|
|
||||||
} else if (element.webkitRequestFullscreen) {
|
|
||||||
element.webkitRequestFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//退出全屏
|
|
||||||
const exitFullscreen = () => {
|
|
||||||
if (document.exitFullscreen) {
|
|
||||||
document.exitFullscreen();
|
|
||||||
} else if (document.msExitFullscreen) {
|
|
||||||
document.msExitFullscreen();
|
|
||||||
} else if (document.mozCancelFullScreen) {
|
|
||||||
document.mozCancelFullScreen();
|
|
||||||
} else if (document.webkitExitFullscreen) {
|
|
||||||
document.webkitExitFullscreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export { fullScreen, exitFullscreen }
|
|
@ -1,72 +0,0 @@
|
|||||||
/**
|
|
||||||
* Created by Dasate on 2017/9/14.
|
|
||||||
* QQ361899429
|
|
||||||
*/
|
|
||||||
var simpleAlert = function (opts) {
|
|
||||||
//设置默认参数
|
|
||||||
var opt = {
|
|
||||||
"closeAll": false,
|
|
||||||
"content": "",
|
|
||||||
"buttons": {}
|
|
||||||
}
|
|
||||||
//合并参数
|
|
||||||
var option = $.extend(opt, opts);
|
|
||||||
//事件
|
|
||||||
var dialog = {}
|
|
||||||
var $simpleAlert = $('<div class="simpleAlert">');
|
|
||||||
var $shelter = $('<div class="simpleAlertShelter">');
|
|
||||||
var $simpleAlertBody = $('<div class="simpleAlertBody">');
|
|
||||||
var $simpleAlertBodyClose = $('<img class="simpleAlertBodyClose" src="img/close.png" height="14" width="14"/>');
|
|
||||||
var $simpleAlertBodyContent = $('<p class="simpleAlertBodyContent">' + option.content + '</p>');
|
|
||||||
dialog.init = function () {
|
|
||||||
$simpleAlertBody.append($simpleAlertBodyClose).append($simpleAlertBodyContent);
|
|
||||||
var num = 0;
|
|
||||||
var only = false;
|
|
||||||
var onlyArr = [];
|
|
||||||
for (var i = 0; i < 2; i++) {
|
|
||||||
for (var key in option.buttons) {
|
|
||||||
switch (i) {
|
|
||||||
case 0:
|
|
||||||
onlyArr.push(key);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (onlyArr.length <= 1) {
|
|
||||||
only = true;
|
|
||||||
} else {
|
|
||||||
only = false;
|
|
||||||
}
|
|
||||||
num++;
|
|
||||||
var $btn = $('<button class="simpleAlertBtn simpleAlertBtn' + num + '">' + key + '</button>')
|
|
||||||
// console.log(key)
|
|
||||||
|
|
||||||
$btn.bind("click", option.buttons[key=='OK'?'确定':key=='Yes'?'是':key=='No'?'否':key=='Cancel'?'取消':key]);
|
|
||||||
if (only) {
|
|
||||||
$btn.addClass("onlyOne")
|
|
||||||
}
|
|
||||||
$simpleAlertBody.append($btn);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$simpleAlert.append($shelter).append($simpleAlertBody);
|
|
||||||
$("body").append($simpleAlert);
|
|
||||||
$simpleAlertBody.show().animate({"marginTop":"-128px","opacity":"1"},300);
|
|
||||||
}
|
|
||||||
//右上角关闭按键事件
|
|
||||||
$simpleAlertBodyClose.bind("click", function () {
|
|
||||||
option.closeAll=false;
|
|
||||||
dialog.close();
|
|
||||||
})
|
|
||||||
dialog.close = function () {
|
|
||||||
if(option.closeAll){
|
|
||||||
$(".simpleAlert").remove()
|
|
||||||
}else {
|
|
||||||
$simpleAlertBody.animate({"marginTop": "-188px", "opacity": "0"}, 200, function () {
|
|
||||||
$(".simpleAlert").last().remove()
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dialog.init();
|
|
||||||
return dialog;
|
|
||||||
}
|
|
@ -1,200 +0,0 @@
|
|||||||
(function(){
|
|
||||||
class Lut {
|
|
||||||
|
|
||||||
constructor( colormap, count = 32 ) {
|
|
||||||
|
|
||||||
this.isLut = true;
|
|
||||||
|
|
||||||
this.lut = [];
|
|
||||||
this.map = [];
|
|
||||||
this.n = 0;
|
|
||||||
this.minV = 0;
|
|
||||||
this.maxV = 1;
|
|
||||||
|
|
||||||
this.setColorMap( colormap, count );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
set( value ) {
|
|
||||||
|
|
||||||
if ( value.isLut === true ) {
|
|
||||||
|
|
||||||
this.copy( value );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
setMin( min ) {
|
|
||||||
|
|
||||||
this.minV = min;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
setMax( max ) {
|
|
||||||
|
|
||||||
this.maxV = max;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
setColorMap( colormap, count = 32 ) {
|
|
||||||
|
|
||||||
this.map = ColorMapKeywords[ colormap ] || ColorMapKeywords.rainbow;
|
|
||||||
this.n = count;
|
|
||||||
|
|
||||||
const step = 1.0 / this.n;
|
|
||||||
const minColor = new THREE.Color();
|
|
||||||
const maxColor = new THREE.Color();
|
|
||||||
|
|
||||||
this.lut.length = 0;
|
|
||||||
|
|
||||||
// sample at 0
|
|
||||||
|
|
||||||
this.lut.push( new THREE.Color( this.map[ 0 ][ 1 ] ) );
|
|
||||||
|
|
||||||
// sample at 1/n, ..., (n-1)/n
|
|
||||||
|
|
||||||
for ( let i = 1; i < count; i ++ ) {
|
|
||||||
|
|
||||||
const alpha = i * step;
|
|
||||||
|
|
||||||
for ( let j = 0; j < this.map.length - 1; j ++ ) {
|
|
||||||
|
|
||||||
if ( alpha > this.map[ j ][ 0 ] && alpha <= this.map[ j + 1 ][ 0 ] ) {
|
|
||||||
|
|
||||||
const min = this.map[ j ][ 0 ];
|
|
||||||
const max = this.map[ j + 1 ][ 0 ];
|
|
||||||
|
|
||||||
minColor.setHex( this.map[ j ][ 1 ], THREE.LinearSRGBColorSpace );
|
|
||||||
maxColor.setHex( this.map[ j + 1 ][ 1 ], THREE.LinearSRGBColorSpace );
|
|
||||||
|
|
||||||
const color = new THREE.Color().lerpColors( minColor, maxColor, ( alpha - min ) / ( max - min ) );
|
|
||||||
|
|
||||||
this.lut.push( color );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// sample at 1
|
|
||||||
|
|
||||||
this.lut.push( new THREE.Color( this.map[ this.map.length - 1 ][ 1 ] ) );
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
copy( lut ) {
|
|
||||||
|
|
||||||
this.lut = lut.lut;
|
|
||||||
this.map = lut.map;
|
|
||||||
this.n = lut.n;
|
|
||||||
this.minV = lut.minV;
|
|
||||||
this.maxV = lut.maxV;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
getColor( alpha ) {
|
|
||||||
|
|
||||||
alpha = THREE.MathUtils.clamp( alpha, this.minV, this.maxV );
|
|
||||||
|
|
||||||
alpha = ( alpha - this.minV ) / ( this.maxV - this.minV );
|
|
||||||
|
|
||||||
const colorPosition = Math.round( alpha * this.n );
|
|
||||||
|
|
||||||
return this.lut[ colorPosition ];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
addColorMap( name, arrayOfColors ) {
|
|
||||||
|
|
||||||
ColorMapKeywords[ name ] = arrayOfColors;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
createCanvas() {
|
|
||||||
|
|
||||||
const canvas = document.createElement( 'canvas' );
|
|
||||||
canvas.width = 1;
|
|
||||||
canvas.height = this.n;
|
|
||||||
|
|
||||||
this.updateCanvas( canvas );
|
|
||||||
|
|
||||||
return canvas;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
updateCanvas( canvas ) {
|
|
||||||
|
|
||||||
const ctx = canvas.getContext( '2d', { alpha: false } );
|
|
||||||
|
|
||||||
const imageData = ctx.getImageData( 0, 0, 1, this.n );
|
|
||||||
|
|
||||||
const data = imageData.data;
|
|
||||||
|
|
||||||
let k = 0;
|
|
||||||
|
|
||||||
const step = 1.0 / this.n;
|
|
||||||
|
|
||||||
const minColor = new THREE.Color();
|
|
||||||
const maxColor = new THREE.Color();
|
|
||||||
const finalColor = new THREE.Color();
|
|
||||||
|
|
||||||
for ( let i = 1; i >= 0; i -= step ) {
|
|
||||||
|
|
||||||
for ( let j = this.map.length - 1; j >= 0; j -- ) {
|
|
||||||
|
|
||||||
if ( i < this.map[ j ][ 0 ] && i >= this.map[ j - 1 ][ 0 ] ) {
|
|
||||||
|
|
||||||
const min = this.map[ j - 1 ][ 0 ];
|
|
||||||
const max = this.map[ j ][ 0 ];
|
|
||||||
|
|
||||||
minColor.setHex( this.map[ j - 1 ][ 1 ], THREE.LinearSRGBColorSpace );
|
|
||||||
maxColor.setHex( this.map[ j ][ 1 ], THREE.LinearSRGBColorSpace );
|
|
||||||
|
|
||||||
finalColor.lerpColors( minColor, maxColor, ( i - min ) / ( max - min ) );
|
|
||||||
|
|
||||||
data[ k * 4 ] = Math.round( finalColor.r * 255 );
|
|
||||||
data[ k * 4 + 1 ] = Math.round( finalColor.g * 255 );
|
|
||||||
data[ k * 4 + 2 ] = Math.round( finalColor.b * 255 );
|
|
||||||
data[ k * 4 + 3 ] = 255;
|
|
||||||
|
|
||||||
k += 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.putImageData( imageData, 0, 0 );
|
|
||||||
|
|
||||||
return canvas;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const ColorMapKeywords = {
|
|
||||||
|
|
||||||
'rainbow': [[ 0.0, 0x0000FF ], [ 0.2, 0x00FFFF ], [ 0.5, 0x00FF00 ], [ 0.8, 0xFFFF00 ], [ 1.0, 0xFF0000 ]],
|
|
||||||
'cooltowarm': [[ 0.0, 0x3C4EC2 ], [ 0.2, 0x9BBCFF ], [ 0.5, 0xDCDCDC ], [ 0.8, 0xF6A385 ], [ 1.0, 0xB40426 ]],
|
|
||||||
'blackbody': [[ 0.0, 0x000000 ], [ 0.2, 0x780000 ], [ 0.5, 0xE63200 ], [ 0.8, 0xFFFF00 ], [ 1.0, 0xFFFFFF ]],
|
|
||||||
'grayscale': [[ 0.0, 0x000000 ], [ 0.2, 0x404040 ], [ 0.5, 0x7F7F80 ], [ 0.8, 0xBFBFBF ], [ 1.0, 0xFFFFFF ]]
|
|
||||||
|
|
||||||
};
|
|
||||||
THREE.Lut = Lut;
|
|
||||||
})()
|
|
||||||
|
|
@ -1,167 +0,0 @@
|
|||||||
var Stats = function () {
|
|
||||||
|
|
||||||
var mode = 0;
|
|
||||||
|
|
||||||
var container = document.createElement( 'div' );
|
|
||||||
container.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';
|
|
||||||
container.addEventListener( 'click', function ( event ) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
showPanel( ++ mode % container.children.length );
|
|
||||||
|
|
||||||
}, false );
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
function addPanel( panel ) {
|
|
||||||
|
|
||||||
container.appendChild( panel.dom );
|
|
||||||
return panel;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function showPanel( id ) {
|
|
||||||
|
|
||||||
for ( var i = 0; i < container.children.length; i ++ ) {
|
|
||||||
|
|
||||||
container.children[ i ].style.display = i === id ? 'block' : 'none';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
mode = id;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
var beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0;
|
|
||||||
|
|
||||||
var fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) );
|
|
||||||
var msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) );
|
|
||||||
|
|
||||||
if ( self.performance && self.performance.memory ) {
|
|
||||||
|
|
||||||
var memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
showPanel( 0 );
|
|
||||||
|
|
||||||
return {
|
|
||||||
|
|
||||||
REVISION: 16,
|
|
||||||
|
|
||||||
dom: container,
|
|
||||||
|
|
||||||
addPanel: addPanel,
|
|
||||||
showPanel: showPanel,
|
|
||||||
|
|
||||||
begin: function () {
|
|
||||||
|
|
||||||
beginTime = ( performance || Date ).now();
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
end: function () {
|
|
||||||
|
|
||||||
frames ++;
|
|
||||||
|
|
||||||
var time = ( performance || Date ).now();
|
|
||||||
|
|
||||||
msPanel.update( time - beginTime, 200 );
|
|
||||||
|
|
||||||
if ( time >= prevTime + 1000 ) {
|
|
||||||
|
|
||||||
fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 );
|
|
||||||
|
|
||||||
prevTime = time;
|
|
||||||
frames = 0;
|
|
||||||
|
|
||||||
if ( memPanel ) {
|
|
||||||
|
|
||||||
var memory = performance.memory;
|
|
||||||
memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return time;
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
update: function () {
|
|
||||||
|
|
||||||
beginTime = this.end();
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
// Backwards Compatibility
|
|
||||||
|
|
||||||
domElement: container,
|
|
||||||
setMode: showPanel
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
Stats.Panel = function ( name, fg, bg ) {
|
|
||||||
|
|
||||||
var min = Infinity, max = 0, round = Math.round;
|
|
||||||
var PR = round( window.devicePixelRatio || 1 );
|
|
||||||
|
|
||||||
var WIDTH = 80 * PR, HEIGHT = 48 * PR,
|
|
||||||
TEXT_X = 3 * PR, TEXT_Y = 2 * PR,
|
|
||||||
GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,
|
|
||||||
GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;
|
|
||||||
|
|
||||||
var canvas = document.createElement( 'canvas' );
|
|
||||||
canvas.width = WIDTH;
|
|
||||||
canvas.height = HEIGHT;
|
|
||||||
canvas.style.cssText = 'width:80px;height:48px';
|
|
||||||
|
|
||||||
var context = canvas.getContext( '2d' );
|
|
||||||
context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif';
|
|
||||||
context.textBaseline = 'top';
|
|
||||||
|
|
||||||
context.fillStyle = bg;
|
|
||||||
context.fillRect( 0, 0, WIDTH, HEIGHT );
|
|
||||||
|
|
||||||
context.fillStyle = fg;
|
|
||||||
context.fillText( name, TEXT_X, TEXT_Y );
|
|
||||||
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );
|
|
||||||
|
|
||||||
context.fillStyle = bg;
|
|
||||||
context.globalAlpha = 0.9;
|
|
||||||
context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT );
|
|
||||||
|
|
||||||
return {
|
|
||||||
|
|
||||||
dom: canvas,
|
|
||||||
|
|
||||||
update: function ( value, maxValue ) {
|
|
||||||
|
|
||||||
min = Math.min( min, value );
|
|
||||||
max = Math.max( max, value );
|
|
||||||
|
|
||||||
context.fillStyle = bg;
|
|
||||||
context.globalAlpha = 1;
|
|
||||||
context.fillRect( 0, 0, WIDTH, GRAPH_Y );
|
|
||||||
context.fillStyle = fg;
|
|
||||||
context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y );
|
|
||||||
|
|
||||||
context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT );
|
|
||||||
|
|
||||||
context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT );
|
|
||||||
|
|
||||||
context.fillStyle = bg;
|
|
||||||
context.globalAlpha = 0.9;
|
|
||||||
context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Stats;
|
|
@ -1,91 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
|
|
||||||
<link type="text/css" rel="stylesheet" href="./common/css/common.css">
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#chartDiv {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<!-- 第一个 -->
|
|
||||||
<div id="realdata" class="realdata">
|
|
||||||
<div id="echarts-btn" class="col echarts-btn menu-top">
|
|
||||||
|
|
||||||
<span class="btn" title="PRPS">
|
|
||||||
<span id="prps" class="prps ready"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn" title="PRPD">
|
|
||||||
<span id="prpd" class="prpd"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn" title="开启">
|
|
||||||
<span id="start" class="start"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn refreshtitle " title="累计">
|
|
||||||
<span class="refresh-btn ready"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="chartDiv" class="col echarts-chart charts">
|
|
||||||
<div id="box3D1" class="loading-box"></div>
|
|
||||||
<div id="box2D1" class="loading-box" style="display: none;"></div>
|
|
||||||
<div class="noisy-slide-box">
|
|
||||||
<span class="slide-name noise" name="noise">底噪</span>
|
|
||||||
<div class="noisy-slide slide GIS" data-price="0"></div>
|
|
||||||
<div class="noisy-slide slide GIL" data-price="0" style="display:none"></div>
|
|
||||||
</div>
|
|
||||||
<div id="addPointNumDiv">
|
|
||||||
<div class="cdf-slide-box">
|
|
||||||
<span class="slide-name phaseOffset" name="phaseOffset">相位偏移</span>
|
|
||||||
<span class="cdf-slide slide" data-price="0"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="zoom">
|
|
||||||
<span class="btn" title="放大">
|
|
||||||
<span id="scale" class="scale big ready"></span>
|
|
||||||
</span>
|
|
||||||
<span class="btn" title="缩小">
|
|
||||||
<span id="scale" class="scale small"></span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="box2D6" class="loading-box-mini"></div>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="./common/js/jquery.min.js"></script>
|
|
||||||
<!-- <script type="text/javascript" src="./common/js/jquery-ui.min.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/simpleAlert.js"></script> -->
|
|
||||||
|
|
||||||
<script type="text/javascript" src="./common/js/three/three.min.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/three/OrbitControls.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/three/Lut.js"></script>
|
|
||||||
|
|
||||||
<!--<script type="text/javascript" src="./common/js/echarts/echarts.js"></script> -->
|
|
||||||
<!-- 使不支持es模块的浏览器支持es -->
|
|
||||||
<!-- <script type="text/javascript" async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script> -->
|
|
||||||
<script type="module" src="./common/js/history.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,137 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
|
|
||||||
<link type="text/css" rel="stylesheet" href="./common/css/common.css">
|
|
||||||
<style>
|
|
||||||
* {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#chartDiv {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<!-- 第一个 -->
|
|
||||||
<div id="realdata" class="realdata">
|
|
||||||
<div id="echarts-btn" class="col echarts-btn menu-top">
|
|
||||||
<select id="channelFiltering" class="selectStyle">
|
|
||||||
<option value="0" class="selectFrequency">选择频段</option>
|
|
||||||
<option value="1" class="lowband">低频</option>
|
|
||||||
<option value="2" class="fullband">全频</option>
|
|
||||||
<option value="3" class="narrowband">窄频</option>
|
|
||||||
<option value="4" class="highband">高频</option>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<span class="btn" title="PRPS">
|
|
||||||
<span id="prps" class="prps ready"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn" title="PRPD">
|
|
||||||
<span id="prpd" class="prpd"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn" title="开启">
|
|
||||||
<span id="start" class="start"></span>
|
|
||||||
</span>
|
|
||||||
<span class="btn LinkANC" title="自适应降噪">
|
|
||||||
<span id="adaptive-noise" class="adaptive-noise"></span>
|
|
||||||
</span>
|
|
||||||
<span id="associated-noise-box" class="btn LinkNC" title="关联噪声传感器降噪">
|
|
||||||
<span id="associated-noise" class="associated-noise"></span>
|
|
||||||
</span>
|
|
||||||
<span class="btn eventList" title="事件列表">
|
|
||||||
<span class="event-btn"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span id="record-btn-box" class="btn record-btn-box" title="录波">
|
|
||||||
<span class="record-btn"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span id="total" class="btn" style="width: 70px;display:none" >
|
|
||||||
<input id="total-time" type="number" placeholder="累计时间(s)" />
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="btn refreshtitle " title="累计">
|
|
||||||
<span class="refresh-btn ready"></span>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span id="menu-right" class="btn" title="展开">
|
|
||||||
<span id="show" class="show"></span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="chartDiv" class="col echarts-chart charts">
|
|
||||||
<div id="box3D1" class="loading-box"></div>
|
|
||||||
<div id="box3D2" class="loading-box" style="display: none;"></div>
|
|
||||||
<div id="box2D2" class="loading-box" style="display: none;"></div>
|
|
||||||
<div id="box2D5" class="loading-box" style="display: none;width:100%;height: 100%;"></div>
|
|
||||||
<div id="box2D1" class="loading-box" style="display: none;"></div>
|
|
||||||
<div class="noisy-slide-box">
|
|
||||||
<span class="slide-name noise" name="noise">底噪</span>
|
|
||||||
<div class="noisy-slide slide GIS" data-price="0"></div>
|
|
||||||
<div class="noisy-slide slide GIL" data-price="0" style="display:none"></div>
|
|
||||||
</div>
|
|
||||||
<div id="echarts-text" class="echarts-text text-bottom">
|
|
||||||
<span class="maxValue" name="maxValue">
|
|
||||||
<span class="name">脉冲最大值:</span>
|
|
||||||
<span id="maxValue">0</span>
|
|
||||||
<span class="unit">dBm</span>
|
|
||||||
</span>
|
|
||||||
<span class="avgValue" name="averageValue">
|
|
||||||
<span class="name">脉冲平均值:</span>
|
|
||||||
<span id="averageValue">0</span>
|
|
||||||
<span class="unit">dBm</span>
|
|
||||||
</span>
|
|
||||||
<span class="pulseNumber" name="impulseQuantity">
|
|
||||||
<span class="name">脉冲数量:</span>
|
|
||||||
<span id="impulseQuantity">0</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="addPointNumDiv">
|
|
||||||
<div class="cdf-slide-box">
|
|
||||||
<span class="slide-name phaseOffset" name="phaseOffset">相位偏移</span>
|
|
||||||
<span class="cdf-slide slide" data-price="0"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="zoom">
|
|
||||||
<span class="btn" title="放大">
|
|
||||||
<span id="scale" class="scale big ready"></span>
|
|
||||||
</span>
|
|
||||||
<span class="btn" title="缩小">
|
|
||||||
<span id="scale" class="scale small"></span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="box2D6" class="loading-box-mini"></div>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="./common/js/jquery.min.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/jquery-ui.min.js"></script>
|
|
||||||
<!--<script type="text/javascript" src="./common/js/simpleAlert.js"></script> -->
|
|
||||||
|
|
||||||
<script type="text/javascript" src="./common/js/three/three.min.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/three/OrbitControls.js"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/three/Lut.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="./common/js/echarts/echarts.js"></script>
|
|
||||||
<!-- 使不支持es模块的浏览器支持es -->
|
|
||||||
<!-- <script type="text/javascript" async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script> -->
|
|
||||||
<script type="module" src="./common/js/index.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||||||
|
import server from '@/utils/request';
|
||||||
|
|
||||||
|
//关联关系配置
|
||||||
|
|
||||||
|
//使用post分页动态查询
|
||||||
|
|
||||||
|
export const getAssociateConfigListPage_api = (data: object) => server.post(`/fault-config/_query`, data);
|
||||||
|
|
||||||
|
// 新增数据 fault-config
|
||||||
|
export const addAssociateConfig_api = (data: object) => server.patch(`/fault-config`, data);
|
||||||
|
|
||||||
|
//修改数据
|
||||||
|
export const updateAssociateConfig_api = (id: object) => server.put(`/fault-config/${id}`);
|
||||||
|
|
||||||
|
//根据ID查询
|
||||||
|
export const getAssociateConfigList_api = (id: object) => server.get(`/fault/config/${id}`);
|
||||||
|
|
||||||
|
//根据ID删除
|
||||||
|
export const delteAssociateConfig_api = (id: string) => server.remove(`/fault/config/${id}`);
|
@ -0,0 +1,29 @@
|
|||||||
|
import server from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (POST)一次性获取所有的节点树
|
||||||
|
* @param logicId
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const findDefaultTree = (logicId: string) => server.get(`/common-point/findDefaultTree/${logicId}`)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存站点监测点数据
|
||||||
|
* @param data
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const addMonitor = (data: any) => server.post(`/common-point`, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改站点监测点数据
|
||||||
|
* @param id
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const editMonitor = (data: any) => server.put(`/common/point/${data.id}`, data)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除站点监测点数据
|
||||||
|
* @param id
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export const deleteMonitor = (id: any) => server.remove(`/common/point/${id}`)
|
@ -1,17 +0,0 @@
|
|||||||
import server from '@/utils/request';
|
|
||||||
//编辑标签
|
|
||||||
export const saveTag = (data:any) => server.patch('/calendar/tags',data)
|
|
||||||
//查询标签列表
|
|
||||||
export const queryTags = () => server.get('/calendar/tags')
|
|
||||||
//删除标签
|
|
||||||
export const deleteTags = (ids:any) => server.remove('/calendar/tags',{},{data:ids})
|
|
||||||
//保存标签颜色
|
|
||||||
export const saveTagsColor = (data:any) => server.post('/system/config/calendar-tag-color',data)
|
|
||||||
//查询标签颜色
|
|
||||||
export const getTagsColor = () => server.get('/system/config/calendar-tag-color');
|
|
||||||
//查询指定日期内的日历
|
|
||||||
export const queryEvents = (dateFrom:any,dateTo:any) => server.get(`/calendar/${dateFrom}/${dateTo}`)
|
|
||||||
//批量保存指定日期的日历
|
|
||||||
export const saveEvents = (data:any) => server.patch('/calendar',data)
|
|
||||||
//清空日历
|
|
||||||
export const clearAll = () => server.remove('/calendar/mine/_all')
|
|
@ -1,92 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div
|
|
||||||
:style="props.style || { width: '100%', height: '100%' }"
|
|
||||||
:class="props.class"
|
|
||||||
>
|
|
||||||
<el-amap v-if="amapKey" :zooms="[3, 20]" @init="initMap" ref="mapRef">
|
|
||||||
<template v-if="isOpenUi">
|
|
||||||
<template v-if="uiLoading">
|
|
||||||
<slot></slot>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
<template v-else><slot></slot></template>
|
|
||||||
</el-amap>
|
|
||||||
<JEmpty v-else description="请配置高德地图key" style="padding: 20%" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { CSSProperties, PropType } from 'vue';
|
|
||||||
import AMap, { initAMapApiLoader } from '@vuemap/vue-amap';
|
|
||||||
import '@vuemap/vue-amap/dist/style.css';
|
|
||||||
import { getAMapUiPromise } from './utils';
|
|
||||||
import { useSystem } from '@/store/system';
|
|
||||||
|
|
||||||
const emit = defineEmits(['init']);
|
|
||||||
|
|
||||||
const system = useSystem();
|
|
||||||
interface AMapProps {
|
|
||||||
style?: CSSProperties;
|
|
||||||
class?: string;
|
|
||||||
AMapUI?: string | boolean;
|
|
||||||
}
|
|
||||||
const amapKey = system.$state.configInfo.amap?.apiKey;
|
|
||||||
const secretKey = system.$state.configInfo.amap?.secretKey;
|
|
||||||
|
|
||||||
initAMapApiLoader({
|
|
||||||
key: amapKey,
|
|
||||||
securityJsCode: secretKey,
|
|
||||||
plugins: ['AMap.DistrictSearch', 'AMap.GeoJSON'],
|
|
||||||
});
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
style: Object as PropType<AMapProps['style']>,
|
|
||||||
class: String as PropType<AMapProps['class']>,
|
|
||||||
AMapUI: [String, Boolean],
|
|
||||||
center: Array,
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapRef = ref();
|
|
||||||
|
|
||||||
const uiLoading = ref<boolean>(false);
|
|
||||||
|
|
||||||
let mapInstance:any = null;
|
|
||||||
|
|
||||||
const isOpenUi = computed(() => {
|
|
||||||
return 'AMapUI' in props || props.AMapUI;
|
|
||||||
});
|
|
||||||
|
|
||||||
const getAMapUI = () => {
|
|
||||||
const version = typeof props.AMapUI === 'string' ? props.AMapUI : '1.1';
|
|
||||||
getAMapUiPromise(version).then(() => {
|
|
||||||
uiLoading.value = true;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const marker = ref<any[]>([]);
|
|
||||||
|
|
||||||
const initMap = (e: any) => {
|
|
||||||
mapInstance = e;
|
|
||||||
if (isOpenUi.value) {
|
|
||||||
getAMapUI();
|
|
||||||
}
|
|
||||||
emit('init', e);
|
|
||||||
};
|
|
||||||
|
|
||||||
const setBounds = (bounds: any) => {
|
|
||||||
console.log(bounds)
|
|
||||||
if (mapInstance) {
|
|
||||||
mapInstance.setBounds(bounds)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(()=>{
|
|
||||||
console.log(secretKey,'secretKey')
|
|
||||||
})
|
|
||||||
|
|
||||||
defineExpose({
|
|
||||||
setBounds
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped></style>
|
|
@ -1,116 +0,0 @@
|
|||||||
<template>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { useMap } from './useMap'
|
|
||||||
import {pick} from "lodash-es";
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'DistrictSearch'
|
|
||||||
})
|
|
||||||
|
|
||||||
const instance = useMap()
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
subdistrict: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
extensions: {
|
|
||||||
type: String,
|
|
||||||
default: 'all'
|
|
||||||
},
|
|
||||||
level: {
|
|
||||||
type: String,
|
|
||||||
default: 'district'
|
|
||||||
},
|
|
||||||
view: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
styles: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
},
|
|
||||||
adcode: {
|
|
||||||
type: String,
|
|
||||||
default: undefined
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
let district
|
|
||||||
let polygon
|
|
||||||
|
|
||||||
const remove = () => {
|
|
||||||
if (polygon && instance.$amapComponent) {
|
|
||||||
if (instance.$amapComponent.getLayers().length) {
|
|
||||||
instance.$amapComponent.remove(polygon)
|
|
||||||
}
|
|
||||||
polygon = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const drawBounds = (paths) => {
|
|
||||||
if (polygon && instance.$amapComponent?.remove) {
|
|
||||||
instance.$amapComponent.remove(polygon)
|
|
||||||
polygon = null
|
|
||||||
}
|
|
||||||
for (var i = 0; i < paths.length; i += 1) {//构造MultiPolygon的path
|
|
||||||
paths[i] = [paths[i]]
|
|
||||||
}
|
|
||||||
|
|
||||||
const _styles = Object.assign({
|
|
||||||
strokeWeight: 1,
|
|
||||||
path: paths,
|
|
||||||
fillOpacity: 0.25,
|
|
||||||
fillColor: '#80d8ff',
|
|
||||||
strokeColor: '#0091ea'
|
|
||||||
},props.styles)
|
|
||||||
|
|
||||||
polygon = new AMap.Polygon(_styles);
|
|
||||||
|
|
||||||
instance.$amapComponent.add(polygon)
|
|
||||||
|
|
||||||
if (props.view) {
|
|
||||||
instance.$amapComponent.setFitView(polygon)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const queryDistrict = (code) => {
|
|
||||||
const opts = {
|
|
||||||
subdistrict: 0, //获取边界不需要返回下级行政区
|
|
||||||
extensions: 'all', //返回行政区边界坐标组等具体信息
|
|
||||||
level: 'district' //查询行政级别为 市
|
|
||||||
}
|
|
||||||
|
|
||||||
const options = Object.assign(opts, pick(props, ['subdistrict', 'extensions', 'level']))
|
|
||||||
|
|
||||||
if (!district) {
|
|
||||||
district = new AMap.DistrictSearch(options)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!code) return
|
|
||||||
district.search(code, (status, result) => {
|
|
||||||
if (!result || !result.districtList || !result.districtList[0]) {
|
|
||||||
console.warn('请正确填写名称或更新其他名称');
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const bounds = result.districtList[0].boundaries;
|
|
||||||
drawBounds(bounds)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
|
||||||
remove()
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(() => props.adcode, () =>{
|
|
||||||
queryDistrict(props.adcode)
|
|
||||||
}, { immediate: true })
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,91 +0,0 @@
|
|||||||
<template>
|
|
||||||
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { useMap } from './useMap'
|
|
||||||
import { max, min } from 'lodash-es'
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'GeoJson'
|
|
||||||
})
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
geo: {
|
|
||||||
type: Object,
|
|
||||||
default: undefined
|
|
||||||
},
|
|
||||||
view: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
const instance = useMap()
|
|
||||||
|
|
||||||
let geoJsonLayer
|
|
||||||
|
|
||||||
const remove = () => {
|
|
||||||
if (geoJsonLayer && instance.$amapComponent) {
|
|
||||||
if (instance.$amapComponent.getLayers().length) {
|
|
||||||
instance.$amapComponent.remove(geoJsonLayer)
|
|
||||||
}
|
|
||||||
geoJsonLayer = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const drawBounds = () => {
|
|
||||||
remove()
|
|
||||||
|
|
||||||
if (!props.geo) return
|
|
||||||
|
|
||||||
geoJsonLayer = new AMap.GeoJSON({
|
|
||||||
geoJSON: props.geo,
|
|
||||||
getPolygon: (geojson, lnglats) => {
|
|
||||||
return new AMap.Polygon({
|
|
||||||
path: lnglats,
|
|
||||||
fillOpacity: 0.25,// 面积越大透明度越高
|
|
||||||
strokeColor: '#0091ea',
|
|
||||||
fillColor: '#80d8ff'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
instance.$amapComponent.add(geoJsonLayer)
|
|
||||||
|
|
||||||
if (props.view) {
|
|
||||||
|
|
||||||
const points = props.geo.features.reduce((prev, next) => {
|
|
||||||
const coordinates = next.geometry.coordinates
|
|
||||||
prev.push(...coordinates[0])
|
|
||||||
return prev
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
if (points.length) {
|
|
||||||
const lngArr = points.map(lnglat => lnglat[0])
|
|
||||||
const latArr = points.map(lnglat => lnglat[1])
|
|
||||||
|
|
||||||
const maxLng = max(lngArr)
|
|
||||||
const maxLat = max(latArr)
|
|
||||||
const minLng = min(lngArr)
|
|
||||||
const minLat = min(latArr)
|
|
||||||
const southWest = new AMap.LngLat(maxLng, maxLat)
|
|
||||||
const northEast = new AMap.LngLat(minLng, minLat)
|
|
||||||
const bounds = new AMap.Bounds(southWest, northEast)
|
|
||||||
instance.$amapComponent.setBounds(bounds)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
|
||||||
remove()
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(() => JSON.stringify(props.geo), () =>{
|
|
||||||
drawBounds()
|
|
||||||
}, { immediate: true })
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,7 +0,0 @@
|
|||||||
import AMap from './AMap.vue'
|
|
||||||
|
|
||||||
export * from './useMap'
|
|
||||||
export { default as DistrictSearch } from './DistrictSearch.vue'
|
|
||||||
export { default as GeoJson } from './GeoJson.vue'
|
|
||||||
|
|
||||||
export default AMap
|
|
@ -1,4 +0,0 @@
|
|||||||
export const useMap = () => {
|
|
||||||
return inject('parentInstance')
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
<template>
|
|
||||||
<img :src="src" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'LevelIcon'
|
|
||||||
})
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
level: {
|
|
||||||
type: Number,
|
|
||||||
default: undefined
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const src = computed(() => {
|
|
||||||
return `/images/alarm/alarm${props.level}.png`
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,72 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="radio-button" :style="styles">
|
|
||||||
<div v-for="item in options" @click="onClick(item)" class="radio-button-item" :class="{'active': myValue === item.value }">
|
|
||||||
{{ item.label }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
defineOptions({
|
|
||||||
name: 'RadioButton',
|
|
||||||
})
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
value: {
|
|
||||||
type: [String, Number],
|
|
||||||
default: undefined
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
},
|
|
||||||
columns: {
|
|
||||||
type: Number,
|
|
||||||
default: 3
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const emit = defineEmits(['update:value'])
|
|
||||||
|
|
||||||
const myValue = ref(props.value)
|
|
||||||
|
|
||||||
const styles = computed(() => {
|
|
||||||
return {
|
|
||||||
'grid-template-columns': `repeat(${props.columns}, 1fr)`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const onClick = (record) => {
|
|
||||||
if (myValue.value !== record.value) {
|
|
||||||
myValue.value = record.value
|
|
||||||
emit('update:value', record.value)
|
|
||||||
emit('select', record.value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
watch(() => props.value, () => {
|
|
||||||
myValue.value = props.value
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.radio-button {
|
|
||||||
display: grid;
|
|
||||||
gap: 16px;
|
|
||||||
|
|
||||||
.radio-button-item {
|
|
||||||
padding: 6px 12px;
|
|
||||||
text-align: center;
|
|
||||||
height: 100%;
|
|
||||||
border-radius: 2px;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
color: #fff;
|
|
||||||
background-color: @primary-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,11 +0,0 @@
|
|||||||
import CardSelect from './CardSelect.vue';
|
|
||||||
import type { App } from 'vue';
|
|
||||||
|
|
||||||
CardSelect.name = 'JCardSelect';
|
|
||||||
|
|
||||||
CardSelect.install = function (app: App) {
|
|
||||||
app.component('JCardSelect', CardSelect);
|
|
||||||
return app;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default CardSelect;
|
|
@ -1,163 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div :class="['j-check-button', props.class]" :style="styles">
|
|
||||||
<div
|
|
||||||
v-for="item in _options"
|
|
||||||
:key="item.value"
|
|
||||||
:class="{
|
|
||||||
'j-check-button-item': true,
|
|
||||||
'selected': myValue.includes(item.value),
|
|
||||||
'disabled': item.disabled
|
|
||||||
}"
|
|
||||||
@click="
|
|
||||||
() => {
|
|
||||||
selected(item.value, item.disabled);
|
|
||||||
}
|
|
||||||
"
|
|
||||||
>
|
|
||||||
{{ item.label }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { computed, CSSProperties, PropType, ref, watch } from 'vue';
|
|
||||||
import { isArray } from 'lodash-es';
|
|
||||||
import { Form } from 'ant-design-vue'
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'CheckButton'
|
|
||||||
})
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
value: {
|
|
||||||
type: [String, Array],
|
|
||||||
default: undefined,
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
multiple: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
class: {
|
|
||||||
type: String,
|
|
||||||
default: undefined,
|
|
||||||
},
|
|
||||||
style: {
|
|
||||||
type: Object as PropType<CSSProperties>,
|
|
||||||
default: () => ({}),
|
|
||||||
},
|
|
||||||
columns: {
|
|
||||||
type: Number,
|
|
||||||
default: 3
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const emit = defineEmits(['update:value', 'change', 'select']);
|
|
||||||
|
|
||||||
const formItemContext = Form.useInjectFormItemContext();
|
|
||||||
const myValue = ref();
|
|
||||||
const optionsMap = ref(new Map());
|
|
||||||
|
|
||||||
const styles = computed(() => {
|
|
||||||
return {
|
|
||||||
'grid-template-columns': `repeat(${props.columns}, 1fr)`,
|
|
||||||
...props.style
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const _options = computed(() => {
|
|
||||||
props.options.forEach((item: any) => {
|
|
||||||
if (props.disabled) {
|
|
||||||
item.disabled = props.disabled
|
|
||||||
}
|
|
||||||
optionsMap.value.set(item.value, item);
|
|
||||||
});
|
|
||||||
return props.options;
|
|
||||||
});
|
|
||||||
|
|
||||||
const selected = (key: string | number, disabeld: boolean) => {
|
|
||||||
if (disabeld || props.disabled) return;
|
|
||||||
|
|
||||||
const values = new Set(myValue.value);
|
|
||||||
|
|
||||||
if (values.has(key)) {
|
|
||||||
values.delete(key);
|
|
||||||
} else {
|
|
||||||
if (!props.multiple) {
|
|
||||||
values.clear();
|
|
||||||
}
|
|
||||||
values.add(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
myValue.value = [...values.values()];
|
|
||||||
|
|
||||||
const optionsItems = myValue.value.map((_key) => {
|
|
||||||
return optionsMap.value.get(_key);
|
|
||||||
});
|
|
||||||
|
|
||||||
const _value = props.multiple ? myValue.value : myValue.value[0];
|
|
||||||
|
|
||||||
emit('update:value', _value);
|
|
||||||
emit('change', _value, props.multiple ? optionsItems : optionsItems[0]);
|
|
||||||
emit('select', _value, props.multiple ? optionsItems : optionsItems[0]);
|
|
||||||
formItemContext.onFieldChange()
|
|
||||||
};
|
|
||||||
|
|
||||||
watch(
|
|
||||||
() => props.value,
|
|
||||||
() => {
|
|
||||||
if (props.value) {
|
|
||||||
myValue.value = isArray(props.value) ? props.value : [props.value];
|
|
||||||
} else {
|
|
||||||
myValue.value = [];
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ immediate: true, deep: true },
|
|
||||||
);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.j-check-button {
|
|
||||||
display: grid;
|
|
||||||
gap: 16px;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
.j-check-button-item {
|
|
||||||
flex: 1;
|
|
||||||
min-width: 0;
|
|
||||||
padding: 8px;
|
|
||||||
border-radius: @border-radius-base;
|
|
||||||
background-color: #f2f3f5;
|
|
||||||
transition: all 0.3s;
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: @primary-color;
|
|
||||||
opacity: 0.85;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.selected {
|
|
||||||
background-color: @primary-color;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
cursor: not-allowed;
|
|
||||||
color: #00000040;
|
|
||||||
background-color: #e6e6e6;
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
@ -1,3 +0,0 @@
|
|||||||
import CheckButton from "./CheckButton.vue";
|
|
||||||
|
|
||||||
export default CheckButton
|
|
@ -1,76 +0,0 @@
|
|||||||
<template>
|
|
||||||
<!-- <a-tooltip v-if="toolTip" v-bind="toolTip">
|
|
||||||
<span @click="showConfirm" :class="props.className" v-show="show">
|
|
||||||
{{ props.class }}
|
|
||||||
<slot></slot>
|
|
||||||
</span>
|
|
||||||
</a-tooltip> -->
|
|
||||||
<span @click="showConfirm" :class="props.className" v-show="show">
|
|
||||||
{{ props.class }}
|
|
||||||
<slot></slot>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { Modal } from 'ant-design-vue';
|
|
||||||
const props = defineProps({
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: '',
|
|
||||||
},
|
|
||||||
onConfirm: {
|
|
||||||
type: Object,
|
|
||||||
default: {},
|
|
||||||
},
|
|
||||||
className: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
show: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
toolTip: {
|
|
||||||
type: Object
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// const confirmLoading = ref(false);
|
|
||||||
// const modalVisible = ref(false);
|
|
||||||
// const modalConfirm = async() => {
|
|
||||||
// if (typeof props.onConfirm === 'function') {
|
|
||||||
// confirmLoading.value = true;
|
|
||||||
// const res = await props.onConfirm()?.finally(()=>{
|
|
||||||
// confirmLoading.value = false;
|
|
||||||
// modalVisible.value = false;
|
|
||||||
// return
|
|
||||||
// });
|
|
||||||
// if(!res?.finally){
|
|
||||||
// confirmLoading.value = false;
|
|
||||||
// modalVisible.value = false;
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// modalVisible.value = false;
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
const showConfirm = () => {
|
|
||||||
if (props.disabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Modal.confirm({
|
|
||||||
title: props.title,
|
|
||||||
content: props?.content,
|
|
||||||
onOk() {
|
|
||||||
return props?.onConfirm();
|
|
||||||
},
|
|
||||||
onCancel() {},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.modalContent {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,326 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div ref='dialog' :style='styleName' class='dialog'>
|
|
||||||
<Transition name='dialog'>
|
|
||||||
<div class='dialog-sprite' ref='header'>
|
|
||||||
<div class='header' v-if="title !== false">
|
|
||||||
<span>{{ title }}</span>
|
|
||||||
<a-button size='small' type='text' @click.stop='onClose'>
|
|
||||||
<AIcon type='CloseOutlined' />
|
|
||||||
</a-button>
|
|
||||||
</div>
|
|
||||||
<div class='dialog-body' :style="bodyStyle">
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
<!-- <div class='dialog-footer' v-if='slots?.footer'>-->
|
|
||||||
<!-- <slot name='footer'></slot>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
|
||||||
</Transition>
|
|
||||||
<!-- <template v-for='item in rangeList'>-->
|
|
||||||
<!-- <div :class="{'range': true, [item.classname]: true}" @mousedown.stop='rangeMove($event,item.classname)'></div>-->
|
|
||||||
<!-- </template>-->
|
|
||||||
|
|
||||||
<div :class="{'range': true, 'bottom-right': true}" @mousedown.stop='rangeMove($event,"bottom-right")'></div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang='ts'>
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'DragModal'
|
|
||||||
})
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
title: {
|
|
||||||
type: [String, Boolean],
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
width: {
|
|
||||||
type: Number,
|
|
||||||
default: 400
|
|
||||||
},
|
|
||||||
height: {
|
|
||||||
type: Number,
|
|
||||||
default: 100
|
|
||||||
},
|
|
||||||
dragRang: {
|
|
||||||
type: [Array , Number],
|
|
||||||
default: [400, 200]
|
|
||||||
},
|
|
||||||
bodyStyle: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const emits = defineEmits(['close', 'heightChange'])
|
|
||||||
const slots = useSlots()
|
|
||||||
|
|
||||||
const ele = document.body
|
|
||||||
|
|
||||||
const dialog = ref()
|
|
||||||
const header = ref()
|
|
||||||
const baseWidth = ref(props.width || 400)
|
|
||||||
const baseHeight = ref(props.height || 100)
|
|
||||||
const baseLeft = ref(100)
|
|
||||||
const baseTop = ref(100)
|
|
||||||
|
|
||||||
const rangeList = [
|
|
||||||
// {
|
|
||||||
// classname: 'top-left'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// classname: 'top-right'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// classname: 'bottom-left'
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
classname: 'bottom-right'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
const styleName = computed(() => {
|
|
||||||
return {
|
|
||||||
top: getFixed(baseTop.value) + 'px',
|
|
||||||
left: getFixed(baseLeft.value) + 'px',
|
|
||||||
width: getFixed(baseWidth.value) + 'px',
|
|
||||||
height: getFixed(baseHeight.value) + 'px'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const getFixed = (val: number) => {
|
|
||||||
return Number(val.toFixed(2))
|
|
||||||
}
|
|
||||||
|
|
||||||
const onDrag = () => {
|
|
||||||
let active = false
|
|
||||||
let initialX: number
|
|
||||||
let initialY: number
|
|
||||||
let initialWindowX: number
|
|
||||||
let initialWindowY: number
|
|
||||||
|
|
||||||
header.value.addEventListener('mousedown', (e: MouseEvent) => {
|
|
||||||
active = true
|
|
||||||
|
|
||||||
initialX = e.clientX
|
|
||||||
initialY = e.clientY
|
|
||||||
|
|
||||||
initialWindowX = dialog.value.offsetLeft
|
|
||||||
initialWindowY = dialog.value.offsetTop
|
|
||||||
})
|
|
||||||
|
|
||||||
document.addEventListener('mouseup', () => {
|
|
||||||
active = false
|
|
||||||
})
|
|
||||||
|
|
||||||
document.addEventListener('mousemove', (e) => {
|
|
||||||
if (active) {
|
|
||||||
const dx = e.clientX - initialX
|
|
||||||
const dy = e.clientY - initialY
|
|
||||||
|
|
||||||
baseLeft.value = initialWindowX + dx
|
|
||||||
baseTop.value = initialWindowY + dy
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleClear = () => {
|
|
||||||
document.onmouseup = () => {
|
|
||||||
document.onmousemove = null
|
|
||||||
document.onmouseup = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const rangeMove = (e: MouseEvent, position: string) => {
|
|
||||||
//移动的方向
|
|
||||||
let x: boolean = false
|
|
||||||
let y: boolean = false
|
|
||||||
//移动的位置
|
|
||||||
let xp: boolean = false
|
|
||||||
let yp: boolean = false
|
|
||||||
//移动的正负
|
|
||||||
let xc: boolean = false
|
|
||||||
let yc: boolean = false
|
|
||||||
let disX = e.clientX
|
|
||||||
let disY = e.clientY
|
|
||||||
document.onmousemove = e => {
|
|
||||||
if (position === 'bottom-right') {
|
|
||||||
x = true
|
|
||||||
y = true
|
|
||||||
} else if (position === 'bottom-left') {
|
|
||||||
x = true
|
|
||||||
y = true
|
|
||||||
xp = true
|
|
||||||
xc = true
|
|
||||||
} else if (position === 'top-right') {
|
|
||||||
x = true
|
|
||||||
y = true
|
|
||||||
yp = true
|
|
||||||
yc = true
|
|
||||||
} else if (position === 'top-left') {
|
|
||||||
x = true
|
|
||||||
y = true
|
|
||||||
xp = true
|
|
||||||
xc = true
|
|
||||||
yp = true
|
|
||||||
yc = true
|
|
||||||
}
|
|
||||||
let left = e.clientX - disX
|
|
||||||
let top = e.clientY - disY
|
|
||||||
disX = e.clientX
|
|
||||||
disY = e.clientY
|
|
||||||
if (x) {
|
|
||||||
let calc = left
|
|
||||||
|
|
||||||
if (xc) {
|
|
||||||
calc = -calc
|
|
||||||
}
|
|
||||||
|
|
||||||
if (xp) {
|
|
||||||
baseLeft.value = baseLeft.value - calc
|
|
||||||
}
|
|
||||||
|
|
||||||
const width = baseWidth.value + calc
|
|
||||||
|
|
||||||
baseWidth.value = width <= props.dragRang[0] ? props.dragRang[0] : width
|
|
||||||
}
|
|
||||||
if (y) {
|
|
||||||
let calc = top
|
|
||||||
if (yc) {
|
|
||||||
calc = -calc
|
|
||||||
}
|
|
||||||
|
|
||||||
if (yp) {
|
|
||||||
baseTop.value = baseTop.value - calc
|
|
||||||
}
|
|
||||||
|
|
||||||
const height = baseHeight.value + calc
|
|
||||||
|
|
||||||
baseHeight.value = height <= props.dragRang[1] ? props.dragRang[1] : height
|
|
||||||
|
|
||||||
emits('heightChange', baseHeight.value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleClear()
|
|
||||||
}
|
|
||||||
|
|
||||||
const onClose = () => {
|
|
||||||
console.log('close---1')
|
|
||||||
emits("close")
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
if (dialog.value && header.value) {
|
|
||||||
onDrag()
|
|
||||||
}
|
|
||||||
if (ele) {
|
|
||||||
const data = ele?.getBoundingClientRect()
|
|
||||||
baseLeft.value = (data?.right - baseWidth.value) / 2 || 0
|
|
||||||
baseTop.value = data?.top + 200 || 0
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(() => props.height, () => {
|
|
||||||
if (props.height > baseHeight.value) {
|
|
||||||
baseHeight.value = props.height
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang='less' scoped>
|
|
||||||
@boxColor: rgb(@primary-color);
|
|
||||||
|
|
||||||
// 弹窗动画
|
|
||||||
.dialog-enter-active,
|
|
||||||
.dialog-leave-active {
|
|
||||||
transition: opacity .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-enter,
|
|
||||||
.dialog-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 1000;
|
|
||||||
|
|
||||||
.dialog-sprite {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 23456765435;
|
|
||||||
background-color: #ffffff;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: 1px solid #91CAFF;
|
|
||||||
box-shadow: 0 3px 8px 0 rgba(#1677FF, 0.24);
|
|
||||||
|
|
||||||
.header {
|
|
||||||
padding: 5px 15px;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 700;
|
|
||||||
color: #333;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
border-bottom: 1px solid #f0f0f0;
|
|
||||||
cursor: move;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-body {
|
|
||||||
flex: 1;
|
|
||||||
min-height: 0;
|
|
||||||
overflow-y: auto;
|
|
||||||
padding: 24px 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dialog-footer {
|
|
||||||
border-top: 1px solid #f0f0f0;
|
|
||||||
padding: 5px 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.range {
|
|
||||||
position: absolute;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
border-radius: 100%;
|
|
||||||
z-index: 23456765436;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-right, .top-left {
|
|
||||||
&:hover {
|
|
||||||
cursor: nwse-resize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-left, .top-right {
|
|
||||||
&:hover {
|
|
||||||
cursor: nesw-resize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.top-right {
|
|
||||||
top: -6px;
|
|
||||||
right: -6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top-left {
|
|
||||||
top: -6px;
|
|
||||||
left: -6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-right {
|
|
||||||
bottom: -6px;
|
|
||||||
right: -6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-left {
|
|
||||||
bottom: -6px;
|
|
||||||
left: -6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1 +0,0 @@
|
|||||||
export { default as DragModal } from './DragModal.vue'
|
|
@ -1,13 +0,0 @@
|
|||||||
import FlvPlugin from 'xgplayer-flv'
|
|
||||||
import HlsPlugin from "xgplayer-hls"
|
|
||||||
export const settingEnum = {
|
|
||||||
mp4: {
|
|
||||||
isLive: false,
|
|
||||||
},
|
|
||||||
flv: {
|
|
||||||
plugins: [FlvPlugin],
|
|
||||||
},
|
|
||||||
m3u8: {
|
|
||||||
plugins: [HlsPlugin],
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
import { useRequest } from './useRequest'
|
|
||||||
import { queryLevel } from '@/api/rule-engine/config';
|
|
||||||
|
|
||||||
type LevelListType = Array<{ label: number, value: string}>
|
|
||||||
export const useAlarmLevel = () => {
|
|
||||||
const levelMap = ref({})
|
|
||||||
const levelList = ref<LevelListType>([])
|
|
||||||
|
|
||||||
useRequest(queryLevel, {
|
|
||||||
onSuccess(res) {
|
|
||||||
if (res.result?.levels?.length) {
|
|
||||||
const arr: LevelListType = []
|
|
||||||
levelMap.value = res.result.levels.reduce((prev: Record<string, string>, next: Record<string, any>) => {
|
|
||||||
prev[next.level] = next.title
|
|
||||||
arr.push({
|
|
||||||
label: next.title,
|
|
||||||
value: next.level
|
|
||||||
})
|
|
||||||
return prev
|
|
||||||
}, {})
|
|
||||||
levelList.value = arr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
levelMap,
|
|
||||||
levelList
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
import { createI18n } from 'vue-i18n'
|
|
||||||
import zh from './locale/zh.json'
|
|
||||||
import en from './locale/en.json'
|
|
||||||
|
|
||||||
const messages = {
|
|
||||||
en,
|
|
||||||
zh,
|
|
||||||
}
|
|
||||||
const language = (navigator.language || 'en').toLocaleLowerCase() // 这是获取浏览器的语言
|
|
||||||
const i18n = createI18n({
|
|
||||||
locale: localStorage.getItem('lang') || language.split('-')[0] || 'en', // 首先从缓存里拿,没有的话就用浏览器语言,
|
|
||||||
fallbackLocale: 'en', // 设置备用语言
|
|
||||||
messages,
|
|
||||||
legacy: false
|
|
||||||
})
|
|
||||||
|
|
||||||
export default i18n
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.StepCard.926510-0": "暂无权限,请联系管理员"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.StepCard.926510-0": "No permission at the moment, please contact the administrator"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"DeviceHome.index.926510-0": "物联网引导",
|
|
||||||
"DeviceHome.index.926510-1": "设备接入推荐步骤",
|
|
||||||
"DeviceHome.index.926510-2": "不同的设备因为通信协议的不同,存在接入步骤的差异",
|
|
||||||
"DeviceHome.index.926510-3": "创建产品",
|
|
||||||
"DeviceHome.index.926510-4": "创建设备",
|
|
||||||
"DeviceHome.index.926510-5": "规则引擎",
|
|
||||||
"DeviceHome.index.926510-6": "产品是设备的集合,通常指一组具有相同功能的设备。物联设备必须通过产品进行接入方式配置。",
|
|
||||||
"DeviceHome.index.926510-7": "配置产品接入方式",
|
|
||||||
"DeviceHome.index.926510-8": "通过产品对同一类型的设备进行统一的接入方式配置。请参照设备铭牌说明选择匹配的接入方式。",
|
|
||||||
"DeviceHome.index.926510-9": "添加测试设备",
|
|
||||||
"DeviceHome.index.926510-10": "添加单个设备,用于验证产品模型是否配置正确。",
|
|
||||||
"DeviceHome.index.926510-11": "功能调试",
|
|
||||||
"DeviceHome.index.926510-12": "对添加的测试设备进行功能调试,验证能否连接到平台,设备功能是否配置正确。",
|
|
||||||
"DeviceHome.index.926510-13": "批量添加设备",
|
|
||||||
"DeviceHome.index.926510-14": "批量添加同一产品下的设备"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"DeviceHome.index.926510-0": "IoT guidance",
|
|
||||||
"DeviceHome.index.926510-1": "Recommended steps for device access",
|
|
||||||
"DeviceHome.index.926510-2": "Different devices may have different access steps due to differences in communication protocols",
|
|
||||||
"DeviceHome.index.926510-3": "Create product",
|
|
||||||
"DeviceHome.index.926510-4": "Create device",
|
|
||||||
"DeviceHome.index.926510-5": "Rule engine",
|
|
||||||
"DeviceHome.index.926510-6": "A product is a collection of devices, usually referring to a group of devices with the same functionality. IoT devices must be configured through product access methods.",
|
|
||||||
"DeviceHome.index.926510-7": "Configure product access methods",
|
|
||||||
"DeviceHome.index.926510-8": "Configure unified access methods for devices of the same type through products. Please refer to the instructions on the device nameplate to select the matching access method.",
|
|
||||||
"DeviceHome.index.926510-9": "Add testing equipment",
|
|
||||||
"DeviceHome.index.926510-10": "Add a single device to verify if the product model is configured correctly.",
|
|
||||||
"DeviceHome.index.926510-11": "Functional debugging",
|
|
||||||
"DeviceHome.index.926510-12": "Perform functional debugging on the added testing equipment to verify if it can connect to the platform and if the device's functions are configured correctly.",
|
|
||||||
"DeviceHome.index.926510-13": "Batch Add Devices",
|
|
||||||
"DeviceHome.index.926510-14": "Batch adding devices under the same product"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"InitHome.index.926510-0": "请选择首页视图",
|
|
||||||
"InitHome.index.926510-1": "保存修改"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"InitHome.index.926510-0": "Please select the homepage view",
|
|
||||||
"InitHome.index.926510-1": "Save modifications"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.PlatformPicCard.926510-0": "平台架构图"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.PlatformPicCard.926510-0": "Platform architecture diagram"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"home.index.926510-0": "基本信息"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"home.index.926510-0": "essential information"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.DeviceCountCard.926510-0": "设备统计",
|
|
||||||
"components.DeviceCountCard.926510-1": "详情",
|
|
||||||
"components.DeviceCountCard.926510-2": "产品数量",
|
|
||||||
"components.DeviceCountCard.926510-3": "设备数量"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.DeviceCountCard.926510-0": "Equipment statistics",
|
|
||||||
"components.DeviceCountCard.926510-1": "details",
|
|
||||||
"components.DeviceCountCard.926510-2": "Product quantity",
|
|
||||||
"components.DeviceCountCard.926510-3": "Number of devices"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"dialogs.ProductChooseDialog.926510-0": "选择产品",
|
|
||||||
"dialogs.ProductChooseDialog.926510-1": "产品",
|
|
||||||
"dialogs.ProductChooseDialog.926510-2": "请选择产品"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"dialogs.ProductChooseDialog.926510-0": "Select product",
|
|
||||||
"dialogs.ProductChooseDialog.926510-1": "product",
|
|
||||||
"dialogs.ProductChooseDialog.926510-2": "Please select a product"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"DevOpsHome.index.926510-0": "运维引导",
|
|
||||||
"DevOpsHome.index.926510-1": "运维管理推荐步骤",
|
|
||||||
"DevOpsHome.index.926510-2": "请根据业务需要对下述步骤进行选择性操作。",
|
|
||||||
"DevOpsHome.index.926510-3": "设备接入配置",
|
|
||||||
"DevOpsHome.index.926510-4": "日志排查",
|
|
||||||
"DevOpsHome.index.926510-5": "实时监控",
|
|
||||||
"DevOpsHome.index.926510-6": "协议管理",
|
|
||||||
"DevOpsHome.index.926510-7": "根据业务需求自定义开发对应的产品(设备模型)接入协议,并上传到平台。",
|
|
||||||
"DevOpsHome.index.926510-8": "证书管理",
|
|
||||||
"DevOpsHome.index.926510-9": "统一维护平台内的证书,用于数据通信加密。",
|
|
||||||
"DevOpsHome.index.926510-10": "网络组件",
|
|
||||||
"DevOpsHome.index.926510-11": "根据不同的传输类型配置平台底层网络组件相关参数。",
|
|
||||||
"DevOpsHome.index.926510-12": "设备接入网关",
|
|
||||||
"DevOpsHome.index.926510-13": "根据不同的传输类型,关联消息协议,配置设备接入网关相关参数。",
|
|
||||||
"DevOpsHome.index.926510-14": "日志管理",
|
|
||||||
"DevOpsHome.index.926510-15": "监控系统日志,及时处理系统异常。"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"DevOpsHome.index.926510-0": "Operations guidance",
|
|
||||||
"DevOpsHome.index.926510-1": "Recommended steps for operation and maintenance management",
|
|
||||||
"DevOpsHome.index.926510-2": "Please perform selective operations on the following steps according to business needs.",
|
|
||||||
"DevOpsHome.index.926510-3": "Device access configuration",
|
|
||||||
"DevOpsHome.index.926510-4": "Log troubleshooting",
|
|
||||||
"DevOpsHome.index.926510-5": "Real time monitoring",
|
|
||||||
"DevOpsHome.index.926510-6": "Protocol management",
|
|
||||||
"DevOpsHome.index.926510-7": "Customize and develop corresponding product (device model) access protocols according to business needs, and upload them to the platform.",
|
|
||||||
"DevOpsHome.index.926510-8": "Certificate Management",
|
|
||||||
"DevOpsHome.index.926510-9": "Unified maintenance of certificates within the platform for data communication encryption.",
|
|
||||||
"DevOpsHome.index.926510-10": "Network components",
|
|
||||||
"DevOpsHome.index.926510-11": "Configure platform underlying network component related parameters based on different transmission types.",
|
|
||||||
"DevOpsHome.index.926510-12": "Device access gateway",
|
|
||||||
"DevOpsHome.index.926510-13": "According to different transmission types, associate message protocols, and configure device access gateway related parameters.",
|
|
||||||
"DevOpsHome.index.926510-14": "Log management",
|
|
||||||
"DevOpsHome.index.926510-15": "Monitor system logs and promptly handle system exceptions."
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"dialogs.DeviceChooseDialog.926510-0": "选择设备",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-1": "请选择设备",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-2": "设备ID",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-3": "设备名称",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-4": "产品名称",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-5": "注册时间",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-6": "状态",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-7": "在线",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-8": "离线"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"dialogs.DeviceChooseDialog.926510-0": "Select device",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-1": "Please select a device",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-2": "Device ID",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-3": "Device Name",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-4": "Product Name",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-5": "Registration time",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-6": "state",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-7": "on-line",
|
|
||||||
"dialogs.DeviceChooseDialog.926510-8": "off-line"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.BootCard.926510-0": "暂无权限,请联系管理员"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.BootCard.926510-0": "No permission at the moment, please contact the administrator"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.BasicCountCard.926510-0": "基础统计",
|
|
||||||
"components.BasicCountCard.926510-1": "详情",
|
|
||||||
"components.BasicCountCard.926510-2": "CPU使用率",
|
|
||||||
"components.BasicCountCard.926510-3": "JVM内存"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.BasicCountCard.926510-0": "Basic statistics",
|
|
||||||
"components.BasicCountCard.926510-1": "details",
|
|
||||||
"components.BasicCountCard.926510-2": "CPU usage rate",
|
|
||||||
"components.BasicCountCard.926510-3": "JVM memory"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"components.BootCardSmall.926510-0": "暂无权限,请联系管理员"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"components.BootCardSmall.926510-0": "No permission at the moment, please contact the administrator"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
{
|
|
||||||
"zh": {
|
|
||||||
"ComprehensiveHome.index.926510-0": "物联网引导",
|
|
||||||
"ComprehensiveHome.index.926510-1": "运维引导",
|
|
||||||
"ComprehensiveHome.index.926510-2": "设备接入推荐步骤",
|
|
||||||
"ComprehensiveHome.index.926510-3": "不同的设备因为通信协议的不同,存在接入步骤的差异",
|
|
||||||
"ComprehensiveHome.index.926510-4": "运维管理推荐步骤",
|
|
||||||
"ComprehensiveHome.index.926510-5": "请根据业务需要对下述步骤进行选择性操作。",
|
|
||||||
"ComprehensiveHome.index.926510-6": "创建产品",
|
|
||||||
"ComprehensiveHome.index.926510-7": "创建设备",
|
|
||||||
"ComprehensiveHome.index.926510-8": "规则引擎",
|
|
||||||
"ComprehensiveHome.index.926510-9": "产品是设备的集合,通常指一组具有相同功能的设备。物联设备必须通过产品进行接入方式配置。",
|
|
||||||
"ComprehensiveHome.index.926510-10": "配置产品接入方式",
|
|
||||||
"ComprehensiveHome.index.926510-11": "通过产品对同一类型的设备进行统一的接入方式配置。请参照设备铭牌说明选择匹配的接入方式。",
|
|
||||||
"ComprehensiveHome.index.926510-12": "添加测试设备",
|
|
||||||
"ComprehensiveHome.index.926510-13": "添加单个设备,用于验证产品模型是否配置正确。",
|
|
||||||
"ComprehensiveHome.index.926510-14": "功能调试",
|
|
||||||
"ComprehensiveHome.index.926510-15": "对添加的测试设备进行功能调试,验证能否连接到平台,设备功能是否配置正确。",
|
|
||||||
"ComprehensiveHome.index.926510-16": "批量添加设备",
|
|
||||||
"ComprehensiveHome.index.926510-17": "批量添加同一产品下的设备",
|
|
||||||
"ComprehensiveHome.index.926510-18": "设备接入配置",
|
|
||||||
"ComprehensiveHome.index.926510-19": "日志排查",
|
|
||||||
"ComprehensiveHome.index.926510-20": "实时监控",
|
|
||||||
"ComprehensiveHome.index.926510-21": "协议管理",
|
|
||||||
"ComprehensiveHome.index.926510-22": "根据业务需求自定义开发对应的产品(设备模型)接入协议,并上传到平台。",
|
|
||||||
"ComprehensiveHome.index.926510-23": "证书管理",
|
|
||||||
"ComprehensiveHome.index.926510-24": "统一维护平台内的证书,用于数据通信加密。",
|
|
||||||
"ComprehensiveHome.index.926510-25": "网络组件",
|
|
||||||
"ComprehensiveHome.index.926510-26": "根据不同的传输类型配置平台底层网络组件相关参数。",
|
|
||||||
"ComprehensiveHome.index.926510-27": "设备接入网关",
|
|
||||||
"ComprehensiveHome.index.926510-28": "根据不同的传输类型,关联消息协议,配置设备接入网关相关参数。",
|
|
||||||
"ComprehensiveHome.index.926510-29": "日志管理",
|
|
||||||
"ComprehensiveHome.index.926510-30": "监控系统日志,及时处理系统异常。"
|
|
||||||
},
|
|
||||||
"en": {
|
|
||||||
"ComprehensiveHome.index.926510-0": "IoT guidance",
|
|
||||||
"ComprehensiveHome.index.926510-1": "Operations guidance",
|
|
||||||
"ComprehensiveHome.index.926510-2": "Recommended steps for device access",
|
|
||||||
"ComprehensiveHome.index.926510-3": "Different devices may have different access steps due to differences in communication protocols",
|
|
||||||
"ComprehensiveHome.index.926510-4": "Recommended steps for operation and maintenance management",
|
|
||||||
"ComprehensiveHome.index.926510-5": "Please perform selective operations on the following steps according to business needs.",
|
|
||||||
"ComprehensiveHome.index.926510-6": "Create product",
|
|
||||||
"ComprehensiveHome.index.926510-7": "Create device",
|
|
||||||
"ComprehensiveHome.index.926510-8": "Rule engine",
|
|
||||||
"ComprehensiveHome.index.926510-9": "A product is a collection of devices, usually referring to a group of devices with the same functionality. IoT devices must be configured through product access methods.",
|
|
||||||
"ComprehensiveHome.index.926510-10": "Configure product access methods",
|
|
||||||
"ComprehensiveHome.index.926510-11": "Configure unified access methods for devices of the same type through products. Please refer to the instructions on the device nameplate to select the matching access method.",
|
|
||||||
"ComprehensiveHome.index.926510-12": "Add testing equipment",
|
|
||||||
"ComprehensiveHome.index.926510-13": "Add a single device to verify if the product model is configured correctly.",
|
|
||||||
"ComprehensiveHome.index.926510-14": "Functional debugging",
|
|
||||||
"ComprehensiveHome.index.926510-15": "Perform functional debugging on the added testing equipment to verify if it can connect to the platform and if the device's functions are configured correctly.",
|
|
||||||
"ComprehensiveHome.index.926510-16": "Batch Add Devices",
|
|
||||||
"ComprehensiveHome.index.926510-17": "Batch adding devices under the same product",
|
|
||||||
"ComprehensiveHome.index.926510-18": "Device access configuration",
|
|
||||||
"ComprehensiveHome.index.926510-19": "Log troubleshooting",
|
|
||||||
"ComprehensiveHome.index.926510-20": "Real time monitoring",
|
|
||||||
"ComprehensiveHome.index.926510-21": "Protocol management",
|
|
||||||
"ComprehensiveHome.index.926510-22": "Customize and develop corresponding product (device model) access protocols according to business needs, and upload them to the platform.",
|
|
||||||
"ComprehensiveHome.index.926510-23": "Certificate Management",
|
|
||||||
"ComprehensiveHome.index.926510-24": "Unified maintenance of certificates within the platform for data communication encryption.",
|
|
||||||
"ComprehensiveHome.index.926510-25": "Network components",
|
|
||||||
"ComprehensiveHome.index.926510-26": "Configure platform underlying network component related parameters based on different transmission types.",
|
|
||||||
"ComprehensiveHome.index.926510-27": "Device access gateway",
|
|
||||||
"ComprehensiveHome.index.926510-28": "According to different transmission types, associate message protocols, and configure device access gateway related parameters.",
|
|
||||||
"ComprehensiveHome.index.926510-29": "Log management",
|
|
||||||
"ComprehensiveHome.index.926510-30": "Monitor system logs and promptly handle system exceptions."
|
|
||||||
}
|
|
||||||
}
|
|