Authored by xwx

Merge branch 'master-500-dev' of http://113.200.75.45:82/monitor_v3/hg-monitor-w…

…eb into master-500-dev-xwx
Showing 30 changed files with 443 additions and 9 deletions
@@ -1652,7 +1652,7 @@ blockquote:before { @@ -1652,7 +1652,7 @@ blockquote:before {
1652 1652
1653 .footer-section { 1653 .footer-section {
1654 position: relative; 1654 position: relative;
1655 - background:#f4f2ff; 1655 + background:#242933;
1656 } 1656 }
1657 1657
1658 1658
@@ -1695,24 +1695,25 @@ blockquote:before { @@ -1695,24 +1695,25 @@ blockquote:before {
1695 } 1695 }
1696 1696
1697 .footer-widget.links-widget li a { 1697 .footer-widget.links-widget li a {
1698 - color: #848484; 1698 + color: #ffffff;
1699 margin-bottom: 10px; 1699 margin-bottom: 10px;
1700 display: inline-block; 1700 display: inline-block;
1701 text-transform: capitalize; 1701 text-transform: capitalize;
1702 transition: .5s; 1702 transition: .5s;
1703 } 1703 }
1704 .footer-widget.links-widget li a:hover{ 1704 .footer-widget.links-widget li a:hover{
1705 - color: #1C00AF; 1705 + color: #e43730;
1706 transition: .5s; 1706 transition: .5s;
1707 } 1707 }
1708 /*office info widget*/ 1708 /*office info widget*/
1709 .office-info li { 1709 .office-info li {
1710 display: flex; 1710 display: flex;
1711 margin-bottom: 8px; 1711 margin-bottom: 8px;
  1712 + color:#fff;
1712 } 1713 }
1713 1714
1714 .office-info li i { 1715 .office-info li i {
1715 - color: #1C00AF; 1716 + color: #ffffff;
1716 font-size: 18px; 1717 font-size: 18px;
1717 margin-right: 20px; 1718 margin-right: 20px;
1718 } 1719 }
@@ -1946,6 +1947,7 @@ blockquote:before { @@ -1946,6 +1947,7 @@ blockquote:before {
1946 display: -webkit-box; 1947 display: -webkit-box;
1947 -webkit-line-clamp: 1; 1948 -webkit-line-clamp: 1;
1948 -webkit-box-orient: vertical; 1949 -webkit-box-orient: vertical;
  1950 + font-size: 12px;
1949 } 1951 }
1950 .height-50{ 1952 .height-50{
1951 height: 50px; 1953 height: 50px;
@@ -2056,5 +2058,65 @@ blockquote:before { @@ -2056,5 +2058,65 @@ blockquote:before {
2056 padding:40px; 2058 padding:40px;
2057 } 2059 }
2058 .pd-20{ 2060 .pd-20{
  2061 + padding:20px;
  2062 +}
  2063 +.pro-item{
  2064 + position: relative;
  2065 +}
  2066 +.pro-item-content{
  2067 + position: absolute;
  2068 + top:0;
  2069 + left:0;
  2070 + padding: 40px 90px;
  2071 + height: 100%;
  2072 + color: #fff;
  2073 + display: flex;
  2074 + align-items: center;
  2075 +}
  2076 +.pro-advantage{
  2077 + background: url("../img/serviceSecond/maintenance/advantage-bg.png");
  2078 + background-size: cover;
  2079 + position: absolute;
  2080 + height: 100%;
  2081 + width: 100%;
  2082 + left: 0;
  2083 + top: 0;
  2084 + z-index: -1;
  2085 +}
  2086 +.pro-info-title{
  2087 + color:#fff;
  2088 +}
  2089 +.pro-advantage-style{
  2090 + border-right:1px solid #525a6a;
  2091 + padding:50px 20px 0;
  2092 +}
  2093 +.maintenance-advantage-item:last-child .pro-advantage-style{
  2094 + border-right: none;
  2095 +}
  2096 +.pro-advantage-ul{
  2097 + font-size: 14px;
  2098 +}
  2099 +.pro-advantage-ul li{
  2100 + padding:5px 0;
  2101 +}
  2102 +.maintenance-advantage{
  2103 + border-bottom:1px solid #525a6a;
  2104 + margin-bottom: 0;
  2105 +}
  2106 +.maintenance-advantage-num{
  2107 + font-size: 90px;
  2108 + color:#2d3340;
  2109 +}
  2110 +.maintenance-line{
  2111 + border-top:1px solid #525a6a;
  2112 + width:100%;
  2113 +}
  2114 +.footer-widget h4{
  2115 + color:#fff;
  2116 +}
  2117 +.dot-item-title{
  2118 + font-size: 14px;
2059 2119
  2120 + font-weight: bold;
2060 } 2121 }
  2122 +
No preview for this file type
@@ -269,4 +269,117 @@ export function businessApp () { @@ -269,4 +269,117 @@ export function businessApp () {
269 } 269 }
270 270
271 return res 271 return res
  272 +}
  273 +export function maintenance() {
  274 + let res={
  275 + title:'魔镜智能运维管理一体机',
  276 + introduction:'智能运维服务一体机提供数据中心各类计算存储设备、网络安全设备、虚拟化/云平台、数据库、中间件、容器、微服务、Hadoop 业务应用等设备进行实时采集、实时分析、异常报警、集中存储和事后分析功能,具备全南的监控分析能力。帮助用户有效降低系统故障,降任运维成本及管理的复杂度,异著提高系统格体的安全性,可靠性和运行效率,保障设备7x24小时正常、持续、稳定运行。',
  277 + data:[
  278 + {
  279 + title:'产品信息',
  280 + introduction:'智能运维服务一体机提供数据中心各类计算存储设备、网络安全设备、虚拟化/云平台、数据库、中间件、容器、微服务、Hadoop 业务应用等设备进行实时采集、实时分析、异常报警、集中存储和事后分析功能,具备全南的监控分析能力。帮助用户有效降低系统故障,降任运维成本及管理的复杂度,异著提高系统格体的安全性,可靠性和运行效率,保障设备7x24小时正常、持续、稳定运行。',
  281 + type:'info',
  282 + img:'assets/img/serviceSecond/maintenance/info.png'
  283 + },
  284 + {
  285 + title:'问题与挑战',
  286 + introduction:'',
  287 + dataPro:[
  288 + {
  289 + introduction:'运维数据种类多,规模大,标准化程度低且质量不高,数据管理和应用缺乏统一的管控工具',
  290 + img:'assets/img/serviceSecond/maintenance/problems-1.png'
  291 + },
  292 + {
  293 + introduction:'缺乏预警机制,当故障被发现时,用户体验已受到极大影响',
  294 + img:'assets/img/serviceSecond/maintenance/problems-2.png'
  295 + },
  296 + {
  297 + introduction:'系统故障根因定位困难,"主要依靠专家经验或手工分析,耗时费力,无法快速判定故障点',
  298 + img:'assets/img/serviceSecond/maintenance/problems-3.png'
  299 + },
  300 + {
  301 + introduction:'如何确保IT资产在业务应用中从始至终得到很好的管理和服务?',
  302 + img:'assets/img/serviceSecond/maintenance/problems-4.png'
  303 + }
  304 + ],
  305 + type:'problems'
  306 + },
  307 + {
  308 + title:'产品特点',
  309 + introduction:'',
  310 + dataFour:[
  311 + {
  312 + img:'assets/img/serviceSecond/maintenance/character-1.png',
  313 + title:'动态关联IT与业务',
  314 + introduction:'从业务视角出发,将不同维度的IT资源关联整合,以简洁易懂的界面呈现业务与资源的关联关系。广泛的资源监控能力,任何影响业务的因素都及时体现,使IT运维效率得到大幅提升。',
  315 + isDisplay:true
  316 + },
  317 + {
  318 + img:'assets/img/serviceSecond/maintenance/character-2.png',
  319 + title:'业务健康随时掌控',
  320 + introduction:'预置业务运维综合评价机制,基于“繁忙度”“健康度”“可用性”等多维度的业务性能监控指标,以业务运维状态卡片的方式直观展现业务状态,确保业务的正常运行。',
  321 + isDisplay:true
  322 + },
  323 + {
  324 + img:'assets/img/serviceSecond/maintenance/character-3.png',
  325 + title:'故障根因分析溯源',
  326 + introduction:'业务系统出现故障时,根据实际业务服务模型,通过业务视图与IT资源间的关联性,实时映射基础设施监控(IM)中影响服务的告警事件,准确定位故障根源、快速恢复业务,并可设置优先级.',
  327 + isDisplay:true
  328 + },
  329 + {
  330 + img:'assets/img/serviceSecond/maintenance/character-4.png',
  331 + title:'智能告警中心',
  332 + introduction:'实现现有的多种告警源的通知方式及工单系统进行联动,实现统一接入、分级展示、告警降噪、告警处理、告警推送、告警关闭这一系列告警事件的闭环管理,支持告警升/降级,根据故障影响范围和终端用户判定处理优先级。',
  333 + isDisplay:true
  334 + },
  335 + {
  336 + img:'assets/img/serviceSecond/maintenance/character-5.png',
  337 + title:'提供IT规划参考依据',
  338 + introduction:'提供的业务负载情况及增长趋势曲线,可以对IT资源与业务情况进行评估,定位系统性能瓶颈和容量预警,为管理者提供扩容建议和参考,为IT投资提供量化依据。',
  339 + isDisplay:true
  340 + },
  341 + {
  342 + img:'assets/img/serviceSecond/maintenance/character-6.png',
  343 + title:'低代码开发技术设计,实现可视化服务编排',
  344 + introduction:'提供低代码开发、降低使用门槛,运维人员不必重新构建基础工具,利用平台能力随需进行快速轻量级开发。支持多语言框架,包括但不限于Python、Java、shell、perl等语言,提供可拖拽式前端开发工具,实现前端布局可视化。提供自动化编译、构建、部署、执行等操作,实现自动部署,集成统一登录、WEB 安全防护模块、功能组件模块等通用模块。',
  345 + isDisplay:true
  346 + },
  347 + {
  348 + img:'assets/img/serviceSecond/maintenance/character-7.png',
  349 + title:'形成以面向业务场景为驱动的服务型CMDB',
  350 + introduction:'构建符合云架构、智能监控、自动化运维的轻量级CMDB,并形成数据中心枢纽,支持多种业务场景,比如资产管理、资源可视化、运维监控、自动化运维、多云管理等等。',
  351 + isDisplay:true
  352 + },
  353 + {
  354 + img:'assets/img/serviceSecond/maintenance/character-8.png',
  355 + title:'丰富的分析算法 拖拽式算法模型 对运维数据应用提供了无限可能',
  356 + introduction:'提供AI算法涵盖聚类、分类、回归、自然语言处理、时间序列、关联、综合评价、推荐等8大类机器学习算法。用户基干这些算法构建模型,从而开展深度数据分析,发掘蕴藏在业务数据中价值。算法分析提供了拖拽式可视化的建模功能,让用户可以通过拖拽的方式搭建机器学习实验。根据算法的不同特点选用Spark、Python等不同框架进行实现,真正做到成熟、稳定、简单、易用。',
  357 + isDisplay:true
  358 + }
  359 + ],
  360 + type:'character'
  361 + },
  362 + {
  363 + title:'产品优势',
  364 + introduction:'',
  365 + dataThird:[
  366 + {
  367 + title:'便捷',
  368 + dataIntro:['硬件一体化,快速部署','监控对象灵活添加','丰富灵活的报表报告','个性化的首页展示']
  369 + },
  370 + {
  371 + title:'适应',
  372 + dataIntro:['分布式数据信息采集','全面支持各类监控设备','大数据分析处理','灵活的系统配置']
  373 + },
  374 + {
  375 + title:'智能',
  376 + dataIntro:['建立关联分析引擎','智能精准告警、分级告警','容量智能监测、分析','自动化的运维处理']
  377 + }
  378 + ],
  379 + type:'advantage'
  380 + },
  381 + ]
  382 + }
  383 +
  384 + return res
272 } 385 }
@@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
104 <!--==================================================================== 104 <!--====================================================================
105 Start footer section 105 Start footer section
106 =====================================================================--> 106 =====================================================================-->
107 - <footer class="footer-section mt-125 pt-100"> 107 + <footer class="footer-section pt-100">
108 <div class="container"> 108 <div class="container">
109 109
110 <div class="row"> 110 <div class="row">
@@ -116,7 +116,7 @@ @@ -116,7 +116,7 @@
116 <div class="col-sm-4"> 116 <div class="col-sm-4">
117 <div class="footer-widget logo-widget mr-35"> 117 <div class="footer-widget logo-widget mr-35">
118 <div class="footer-logo"> 118 <div class="footer-logo">
119 - <router-link to="/"><img src="assets/img/logo.png" alt="" title=""></router-link> 119 + <router-link to="/"><img src="assets/img/logo-footer.png" alt="" title=""></router-link>
120 </div> 120 </div>
121 <div class="widget-content"> 121 <div class="widget-content">
122 <div class="footer-social-icon mt-20 text-center"> 122 <div class="footer-social-icon mt-20 text-center">
@@ -37,6 +37,12 @@ const routes = [ @@ -37,6 +37,12 @@ const routes = [
37 name: 'businessApp', 37 name: 'businessApp',
38 component: () => myImport('views/serviceSecond/businessApp/index') 38 component: () => myImport('views/serviceSecond/businessApp/index')
39 }, 39 },
  40 + //魔镜智能运维管理一体机
  41 + {
  42 + path: '/services/maintenance',
  43 + name: 'maintenance',
  44 + component: () => myImport('views/serviceSecond/maintenance/index')
  45 + },
40 ]; 46 ];
41 47
42 const router = VueRouter.createRouter({ 48 const router = VueRouter.createRouter({
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 </section> 28 </section>
29 29
30 30
31 -<section :class="['info-container', 'rel', 'pt-55',{'info-container-bg':item.type=='character'}]" v-for="(item,index) in businessAppData.data" :key="item"> 31 +<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">
32 <div class="div-type" :data-type="item.type"></div> 32 <div class="div-type" :data-type="item.type"></div>
33 <div class="container"> 33 <div class="container">
34 <h3 class="info-title">{{item.title}}</h3> 34 <h3 class="info-title">{{item.title}}</h3>
  1 +<section class="hero-section rel rpt-150 pb-130 rpb-0">
  2 + <div class="shape shapeAnimationOne l-10 t-60">
  3 + <img src="assets/img/shapes/shape1.png" alt="Shape">
  4 + </div>
  5 +</section>
  6 +
  7 +
  8 +<section class="intro-Con rel rpt-150 rpb-0 text-left" >
  9 + <img src="assets/img/serviceSecond/serviceSecond.jpg" alt="Shape">
  10 + <div class="container banner-container">
  11 + <div class="row banner-height">
  12 + <div class="banner-introduction color-white col-lg-6">
  13 + <h2 class="intro-title color-white">{{maintenanceData.title}}</h2>
  14 + <span class="intro-intro">{{maintenanceData.introduction}}</span>
  15 + </div>
  16 + </div>
  17 + </div>
  18 +
  19 +</section>
  20 +<section class="intro-tab">
  21 + <div class="container">
  22 + <ul class="intro-tab-container nav nav-pills">
  23 + <li class="col-lg-2" v-for="(item,index) in maintenanceData.data" :key="item">
  24 + <span :class="['tab-item',{'tab-item-active':tabActive==index}]" @click="goItemType(item.type)" >{{item.title}}</span>
  25 + </li>
  26 + </ul>
  27 + </div>
  28 +</section>
  29 +
  30 +
  31 +<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">
  32 + <div class="div-type" :data-type="item.type"></div>
  33 + <h3 v-if="item.type=='advantage'" :class="['info-title','pb-40','maintenance-advantage',{'color-white':item.type=='advantage'}]">{{item.title}}</h3>
  34 + <div class="container">
  35 + <h3 v-if="item.type!='advantage'" :class="['info-title']">{{item.title}}</h3>
  36 + <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>
  37 + <div class="row" v-if="item.data && item.data.length>0">
  38 + <div class="info-character col-md-4" v-for="(itemC,indexC) in item.data">
  39 + <img class="pt-50" :src="itemC.icon" alt="">
  40 + <h4 class="pt-30">{{itemC.title}}</h4>
  41 + <div class="info-character-intro">{{itemC.introduction}}</div>
  42 + </div>
  43 + </div>
  44 + <div class="info-system pt-30 text-center" v-if="item.img">
  45 + <img :src="item.img" alt="">
  46 + </div>
  47 + <div class="row pd-40 " v-if="item.dataPro && item.dataPro.length>0">
  48 + <div class="col-lg-6 pt-30" v-for="(itemP,indexP) in item.dataPro">
  49 + <div class="pro-item">
  50 + <img :src="itemP.img" alt="">
  51 + <div class="pro-item-content">{{itemP.introduction}}</div>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <div :class="[{'pro-advantage':item.type=='advantage'}]"></div>
  56 + <div class="row pt-30" v-if="item.dataFour && item.dataFour.length>0">
  57 + <div class="row-top row" v-for="(itemC,indexC) in item.dataFour" >
  58 + <div class="col-lg-6" v-if="indexC==characterActive">
  59 + <img class="" :src="itemC.img" alt="">
  60 + </div>
  61 + <div class="col-lg-6 flex-column-center " v-if="indexC==characterActive">
  62 + <h3>{{itemC.title}}</h3>
  63 + <div class="pt-30">{{itemC.introduction}}</div>
  64 + </div>
  65 + </div>
  66 + <div class="row-bottom row pt-30">
  67 + <i class="iconCharacter icon-left" @click="prev(item.dataFour.length)"></i>
  68 + <div class="dot-container row">
  69 + <div @click="changeCharacter(indexC)" :class="['dot-item', 'col-lg-4', {'dot-item-active':indexC==characterActive,'div-hide':!itemC.isDisplay}]" v-for="(itemC,indexC) in item.dataFour">
  70 + <div class="dot-item-title" v-if="itemC.isDisplay">{{itemC.title}}</div>
  71 + <div class="dot-item-intro" v-if="itemC.isDisplay">{{itemC.introduction}}</div>
  72 + </div>
  73 + </div>
  74 + <i class="iconCharacter icon-right" @click="next(item.dataFour.length)"></i>
  75 + </div>
  76 + </div>
  77 + <div class="row" v-if="item.dataThird && item.dataThird.length>0">
  78 + <div class="col-lg-4 maintenance-advantage-item" v-for="(itemV,indexV) in item.dataThird">
  79 + <div class="info-value pro-advantage-style pb-50" >
  80 + <div :class="['pro-info-title']">
  81 + <h4 class="color-white">{{itemV.title}}</h4>
  82 + <ul class="pro-advantage-ul pt-30"><li v-for="(itemP,indexP) in itemV.dataIntro">{{itemP}}</li></ul>
  83 + <div class="maintenance-advantage-num pt-100 pb-80">0{{indexV+1}}</div>
  84 + </div>
  85 + </div>
  86 +
  87 + </div>
  88 + </div>
  89 + </div>
  90 + <div v-if="item.type=='advantage'" class="maintenance-line pb-80"></div>
  91 +</section>
  92 +
  93 +
  94 +
  1 +import pageInit from "../../../minixs/pageInit.js";
  2 +import {maintenance} from "../../../../assets/img/data/serviceSecond.js";
  3 +export default {
  4 + name: 'maintenance',
  5 + template: '',
  6 + mixins:[pageInit],
  7 + components: {},
  8 + props: [],
  9 + setup(props, {attrs, slots, emit}) {
  10 + let maintenanceData=maintenance();
  11 + //页签高亮显示
  12 + let tabActive=Vue.ref(0);
  13 + //特点hover显示的图片
  14 + let characterImg=Vue.ref();
  15 + let setcharacter=()=>{
  16 + if(maintenanceData.data && maintenanceData.data.length>0){
  17 + maintenanceData.data.map(item=>{
  18 + if(item.type=='character'){
  19 + characterImg.value=item.dataFour[0].img;
  20 + }
  21 +
  22 +
  23 + })
  24 + }
  25 + }
  26 + setcharacter();
  27 + //优势hover高亮显示
  28 + let characterActive=Vue.ref(0);
  29 +
  30 + //页签点击跳转到对应的目标
  31 + let goItemType=(type)=>{
  32 + let top=$("[data-type='"+type+"']").offset().top;
  33 + let total=top-100;
  34 + let distance = document.documentElement.scrollTop || document.body.scrollTop
  35 + //计算每一小段的距离
  36 + let step=total/6;
  37 + (function smoothDown (){
  38 + if(distance < total){
  39 + distance += step;
  40 + //移动一小段
  41 + document.body.scrollTop =distance;
  42 + document.documentElement.scrollTop = distance;
  43 + //设定每一次跳到的时间间隔为10ms
  44 + setTimeout(smoothDown,10)
  45 + }else{
  46 + //限制股东停止的距离
  47 + document.body.scrollTop = total;
  48 + document.documentElement.scrollTop = total;
  49 + }
  50 + })()
  51 + }
  52 + //特点的事件
  53 + let prev=(dataLength)=>{
  54 + if(characterActive.value>0){
  55 + characterActive.value--
  56 + if(characterActive.value == 0 || characterActive.value+1==dataLength-6){
  57 + setDisplay();
  58 + }else if(characterActive.value+1==dataLength-3 ){
  59 + changeDot(dataLength,2);
  60 + }
  61 + }else if(characterActive.value == 0){
  62 + characterActive.value=dataLength-1
  63 + changeDot(dataLength,1);
  64 + }
  65 + }
  66 + let next=(dataLength)=>{
  67 + if((characterActive.value+1)!=dataLength) {
  68 + characterActive.value++
  69 + }else{
  70 + characterActive.value=0;
  71 + }
  72 + changeDot(dataLength);
  73 + }
  74 + let changeCharacter=(indexC)=>{
  75 + characterActive.value=indexC;
  76 + }
  77 + //特点左右点击切换
  78 + let changeDot=(dataLength,flag)=>{
  79 + if(flag==1){
  80 + //当前为第一个时向前点击
  81 + maintenanceData.data.map((item,index)=>{
  82 + if(item.type == 'character'){
  83 + item.dataFour.map((v,i)=>{
  84 + if(i>characterActive.value-3){
  85 + v.isDisplay=true;
  86 + }else{
  87 + v.isDisplay=false;
  88 + }
  89 + })
  90 + }
  91 + })
  92 + }else if(flag==2){
  93 + //向前点击
  94 + maintenanceData.data.map((item,index)=>{
  95 + if(item.type == 'character'){
  96 + item.dataFour.map((v,i)=>{
  97 + if(i>characterActive.value-3 && i<=characterActive.value){
  98 + v.isDisplay=true;
  99 + }else{
  100 + v.isDisplay=false;
  101 + }
  102 + })
  103 + }
  104 + })
  105 + }else{
  106 + if(characterActive.value>2 && characterActive.value<dataLength){
  107 + if(maintenanceData.data && maintenanceData.data.length>0){
  108 + maintenanceData.data.map((item,index)=>{
  109 + if(item.type == 'character'){
  110 + item.dataFour[characterActive.value-3].isDisplay=false;
  111 + }
  112 + })
  113 + }
  114 + }else{
  115 + setDisplay();
  116 + }
  117 + }
  118 +
  119 + }
  120 + //设置特点dot全部显示
  121 + let setDisplay=(flag)=>{
  122 + if(maintenanceData.data && maintenanceData.data.length>0){
  123 + if(flag==1){
  124 +
  125 + }else{
  126 + maintenanceData.data.map((item,index)=>{
  127 + if(item.type == 'character'){
  128 + item.dataFour.map(v=>{
  129 + v.isDisplay=true;
  130 + })
  131 + }
  132 + })
  133 + }
  134 +
  135 + }
  136 + }
  137 + // 挂载完
  138 + Vue.onMounted(() => {
  139 +
  140 + })
  141 +
  142 + return {
  143 + characterImg,
  144 + maintenanceData,
  145 + tabActive,
  146 + characterActive,
  147 + setcharacter,
  148 + goItemType,
  149 + prev,
  150 + next,
  151 + changeCharacter,
  152 + changeDot,
  153 + setDisplay
  154 + }
  155 + }
  156 +
  157 +}
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 </section> 28 </section>
29 29
30 30
31 -<section :class="['info-container', 'rel', {'mb-70':item.type=='system'}, 'pt-55',{'info-container-bg':item.type=='character'}]" v-for="(item,index) in securityLogData.data" :key="item"> 31 +<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">
32 <div class="div-type" :data-type="item.type"></div> 32 <div class="div-type" :data-type="item.type"></div>
33 <div class="container"> 33 <div class="container">
34 <h3 class="info-title">{{item.title}}</h3> 34 <h3 class="info-title">{{item.title}}</h3>
@@ -206,7 +206,7 @@ @@ -206,7 +206,7 @@
206 </ol> 206 </ol>
207 </div> 207 </div>
208 </div> 208 </div>
209 - <div class="col-lg-6"> 209 + <div class="col-lg-6" @click="jumpSecond('maintenance')">
210 <div class="service-left-image wow customFadeInLeft delay-0-1s slow"> 210 <div class="service-left-image wow customFadeInLeft delay-0-1s slow">
211 <img src="assets/img/services/p7.png" style="border-radius: 10px;"> 211 <img src="assets/img/services/p7.png" style="border-radius: 10px;">
212 </div> 212 </div>
@@ -14,6 +14,8 @@ export default { @@ -14,6 +14,8 @@ export default {
14 proxy.$router.push({path:'/services/securityLog'}) 14 proxy.$router.push({path:'/services/securityLog'})
15 }else if(type == 'business'){ 15 }else if(type == 'business'){
16 proxy.$router.push({path:'/services/businessApp'}) 16 proxy.$router.push({path:'/services/businessApp'})
  17 + }else if(type == 'maintenance'){
  18 + proxy.$router.push({path:'/services/maintenance'})
17 } 19 }
18 } 20 }
19 return { 21 return {