Merge branch 'master-v32-lushangqing' into 'master'
修改BUG 103 测试防火墙详情页悬浮信息提示以及大屏部分组件 See merge request !30
Showing
68 changed files
with
1178 additions
and
1 deletions
@@ -913,7 +913,8 @@ layui.define(['xmSelect', 'md5'], function (exports) { | @@ -913,7 +913,8 @@ layui.define(['xmSelect', 'md5'], function (exports) { | ||
913 | var sessions = layui.sessions; | 913 | var sessions = layui.sessions; |
914 | accessToken = sessions.getToken()['access_token']; | 914 | accessToken = sessions.getToken()['access_token']; |
915 | }); | 915 | }); |
916 | - var cols = data['cols'][0]; | 916 | + var parseData=JSON.parse(data['cols']); |
917 | + var cols = parseData[0]; | ||
917 | $.each(cols, function (i, e) { | 918 | $.each(cols, function (i, e) { |
918 | if (e['isChild']) { | 919 | if (e['isChild']) { |
919 | if (e['isChild'] && typeof e['isChild'] === 'function') { | 920 | if (e['isChild'] && typeof e['isChild'] === 'function') { |
@@ -14,6 +14,8 @@ layui.define(['commonDetail','common'], function (exports) { | @@ -14,6 +14,8 @@ layui.define(['commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | resType = data.resType; | 15 | resType = data.resType; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
18 | + | ||
17 | //基本信息 | 19 | //基本信息 |
18 | var jbxxKpiId='KPIE13DD9A3,KPIF74D9D2B,KPI99100180,KPIDD4C29CF,KPIB67495EE'; | 20 | var jbxxKpiId='KPIE13DD9A3,KPIF74D9D2B,KPI99100180,KPIDD4C29CF,KPIB67495EE'; |
19 | //性能信息 | 21 | //性能信息 |
@@ -11,6 +11,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -11,6 +11,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
11 | }else{ | 11 | }else{ |
12 | resId = data.resId; | 12 | resId = data.resId; |
13 | } | 13 | } |
14 | + commonDetail.bindTips(); | ||
15 | + | ||
14 | //基本信息 | 16 | //基本信息 |
15 | var jbxxKpiId = 'KPI7DD4BA93,KPI1C777D98,KPIFABFD741,KPI16D855B2,KPI72F6F3C8,KPIF74D9D2B'; | 17 | var jbxxKpiId = 'KPI7DD4BA93,KPI1C777D98,KPIFABFD741,KPI16D855B2,KPI72F6F3C8,KPIF74D9D2B'; |
16 | //接口信息kpiids | 18 | //接口信息kpiids |
@@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | provider = data.provider; | 15 | provider = data.provider; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
18 | + | ||
17 | //基本信息 | 19 | //基本信息 |
18 | var jbxxKpiId = 'KPI02F41E23,KPI54DC5912,KPI2D507904,KPI9F694F60,KPI35BFAE04,KPI961872D9'; | 20 | var jbxxKpiId = 'KPI02F41E23,KPI54DC5912,KPI2D507904,KPI9F694F60,KPI35BFAE04,KPI961872D9'; |
19 | //接口信息kpiids | 21 | //接口信息kpiids |
@@ -14,6 +14,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -14,6 +14,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | provider = data.provider; | 15 | provider = data.provider; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
17 | 18 | ||
18 | //基本信息 | 19 | //基本信息 |
19 | var jbxxKpiId = 'KPI7DD4BA93,KPIDA6FD3CD'; | 20 | var jbxxKpiId = 'KPI7DD4BA93,KPIDA6FD3CD'; |
@@ -14,6 +14,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -14,6 +14,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | provider = data.provider; | 15 | provider = data.provider; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
17 | 18 | ||
18 | //基本信息 | 19 | //基本信息 |
19 | var jbxxKpiId = 'KPI9F694F60,KPIBB1082BE,KPIDAC7AC64,KPICA591C11'; | 20 | var jbxxKpiId = 'KPI9F694F60,KPIBB1082BE,KPIDAC7AC64,KPICA591C11'; |
@@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | provider = data.provider; | 15 | provider = data.provider; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
18 | + | ||
17 | //基本信息 | 19 | //基本信息 |
18 | var jbxxKpiId = 'KPIBB1082BE,KPI4419E8A1,KPI5858832B,KPI2D507904,KPI282685A0,KPIF74D9D2B'; | 20 | var jbxxKpiId = 'KPIBB1082BE,KPI4419E8A1,KPI5858832B,KPI2D507904,KPI282685A0,KPIF74D9D2B'; |
19 | //接口信息kpiids | 21 | //接口信息kpiids |
@@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -14,6 +14,8 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
14 | resId = data.resId; | 14 | resId = data.resId; |
15 | provider = data.provider; | 15 | provider = data.provider; |
16 | } | 16 | } |
17 | + commonDetail.bindTips(); | ||
18 | + | ||
17 | //基本信息 | 19 | //基本信息 |
18 | var jbxxKpiId = 'KPIBB1082BE,KPI4419E8A1,KPI5858832B,KPI2D507904,KPI282685A0,KPIF74D9D2B'; | 20 | var jbxxKpiId = 'KPIBB1082BE,KPI4419E8A1,KPI5858832B,KPI2D507904,KPI282685A0,KPIF74D9D2B'; |
19 | //接口信息kpiids | 21 | //接口信息kpiids |
@@ -17,6 +17,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | @@ -17,6 +17,7 @@ layui.define(['laypage', 'commonDetail','common'], function (exports) { | ||
17 | provider = data.provider; | 17 | provider = data.provider; |
18 | model =data.model; | 18 | model =data.model; |
19 | } | 19 | } |
20 | + commonDetail.bindTips(); | ||
20 | 21 | ||
21 | //基本信息 | 22 | //基本信息 |
22 | var jbxxKpiId = 'KPI282685A0,KPI2D507904,KPI5858832B,KPIBB1082BE,KPI4419E8A1'; | 23 | var jbxxKpiId = 'KPI282685A0,KPI2D507904,KPI5858832B,KPIBB1082BE,KPI4419E8A1'; |
@@ -5346,6 +5346,7 @@ grayColor{ | @@ -5346,6 +5346,7 @@ grayColor{ | ||
5346 | justify-content: center;/*水平居中*/ | 5346 | justify-content: center;/*水平居中*/ |
5347 | display:flex; | 5347 | display:flex; |
5348 | border-right: 2px solid #009688; | 5348 | border-right: 2px solid #009688; |
5349 | + line-height: normal; | ||
5349 | } | 5350 | } |
5350 | .content-box-group .box-group-right{ | 5351 | .content-box-group .box-group-right{ |
5351 | float: left; | 5352 | float: left; |
@@ -18,3 +18,12 @@ | @@ -18,3 +18,12 @@ | ||
18 | @import "../css/businessVolume.css"; | 18 | @import "../css/businessVolume.css"; |
19 | 19 | ||
20 | @import "../css/digitalboard.css"; | 20 | @import "../css/digitalboard.css"; |
21 | + | ||
22 | +/*zj大屏*/ | ||
23 | +@import "../css/zjbigscreen.css"; | ||
24 | + | ||
25 | +@import "../css/networktopology.css"; | ||
26 | + | ||
27 | +@import "../css/datacenter.css"; | ||
28 | + | ||
29 | +@import "../css/assetsOverview.css"; |
1 | +.asset-container{ | ||
2 | + /* background: url("/vue3/src/assets/images/zjdp/img-bg.png"); | ||
3 | + background-position: center; | ||
4 | + height: 100%;*/ | ||
5 | +} | ||
6 | +.yxqk { | ||
7 | + position: relative; | ||
8 | + text-align: center; | ||
9 | + height:100%; | ||
10 | + width: 530px; | ||
11 | +} | ||
12 | + | ||
13 | +.yxqk__pie { | ||
14 | + width: 140px; | ||
15 | + position: relative; | ||
16 | + top: 10px; | ||
17 | + height:140px; | ||
18 | + background-repeat: no-repeat; | ||
19 | + background-size: cover; | ||
20 | + display: inline-block; | ||
21 | + | ||
22 | +} | ||
23 | + | ||
24 | +.yxqk__pie span { | ||
25 | + position: absolute; | ||
26 | + -webkit-box-sizing: border-box; | ||
27 | + box-sizing: border-box; | ||
28 | + font-size: 31px; | ||
29 | + color: #fff; | ||
30 | + left: 54px; | ||
31 | + z-index: 2; | ||
32 | + top: 45px; | ||
33 | +} | ||
34 | + | ||
35 | +.yxqk__pie--good { | ||
36 | + background-image: url('/vue3/src/assets/images/zjdp/good-bg.png'); | ||
37 | + background-size: cover; | ||
38 | + | ||
39 | +} | ||
40 | +.yxqk__pie--good .pie-after { | ||
41 | + background-image: url('/vue3/src/assets/images/zjdp/good.png') | ||
42 | +} | ||
43 | + | ||
44 | +.yxqk__pie--worse { | ||
45 | + background-image: url('/vue3/src/assets/images/zjdp/worse-bg.png') | ||
46 | +} | ||
47 | + | ||
48 | +.yxqk__pie--worse .pie-after { | ||
49 | + background-image: url('/vue3/src/assets/images/zjdp/worse.png') | ||
50 | +} | ||
51 | + | ||
52 | +.yxqk__pie--bad { | ||
53 | + background-image: url('/vue3/src/assets/images/zjdp/bad-bg.png') | ||
54 | +} | ||
55 | + | ||
56 | +.yxqk__pie--bad .pie-after { | ||
57 | + background-image: url('/vue3/src/assets/images/zjdp/bad.png') | ||
58 | +} | ||
59 | + | ||
60 | +.yxqk__pie .pie-after { | ||
61 | + content: ''; | ||
62 | + position: absolute; | ||
63 | + background-repeat: no-repeat; | ||
64 | + background-size: cover; | ||
65 | + width: 142px; | ||
66 | + height: 170px; | ||
67 | + top: 0; | ||
68 | + left: 3px; | ||
69 | +} | ||
70 | + | ||
71 | +.yxqk .tip { | ||
72 | + color: #347fc1; | ||
73 | + font-size: 12px; | ||
74 | + position: relative; | ||
75 | +} | ||
76 | + | ||
77 | +.yxqk .tip b { | ||
78 | + color:#00b3fe; | ||
79 | + font-size: 20px; | ||
80 | + display: block; | ||
81 | +} | ||
82 | + | ||
83 | +.yxqk .tip p{ | ||
84 | + margin:5px 0px; | ||
85 | + cursor: pointer; | ||
86 | +} | ||
87 | + | ||
88 | +.yxqk .tip p .tip-i { | ||
89 | + width:12px; | ||
90 | + height:10px; | ||
91 | + content: ''; | ||
92 | + position: absolute; | ||
93 | + top: 4px; | ||
94 | + background-repeat: no-repeat; | ||
95 | + background-size: cover; | ||
96 | + background-image: url('/vue3/src/assets/images/zjdp/tip.png') | ||
97 | +} | ||
98 | +.yxqk .tip p span{ | ||
99 | + display: inline-block; | ||
100 | + padding:0 15px; | ||
101 | +} | ||
102 | +.yxqk .items { | ||
103 | + position: absolute; | ||
104 | + top:10px; | ||
105 | + width:530px; | ||
106 | +} | ||
107 | + | ||
108 | +.yxqk .items li { | ||
109 | + width: 182px; | ||
110 | + height: 38px; | ||
111 | + background-repeat: no-repeat; | ||
112 | + background-size: 100% 100%; | ||
113 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-l-1.png'); | ||
114 | + font-size: 12px; | ||
115 | + padding-left: 18px; | ||
116 | + position: absolute; | ||
117 | + -webkit-box-sizing: border-box; | ||
118 | + box-sizing: border-box; | ||
119 | + margin-top: 8px; | ||
120 | + color: #3d96de; | ||
121 | + padding-top: 6px; | ||
122 | + | ||
123 | +} | ||
124 | +.yxqk .items li.list-0{ | ||
125 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-r-1.png'); | ||
126 | +} | ||
127 | +.yxqk .items li.list-1{ | ||
128 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-r-2.png'); | ||
129 | +} | ||
130 | +.yxqk .items li.list-2{ | ||
131 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-r-3.png'); | ||
132 | +} | ||
133 | +.yxqk .items li.list-4{ | ||
134 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-l-2.png'); | ||
135 | +} | ||
136 | +.yxqk .items li.list-5{ | ||
137 | + background-image: url('/vue3/src/assets/images/zjdp/bg-li-l-3.png'); | ||
138 | +} | ||
139 | +.yxqk .items li.list-0,.yxqk .items li.list-1,.yxqk .items li.list-2{ | ||
140 | + right:0; | ||
141 | +} | ||
142 | +.yxqk .items li.list-3,.yxqk .items li.list-4,.yxqk .items li.list-5{ | ||
143 | + left:0; | ||
144 | +} | ||
145 | +.yxqk .items li.list-0,.yxqk .items li.list-3{ | ||
146 | + top:15px; | ||
147 | +} | ||
148 | +.yxqk .items li.list-1,.yxqk .items li.list-4{ | ||
149 | + top:70px; | ||
150 | +} | ||
151 | +.yxqk .items li.list-2,.yxqk .items li.list-5{ | ||
152 | + top:126px; | ||
153 | +} | ||
154 | +.yxqk .items li.list-0 img,.yxqk .items li.list-1 img,.yxqk .items li.list-2 img{ | ||
155 | + left:20px; | ||
156 | +} | ||
157 | +.yxqk .items li.list-0 p,.yxqk .items li.list-1 p,.yxqk .items li.list-2 p{ | ||
158 | + left:60px; | ||
159 | +} | ||
160 | +.yxqk .items li.list-3 .listNum,.yxqk .items li.list-4 .listNum,.yxqk .items li.list-5 .listNum{ | ||
161 | + right:20px; | ||
162 | +} | ||
163 | +.yxqk .items li p{ | ||
164 | + margin:0; | ||
165 | + display: inline; | ||
166 | + position: absolute; | ||
167 | + left: 40px; | ||
168 | + top: 10px; | ||
169 | +} | ||
170 | +.yxqk .items li .listNum{ | ||
171 | + position: absolute; | ||
172 | + right: 10px; | ||
173 | + top: 7px; | ||
174 | +} | ||
175 | +.yxqk .items li b { | ||
176 | + color: #ffffff; | ||
177 | + font-size: 16px; | ||
178 | +} | ||
179 | + | ||
180 | +.yxqk .items li span { | ||
181 | + color: #3d96de; | ||
182 | + font-size: 16px; | ||
183 | + padding-left: 6px; | ||
184 | +} | ||
185 | + | ||
186 | +.yxqk .items li img { | ||
187 | + opacity: .5; | ||
188 | + position: absolute; | ||
189 | + top: 8px; | ||
190 | + left: 8px; | ||
191 | +} | ||
192 | +/**运行情况,悬浮提示*/ | ||
193 | +.yxqk_tips_container{ | ||
194 | + background-color: #0d046a; | ||
195 | + opacity: .9; | ||
196 | + position: absolute; | ||
197 | + top: -10px; | ||
198 | + left: 270px; | ||
199 | + z-index: 999; | ||
200 | + width: 132px; | ||
201 | + height: 170px; | ||
202 | + border-radius: 2%; | ||
203 | +} | ||
204 | +.yxqk_tips_container .items{ | ||
205 | + left:1px; | ||
206 | + top:0; | ||
207 | +} | ||
208 | +.yxqk_tips_container .items li{ | ||
209 | + width: 130px !important; | ||
210 | + background-image: url("/vue3/src/assets/images/zjdp/bg-2.png"); | ||
211 | + height: 24px; | ||
212 | + line-height:24px; | ||
213 | + margin-top: 4px; | ||
214 | + color: #ffffff; | ||
215 | + padding-left:20px; | ||
216 | + font-size: 12px; | ||
217 | + padding-top:0rem !important; | ||
218 | + position: relative; | ||
219 | + | ||
220 | +} | ||
221 | +.yxqk_tips_container .items li span{ | ||
222 | + color: #ffffff; | ||
223 | + font-size: 12px ; | ||
224 | + | ||
225 | +} | ||
226 | +.yxqk_tips_container .items li [class^="icon"] { | ||
227 | + width: 10px; | ||
228 | + height: 10px; | ||
229 | + position: absolute; | ||
230 | + top: 9px; | ||
231 | + left: 8px; | ||
232 | + background-repeat: no-repeat; | ||
233 | + background-size: 100% 100%; | ||
234 | +} | ||
235 | + | ||
236 | +.yxqk_tips_container .items li .icon-HUAWEI_CLOUD_PLAT { | ||
237 | + background-image: url('/vue3/src/assets/images/zjdp/HUAWEI_CLOUD_PLAT.png'); | ||
238 | +} | ||
239 | +.yxqk_tips_container .items li .icon-ALI_CLOUD_PLAT { | ||
240 | + background-image: url('/vue3/src/assets/images/zjdp/ALI_CLOUD_PLAT.png'); | ||
241 | +} | ||
242 | +.yxqk_tips_container .items li .icon-VIRTUALIZATION_VMWARE { | ||
243 | + background-image: url('/vue3/src/assets/images/zjdp/VIRTUALIZATION_VMWARE.png'); | ||
244 | +} | ||
245 | +.yxqk_tips_container .items li .icon-HOST_MINICOMPUTER { | ||
246 | + background-image: url('/vue3/src/assets/images/zjdp/HOST_MINICOMPUTER.png'); | ||
247 | +} | ||
248 | +.yxqk_tips_container .items li .icon-STORAGE { | ||
249 | + background-image: url('/vue3/src/assets/images/zjdp/STORAGE.png'); | ||
250 | +} | ||
251 | +.yxqk_tips_container .items li .icon-NETHARDWARE_ROUTER { | ||
252 | + background-image: url('/vue3/src/assets/images/zjdp/NETHARDWARE_ROUTER.png'); | ||
253 | +} | ||
254 | +/**一维环绕转圈效果*/ | ||
255 | +.yxqk__pie--good::before { | ||
256 | + background-image: url('/vue3/src/assets/images/zjdp/highlights_good.png'); | ||
257 | +} | ||
258 | +.yxqk__pie--worse::before { | ||
259 | + background-image: url('/vue3/src/assets/images/zjdp/highlights_worse.png'); | ||
260 | +} | ||
261 | +.yxqk__pie--bad::before { | ||
262 | + background-image: url('/vue3/src/assets/images/zjdp/highlights_bad.png'); | ||
263 | +} | ||
264 | +.yxqk__pie span::before { | ||
265 | + content: ''; | ||
266 | + display: block; | ||
267 | + width: 278px; | ||
268 | + height: 278px; | ||
269 | + background-repeat: no-repeat; | ||
270 | + background-position: top left; | ||
271 | + -webkit-animation: rotate 20s linear infinite; | ||
272 | + animation: rotate 20s linear infinite; | ||
273 | + -webkit-transform-origin: center center; | ||
274 | + -ms-transform-origin: center center; | ||
275 | + transform-origin: center center; | ||
276 | + position: absolute; | ||
277 | + left: -78px; | ||
278 | + top: -78px; | ||
279 | +} | ||
280 | +@-webkit-keyframes rotate { | ||
281 | + from { | ||
282 | + -webkit-transform: rotate(0deg); | ||
283 | + } | ||
284 | + to { | ||
285 | + -webkit-transform: rotate(360deg); | ||
286 | + } | ||
287 | +} | ||
288 | +@keyframes rotate { | ||
289 | + from { | ||
290 | + -webkit-transform: rotate(0deg); | ||
291 | + } | ||
292 | + to { | ||
293 | + -webkit-transform: rotate(360deg); | ||
294 | + } | ||
295 | +} |
1 | +.sjzx { | ||
2 | + position: relative; | ||
3 | + margin-top: 10px; | ||
4 | + font-size: 0; | ||
5 | + overflow: hidden | ||
6 | +} | ||
7 | + | ||
8 | +.sjzx .item { | ||
9 | + display: inline-block; | ||
10 | + position: relative; | ||
11 | + height: 120px; | ||
12 | + margin-right: 120px; | ||
13 | +} | ||
14 | + | ||
15 | +.sjzx .item h5 { | ||
16 | + color: #fff; | ||
17 | + font-size: .2rem; | ||
18 | + text-align: center; | ||
19 | + position:absolute; | ||
20 | + bottom:0; | ||
21 | + left:14px; | ||
22 | +} | ||
23 | + | ||
24 | +.sjzx .item img { | ||
25 | + display: block; | ||
26 | + height: 118px; | ||
27 | + cursor: pointer; | ||
28 | +} | ||
29 | + | ||
30 | +.sjzx .item ul { | ||
31 | + -webkit-transform: scale(.8); | ||
32 | + -ms-transform: scale(.8); | ||
33 | + transform: scale(.8); | ||
34 | + -webkit-transform-origin: right top; | ||
35 | + -ms-transform-origin: right top; | ||
36 | + transform-origin: right top; | ||
37 | + font-size: 16px; | ||
38 | + position: absolute; | ||
39 | + top:30px; | ||
40 | + left: 60px; | ||
41 | + color: #fff; | ||
42 | + white-space: nowrap | ||
43 | +} | ||
44 | +.sjzx .item ul li{ | ||
45 | + line-height: 30px; | ||
46 | + font-size:16px; | ||
47 | + position: relative; | ||
48 | + text-align: left; | ||
49 | +} | ||
50 | +.sjzx .item ul li [class^="icon"] { | ||
51 | + width: 14px; | ||
52 | + height: 14px; | ||
53 | + position: absolute; | ||
54 | + top: 6px; | ||
55 | + background-repeat: no-repeat; | ||
56 | + background-size: 100% 100%; | ||
57 | +} | ||
58 | +.sjzx .item ul li span{ | ||
59 | + margin-left:20px; | ||
60 | +} | ||
61 | +.sjzx .item ul li .icon-wd { | ||
62 | + background-image: url('/vue3/src/assets/images/zjdp/icon-wd.png'); | ||
63 | +} | ||
64 | +.sjzx .item ul li .icon-sd { | ||
65 | + background-image: url("/vue3/src/assets/images/zjdp/icon-sd.png"); | ||
66 | +} | ||
67 | +.sjzx .item ul li .icon-mj { | ||
68 | + background-image: url("/vue3/src/assets/images/zjdp/icon-mj.png"); | ||
69 | +} |
1 | +.network-container{ | ||
2 | + width: 100%; | ||
3 | + height: 100%; | ||
4 | + background-image: url("/vue3/src/assets/images/bg.jpg"); | ||
5 | + background-position: center; | ||
6 | + text-align: left; | ||
7 | + overflow: visible; | ||
8 | +} | ||
9 | + | ||
10 | +#network-echart{ | ||
11 | + width: 100%; | ||
12 | + height: 100%; | ||
13 | + background-image: url("/vue3/src/assets/images/zjdp/img-bg2.png"); | ||
14 | + background-position: center; | ||
15 | + background-repeat: no-repeat; | ||
16 | +} |
1 | +body{font-size: 15px;} | ||
2 | +#zjdapingIndex{ | ||
3 | + background: url("/vue3/src/assets/images/zjdp/img-bg.png"); | ||
4 | + background-position: center; | ||
5 | +} | ||
6 | +.container-title{ | ||
7 | + color: white; | ||
8 | + padding: 7px; | ||
9 | + text-align: left; | ||
10 | +} | ||
11 | +/**提示展示动画 从左到右进入*/ | ||
12 | +@-webkit-keyframes fadeInLeft { | ||
13 | + 0% { | ||
14 | + opacity: 0; | ||
15 | + -webkit-transform: translateX(-120px); | ||
16 | + } | ||
17 | + 100% { | ||
18 | + opacity: 1; | ||
19 | + -webkit-transform: translateX(0); | ||
20 | + } | ||
21 | +} | ||
22 | +@keyframes fadeInLeft { | ||
23 | + 0% { | ||
24 | + opacity: 0; | ||
25 | + transform: translateX(-120px); | ||
26 | + } | ||
27 | + 100% { | ||
28 | + opacity: 1; | ||
29 | + transform: translateX(0); | ||
30 | + } | ||
31 | +} | ||
32 | +/*从左下到右上*/ | ||
33 | +@keyframes fadeInUpLeft | ||
34 | +{ | ||
35 | + from { | ||
36 | + opacity: 0; | ||
37 | + -webkit-transform: translate(-30px,30px); /* Safari */ | ||
38 | + transform: stranslate(-10px,2010); /* 标准语法 */ | ||
39 | + } | ||
40 | + to { | ||
41 | + opacity:1; | ||
42 | + -webkit-transform: translate(0,10px); /* Safari */ | ||
43 | + transform: stranslate(0,10px); /* 标准语法 */ | ||
44 | + } | ||
45 | +} | ||
46 | +@-webkit-keyframes fadeInUpLeft /* Safari 与 Chrome */ | ||
47 | +{ | ||
48 | + from { | ||
49 | + opacity:0; | ||
50 | + -webkit-transform: translate(-30px,30px); /* Safari */ | ||
51 | + transform: stranslate(-10px,10px); /* 标准语法 */ | ||
52 | + } | ||
53 | + to { | ||
54 | + opacity:1; | ||
55 | + -webkit-transform: translate(0,10px); /* Safari */ | ||
56 | + transform: stranslate(0,10px); /* 标准语法 */ | ||
57 | + } | ||
58 | +} | ||
59 | +.icon-focus{ | ||
60 | + width: 14px; | ||
61 | + height: 14px; | ||
62 | + position: absolute; | ||
63 | + top: 12px; | ||
64 | + background-repeat: no-repeat; | ||
65 | + background-size: 100% 100%; | ||
66 | + background-image: url("/vue3/src/assets/images/zjdp/focus.png"); | ||
67 | + left: 12px; | ||
68 | +} | ||
69 | +/*调用animation属性,从而让按钮在载入页面时就具有动画效果 以-webkit为例,请为不同的浏览器添加前缀 */ | ||
70 | +.map_tips_0{ | ||
71 | + -webkit-animation-name: "fadeInUpLeft"; /*动画名称,需要跟@keyframes定义的名称一致*/ | ||
72 | + -webkit-animation-duration: 0.5s;/*动画持续的时间长*/ | ||
73 | + -webkit-animation-iteration-count: 1;/*动画循环播放的次数为1 infinite为无限次*/ | ||
74 | + -moz-animation-name: "fadeInUpLeft"; | ||
75 | + -moz-animation-duration: 0.5s; | ||
76 | + -moz-animation-iteration-count: 1; | ||
77 | + -ms-animation-name: "fadeInUpLeft"; | ||
78 | + -ms-animation-duration: 0.5s; | ||
79 | + -ms-animation-iteration-count: 1; | ||
80 | + -o-animation-name: "fadeInUpLeft"; | ||
81 | + -o-animation-duration: 0.5s; | ||
82 | + -o-animation-iteration-count: 1; | ||
83 | +} | ||
84 | +.map_tips_city_0{ | ||
85 | + -webkit-animation-name: "fadeInLeft"; /*动画名称,需要跟@keyframes定义的名称一致*/ | ||
86 | + -webkit-animation-duration: 0.5s;/*动画持续的时间长*/ | ||
87 | + -webkit-animation-iteration-count: 1;/*动画循环播放的次数为1 infinite为无限次*/ | ||
88 | + -moz-animation-name: "fadeInLeft"; | ||
89 | + -moz-animation-duration: 0.5s; | ||
90 | + -moz-animation-iteration-count: 1; | ||
91 | + -ms-animation-name: "fadeInLeft"; | ||
92 | + -ms-animation-duration: 0.5s; | ||
93 | + -ms-animation-iteration-count: 1; | ||
94 | + -o-animation-name: "fadeInLeft"; | ||
95 | + -o-animation-duration: 0.5s; | ||
96 | + -o-animation-iteration-count: 1; | ||
97 | +} | ||
98 | +.map_tips_city_1{ | ||
99 | + -webkit-animation:'fadeInLeft' 0.6s 1; | ||
100 | + -moz-animation:'fadeInLeft' 0.6s 1; | ||
101 | + -ms-animation:'fadeInLeft' 0.6s 1; | ||
102 | + -o-animation:'fadeInLeft' 0.6s 1; | ||
103 | +} /* 简写 */ | ||
104 | +.map_tips_city_2{ | ||
105 | + -webkit-animation:'fadeInLeft' 0.7s 1; | ||
106 | + -moz-animation:'fadeInLeft' 0.7s 1; | ||
107 | + -ms-animation:'fadeInLeft' 0.7s 1; | ||
108 | + -o-animation:'fadeInLeft' 0.7s 1; | ||
109 | +} | ||
110 | +.map_tips{ | ||
111 | + position: absolute; | ||
112 | + color: #fff; | ||
113 | + width:auto; | ||
114 | + height:auto; | ||
115 | + z-index:999; | ||
116 | + font-size: 16px; | ||
117 | + background-repeat: no-repeat; | ||
118 | + background-image: url(/vue3/src/assets/images/zjdp/tips_bg.png); | ||
119 | + background-size: 100% 100%; | ||
120 | + pointer-events: none; | ||
121 | + display: none; | ||
122 | +} | ||
123 | +.map_tips_group{ | ||
124 | + margin: 0 12px 0 2px; | ||
125 | + padding-left:20px; | ||
126 | + border-bottom:1px solid #0C4493; | ||
127 | + height:75px; | ||
128 | +} | ||
129 | +.map_tips_group div{ | ||
130 | + margin-top:5px; | ||
131 | + white-space:nowrap; | ||
132 | +} | ||
133 | +.map_tips_group:last-child{ | ||
134 | + border-bottom: none !important; | ||
135 | + margin-bottom:10px; | ||
136 | +} | ||
137 | +.map_tips_city{ | ||
138 | + padding-bottom:3px; | ||
139 | + padding-left:30px; | ||
140 | + margin:12px 6px 0 6px; | ||
141 | + border-bottom:2px solid #0C4493; | ||
142 | +} |
This diff could not be displayed because it is too large.
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/ALI_CLOUD_PLAT.png
0 → 100644

588 Bytes
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/HOST_MINICOMPUTER.png
0 → 100644

331 Bytes
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/HUAWEI_CLOUD_PLAT.png
0 → 100644

666 Bytes
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/NETHARDWARE_ROUTER.png
0 → 100644

595 Bytes

399 Bytes
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/VIRTUALIZATION_VMWARE.png
0 → 100644

550 Bytes

11.2 KB

772 Bytes

996 Bytes

916 Bytes

793 Bytes

1008 Bytes

953 Bytes

709 KB

2.47 KB
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/highlights_bad.png
0 → 100644

18.7 KB
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/highlights_good.png
0 → 100644

17.4 KB
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/highlights_worse.png
0 → 100644

17.1 KB

411 Bytes

449 Bytes

546 Bytes

10.3 KB

627 KB

28.8 KB

54 KB

9.45 KB

9.45 KB

11.3 KB

11.3 KB

318 Bytes

23.2 KB

7.58 KB

5.96 KB
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/title-datacenter.png
0 → 100644

7.34 KB
hg-monitor-web-zj/src/main/resources/static/vue3/src/assets/images/zjdp/title-network.png
0 → 100644

8.1 KB

11 KB

30.2 KB
@@ -99,6 +99,15 @@ const routes = [{ | @@ -99,6 +99,15 @@ const routes = [{ | ||
99 | path: '/daping', | 99 | path: '/daping', |
100 | name: 'daping', | 100 | name: 'daping', |
101 | component: () => myImport('views/dpimg/index') | 101 | component: () => myImport('views/dpimg/index') |
102 | + }, | ||
103 | + { | ||
104 | + path: '/zjdaping', | ||
105 | + name: 'zjdaping', | ||
106 | + // component: () => myImport('views/zjdaping/index') | ||
107 | + // component: () => myImport('views/zjdaping/components/networkTopology/index') | ||
108 | + // component: () => myImport('views/zjdaping/components/dataCenter/index') | ||
109 | + // component: () => myImport('views/zjdaping/components/cloudPlatform/index') | ||
110 | + component: () => myImport('views/zjdaping/components/assetOverview/index') | ||
102 | } | 111 | } |
103 | ]; | 112 | ]; |
104 | 113 |
1 | +<div class="asset-container"> | ||
2 | +<!-- 资产概览--> | ||
3 | + <div class="container-title"> | ||
4 | + <img src="/vue3/src/assets/images/zjdp/title-asset.png" alt=""> | ||
5 | + </div> | ||
6 | + <div class="asset-overview yxqk"> | ||
7 | + <div class="asset-overview-tip"> | ||
8 | + <div class="tip yxqk_tips_div"> | ||
9 | + <p @mouseover="showTip" @mouseleave="hideTip"> <i class="tip-i"></i> <span>资产总量</span></p> | ||
10 | + <b id="yxjk_total_resource">{{totalData}}</b> | ||
11 | + | ||
12 | + <!--悬浮提示信息--> | ||
13 | + <div class="yxqk_tips_container" v-show="isShow" > | ||
14 | + <ul class="items" id="yxjk_resource_type_count_tips" > | ||
15 | + <div id="yxjk_resource_type_count_tips_tmpl"> | ||
16 | + <li v-for="(item,index) in assetOverviewData"> | ||
17 | + <i :class="'icon-'+item.code"></i> | ||
18 | + <span >{{item.resTypeName}}:{{item.num}}台</span> | ||
19 | + </li> | ||
20 | + </div> | ||
21 | + </ul> | ||
22 | + </div> | ||
23 | + | ||
24 | + </div> | ||
25 | + <div id="all_resource_status" :class="['yxqk__pie',pieClass]"> | ||
26 | + <span id="yxjk_resource_health_text">{{healthStatusName}}</span> | ||
27 | + <div class="pie-after"></div> | ||
28 | + </div> | ||
29 | + | ||
30 | + </div> | ||
31 | + | ||
32 | + <div class="items"> | ||
33 | + <!--<span class="yxqk__banner--top"></span>--> | ||
34 | + <!--<span class="yxqk__banner--bottom"></span>--> | ||
35 | + <div id="yxqk__banner"> | ||
36 | + <ul id="yxjk_resource_type_count_id"> | ||
37 | + <div id="yxjk_resource_type_count_id_tmpl"> | ||
38 | + <li :class="'list-'+index" v-for="(item,index) in assetOverviewData"> | ||
39 | + <img :src="'src/assets/images/zjdp/'+item.code+'.png'"> | ||
40 | + <div style="margin-left: .02rem;"> | ||
41 | + <p>{{item.resTypeName}}</p> | ||
42 | + <div class="listNum"> | ||
43 | + <b>{{item.num}}</b><span>台</span> | ||
44 | + </div> | ||
45 | + | ||
46 | + | ||
47 | + </div> | ||
48 | + </li> | ||
49 | + </div> | ||
50 | + </ul> | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + | ||
54 | + </div> | ||
55 | +</div> |
1 | +export default { | ||
2 | + name: 'dataCenter', | ||
3 | + template: '', | ||
4 | + components: { | ||
5 | + // Swiper,SwiperSlide | ||
6 | + }, | ||
7 | + data(){ | ||
8 | + return { | ||
9 | + domainName:'http://192.168.0.245:8180/api-web', | ||
10 | + assetOverviewData:'', | ||
11 | + pieClass:'yxqk__pie--good', | ||
12 | + healthStatusName:'', | ||
13 | + totalData:0, | ||
14 | + isShow:false | ||
15 | + } | ||
16 | + }, | ||
17 | + setup(props, {attrs, slots, emit}) { | ||
18 | + const {proxy} = Vue.getCurrentInstance(); | ||
19 | + // 挂载完 | ||
20 | + Vue.onMounted(() => { | ||
21 | + $.get(proxy.domainName +"/datavis/getResHealthSataus",function (res) { | ||
22 | + const data = res.map; | ||
23 | + //状态 | ||
24 | + if(data && data.healthStatus){ | ||
25 | + if(data.healthStatus == '2'){//问题 | ||
26 | + proxy.pieClass="yxqk__pie--worse"; | ||
27 | + // $("#all_resource_status").removeClass("yxqk__pie--good").removeClass("yxqk__pie--bad").addClass("yxqk__pie--worse"); | ||
28 | + } else if(data.healthStatus == '1'){//严重问题 | ||
29 | + proxy.pieClass="yxqk__pie--bad"; | ||
30 | + // $("#all_resource_status").removeClass("yxqk__pie--worse").removeClass("yxqk__pie--good").addClass("yxqk__pie--bad"); | ||
31 | + }else{ | ||
32 | + proxy.pieClass="yxqk__pie--good"; | ||
33 | + | ||
34 | + } | ||
35 | + // $("#yxjk_resource_health_text").text(data.healthStatusName); | ||
36 | + proxy.healthStatusName=data.healthStatusName; | ||
37 | + } | ||
38 | + //资源总量 | ||
39 | + if(data && data.total){ | ||
40 | + // $("#yxjk_total_resource").text(data.total); | ||
41 | + proxy.totalData=data.total; | ||
42 | + } | ||
43 | + //分类总量 | ||
44 | + if(data && data.data){ | ||
45 | + // //华为云、阿里云、Vmware、小型机分区、存储、路由器资源总量统计量 | ||
46 | + // var tipsResTypes = ['HUAWEI_CLOUD','ALI_CLOUD','VIRTUALIZATION','HOST_MINICOMPUTER_PARTITION','STORAGE','NETHARDWARE_ROUTER']; | ||
47 | + let huawei = 0, ali = 0, vmware = 0, minicomputer_partition = 0, storage = 0, router = 0; | ||
48 | + const showData = [];//展示的类型 | ||
49 | + //华为云、阿里云、Vmware、小型机分区、存储、路由器资源总量统计量 | ||
50 | + // 遍历过滤出以上6种类型的统计,因为是固定6种,所以先写死 | ||
51 | + $.each(data.data,function (i,v) { | ||
52 | + const resType = v.resType; | ||
53 | + if(resType.indexOf("HUAWEI_CLOUD") >= 0 ) { huawei += v.num; } | ||
54 | + if(resType.indexOf("ALI_CLOUD") >= 0 ) { ali += v.num; } | ||
55 | + if(resType.indexOf("VIRTUALIZATION") >= 0 ) { vmware += v.num; } | ||
56 | + if(resType.indexOf('HOST_MINICOMPUTER_') >= 0 ) { minicomputer_partition += v.num; } | ||
57 | + if(resType.indexOf('STORAGE') >= 0) { storage += v.num; } | ||
58 | + if(resType == 'NETHARDWARE_ROUTER' ) { router += v.num; } | ||
59 | + }); | ||
60 | + showData.push({resTypeName:"华为云",num:huawei,code:'HUAWEI_CLOUD_PLAT'}); | ||
61 | + showData.push({resTypeName:"阿里云",num:ali,code:'ALI_CLOUD_PLAT'}); | ||
62 | + showData.push({resTypeName:"Vmware",num:vmware,code:'VIRTUALIZATION_VMWARE'}); | ||
63 | + showData.push({resTypeName:"小型机分区",num:minicomputer_partition,code:'HOST_MINICOMPUTER'}); | ||
64 | + showData.push({resTypeName:"存储",num:storage,code:'STORAGE'}); | ||
65 | + showData.push({resTypeName:"路由器",num:router,code:'NETHARDWARE_ROUTER'}); | ||
66 | + //类型统计 | ||
67 | + // var html = $("#yxjk_resource_type_count_id_tmpl").render(showData.slice(0,4)); | ||
68 | + // $("#yxjk_resource_type_count_id").html(html); | ||
69 | + proxy.assetOverviewData=showData; | ||
70 | + | ||
71 | + //悬浮提示 | ||
72 | + // var html = $("#yxjk_resource_type_count_tips_tmpl").render(showData); | ||
73 | + // $("#yxjk_resource_type_count_tips").html(html); | ||
74 | + /* $(".yxqk_tips_div").hover(function () { | ||
75 | + $(".yxqk_tips_container").show(); | ||
76 | + },function () { | ||
77 | + $(".yxqk_tips_container").hide(); | ||
78 | + });*/ | ||
79 | + } | ||
80 | + }); | ||
81 | + | ||
82 | + }) | ||
83 | + const showTip=()=>{ | ||
84 | + proxy.isShow=true; | ||
85 | + | ||
86 | + } | ||
87 | + const hideTip=()=>{ | ||
88 | + proxy.isShow=false; | ||
89 | + } | ||
90 | + return{ | ||
91 | + showTip, | ||
92 | + hideTip | ||
93 | + } | ||
94 | + } | ||
95 | +} |
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/components/dataCenter/index.html
0 → 100644
1 | +<div class="dataCenter-container" id="dataCenter"> | ||
2 | + <!-- 数据中心--> | ||
3 | + <div class="container-title"> | ||
4 | + <img src="/vue3/src/assets/images/zjdp/title-datacenter.png" alt=""> | ||
5 | + | ||
6 | + </div> | ||
7 | + <div class="sjzx"> | ||
8 | + <div class="item sjzx_machineroom" v-for="item in jfdata"> | ||
9 | + <h5>{{item.machineRoomName}}</h5> | ||
10 | + <img v-if="item.healthStatus==0" src="/vue3/src/assets/images/zjdp/jifang-1.png" alt=""> | ||
11 | + <img else="item.healthStatus==1" src="/vue3/src/assets/images/zjdp/jifang-2.png" alt=""> | ||
12 | + <ul class="float-container"> | ||
13 | + <li><i class='icon-wd'></i><span>温度:{{item.wd}}</span></li> | ||
14 | + <li><i class='icon-sd'></i><span>湿度:{{item.sd}}</span></li> | ||
15 | + <li><i class='icon-mj'></i><span>面积:{{item.area}}</span></li> | ||
16 | + </ul> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | +</div> |
hg-monitor-web-zj/src/main/resources/static/vue3/src/views/zjdaping/components/dataCenter/index.js
0 → 100644
1 | +export default { | ||
2 | + name: 'dataCenter', | ||
3 | + template: '', | ||
4 | + components: {}, | ||
5 | + data(){ | ||
6 | + return { | ||
7 | + domainName:'http://192.168.0.245:8180/api-web', | ||
8 | + jfdata:'' | ||
9 | + } | ||
10 | + }, | ||
11 | + setup(props, {attrs, slots, emit}) { | ||
12 | + const {proxy} = Vue.getCurrentInstance(); | ||
13 | + | ||
14 | + // 挂载完 | ||
15 | + Vue.onMounted(() => { | ||
16 | + $.get(proxy.domainName +"/datavis/getMachineRoomInfoList",function (res) { | ||
17 | + if(res.data){ | ||
18 | + proxy.jfdata=res.data; | ||
19 | + /* const html = $("#sjzx_machineroom_id_Tmpl").render(res.data); | ||
20 | + $("#sjzx_machineroom_id").html(html); | ||
21 | + //机房点击事件 | ||
22 | + $(".sjzx_machineroom").on("click",function () { | ||
23 | + const name = $(this).attr("name"); | ||
24 | + layer.open({ | ||
25 | + type:2 | ||
26 | + , shade: 0.6 //遮罩透明度 | ||
27 | + , maxmin: false //允许全屏最小化 | ||
28 | + , anim: 1 //0-6的动画形式,-1不开启 | ||
29 | + , content:['http://127.0.0.1:8081/video.html?type='+name+'','no'] | ||
30 | + , area:["1100px",'720px'] | ||
31 | + // , title: true //不显示标题栏 | ||
32 | + // , title: name | ||
33 | + }) | ||
34 | + });*/ | ||
35 | + } | ||
36 | + }) | ||
37 | + }) | ||
38 | + | ||
39 | + return{ | ||
40 | + } | ||
41 | + } | ||
42 | +} | ||
43 | + |
1 | +export default { | ||
2 | + name: 'networkTopology', | ||
3 | + // props:['divIdName','geoCoordMap','domainName','mapJsonUrl','cityUrl'], | ||
4 | + template: '', | ||
5 | + components: { | ||
6 | + }, | ||
7 | + data: function () { | ||
8 | + return { | ||
9 | + divIdName: '#network-echart', | ||
10 | + domainName: 'http://192.168.0.245:8180/api-web', | ||
11 | + mapJsonUrl: 'public/data/zhejiang.json', | ||
12 | + cityUrl: '/datavis/getEchartsMap', | ||
13 | + // 标记各地市的坐标 | ||
14 | + geoCoordMap: { | ||
15 | + "省局": [119.453576, 30.005871], | ||
16 | + "杭州市": [120.153576, 30.287459], | ||
17 | + "宁波": [121.549792, 29.868388], | ||
18 | + "温州市": [120.672111, 28.000575], | ||
19 | + "嘉兴市": [120.750865, 30.762653], | ||
20 | + "湖州市": [120.102398, 30.867198], | ||
21 | + "绍兴市": [120.582112, 29.997117], | ||
22 | + "金华市": [119.649506, 29.089524], | ||
23 | + "衢州市": [118.87263, 28.941708], | ||
24 | + "舟山市": [122.106863, 30.016028], | ||
25 | + "台州市": [121.428599, 28.661378], | ||
26 | + "丽水市": [119.921786, 28.451993] | ||
27 | + } | ||
28 | + | ||
29 | + } | ||
30 | + }, | ||
31 | + setup(props, {attrs, slots, emit}) { | ||
32 | + const {proxy} = Vue.getCurrentInstance(); | ||
33 | + | ||
34 | + // 输出json对象数组,value里包含坐标值和随机值 | ||
35 | + let convertData = (data) =>{ | ||
36 | + let res = []; | ||
37 | + $.each(data,function (i,v) { | ||
38 | + let geoCoord = proxy.geoCoordMap[v.name]; | ||
39 | + res.push({ | ||
40 | + name: v.name, | ||
41 | + value: geoCoord.concat(v.value) | ||
42 | + }) | ||
43 | + }); | ||
44 | + return res | ||
45 | + } | ||
46 | + // 设置目标点, 配置线条指向 | ||
47 | + let convertToLineData = (data) => { | ||
48 | + let res = []; | ||
49 | + $.each(data,function (i,v) { | ||
50 | + // 起点 | ||
51 | + let fromCoord = proxy.geoCoordMap[v.name]; | ||
52 | + // 终点,这里设置的省局 | ||
53 | + let toCoord = [119.453576,30.005871]; | ||
54 | + res.push([{ coord: fromCoord, value: v.value },{ coord: toCoord }]); | ||
55 | + }); | ||
56 | + return res | ||
57 | + } | ||
58 | + | ||
59 | + // 挂载完 | ||
60 | + Vue.onMounted(() => { | ||
61 | + let colors = ["#00eaff","#1e9fff","#FF7E00","#D81E06"]; | ||
62 | + // 解析地图数据包 | ||
63 | + $.getJSON(proxy.mapJsonUrl, function(geoJson) { | ||
64 | + // 注册地图,传入数据 | ||
65 | + echarts.registerMap('echarts', geoJson); | ||
66 | + //获取浙江各地市链路信息 | ||
67 | + $.get(proxy.domainName +proxy.cityUrl,function(res){ | ||
68 | + if(res.data && res.data.length > 0){ | ||
69 | + const mapData = res.data; | ||
70 | + const obj = res.object; | ||
71 | + const optionMap = { | ||
72 | + timeline: { | ||
73 | + show: false | ||
74 | + }, | ||
75 | + baseOption: { | ||
76 | + // 设置地图参数和样式 | ||
77 | + geo: { | ||
78 | + show: true, | ||
79 | + map: 'echarts', | ||
80 | + roam: true, | ||
81 | + zoom: 1.25, | ||
82 | + // 地图中心点的坐标, 可调节显示的偏移量 | ||
83 | + center: [120.453576,29.197459], | ||
84 | + label: { | ||
85 | + // 高亮文字隐藏 | ||
86 | + emphasis: { | ||
87 | + show: false | ||
88 | + } | ||
89 | + }, | ||
90 | + itemStyle: { | ||
91 | + normal: { | ||
92 | + borderColor: '#42adff', | ||
93 | + borderWidth: 2, | ||
94 | + areaColor: 'rgba(0,0,0,0)', | ||
95 | + shadowColor: '#294167', | ||
96 | + shadowOffsetX: -2, | ||
97 | + shadowOffsetY: 2, | ||
98 | + shadowBlur: 25 | ||
99 | + }, | ||
100 | + emphasis: { | ||
101 | + // 鼠标悬浮高亮 | ||
102 | + areaColor: '#0D114B', | ||
103 | + borderWidth: 1, | ||
104 | + shadowColor: '#294167', | ||
105 | + borderColor: '#42adff' | ||
106 | + } | ||
107 | + } | ||
108 | + } | ||
109 | + | ||
110 | + }, | ||
111 | + options: [{ | ||
112 | + xAxis: { | ||
113 | + show: false | ||
114 | + }, | ||
115 | + yAxis: { | ||
116 | + show: false | ||
117 | + }, | ||
118 | + tooltip: { | ||
119 | + show:false | ||
120 | + }, | ||
121 | + series: [{ | ||
122 | + // 坐标点参数和样式 | ||
123 | + type: 'effectScatter', | ||
124 | + coordinateSystem: 'geo', | ||
125 | + data: proxy.convertData(mapData), | ||
126 | + symbolSize: 10, | ||
127 | + showEffectOn: 'render', | ||
128 | + rippleEffect: { //涟漪特效 | ||
129 | + period: 4, //动画时间,值越小速度越快 | ||
130 | + brushType: 'stroke', //波纹绘制方式 stroke, fill | ||
131 | + scale: 4 //波纹圆环最大限制,值越大波纹越大 | ||
132 | + }, | ||
133 | + label: { | ||
134 | + normal: { | ||
135 | + formatter: '{b}', | ||
136 | + position: 'right', | ||
137 | + show: true, | ||
138 | + color:'#fff', | ||
139 | + fontSize:16 | ||
140 | + } | ||
141 | + }, | ||
142 | + itemStyle: { | ||
143 | + normal: { | ||
144 | + //点的颜色 | ||
145 | + color: function (data) { | ||
146 | + return colors[data.value[2]]; | ||
147 | + }, | ||
148 | + shadowBlur: 2, | ||
149 | + shadowColor: '#03BED9', | ||
150 | + symbolSize: 5 | ||
151 | + } | ||
152 | + } | ||
153 | + }, | ||
154 | + { | ||
155 | + // 线条参数和样式 | ||
156 | + type: 'lines', | ||
157 | + // 变化频率 | ||
158 | + zlevel: 2, | ||
159 | + effect: { | ||
160 | + show: true, | ||
161 | + // 箭头指向速度,值越小速度越快 | ||
162 | + period: 4, | ||
163 | + // 特效尾迹长度,取值0到1,值越大,尾迹越长 | ||
164 | + trailLength: 0.03, | ||
165 | + symbol: 'arrow', | ||
166 | + // 图标大小 | ||
167 | + symbolSize: 6 | ||
168 | + }, | ||
169 | + lineStyle: { | ||
170 | + normal: { | ||
171 | + //线条颜色 | ||
172 | + color: function (data) { | ||
173 | + // return colors[0];//线条跟着点的颜色一致 | ||
174 | + if(data.value == 0){ | ||
175 | + return '#00eaff'; | ||
176 | + }else{ | ||
177 | + return '#D81E06'; | ||
178 | + } | ||
179 | + | ||
180 | + }, | ||
181 | + // 尾迹线条宽度 | ||
182 | + width: 1, | ||
183 | + // 尾迹线条透明度 | ||
184 | + opacity: 1, | ||
185 | + // 尾迹线条曲直度 | ||
186 | + curveness: 0.3 | ||
187 | + } | ||
188 | + }, | ||
189 | + data: proxy.convertToLineData(mapData) | ||
190 | + }, | ||
191 | + {//被攻击点 | ||
192 | + // type: 'scatter', | ||
193 | + type:'effectScatter', | ||
194 | + hoverAnimation:true,//鼠标移入是否显示动画 | ||
195 | + coordinateSystem: 'geo', | ||
196 | + zlevel: 3, | ||
197 | + rippleEffect: { | ||
198 | + number:3, | ||
199 | + period: 4, | ||
200 | + brushType: 'fill', | ||
201 | + scale: 2 | ||
202 | + }, | ||
203 | + symbol: 'circle', | ||
204 | + symbolSize: 30, | ||
205 | + itemStyle:{ | ||
206 | + color:'#EE4237', | ||
207 | + }, | ||
208 | + label: { | ||
209 | + normal: { | ||
210 | + show: false, | ||
211 | + position: 'left', | ||
212 | + formatter: '省局', | ||
213 | + textStyle: { | ||
214 | + color: "#0f0" | ||
215 | + }, | ||
216 | + fontSize:16 | ||
217 | + }, | ||
218 | + emphasis: { | ||
219 | + show: false, | ||
220 | + color: "#0f0"//鼠标移入字体颜色 | ||
221 | + } | ||
222 | + }, | ||
223 | + data: [{ | ||
224 | + name: '省局', | ||
225 | + value: proxy.geoCoordMap['省局'].concat([10]) | ||
226 | + }] | ||
227 | + }] | ||
228 | + }] | ||
229 | + }; | ||
230 | + | ||
231 | + // let map_chart = echarts.init(document.getElementById('network-echart')); | ||
232 | + let map_chart=echarts.init($(proxy.divIdName)[0]) | ||
233 | + map_chart.setOption(optionMap); | ||
234 | + map_chart.on('mouseout', 'geo', function (params) { | ||
235 | + $('.map_tips').hide(); | ||
236 | + }); | ||
237 | + //当鼠标移入当前区域显示提示信息 | ||
238 | + map_chart.on('mouseover', 'geo',function (params) { | ||
239 | + let name = params.name; | ||
240 | + //先删除原来的 | ||
241 | + $(proxy.divIdName).find('.map_tips').remove(); | ||
242 | + //当前城市提示信息 | ||
243 | + let currentCity = obj[name]; | ||
244 | + if(currentCity && currentCity.length > 0){ | ||
245 | + let cityInfos = ''; | ||
246 | + $.each(currentCity,function (i,v) { | ||
247 | + cityInfos += '<div class="map_tips_group">' + | ||
248 | + ' <div class="map_tips_res" style="margin-left: -8px;">'+v.resName+'</div>' + | ||
249 | + ' <div class="map_tips_sxll">上行流量:'+v.sxll+'</div>' + | ||
250 | + ' <div class="map_tips_xxll">下行流量:'+v.xxll+'</div>' + | ||
251 | + ' </div>'; | ||
252 | + }); | ||
253 | + | ||
254 | + //地图区域悬浮提示 | ||
255 | + let cityTips = | ||
256 | + '<div class="map_tips">' + | ||
257 | + ' <div class="map_tips_city"><i class="icon-focus"></i><span>'+name+'</span></div>' | ||
258 | + + cityInfos + | ||
259 | + '</div>'; | ||
260 | + //提示框拼接在echar区域 | ||
261 | + $(cityTips).appendTo($(proxy.divIdName)); | ||
262 | + | ||
263 | + if ($('.map_tips').is(':hidden')) { | ||
264 | + $('.map_tips').show(); | ||
265 | + } | ||
266 | + //城市名称从左到右滑入效果 | ||
267 | + $('.map_tips_res').addClass("map_tips_city_0"); | ||
268 | + $('.map_tips_sxll').addClass("map_tips_city_1"); | ||
269 | + $('.map_tips_xxll').addClass("map_tips_city_2"); | ||
270 | + | ||
271 | + //根据鼠标位置定位 | ||
272 | + let layerX = params.event.offsetX; | ||
273 | + let layerY = params.event.offsetY; | ||
274 | + //随鼠标移动 | ||
275 | + if(name == '湖州市' || name == '嘉兴市'){ | ||
276 | + $('.map_tips').css({ | ||
277 | + 'top': layerY + 10, | ||
278 | + 'left': layerX + 15 | ||
279 | + }); | ||
280 | + }else{ | ||
281 | + $('.map_tips').css({ | ||
282 | + 'top': layerY -120, | ||
283 | + 'left': layerX + 15 | ||
284 | + }); | ||
285 | + } | ||
286 | + }else{ | ||
287 | + $('.map_tips').hide(); | ||
288 | + } | ||
289 | + }); | ||
290 | + //鼠标移动,提示信息随鼠标走 | ||
291 | + map_chart.on('mousemove', 'geo', function (params) { | ||
292 | + let name = params.name; | ||
293 | + //随鼠标移动 | ||
294 | + let layerX = params.event.offsetX; | ||
295 | + let layerY = params.event.offsetY; | ||
296 | + //随鼠标移动 | ||
297 | + if(name == '湖州市' || name == '嘉兴市'){ | ||
298 | + $('.map_tips').css({ | ||
299 | + 'top': layerY + 10, | ||
300 | + 'left': layerX + 15 | ||
301 | + }); | ||
302 | + }else{ | ||
303 | + $('.map_tips').css({ | ||
304 | + 'top': layerY -120, | ||
305 | + 'left': layerX + 15 | ||
306 | + }); | ||
307 | + } | ||
308 | + }); | ||
309 | + } | ||
310 | + }); | ||
311 | + }); | ||
312 | + }) | ||
313 | + | ||
314 | + return { | ||
315 | + convertData, | ||
316 | + convertToLineData | ||
317 | + } | ||
318 | + } | ||
319 | +} |
1 | +<div id="zjdapingIndex"> | ||
2 | + <header class="screen-header" :style="screenheaderStyle"> | ||
3 | + <div> | ||
4 | + <img style="width: 100%" src="/vue3/src/assets/images/zjdp/img-top-bg2.png" alt=""> | ||
5 | + </div> | ||
6 | + | ||
7 | + <div class="title-left"> | ||
8 | + <img src="/vue3/src/assets/img/time-icon.png" :style="timelogoStyle" class="timelog"> | ||
9 | + <span :style="datetimeStyle" >{{dateTime}}</span> | ||
10 | + </div> | ||
11 | + </header> | ||
12 | + <div class="screen-body"> | ||
13 | + <section class="screen-left" > | ||
14 | + <div class="left-top"> | ||
15 | +<!-- 省局网络拓扑--> | ||
16 | +<!-- <NetworkTopology :></NetworkTopology>--> | ||
17 | + </div> | ||
18 | + <div class="left-bottom"> | ||
19 | + <div class="left-bottom-left"> | ||
20 | + <div class="left-bottom-left-top"> | ||
21 | +<!-- 数据中心--> | ||
22 | + <DataCenter></DataCenter> | ||
23 | + | ||
24 | + </div> | ||
25 | + <div class="left-bottom-left-bottom"> | ||
26 | + 资产概览 | ||
27 | + | ||
28 | + </div> | ||
29 | + </div> | ||
30 | + <div class="left-bottom-right"> | ||
31 | + 云平台 | ||
32 | + | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + </section> | ||
36 | + <section class="screen-right" > | ||
37 | + | ||
38 | + | ||
39 | + </section> | ||
40 | + </div> | ||
41 | +</div> |
1 | +export default { | ||
2 | + name: 'zjdaping', | ||
3 | + template: '', | ||
4 | + components: { | ||
5 | + 'NetworkTopology': Vue.defineAsyncComponent( | ||
6 | + () => myImport('views/zjdaping/components/networkTopology/index') | ||
7 | + ), | ||
8 | + 'DataCenter': Vue.defineAsyncComponent( | ||
9 | + () => myImport('views/zjdaping/components/dataCenter/index') | ||
10 | + ) | ||
11 | + }, | ||
12 | + data() { | ||
13 | + return { | ||
14 | + titleFontSize: 30, | ||
15 | + dateTime: '00-00-00 00:00:00', | ||
16 | + | ||
17 | + } | ||
18 | + }, | ||
19 | + setup() { | ||
20 | + const {proxy} = Vue.getCurrentInstance(); | ||
21 | + | ||
22 | + let datetimeStyle=()=>{// 左上角日期时间大小 | ||
23 | + fontSize: this.titleFontSize / 3 + 'px'; | ||
24 | + marginLeft: this.titleFontSize / 5 + 'px' | ||
25 | + } | ||
26 | + | ||
27 | + // 挂载完 | ||
28 | + Vue.onMounted(() => { | ||
29 | + let that = this | ||
30 | + // 获取当前系统时间 | ||
31 | + let myDate = new Date(); | ||
32 | + that.dateTime = myDate.getFullYear() + '-' + that.timeFormat(myDate.getMonth() + 1 + '') + '-' + that.timeFormat(myDate.getDate() + '') // + ' ' + that.timeFormat(myDate.getHours() + '') + ':' + that.timeFormat(myDate.getMinutes() + '') + ':' + that.timeFormat(myDate.getSeconds() + ''); | ||
33 | + | ||
34 | + }) | ||
35 | + | ||
36 | + | ||
37 | + return { | ||
38 | + datetimeStyle | ||
39 | + } | ||
40 | + } | ||
41 | +} |
-
Please register or login to post a comment