Merge branch 'master-500-dev' of http://113.200.75.45:82/monitor_v3/hg-monitor-w…
…eb into master-500-dev
Showing
36 changed files
with
545 additions
and
182 deletions
@@ -317,8 +317,8 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f | @@ -317,8 +317,8 @@ layui.define(['form', 'admin', 'laydate', 'common', 'sessions', 'reskpilist'], f | ||
317 | charToExpr(data, 'commonlyExpr'); | 317 | charToExpr(data, 'commonlyExpr'); |
318 | charToExpr(data, 'importantExpr'); | 318 | charToExpr(data, 'importantExpr'); |
319 | charToExpr(data, 'seriousExpr'); | 319 | charToExpr(data, 'seriousExpr'); |
320 | - | ||
321 | - form.on('submit(add-alarmpolicy-form)', function () { | 320 | + //lsq 告警策略编辑不了,id值应该选择的是submit的按钮的lay-filter,不是add-alarmpolicy-form, 2022-09-27 |
321 | + form.on('submit(alarmpolicy-form-save-id)', function () { | ||
322 | delete data.noticeMergeFlagExpr; | 322 | delete data.noticeMergeFlagExpr; |
323 | admin.req({ | 323 | admin.req({ |
324 | url: domainName + '/api-web/alarmPolicy/save?access_token=' + accessToken | 324 | url: domainName + '/api-web/alarmPolicy/save?access_token=' + accessToken |
@@ -407,7 +407,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -407,7 +407,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
407 | var $html = addIconByValue(valueStr); | 407 | var $html = addIconByValue(valueStr); |
408 | var resStyle = obj.alarmEleMatchStyle(ar.flag, ar.kpiId); | 408 | var resStyle = obj.alarmEleMatchStyle(ar.flag, ar.kpiId); |
409 | span += ' <span ' + menuId + ' style="text-align:left;width:40%">' + ar.kpiName + '</span>' + | 409 | span += ' <span ' + menuId + ' style="text-align:left;width:40%">' + ar.kpiName + '</span>' + |
410 | - '<span title="' + titleStr + '" style="width:60%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;' + resStyle + '">' | 410 | + '<span title="' + titleStr + '" style="width:60%;overflow: hidden !important;text-overflow: ellipsis;white-space: nowrap;' + resStyle + '">' |
411 | + $html + valueStr +unit+ '</span>'; | 411 | + $html + valueStr +unit+ '</span>'; |
412 | //补充空白区域 | 412 | //补充空白区域 |
413 | if (v.length < cols) { | 413 | if (v.length < cols) { |
@@ -4554,6 +4554,8 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -4554,6 +4554,8 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
4554 | //lsq 状态信息无其他下探 2022-06-08 | 4554 | //lsq 状态信息无其他下探 2022-06-08 |
4555 | var statusF = $menu.data('statusf'); | 4555 | var statusF = $menu.data('statusf'); |
4556 | var one = $menu.data('one'); | 4556 | var one = $menu.data('one'); |
4557 | + //lsq 只有kpiIdent==1时才有性能趋势 2022-09-27 | ||
4558 | + var kpiIdent=$menu.data('ident'); | ||
4557 | var menubox = '<div class="detail_menubox" id="detail_menubox_id" style="color:#666;"><ul>'; | 4559 | var menubox = '<div class="detail_menubox" id="detail_menubox_id" style="color:#666;"><ul>'; |
4558 | //lsq 只有状态指标下探的标识 | 4560 | //lsq 只有状态指标下探的标识 |
4559 | if (one == 1) { | 4561 | if (one == 1) { |
@@ -4567,7 +4569,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | @@ -4567,7 +4569,7 @@ layui.define(['laytpl', 'admin', 'form', 'table', 'echarts', 'sessions', 'xmSele | ||
4567 | if (!hideM) { | 4569 | if (!hideM) { |
4568 | menubox += '<li type="m"><i class="layui-icon"></i>过滤多指标</li>'; | 4570 | menubox += '<li type="m"><i class="layui-icon"></i>过滤多指标</li>'; |
4569 | } | 4571 | } |
4570 | - if (!nature) { | 4572 | + if (!nature && kpiIdent==1) { |
4571 | menubox += '<li type="t"><i class="layui-icon"></i>性能趋势</li>'; | 4573 | menubox += '<li type="t"><i class="layui-icon"></i>性能趋势</li>'; |
4572 | } | 4574 | } |
4573 | // if(!statusF){ | 4575 | // if(!statusF){ |
@@ -144,98 +144,96 @@ layui.define(['form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'resli | @@ -144,98 +144,96 @@ layui.define(['form', 'admin', 'layer', 'common', 'sessions', 'xmSelect', 'resli | ||
144 | //保存 | 144 | //保存 |
145 | $("#jgraph-form-save-id").on("click", function (e, flag) { | 145 | $("#jgraph-form-save-id").on("click", function (e, flag) { |
146 | //当flag为true,为保存并设计,当flag为false时,为保存 | 146 | //当flag为true,为保存并设计,当flag为false时,为保存 |
147 | - form.on('submit(form-grapheditor)', function () { | ||
148 | - var topoTitle = $("#jgraph_topo_name").val(); | ||
149 | - if (!topoTitle) { | ||
150 | - layer.msg('请输入拓扑名称!', {icon: 7, time: 3000}); | ||
151 | - return false; | ||
152 | - } | ||
153 | - //获取Users值 | ||
154 | - var userflag = 0; | ||
155 | - //新增时必须用户授权包换登录用户的 | ||
156 | - if (id) { | ||
157 | - userflag = 1; | ||
158 | - } | ||
159 | - var userNow = localStorage.getItem("lgn"); | ||
160 | - var topoUsers = []; | ||
161 | - var selectedUsers = xmSelectUsers.getValue(); | ||
162 | - if (selectedUsers != null && selectedUsers.length > 0) { | ||
163 | - $.each(selectedUsers, function (i, v) { | ||
164 | - if (v.value == userNow) { | ||
165 | - userflag = 1; | ||
166 | - } | ||
167 | - topoUsers.push(v.value + "#" + v.name); | ||
168 | - }); | ||
169 | - } | ||
170 | - if (userflag == 0) { | ||
171 | - layer.msg('保存失败,用户权限必须包含当前登录账户!', {icon: 2, time: 3000}); | ||
172 | - return false; | ||
173 | - } | ||
174 | - //获取Roles值 | ||
175 | - var topoRoles = []; | ||
176 | - var isExistAdmin = false; | ||
177 | - var selectedRoles = xmSelectRoles.getValue(); | ||
178 | - if (selectedRoles != null && selectedRoles.length > 0) { | ||
179 | - $.each(selectedRoles, function (i, v) { | ||
180 | - topoRoles.push(v.value + "#" + v.roleName); | ||
181 | - if (v.code == 'ADMIN') { | ||
182 | - isExistAdmin = true; | ||
183 | - } | ||
184 | - }); | ||
185 | - } | ||
186 | - // 必须要选管理员 | ||
187 | - if (!isExistAdmin) { | ||
188 | - layer.msg('保存失败,角色必须包含当管理员权限(ADMIN)!', {icon: 2, time: 3000}); | ||
189 | - return false; | ||
190 | - } | 147 | + var topoTitle = $("#jgraph_topo_name").val(); |
148 | + if (!topoTitle) { | ||
149 | + layer.msg('请输入拓扑名称!', {icon: 7, time: 3000}); | ||
150 | + return false; | ||
151 | + } | ||
152 | + //获取Users值 | ||
153 | + var userflag = 0; | ||
154 | + //新增时必须用户授权包换登录用户的 | ||
155 | + if (id) { | ||
156 | + userflag = 1; | ||
157 | + } | ||
158 | + var userNow = localStorage.getItem("lgn"); | ||
159 | + var topoUsers = []; | ||
160 | + var selectedUsers = xmSelectUsers.getValue(); | ||
161 | + if (selectedUsers != null && selectedUsers.length > 0) { | ||
162 | + $.each(selectedUsers, function (i, v) { | ||
163 | + if (v.value == userNow) { | ||
164 | + userflag = 1; | ||
165 | + } | ||
166 | + topoUsers.push(v.value + "#" + v.name); | ||
167 | + }); | ||
168 | + } | ||
169 | + if (userflag == 0) { | ||
170 | + layer.msg('保存失败,用户权限必须包含当前登录账户!', {icon: 2, time: 3000}); | ||
171 | + return false; | ||
172 | + } | ||
173 | + //获取Roles值 | ||
174 | + var topoRoles = []; | ||
175 | + var isExistAdmin = false; | ||
176 | + var selectedRoles = xmSelectRoles.getValue(); | ||
177 | + if (selectedRoles != null && selectedRoles.length > 0) { | ||
178 | + $.each(selectedRoles, function (i, v) { | ||
179 | + topoRoles.push(v.value + "#" + v.roleName); | ||
180 | + if (v.code == 'ADMIN') { | ||
181 | + isExistAdmin = true; | ||
182 | + } | ||
183 | + }); | ||
184 | + } | ||
185 | + // 必须要选管理员 | ||
186 | + if (!isExistAdmin) { | ||
187 | + layer.msg('保存失败,角色必须包含当管理员权限(ADMIN)!', {icon: 2, time: 3000}); | ||
188 | + return false; | ||
189 | + } | ||
191 | 190 | ||
192 | 191 | ||
193 | - var targetId = ''; | ||
194 | - var topoType = $("#jgraph-topo_type").val();//拓扑类型 | ||
195 | - if (topoType && topoType === '1') {//业务拓扑 | ||
196 | - targetId = bizId; | ||
197 | - } | ||
198 | - if (topoType && topoType === '2') {//资源拓扑 | ||
199 | - targetId = $("#jgraph-topo_resid").val(); | ||
200 | - } | ||
201 | - if (topoType && topoType === '4') {//机房拓扑 | ||
202 | - targetId = $("#jgraph-topo_room").val(); | ||
203 | - } | ||
204 | - var jtopo = { | ||
205 | - topoName: topoTitle, //拓扑名称 | ||
206 | - jtopoId: $("#jgraph-topoId").val(), | ||
207 | - isDefault: $('input[name="isDefault"]:checked').val(), //是否默认,0否 1是 | ||
208 | - topoType: topoType, | ||
209 | - targetId: targetId, | ||
210 | - userIds: topoUsers.toString(), | ||
211 | - roleIds: topoRoles.toString(), | ||
212 | - remark: $("#jgraph_remark").val(), | ||
213 | - }; | ||
214 | - admin.req({ | ||
215 | - url: common.domainName + '/api-web/mxgraph/save?access_token=' + access_token | ||
216 | - , type: 'post' | ||
217 | - , async: false | ||
218 | - , contentType: "application/json;charset=UTF-8"//指定消息请求类型 | ||
219 | - , data: JSON.stringify(jtopo) | ||
220 | - }).done(function (res) { | ||
221 | - if (res.success) { | ||
222 | - layer.msg('保存成功', {icon: 1, time: 2000}, function () { | ||
223 | - layer.closeAll() | ||
224 | - if (flag) { | ||
225 | - if (!id) { | ||
226 | - id = res.str; | ||
227 | - } | ||
228 | - //http://192.168.0.247:8085 | ||
229 | - var url = common.graphEditorOrigin + "/jgraph/grapheditor/index.html?access_token=" + access_token + '&id=' + id; | ||
230 | - window.open(url); | 192 | + var targetId = ''; |
193 | + var topoType = $("#jgraph-topo_type").val();//拓扑类型 | ||
194 | + if (topoType && topoType === '1') {//业务拓扑 | ||
195 | + targetId = bizId; | ||
196 | + } | ||
197 | + if (topoType && topoType === '2') {//资源拓扑 | ||
198 | + targetId = $("#jgraph-topo_resid").val(); | ||
199 | + } | ||
200 | + if (topoType && topoType === '4') {//机房拓扑 | ||
201 | + targetId = $("#jgraph-topo_room").val(); | ||
202 | + } | ||
203 | + var jtopo = { | ||
204 | + topoName: topoTitle, //拓扑名称 | ||
205 | + jtopoId: $("#jgraph-topoId").val(), | ||
206 | + isDefault: $('input[name="isDefault"]:checked').val(), //是否默认,0否 1是 | ||
207 | + topoType: topoType, | ||
208 | + targetId: targetId, | ||
209 | + userIds: topoUsers.toString(), | ||
210 | + roleIds: topoRoles.toString(), | ||
211 | + remark: $("#jgraph_remark").val(), | ||
212 | + }; | ||
213 | + admin.req({ | ||
214 | + url: common.domainName + '/api-web/mxgraph/save?access_token=' + access_token | ||
215 | + , type: 'post' | ||
216 | + , async: false | ||
217 | + , contentType: "application/json;charset=UTF-8"//指定消息请求类型 | ||
218 | + , data: JSON.stringify(jtopo) | ||
219 | + }).done(function (res) { | ||
220 | + if (res.success) { | ||
221 | + layer.msg('保存成功', {icon: 1, time: 2000}, function () { | ||
222 | + layer.closeAll() | ||
223 | + if (flag) { | ||
224 | + if (!id) { | ||
225 | + id = res.str; | ||
231 | } | 226 | } |
232 | - }); | ||
233 | - } else { | ||
234 | - layer.msg('拓扑保存失败,请与管理员联系!', {icon: 7, time: 3000}); | ||
235 | - } | ||
236 | - }); | ||
237 | - return false;//必须要写,解决禁用submit提交,ajax方法才能正确执行,且表单不会自动刷新 | ||
238 | - }) | 227 | + //http://192.168.0.247:8085 |
228 | + var url = common.graphEditorOrigin + "/jgraph/grapheditor/index.html?access_token=" + access_token + '&id=' + id; | ||
229 | + window.open(url); | ||
230 | + } | ||
231 | + }); | ||
232 | + } else { | ||
233 | + layer.msg('拓扑保存失败,请与管理员联系!', {icon: 7, time: 3000}); | ||
234 | + } | ||
235 | + }); | ||
236 | + return false;//必须要写,解决禁用submit提交,ajax方法才能正确执行,且表单不会自动刷新 | ||
239 | form.render(); | 237 | form.render(); |
240 | }); | 238 | }); |
241 | renderGraphTopoInfo(); | 239 | renderGraphTopoInfo(); |
@@ -246,18 +246,22 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect | @@ -246,18 +246,22 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect | ||
246 | 246 | ||
247 | //监听ckecked选中事件 | 247 | //监听ckecked选中事件 |
248 | table.on('checkbox(reslist_resListTable)', function (obj) { | 248 | table.on('checkbox(reslist_resListTable)', function (obj) { |
249 | + var reslist = []; | ||
249 | if (obj.checked == true) { | 250 | if (obj.checked == true) { |
250 | if (obj.type == 'one' && resListSelectIds.indexOf(obj.data.resId) === -1) {//勾选单条 | 251 | if (obj.type == 'one' && resListSelectIds.indexOf(obj.data.resId) === -1) {//勾选单条 |
251 | resListSelectIds.push(obj.data.resId); | 252 | resListSelectIds.push(obj.data.resId); |
253 | + reslist.push(obj.data); | ||
252 | } | 254 | } |
253 | if (obj.type == 'all') {//勾选全部 | 255 | if (obj.type == 'all') {//勾选全部 |
254 | for (var i = 0; i < table_data.length; i++) { | 256 | for (var i = 0; i < table_data.length; i++) { |
257 | + reslist.push(table_data[i]); | ||
255 | if (resListSelectIds.indexOf(obj.data.resId) === -1) { | 258 | if (resListSelectIds.indexOf(obj.data.resId) === -1) { |
256 | resListSelectIds.push(table_data[i].resId); | 259 | resListSelectIds.push(table_data[i].resId); |
257 | } | 260 | } |
258 | } | 261 | } |
259 | } | 262 | } |
260 | } else { | 263 | } else { |
264 | + reslist.push(obj.data); | ||
261 | if (obj.type == 'one') { | 265 | if (obj.type == 'one') { |
262 | for (var i = 0; i < resListSelectIds.length; i++) { | 266 | for (var i = 0; i < resListSelectIds.length; i++) { |
263 | if (resListSelectIds[i] == obj.data.resId) { | 267 | if (resListSelectIds[i] == obj.data.resId) { |
@@ -281,7 +285,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect | @@ -281,7 +285,7 @@ layui.define(['table', 'form', 'admin', 'layer', 'common', 'sessions', 'xmSelect | ||
281 | 285 | ||
282 | // 跨域发送信息,不能删除 | 286 | // 跨域发送信息,不能删除 |
283 | obj.data["checked"] = obj.checked; | 287 | obj.data["checked"] = obj.checked; |
284 | - window.top.postMessage({res: obj.data}, "*"); | 288 | + window.top.postMessage({res: reslist}, "*"); |
285 | 289 | ||
286 | }) | 290 | }) |
287 | 291 |
@@ -95,7 +95,8 @@ layui.define(['table', 'form', 'laydate', 'treeTable', 'admin', 'layer', 'laytpl | @@ -95,7 +95,8 @@ layui.define(['table', 'form', 'laydate', 'treeTable', 'admin', 'layer', 'laytpl | ||
95 | templet: '<div><span role-data-edit="{{d.id}}" data-name="{{d.name}}" ' + | 95 | templet: '<div><span role-data-edit="{{d.id}}" data-name="{{d.name}}" ' + |
96 | 'data-code="{{d.code}}" data-remark="{{d.remark}}" class="layui-table-link">{{d.name}}</span></div>' | 96 | 'data-code="{{d.code}}" data-remark="{{d.remark}}" class="layui-table-link">{{d.name}}</span></div>' |
97 | } | 97 | } |
98 | - , {field: 'userNames', title: '角色用户', align: 'left', width: '25%'} | 98 | + , {field: 'code', title: '编码', align: 'left', width: '10%'} |
99 | + , {field: 'userNames', title: '角色用户', align: 'left', width: '20%'} | ||
99 | , {field: 'remark', title: '角色描述', align: 'left',} | 100 | , {field: 'remark', title: '角色描述', align: 'left',} |
100 | , { | 101 | , { |
101 | field: 'updateTime', | 102 | field: 'updateTime', |
@@ -8660,3 +8660,11 @@ form.layui-card-header.layuiadmin-card-header-auto { | @@ -8660,3 +8660,11 @@ form.layui-card-header.layuiadmin-card-header-auto { | ||
8660 | width: 16px; | 8660 | width: 16px; |
8661 | height: 16px; | 8661 | height: 16px; |
8662 | } | 8662 | } |
8663 | +/*lsq 快照管理详情页基本信息悬浮样式修改 2022-09-27*/ | ||
8664 | +#base-info-tips>.info-table>li span,#base-info-tips>.info-table>li span .div-link-state-list{ | ||
8665 | + display: flex; | ||
8666 | + align-items: center; | ||
8667 | +} | ||
8668 | +#base-info-tips>.info-table>li span:nth-child(2n){ | ||
8669 | + flex:2; | ||
8670 | +} |
@@ -345,8 +345,8 @@ | @@ -345,8 +345,8 @@ | ||
345 | </div> | 345 | </div> |
346 | </div> | 346 | </div> |
347 | </div> | 347 | </div> |
348 | - | ||
349 | - <button type="submit" lay-submit class="layui-btn hide" id="alarmpolicy-form-save-id">保存</button> | 348 | + <!--lsq 告警策略编辑不了,按钮没有lay-filter 2022-09-27--> |
349 | + <button type="submit" lay-submit class="layui-btn hide" lay-filter="alarmpolicy-form-save-id" id="alarmpolicy-form-save-id">保存</button> | ||
350 | </form> | 350 | </form> |
351 | <script> | 351 | <script> |
352 | layui.use('alarmpolicyAdd', function (fn) { | 352 | layui.use('alarmpolicyAdd', function (fn) { |
@@ -54,7 +54,8 @@ | @@ -54,7 +54,8 @@ | ||
54 | <label class="layui-form-label">发送用户</label> | 54 | <label class="layui-form-label">发送用户</label> |
55 | <div style="width: calc(100% - 110px)"> | 55 | <div style="width: calc(100% - 110px)"> |
56 | <div class="layui-input-inline" style="width: calc(100% - 10px);display: inline-flex;"> | 56 | <div class="layui-input-inline" style="width: calc(100% - 10px);display: inline-flex;"> |
57 | - <div class="tags" id="select_noticeTimely_id_user" style="width: calc(100% - 20px);border: solid 1px #D2D2D2;margin-top: 0px;height: 36px;"></div> | 57 | + <!--lsq 选择用户过多时,超出高度滚动 2022-09-27--> |
58 | + <div class="tags" id="select_noticeTimely_id_user" style="width: calc(100% - 20px);border: solid 1px #D2D2D2;margin-top: 0px;min-height:36px; height: auto; max-height: 200px; overflow: auto;"></div> | ||
58 | <i class="layui-icon form-btn-icon" id="noticeTimely-form-select-users" style="line-height: 36px;margin-left: 5px;"></i> | 59 | <i class="layui-icon form-btn-icon" id="noticeTimely-form-select-users" style="line-height: 36px;margin-left: 5px;"></i> |
59 | </div> | 60 | </div> |
60 | </div> | 61 | </div> |
@@ -56,6 +56,12 @@ | @@ -56,6 +56,12 @@ | ||
56 | font-weight: normal; | 56 | font-weight: normal; |
57 | src:url('../fonts/pingfang/PINGFANG EXTRALIGHT.TTF'); | 57 | src:url('../fonts/pingfang/PINGFANG EXTRALIGHT.TTF'); |
58 | } | 58 | } |
59 | +@font-face { | ||
60 | + font-family: 'PingFang-SC-regular'; | ||
61 | + font-style: normal; | ||
62 | + font-weight: normal; | ||
63 | + src:url('../fonts/pingfang/PINGFANG REGULAR.TTF'); | ||
64 | +} | ||
59 | * { | 65 | * { |
60 | margin: 0px; | 66 | margin: 0px; |
61 | padding: 0px; | 67 | padding: 0px; |
@@ -1977,13 +1983,19 @@ blockquote:before { | @@ -1977,13 +1983,19 @@ blockquote:before { | ||
1977 | } | 1983 | } |
1978 | .info-container-bg{ | 1984 | .info-container-bg{ |
1979 | background:#f3f5f8; | 1985 | background:#f3f5f8; |
1986 | + | ||
1980 | } | 1987 | } |
1981 | .info-title{ | 1988 | .info-title{ |
1982 | text-align: center; | 1989 | text-align: center; |
1990 | + font-size: 30px; | ||
1991 | + color:#333; | ||
1983 | } | 1992 | } |
1984 | .info-intro{ | 1993 | .info-intro{ |
1985 | padding-top:20px; | 1994 | padding-top:20px; |
1986 | text-indent:28px; | 1995 | text-indent:28px; |
1996 | + font-size: 16px; | ||
1997 | + color:#666; | ||
1998 | + font-family: 'PingFang-SC-medium'; | ||
1987 | } | 1999 | } |
1988 | .info-character{ | 2000 | .info-character{ |
1989 | padding:0 50px; | 2001 | padding:0 50px; |
@@ -2195,6 +2207,9 @@ blockquote:before { | @@ -2195,6 +2207,9 @@ blockquote:before { | ||
2195 | border-bottom:1px solid #525a6a; | 2207 | border-bottom:1px solid #525a6a; |
2196 | margin-bottom: 0; | 2208 | margin-bottom: 0; |
2197 | } | 2209 | } |
2210 | +.maintenance-advantage.info-title{ | ||
2211 | + color:#fff; | ||
2212 | +} | ||
2198 | .maintenance-advantage-num{ | 2213 | .maintenance-advantage-num{ |
2199 | font-size: 90px; | 2214 | font-size: 90px; |
2200 | color:#2d3340; | 2215 | color:#2d3340; |
@@ -2890,4 +2905,242 @@ blockquote:before { | @@ -2890,4 +2905,242 @@ blockquote:before { | ||
2890 | } | 2905 | } |
2891 | .compatible-item .title-style{ | 2906 | .compatible-item .title-style{ |
2892 | font-size:28px; | 2907 | font-size:28px; |
2893 | -} | ||
2908 | +} | ||
2909 | +/*lsq 综合监控A-view样式 2022-09-28*/ | ||
2910 | +.col-lg-service-3{ | ||
2911 | + max-width: 20%; | ||
2912 | +} | ||
2913 | +.info-child-title{ | ||
2914 | + font-size: 21px; | ||
2915 | + color:#333; | ||
2916 | + font-family: 'PingFang SC'; | ||
2917 | +} | ||
2918 | +.info-child-intro{ | ||
2919 | + font-size: 18px; | ||
2920 | + color:#333; | ||
2921 | + font-family: 'PingFang-SC-regular'; | ||
2922 | +} | ||
2923 | +.info-child-title-Heavy{ | ||
2924 | + font-size: 30px; | ||
2925 | + color:#fff; | ||
2926 | + font-family: 'PingFang-SC-heavy'; | ||
2927 | +} | ||
2928 | +.info-child-intro-m{ | ||
2929 | + font-size: 18px; | ||
2930 | + color:#fff; | ||
2931 | + font-family: 'PingFang-SC-medium'; | ||
2932 | +} | ||
2933 | +.info-challenge-bg{ | ||
2934 | + position: absolute; | ||
2935 | + height: 100%; | ||
2936 | + width: 90%; | ||
2937 | + top: 0; | ||
2938 | + z-index: -1; | ||
2939 | + background-size: cover; | ||
2940 | +} | ||
2941 | +.info-challenge-bg-1{ | ||
2942 | + background-image: url("../img/serviceSecond/Aview/challenge-bg-1.png"); | ||
2943 | +} | ||
2944 | +.info-challenge-bg-2{ | ||
2945 | + background-image: url("../img/serviceSecond/Aview/challenge-bg-2.png"); | ||
2946 | +} | ||
2947 | +.info-challenge-bg-3{ | ||
2948 | + background-image: url("../img/serviceSecond/Aview/challenge-bg-3.png"); | ||
2949 | +} | ||
2950 | +.challenge-con .info-character{ | ||
2951 | + padding: 0 20px; | ||
2952 | +} | ||
2953 | +.intro-item{ | ||
2954 | + padding:10px; | ||
2955 | +} | ||
2956 | +.Aview .tab-item-li{ | ||
2957 | + margin-right: 56px; | ||
2958 | +} | ||
2959 | +.info-container-bg-Aview{ | ||
2960 | + position: absolute; | ||
2961 | + height: 100%; | ||
2962 | + width: 100%; | ||
2963 | + top: 0; | ||
2964 | + z-index: -2; | ||
2965 | +} | ||
2966 | +.info-container-bg-challenge{ | ||
2967 | + height: 60%; | ||
2968 | +} | ||
2969 | +.info-container-service .info-character{ | ||
2970 | + padding:0; | ||
2971 | +} | ||
2972 | +.info-service.info-character img{ | ||
2973 | +} | ||
2974 | +.dataAbility-con{ | ||
2975 | + position: relative; | ||
2976 | + flex: 1; | ||
2977 | + max-height: 500px; | ||
2978 | +} | ||
2979 | +.dataAbility-bg{ | ||
2980 | + position: absolute; | ||
2981 | + height: 100%; | ||
2982 | + width: 100%; | ||
2983 | + top: 0; | ||
2984 | + z-index: -2; | ||
2985 | + background-size: contain; | ||
2986 | + background-image: url("../img/serviceSecond/Aview/ability-bg.png"); | ||
2987 | + background-repeat: no-repeat; | ||
2988 | + background-position: center; | ||
2989 | +} | ||
2990 | +.dataAbility-bg-logo{ | ||
2991 | + position: absolute; | ||
2992 | + height: 100%; | ||
2993 | + width: 100%; | ||
2994 | + top: 0; | ||
2995 | + z-index: -1; | ||
2996 | + display: flex; | ||
2997 | + align-items: center; | ||
2998 | + flex-flow: column; | ||
2999 | + justify-content: center; | ||
3000 | +} | ||
3001 | +.dataAbility-item-title{ | ||
3002 | + font-size: 21px; | ||
3003 | + color:#fff; | ||
3004 | + font-family: 'PingFang-SC-heavy'; | ||
3005 | +} | ||
3006 | +.dataAbility-item-intro{ | ||
3007 | + font-size: 16px; | ||
3008 | + color:#fff; | ||
3009 | + font-family: 'PingFang-SC-regular'; | ||
3010 | +} | ||
3011 | +.info-container-ability .container{ | ||
3012 | + height:100%; | ||
3013 | + display: flex; | ||
3014 | + flex-flow: column; | ||
3015 | +} | ||
3016 | +.dataAbility-col{ | ||
3017 | + display: flex; | ||
3018 | +} | ||
3019 | +.dataAbility-item{ | ||
3020 | + flex:1; | ||
3021 | + display: flex; | ||
3022 | + flex-flow: column; | ||
3023 | + justify-content: center; | ||
3024 | + padding: 0 15px; | ||
3025 | +} | ||
3026 | +.dataAbility-item-intro-item{ | ||
3027 | + min-height: 24px; | ||
3028 | +} | ||
3029 | +.dataAbility-col:nth-child(2n) .dataAbility-item{ | ||
3030 | + margin-left: 30%; | ||
3031 | +} | ||
3032 | +.dataAbility-col:nth-child(3) .dataAbility-item .dataAbility-item-intro-item:first-child{ | ||
3033 | + max-width: 67%; | ||
3034 | +} | ||
3035 | +@media (min-width: 992px){ | ||
3036 | + .dataAbility-col{ | ||
3037 | + height:50%; | ||
3038 | + } | ||
3039 | +} | ||
3040 | +.logo-title{ | ||
3041 | + color:#fff; | ||
3042 | + font-size: 21px; | ||
3043 | +} | ||
3044 | +.info-characterP{ | ||
3045 | + cursor: pointer; | ||
3046 | +} | ||
3047 | +.info-characterP .info-characterP-bg{ | ||
3048 | + background:url("../img/serviceSecond/Aview/characterP-bg.png"); | ||
3049 | + position: absolute; | ||
3050 | + height: 100%; | ||
3051 | + width: 100%; | ||
3052 | + top: 0; | ||
3053 | + z-index: -1; | ||
3054 | + background-size: contain; | ||
3055 | + background-repeat: no-repeat; | ||
3056 | + background-position: center; | ||
3057 | +} | ||
3058 | +.info-characterP:hover .info-characterP-bg{ | ||
3059 | + background:url("../img/serviceSecond/Aview/characterP-bg-active.png"); | ||
3060 | + | ||
3061 | +} | ||
3062 | +.info-character.info-characterP{ | ||
3063 | + padding:30px; | ||
3064 | + position: relative; | ||
3065 | +} | ||
3066 | +.characterP-con{ | ||
3067 | + display: flex; | ||
3068 | + justify-content: center; | ||
3069 | + align-items: center; | ||
3070 | + padding:10px 15px; | ||
3071 | +} | ||
3072 | +.characterP-con .info-character-intro{ | ||
3073 | + min-height: 140px; | ||
3074 | +} | ||
3075 | +.info-child-title-character{ | ||
3076 | + width: 100%; | ||
3077 | + font-size: 21px; | ||
3078 | + color:#333; | ||
3079 | + font-family: 'PingFang-SC-heavy'; | ||
3080 | +} | ||
3081 | +.info-child-intro-character{ | ||
3082 | + font-size: 16px; | ||
3083 | + color:#666; | ||
3084 | + font-family: 'PingFang-SC-regular'; | ||
3085 | +} | ||
3086 | +.info-characterP:hover .info-child-title-character,.info-characterP:hover .info-child-intro-character{ | ||
3087 | + color:#fff; | ||
3088 | +} | ||
3089 | +.Aview-advantage-bg{ | ||
3090 | + background: url("../img/serviceSecond/Aview/advantage-bg.png"); | ||
3091 | + background-size: cover; | ||
3092 | + position: absolute; | ||
3093 | + height: 100%; | ||
3094 | + width: 100%; | ||
3095 | + left: 0; | ||
3096 | + top: 0; | ||
3097 | + z-index: -1; | ||
3098 | +} | ||
3099 | +.advantage-title-Aview{ | ||
3100 | + font-size: 24px; | ||
3101 | + color:#fff; | ||
3102 | +} | ||
3103 | +.advantage-intro-Aview{ | ||
3104 | + font-size: 18px; | ||
3105 | + color:#fff; | ||
3106 | + font-family: 'PingFang-SC-regular'; | ||
3107 | +} | ||
3108 | +.info-container-advantage .info-title{ | ||
3109 | + color:#fff; | ||
3110 | +} | ||
3111 | +.info-container-advantage .pro-advantage-style{ | ||
3112 | + padding: 50px 30px 0; | ||
3113 | +} | ||
3114 | +.info-container-advantage .pro-advantage-ul{ | ||
3115 | + min-height: 120px; | ||
3116 | + box-sizing: content-box; | ||
3117 | +} | ||
3118 | +.Aview-advantage-con{ | ||
3119 | + padding:0; | ||
3120 | +} | ||
3121 | +.Aview-advantage-con .maintenance-advantage-num{ | ||
3122 | + color:#2a303c; | ||
3123 | +} | ||
3124 | +.Aview-con{ | ||
3125 | + border-top:1px solid #525a6a; | ||
3126 | +} | ||
3127 | +.Aview-container{ | ||
3128 | + margin:auto; | ||
3129 | +} | ||
3130 | +@media (min-width: 1260px) { | ||
3131 | + .Aview-container { | ||
3132 | + max-width: 1200px; | ||
3133 | + } | ||
3134 | +} | ||
3135 | +.Aview-advantage-con:last-child .pro-advantage-style{ | ||
3136 | + border:none; | ||
3137 | +} | ||
3138 | +.Aview-advantage-con:hover{ | ||
3139 | + position: relative; | ||
3140 | + z-index: 2; | ||
3141 | + transform: scale(1.1,1); | ||
3142 | + background:#1a6ab7; | ||
3143 | +} | ||
3144 | +.Aview-advantage-con:hover .maintenance-advantage-num{ | ||
3145 | + color:#1665b1; | ||
3146 | +} |
No preview for this file type
@@ -461,94 +461,163 @@ export function alarm() { | @@ -461,94 +461,163 @@ export function alarm() { | ||
461 | export function Aview() { | 461 | export function Aview() { |
462 | let res={ | 462 | let res={ |
463 | title:'综合监控管理A-view', | 463 | title:'综合监控管理A-view', |
464 | - introduction:'魔镜智能将为“智慧税务”提供一个可视化、全局化、智能化、标准化、自动化的“全流程击穿协同管理”平台。实时洞察数字化业务与用户体验、主动保障核心征管、电子税务局等核心业务系统稳定、持续高效运行,构建基于“人工智能+大数据”底座的异常检测、智能告警分析、高效信息协同的大运维工作体系。', | 464 | + introduction:'建立智能IT运维监控平台, 对网络、硬件、安全设备、操作系统、数据库、中间件、应用系统等资源实时监控采集,能够自动地收集信息系统中各类IT资源设备运行状态、数据库状态、中间件运行状态和网络状态等,发现各类IT资源运行过程中的异常。依据业务视角和设备视角分析发现已发生和潜在的各类资源问题,及时通知相关责任人和启动相关运维流程。', |
465 | data:[ | 465 | data:[ |
466 | { | 466 | { |
467 | title:'产品信息', | 467 | title:'产品信息', |
468 | - introduction:'魔镜智能将为“智慧税务”提供一个可视化、全局化、智能化、标准化、自动化的“全流程击穿协同管理”平台。实时洞察数字化业务与用户体验、主动保障核心征管、电子税务局等核心业务系统稳定、持续高效运行,构建基于“人工智能+大数据”底座的异常检测、智能告警分析、高效信息协同的大运维工作体系。', | 468 | + introduction:'建立智能IT运维监控平台, 对网络、硬件、安全设备、操作系统、数据库、中间件、应用系统等资源实时监控采集,能够自动地收集信息系统中各类IT资源设备运行状态、数据库状态、中间件运行状态和网络状态等,发现各类IT资源运行过程中的异常。依据业务视角和设备视角分析发现已发生和潜在的各类资源问题,及时通知相关责任人和启动相关运维流程。', |
469 | type:'info' | 469 | type:'info' |
470 | }, | 470 | }, |
471 | { | 471 | { |
472 | - title:'产品特点', | 472 | + title:'智能运维带来的新挑战', |
473 | introduction:'', | 473 | introduction:'', |
474 | data:[ | 474 | data:[ |
475 | { | 475 | { |
476 | - icon:'assets/img/serviceSecond/information/character-1.png', | ||
477 | - title:'工单信息集中管理', | ||
478 | - introduction:'实现工单信息自动化汇总,工单数据集中化管理,工单流程实时共享。' | 476 | + icon:'assets/img/serviceSecond/Aview/challenge-1.png', |
477 | + title:'海量资源', | ||
478 | + introData:['资源数量、资源种类','资源纳管能力','自动化运维能力','资源纳管扩展能力'] | ||
479 | }, | 479 | }, |
480 | { | 480 | { |
481 | - icon:'assets/img/serviceSecond/information/character-2.png', | ||
482 | - title:'提高工作效率', | ||
483 | - introduction:'运用智能化管理工具,降低人工沟通成本,缩短沟通时间。实时跟进工单问题的处理情况,提高工作效率。' | 481 | + icon:'assets/img/serviceSecond/Aview/challenge-2.png', |
482 | + title:'双模场景', | ||
483 | + introData:['传统数据中心&云数据中心','公有云、私有云、传统数据','中心的统一运维管理','云基础设施监控精细'] | ||
484 | }, | 484 | }, |
485 | { | 485 | { |
486 | - icon:'assets/img/serviceSecond/information/character-3.png', | ||
487 | - title:'实时处理单数据', | ||
488 | - introduction:'全方位、多维度实时进行工单统计数据,及时掌握工单执行过程中的问题,帮助决策者获取数据支撑。' | 486 | + icon:'assets/img/serviceSecond/Aview/challenge-3.png', |
487 | + title:'用户场景兼容', | ||
488 | + introData:['云环境多租户逻辑隔离,管理统一','多张网物理隔离,统一管理','多机构运维融合'] | ||
489 | } | 489 | } |
490 | ], | 490 | ], |
491 | - type:'character' | 491 | + type:'challenge' |
492 | }, | 492 | }, |
493 | { | 493 | { |
494 | - title:'系统框架', | ||
495 | - introduction:'安全运维服务流程的系统架构', | ||
496 | - img:'assets/img/serviceSecond/information/system.png', | 494 | + title:'洞悉客户数字化运维服务需求', |
495 | + introduction:'', | ||
496 | + data:[ | ||
497 | + { | ||
498 | + icon:'assets/img/serviceSecond/Aview/service-1.png', | ||
499 | + title:'前瞻性', | ||
500 | + introData:['业务前瞻、模式前瞻','架构前瞻'] | ||
501 | + }, | ||
502 | + { | ||
503 | + icon:'assets/img/serviceSecond/Aview/service-2.png', | ||
504 | + title:'一站式', | ||
505 | + introData:['全生命周期','全IT领域'] | ||
506 | + }, | ||
507 | + { | ||
508 | + icon:'assets/img/serviceSecond/Aview/service-3.png', | ||
509 | + title:'敏捷性', | ||
510 | + introData:['支持业务更快速','更高质量的发布'] | ||
511 | + }, | ||
512 | + { | ||
513 | + icon:'assets/img/serviceSecond/Aview/service-4.png', | ||
514 | + title:'场景化', | ||
515 | + introData:['不同的业务场景','提供差异化服务'] | ||
516 | + }, | ||
517 | + { | ||
518 | + icon:'assets/img/serviceSecond/Aview/service-5.png', | ||
519 | + title:'智能化', | ||
520 | + introData:['通过智能分析和','自动化提高运营效率'] | ||
521 | + } | ||
522 | + ], | ||
523 | + type:'service' | ||
524 | + }, | ||
525 | + { | ||
526 | + title:'系统架构', | ||
527 | + introduction:'', | ||
528 | + img:'assets/img/serviceSecond/Aview/system.png', | ||
497 | type:'system' | 529 | type:'system' |
498 | }, | 530 | }, |
499 | { | 531 | { |
500 | - title:'产品优势', | 532 | + title:'综合监控A-VIEW平台能力', |
533 | + subTitle:'综合监控平台能力', | ||
534 | + icon:'assets/img/serviceSecond/Aview/logo.png', | ||
501 | introduction:'', | 535 | introduction:'', |
502 | - dataSecond:[ | 536 | + dataAbility:[ |
503 | { | 537 | { |
504 | - icon:'assets/img/serviceSecond/information/advantage-1.png', | ||
505 | - title:'“护网””等保”各规章变成“流程”强制性管控', | ||
506 | - introduction:'特点:规章落地 提前约束 流程强制 全程留痕', | ||
507 | - img:'assets/img/serviceSecond/information/advantageImg.png' | 538 | + title:'全行业全场景覆盖', |
539 | + introData:['深度分析行业运维需求、场景化需求,','发布行业版本',' ',' '] | ||
508 | }, | 540 | }, |
509 | { | 541 | { |
510 | - icon:'assets/img/serviceSecond/information/advantage-2.png', | ||
511 | - title:'通过”安全流程“提前管控日常操作、留痕', | ||
512 | - introduction:'', | ||
513 | - img:'assets/img/serviceSecond/information/advantageImg.png' | 542 | + title:'用户导向', |
543 | + introData:['用户视角,全新用户体验','场景化视角,便捷简单操作'] | ||
514 | }, | 544 | }, |
515 | { | 545 | { |
516 | - icon:'assets/img/serviceSecond/information/advantage-3.png', | ||
517 | - title:'税务局业务流程目录、展示、流程的分类管理', | ||
518 | - introduction:'', | ||
519 | - img:'assets/img/serviceSecond/information/advantageImg.png' | 546 | + title:'一体化', |
547 | + introData:['全域视角,监控网络、安全、计算存储、虚拟化、容器、云资源、用户终端等IT架构元素,实现从应用到芯片级端到端的运维管理','业务视角,打通业务到底层资源的逻辑连接,数据关联,深度分析','全局视角,场景化自动编排调度,智能联动,自动闭环解决场景化问题'] | ||
520 | }, | 548 | }, |
521 | { | 549 | { |
522 | - icon:'assets/img/serviceSecond/information/advantage-4.png', | ||
523 | - title:'工作组、用户权限的灵活配置', | ||
524 | - introduction:'', | ||
525 | - img:'assets/img/serviceSecond/information/advantageImg.png' | 550 | + title:'持续扩展', |
551 | + introData:['通过微服务架构,平台具备强大的可扩展能力,保证平台功能、处理能力及管理容量的弹性扩展','开放接口,定制开发,持续扩展'] | ||
526 | } | 552 | } |
527 | ], | 553 | ], |
528 | - type:'advantage' | 554 | + type:'ability' |
529 | }, | 555 | }, |
556 | + | ||
530 | { | 557 | { |
531 | - title:'平台价值', | ||
532 | - introduction:'魔镜“智能流程协同管理平台”通过信息整合,全局掌控省税务局工单流程每个节点状态,协同流转,处理审批;清晰分类了解流程情况,实时统计工单数据。', | ||
533 | - dataThird:[ | 558 | + title:'产品特点', |
559 | + introduction:'', | ||
560 | + data:[ | ||
534 | { | 561 | { |
535 | - title:'标准化', | ||
536 | - introduction:'信息、流程、时间全面统一,高效协同', | ||
537 | - img:'assets/img/serviceSecond/information/value-bg.png' | 562 | + title:'强化主动监控,实现集中管理', |
563 | + introduction:'以应用性能和应用系统为监控主线,集成各类监控工具,构建统一集中的IT系统资源监控平台, 能够主动及时发现问题,解决被动服务的局面。同时以自主运维为目的,主动监控,自动更新,自动实现IT运维监控管理。', | ||
538 | }, | 564 | }, |
539 | { | 565 | { |
540 | - title:'规范化', | ||
541 | - introduction:'理清流程、制度落地,业务按标准执行', | ||
542 | - img:'assets/img/serviceSecond/information/value-bg.png' | 566 | + title:'灵活定制的自动化巡检', |
567 | + introduction:'面向多厂商主流IT产品,根据客户灵活定制自动化巡检指标,对IT资源进行全面运行状态自动化检测分析,深度感知IT基础架构运行状态。同时,实时输出准确、详实的分析报告及改进建议,预防IT资源运行中可能出现的各种风险,发现网络潜在的性能瓶颈。', | ||
543 | }, | 568 | }, |
544 | { | 569 | { |
545 | - title:'透明化', | ||
546 | - introduction:'流程申请、流程进度、流程审批全程可观', | ||
547 | - img:'assets/img/serviceSecond/information/value-bg.png' | 570 | + title:'帮助定位故障,快速恢复系统运行。', |
571 | + introduction:'建立针对IT资源的集中告警分析机制和故障预警机制,提供自动化故障处理能力,当故障产生时,可以进行故障的快速定位,很快发现问题根源并找到相应的解决方案,从而缩短故障解决时间,减少维护成本。', | ||
572 | + }, | ||
573 | + { | ||
574 | + title: '提高运行效率,合理利用IT资源。', | ||
575 | + introduction: '建立统一IT资源监控平台后,可以实时了解全部IT资源的使用和运行情况,根据IT业务需要从整体角度考虑资源的使用,甚至可以根据业务高峰期的不同来调剂业务系统对资源的使用。', | ||
576 | + }, | ||
577 | + { | ||
578 | + title:'提供统计分析和决策支持', | ||
579 | + introduction:'通过提供各类资源的性能分析报表、资源统计报表和运维分析报表,从各个侧面、各个角度反映系统的运行状况、性能情况和运维人员工作情况,为系统升级、改造、扩容提供科学依据。', | ||
580 | + }, | ||
581 | + { | ||
582 | + title:'全面直观的系统展示。', | ||
583 | + introduction:'通过一个统一的门户系统,有效的展示内部的IT资源运行情况、性能状况、服务工单情况等,使得领导、管理者、技术人员能迅速了解自己关心的问题。', | ||
548 | } | 584 | } |
549 | ], | 585 | ], |
550 | - type:'value' | 586 | + type:'characterP' |
551 | }, | 587 | }, |
588 | + { | ||
589 | + title:'产品优势', | ||
590 | + introduction:'', | ||
591 | + dataThird:[ | ||
592 | + { | ||
593 | + title:'一体化监控', | ||
594 | + dataIntro:['一体化设备监、管、控,一个平台满足用户多种需求完成所有IT基础资源的监控。'] | ||
595 | + }, | ||
596 | + { | ||
597 | + title:'监控配置灵活', | ||
598 | + dataIntro:['灵活定义监控设备、资源,并可差异化设置监控指标。'] | ||
599 | + }, | ||
600 | + { | ||
601 | + title:'秒级故障监控', | ||
602 | + dataIntro:['领先的秒级监控能力与多线程任务并发技术,监测频率提升到秒级。'] | ||
603 | + } | ||
604 | + ], | ||
605 | + dataThirdA:[ | ||
606 | + { | ||
607 | + title:'实时性能监测', | ||
608 | + dataIntro:['获取实时性能数据,动态可视化展示当前设备性能和性能变化趋势。'] | ||
609 | + }, | ||
610 | + { | ||
611 | + title:'业务数据综合展示', | ||
612 | + dataIntro:['强大的业务数据综合展示能力,实现跨网络业务数据整合'] | ||
613 | + }, | ||
614 | + { | ||
615 | + title:'巡检灵活可配', | ||
616 | + dataIntro:['巡检方案高度支持自定义,全网全流程覆盖,随时监控,分析回顾设备生命周期表现。'] | ||
617 | + } | ||
618 | + ], | ||
619 | + type:'advantage' | ||
620 | + } | ||
552 | ] | 621 | ] |
553 | } | 622 | } |
554 | 623 |

125 KB

275 KB

1.53 KB

1.73 KB

1.67 KB

2.49 KB

4.45 KB

4.77 KB

47.6 KB

17.9 KB

10.2 KB

12.6 KB

13.1 KB

11.9 KB

11.4 KB

11.2 KB

86.9 KB
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | 6 | ||
7 | 7 | ||
8 | <section class="rel rpt-150 rpb-0 text-left" > | 8 | <section class="rel rpt-150 rpb-0 text-left" > |
9 | - <div class="container"> | 9 | + <div class="container product"> |
10 | <div class="row banner-height pt-90 pb-90"> | 10 | <div class="row banner-height pt-90 pb-90"> |
11 | <div class="banner-introduction color-white col-lg-6"> | 11 | <div class="banner-introduction color-white col-lg-6"> |
12 | <h2 class="intro-title color-white">{{AviewData.title}}</h2> | 12 | <h2 class="intro-title color-white">{{AviewData.title}}</h2> |
@@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
17 | <div class="intro-Con"></div> | 17 | <div class="intro-Con"></div> |
18 | </section> | 18 | </section> |
19 | <section class="intro-tab"> | 19 | <section class="intro-tab"> |
20 | - <div class="container"> | 20 | + <div class="container product Aview"> |
21 | <ul class="intro-tab-container"> | 21 | <ul class="intro-tab-container"> |
22 | <li class="tab-item-li" v-for="(item,index) in AviewData.data" :key="item"> | 22 | <li class="tab-item-li" v-for="(item,index) in AviewData.data" :key="item"> |
23 | <span :class="['tab-item','scroll-to-target',{'tab-item-active':tabActive==index}]" :data-target="'[data-type='+item.type+']'">{{item.title}}</span> | 23 | <span :class="['tab-item','scroll-to-target',{'tab-item-active':tabActive==index}]" :data-target="'[data-type='+item.type+']'">{{item.title}}</span> |
@@ -27,42 +27,54 @@ | @@ -27,42 +27,54 @@ | ||
27 | </section> | 27 | </section> |
28 | 28 | ||
29 | 29 | ||
30 | -<section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in AviewData.data" :key="item"> | 30 | +<section :class="['info-container','info-container-'+item.type, 'rel','pt-55', {'mb-50':item.type!='ability' && item.type!='characterP' && item.type!='advantage','pb-50':item.type=='characterP','all-height':item.type=='ability'}]" v-for="(item,index) in AviewData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | - <div class="container"> | ||
33 | - <h3 class="info-title">{{item.title}}</h3> | ||
34 | - <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | ||
35 | - <div class="row" v-if="item.data && item.data.length>0"> | ||
36 | - <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> | ||
37 | - <img class="pt-50" :src="itemC.icon" alt=""> | ||
38 | - <h4 class="pt-30">{{itemC.title}}</h4> | ||
39 | - <div class="info-character-intro">{{itemC.introduction}}</div> | 32 | + <div class="container product"> |
33 | + <div class="info-title">{{item.title}}</div> | ||
34 | + <div :class="['info-intro','mt-40',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | ||
35 | + <div :class="['row','pt-60',{'challenge-con':item.type=='challenge'}]" v-if="item.data && item.data.length>0"> | ||
36 | + <div :class="[ {'col-lg-4':item.type=='challenge','col-lg-3':item.type=='service','col-lg-service-3':item.type=='service','col-lg-6':item.type=='characterP','characterP-con':item.type=='characterP'}]" v-for="(itemC,indexC) in item.data"> | ||
37 | + <div :class="['info-character','info-'+item.type] "> | ||
38 | + <img v-if="itemC.icon" :class="[{'pt-50':item.type=='challenge'}]" :src="itemC.icon" alt=""> | ||
39 | + <div :class="[{'info-child-title':item.type=='service','info-child-title-character':item.type=='characterP','info-child-title-Heavy':item.type=='challenge', 'pt-40':item.type=='challenge', 'pt-20':item.type!='challenge'}]">{{itemC.title}}</div> | ||
40 | + <div :class="['info-character-intro', 'pt-30',{'info-child-intro-character':item.type=='characterP'}]" v-if="itemC.introduction">{{itemC.introduction}}</div> | ||
41 | + <div :class="['info-character-intro', {'pt-40':item.type=='challenge','pb-40':item.type=='challenge','pt-20':item.type!='challenge','info-child-intro':item.type=='service','info-child-intro-m':item.type=='challenge'}]" v-if="itemC.introData && itemC.introData.length>0"> | ||
42 | + <div :class="[{'intro-item':item.type=='challenge'}, 'text-center']" v-for="itemI in itemC.introData">{{itemI}}</div> | ||
43 | + </div> | ||
44 | + <div v-if="item.type=='challenge'" :class="['info-challenge-bg','info-challenge-bg-'+(indexC+1)]"></div> | ||
45 | + <div v-if="item.type=='characterP'" class="info-characterP-bg"></div> | ||
46 | + </div> | ||
47 | + | ||
40 | </div> | 48 | </div> |
41 | </div> | 49 | </div> |
42 | - <div class="info-system pt-30" v-if="item.img"> | 50 | + <div class="info-system pt-60" v-if="item.img"> |
43 | <img :src="item.img" alt=""> | 51 | <img :src="item.img" alt=""> |
44 | </div> | 52 | </div> |
45 | - <div class="row pt-30" v-if="item.dataSecond && item.dataSecond.length>0"> | ||
46 | - <div class="col-lg-4"> | ||
47 | - <div :class="['info-advantage',{'advantage-active':advantageActive==indexA}]" @mouseover="showHover(indexA)" @mouseleave="hideHover" v-for="(itemA,indexA) in item.dataSecond"> | ||
48 | - <img class="" :src="itemA.icon" alt=""> | ||
49 | - <div :class="['info-advantage-title']"> | ||
50 | - <div>{{itemA.title}}</div> | ||
51 | - <div class="advantage-title-intro" v-if="itemA.introduction && advantageActive==indexA && isMouseover">{{itemA.introduction}}</div> | 53 | + <div class="row mt-60 dataAbility-con" v-if="item.dataAbility && item.dataAbility.length>0"> |
54 | + <div class="col-lg-6 dataAbility-col" v-for="(itemD,indexD) in item.dataAbility"> | ||
55 | + <div class="dataAbility-item"> | ||
56 | + <div class="dataAbility-item-title">{{itemD.title}}</div> | ||
57 | + <div class="dataAbility-item-intro pt-20"> | ||
58 | + <div class="dataAbility-item-intro-item" v-for="(itemI,indexI) in itemD.introData">{{itemI}}</div> | ||
52 | </div> | 59 | </div> |
53 | </div> | 60 | </div> |
54 | </div> | 61 | </div> |
55 | - <div class="col-lg-8"> | ||
56 | - <img :src="advantageImg" alt=""> | 62 | + <div class="dataAbility-bg" v-if="item.type=='ability'"></div> |
63 | + <div class="dataAbility-bg-logo"> | ||
64 | + <img :src="item.icon" alt=""> | ||
65 | + <div class="logo-title pt-20">{{item.subTitle}}</div> | ||
57 | </div> | 66 | </div> |
58 | </div> | 67 | </div> |
59 | - <div class="row pt-30" v-if="item.dataThird && item.dataThird.length>0"> | ||
60 | - <div class="col-lg-4" v-for="(itemV,indexV) in item.dataThird"> | ||
61 | - <div class="info-value" > | ||
62 | - <img class="" :src="itemV.img" alt=""> | ||
63 | - <div :class="['info-value-title']"> | ||
64 | - <h3>{{itemV.title}}</h3> | ||
65 | - <div>{{itemV.introduction}}</div> | 68 | + |
69 | + </div> | ||
70 | + <div class="mt-30 Aview-con" v-if="item.dataThird && item.dataThird.length>0"> | ||
71 | + <div class="row Aview-container"> | ||
72 | + <div class="col-lg-4 Aview-advantage-con" v-for="(itemV,indexV) in item.dataThird"> | ||
73 | + <div class="info-value pro-advantage-style pb-50" > | ||
74 | + <div :class="['pro-info-title']"> | ||
75 | + <div class=" advantage-title-Aview">{{itemV.title}}</div> | ||
76 | + <ul class="pro-advantage-ul pt-30 advantage-intro-Aview"><li v-for="(itemP,indexP) in itemV.dataIntro">{{itemP}}</li></ul> | ||
77 | + <div class="maintenance-advantage-num pt-50 pb-60">0{{indexV+1}}</div> | ||
66 | </div> | 78 | </div> |
67 | </div> | 79 | </div> |
68 | 80 | ||
@@ -70,6 +82,21 @@ | @@ -70,6 +82,21 @@ | ||
70 | </div> | 82 | </div> |
71 | 83 | ||
72 | </div> | 84 | </div> |
85 | + <div class=" Aview-con" v-if="item.dataThirdA && item.dataThirdA.length>0"> | ||
86 | + <div class="row Aview-container"> | ||
87 | + <div class="col-lg-4 Aview-advantage-con" v-for="(itemV,indexV) in item.dataThirdA"> | ||
88 | + <div class="info-value pro-advantage-style pb-50" > | ||
89 | + <div :class="['pro-info-title']"> | ||
90 | + <div class=" advantage-title-Aview">{{itemV.title}}</div> | ||
91 | + <ul class="pro-advantage-ul pt-30 advantage-intro-Aview"><li v-for="(itemP,indexP) in itemV.dataIntro">{{itemP}}</li></ul> | ||
92 | + <div class="maintenance-advantage-num pt-50 pb-60">0{{indexV+3}}</div> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + </div> | ||
97 | + </div> | ||
98 | + <div class="Aview-advantage-bg" v-if="item.type=='advantage'"></div> | ||
99 | + <div v-if="item.type=='challenge' || item.type=='characterP'" :class="['info-container-bg','info-container-bg-Aview', {'info-container-bg-challenge':item.type=='challenge'}]"></div> | ||
73 | </section> | 100 | </section> |
74 | 101 | ||
75 | 102 |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container','alarm-info-container', 'rel', {'mb-70': item.type=='lifeCycle' || item.type=='inclusive'}, 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in alarmData.data" :key="item"> | 30 | <section :class="['info-container','alarm-info-container', 'rel', {'mb-70': item.type=='lifeCycle' || item.type=='inclusive'}, 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in alarmData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type" ></div> | 31 | <div class="div-type" :data-type="item.type" ></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
35 | <div class="info-system pt-30" v-if="item.img"> | 35 | <div class="info-system pt-30" v-if="item.img"> |
36 | <img :src="item.img" alt=""> | 36 | <img :src="item.img" alt=""> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container', 'rel', 'pt-55',{'info-container-bg':item.type=='character','pb-50':item.type=='value'}]" v-for="(item,index) in businessAppData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', 'pt-55',{'info-container-bg':item.type=='character','pb-50':item.type=='value'}]" v-for="(item,index) in businessAppData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction && !item.subTitle">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction && !item.subTitle">{{item.introduction}}</div> |
35 | <div class="row" v-if="item.subTitle"> | 35 | <div class="row" v-if="item.subTitle"> |
36 | <div class="col-lg-6 pd-40"> | 36 | <div class="col-lg-6 pd-40"> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in cloudData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in cloudData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
35 | <div class="row" v-if="item.data && item.data.length>0"> | 35 | <div class="row" v-if="item.data && item.data.length>0"> |
36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> | 36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in cmdbData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in cmdbData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
35 | <div class="row" v-if="item.data && item.data.length>0"> | 35 | <div class="row" v-if="item.data && item.data.length>0"> |
36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> | 36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in InformationData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', 'mb-70', 'pt-55',{'info-container-bg':item.type=='advantage'}]" v-for="(item,index) in InformationData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
35 | <div class="row" v-if="item.data && item.data.length>0"> | 35 | <div class="row" v-if="item.data && item.data.length>0"> |
36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> | 36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> |
@@ -29,7 +29,7 @@ | @@ -29,7 +29,7 @@ | ||
29 | 29 | ||
30 | <section :class="['info-container', 'rel', {'mb-70':item.type=='system'||item.type=='problems' ||item.type=='character'}, 'pt-55']" v-for="(item,index) in maintenanceData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', {'mb-70':item.type=='system'||item.type=='problems' ||item.type=='character'}, 'pt-55']" v-for="(item,index) in maintenanceData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | - <h3 v-if="item.type=='advantage'" :class="['info-title','pb-40','maintenance-advantage',{'color-white':item.type=='advantage'}]">{{item.title}}</h3> | 32 | + <div v-if="item.type=='advantage'" :class="['info-title','pb-40','maintenance-advantage',{'color-white':item.type=='advantage'}]">{{item.title}}</div> |
33 | <div class="container"> | 33 | <div class="container"> |
34 | <h3 v-if="item.type!='advantage'" :class="['info-title']">{{item.title}}</h3> | 34 | <h3 v-if="item.type!='advantage'" :class="['info-title']">{{item.title}}</h3> |
35 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 35 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | <section :class="['info-container', 'rel', {'mb-70':item.type=='system'}, 'pt-55',{'info-container-bg':item.type=='character','pb-50':item.type=='value'}]" v-for="(item,index) in securityLogData.data" :key="item"> | 30 | <section :class="['info-container', 'rel', {'mb-70':item.type=='system'}, 'pt-55',{'info-container-bg':item.type=='character','pb-50':item.type=='value'}]" v-for="(item,index) in securityLogData.data" :key="item"> |
31 | <div class="div-type" :data-type="item.type"></div> | 31 | <div class="div-type" :data-type="item.type"></div> |
32 | <div class="container"> | 32 | <div class="container"> |
33 | - <h3 class="info-title">{{item.title}}</h3> | 33 | + <div class="info-title">{{item.title}}</div> |
34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> | 34 | <div :class="['info-intro',{'text-align-center':item.type=='system' || item.type=='value'},{'max-width-600':item.type=='value'}]" v-if="item.introduction">{{item.introduction}}</div> |
35 | <div class="row" v-if="item.data && item.data.length>0"> | 35 | <div class="row" v-if="item.data && item.data.length>0"> |
36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> | 36 | <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data"> |
-
Please register or login to post a comment