fix:优化首页缩放的问题 以及画布多次加载的问题

This commit is contained in:
zhangyu
2021-02-22 14:38:11 +08:00
parent 607469ef64
commit 0f27b0223c
3 changed files with 335 additions and 183 deletions

View File

@@ -666,7 +666,7 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- 选中为空 --> <!-- 选中为空 -->
<div v-if="!selection.pen && !selection.pens"> <div v-if="!selection.pen && !selection.pens" style="height: 100%">
<div class="project-title"> <div class="project-title">
Project Project
</div> </div>

View File

@@ -181,18 +181,23 @@
<button @click="editTopology" class="nz-btn nz-btn-size-normal nz-btn-style-light float-right pickTime" <button @click="editTopology" class="nz-btn nz-btn-size-normal nz-btn-style-light float-right"
style="border-right: 1px solid rgba(162,162,162,0.50);margin-right: 12px" type="button" style="border-right: 1px solid rgba(162,162,162,0.50);margin-right: 12px" type="button"
> >
<i class="nz-icon nz-icon-edit" :title="$t('project.topology.edit')"></i> <i class="nz-icon nz-icon-edit" :title="$t('project.topology.edit')"></i>
</button> </button>
<pick-time v-show="!editTopologyFlag" :showTimePicker="false" class="float-right pickTime" <pick-time
:refresh-data-func="reload" v-model="searchTime" :use-chart-unit="false" v-show="!editTopologyFlag"
ref="pickTime"></pick-time> class="float-right pickTime"
:refresh-data-func="dateChange"
v-model="searchTime"
:use-chart-unit="false"
ref="pickTime">
</pick-time>
</span> </span>
</div> </div>
</div> </div>
<div class="page"> <div :class="['page',fromOverView?'overview-page':'']">
<!--画布部分--> <!--画布部分-->
<div :id="'topology-canvas' + topologyIndexF" class="full" :ref="'topology-canvas'+ topologyIndexF"></div> <div :id="'topology-canvas' + topologyIndexF" class="full" :ref="'topology-canvas'+ topologyIndexF"></div>
<!--设置属性--> <!--设置属性-->
@@ -209,7 +214,7 @@
</div> </div>
<!--所有节点上的小图标--> <!--所有节点上的小图标-->
<div v-for="(item,index) in nodesArr" <div v-for="(item,index) in nodesArr"
:style="{position: 'absolute',top:item.rect.y - 48+'px',left:item.rect.center.x - 24 +'px'}" :style="{position: 'absolute',top:item.rect.y - (48*(fromOverView?penToolTipScale:1))+'px',left:item.rect.center.x - (24*(fromOverView?penToolTipScale:1)) +'px',transform:'scale('+(fromOverView?penToolTipScale:1)+')'}"
v-if="!editTopologyFlag&&item.data.iconToolState&&!fromPrev" v-if="!editTopologyFlag&&item.data.iconToolState&&!fromPrev"
class="network-pop" class="network-pop"
> >
@@ -347,6 +352,7 @@
translateKey:'None', translateKey:'None',
disableEmptyLine:true, disableEmptyLine:true,
autoExpandDistance:0, autoExpandDistance:0,
minScale:0.01,
}; };
let canvas; let canvas;
export default { export default {
@@ -381,7 +387,7 @@
saveData:{}, saveData:{},
dataLength:0, dataLength:0,
editTopologyFlag:false, editTopologyFlag:false,
searchTime:{}, searchTime: bus.getTimezontDateRange(),
activeNames:[], activeNames:[],
topologyIndex:0, topologyIndex:0,
iconArray:[], iconArray:[],
@@ -460,6 +466,7 @@
projectAlertShow:false, projectAlertShow:false,
previewShow:false, previewShow:false,
penId:undefined, penId:undefined,
penToolTipScale:1,
}; };
}, },
components:{ components:{
@@ -505,7 +512,6 @@
immediate:true, immediate:true,
handler(n){ handler(n){
this.topologyIndex=n; this.topologyIndex=n;
console.log(n,this.fromPrev);
} }
}, },
obj:{ obj:{
@@ -580,9 +586,11 @@
} }
}, },
created(){ created(){
this.addNodeInit();
}, },
mounted(){ mounted(){
if(!this.fromOverView){//从overview来的 加载相应图片 优化首页加载速度
this.addNodeInit();
}
document.getElementById('topology-canvas'+this.topologyIndexF).addEventListener('mousemove',this.canvasMove); document.getElementById('topology-canvas'+this.topologyIndexF).addEventListener('mousemove',this.canvasMove);
window.addEventListener('resize',this.winResize) window.addEventListener('resize',this.winResize)
}, },
@@ -628,41 +636,39 @@
getTopology(this.topologyIndex).open(data); getTopology(this.topologyIndex).open(data);
getTopology(this.topologyIndex).lock(1); getTopology(this.topologyIndex).lock(1);
this.objChange=false; this.objChange=false;
if(this.fromOverView){ let flag=false;
let flag=false;
let position={ let position={
x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth, x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth,
y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight, y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight,
}
getTopology(this.topologyIndex).centerView(50);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.x>position.x || item.rect.y>position.y){
getTopology(this.topologyIndex).fitView(50);
flag=true
}
});
getTopology(this.topologyIndex).centerView(50);
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
} }
getTopology(this.topologyIndex).centerView(20);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.ex>position.x || item.rect.ey>position.y){
getTopology(this.topologyIndex).fitView(20);
flag=true
}
});
getTopology(this.topologyIndex).centerView(20);
this.penToolTipScale= getTopology(this.topologyIndex).data.scale;
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
}); });
}) })
}); });
@@ -709,51 +715,81 @@
getTopology(this.topologyIndex).open(data); getTopology(this.topologyIndex).open(data);
getTopology(this.topologyIndex).lock(1); getTopology(this.topologyIndex).lock(1);
this.objChange=false; this.objChange=false;
if(this.fromOverView){ let flag=false;
let flag=false;
let position={ let position={
x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth, x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth,
y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight, y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight,
}
getTopology(this.topologyIndex).centerView(50);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.x>position.x || item.rect.y>position.y){
getTopology(this.topologyIndex).fitView(50);
flag=true
}
});
getTopology(this.topologyIndex).centerView(50);
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
} }
getTopology(this.topologyIndex).centerView(20);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.ex>position.x || item.rect.ey>position.y){
getTopology(this.topologyIndex).fitView(20);
flag=true
}
});
getTopology(this.topologyIndex).centerView(20);
this.penToolTipScale= getTopology(this.topologyIndex).data.scale;
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
}); });
}) })
}); });
}, },
dateChange() {
let nowTimeType = this.$refs.pickTime.$refs.timePicker.nowTimeType;
this.setSearchTime(nowTimeType.type,nowTimeType.value);
this.filterTime[0] = bus.timeFormate(this.searchTime[0], 'yyyy-MM-dd hh:mm:ss');
this.filterTime[1] = bus.timeFormate(this.searchTime[1], 'yyyy-MM-dd hh:mm:ss');
this.reload();
},
setSearchTime(type,val){//设置searchTime
if(type==='minute'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setMinutes(new Date(bus.computeTimezone(new Date().getTime())).getMinutes() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "m");
}else if(type==='hour'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "h");
}else if(type==='date'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setDate(new Date(bus.computeTimezone(new Date().getTime())).getDate() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "d");
}
this.$refs.pickTime.$refs.timePicker.searchTime=this.searchTime;
},
//打开topology数据
openTopologyData(data){ openTopologyData(data){
return new Promise(resolve=>{ return new Promise(resolve=>{
let canvas=new Topology('topology-canvas'+this.topologyIndexF,canvasOptions); if(!getTopology(this.topologyIndex)){
canvas.open(data); let canvas=new Topology('topology-canvas'+this.topologyIndexF,canvasOptions);
canvas.open(data);
setTopology(this.topologyIndex,canvas);
}
this.topologyLoading=false; this.topologyLoading=false;
setTopology(this.topologyIndex,canvas);
if(!getTopology(this.topologyIndex).data.name){ if(!getTopology(this.topologyIndex).data.name){
getTopology(this.topologyIndex).data.name=this.obj.name; getTopology(this.topologyIndex).data.name=this.obj.name;
} }
@@ -792,6 +828,10 @@
fontColor:data.data.fontColor, fontColor:data.data.fontColor,
opacity:data.data.opacity, opacity:data.data.opacity,
name:data.name name:data.name
};
if(this.fromOverView){//优化从首页来的加载速度
let arr=data.pens.filter(item=>!item.type);
this.addNodeInit(arr);
} }
let timer=setInterval(()=>{ let timer=setInterval(()=>{
if(!this.imgInit){ if(!this.imgInit){
@@ -1489,7 +1529,7 @@
}, },
/*topology 方法*/ /*topology 方法*/
end(v){ end(v){
console.log(v);
}, },
/*tools 方法*/ /*tools 方法*/
upload(){ upload(){
@@ -1528,19 +1568,51 @@
}) })
}, },
addNodeInit(){ addNodeInit(imgidList){
this.$get('/project/topo/icon').then(res=>{ if(!this.fromOverView){
this.$get('/project/topo/icon').then(res=>{
this.imgageLoading=true;
this.tools[1].children=[];
let promiseArr=[];
res.data.list.forEach((item,index)=>{
item.imageName=item.name;
delete item.name;
promiseArr.push( this.dealImg(`/project/topo/icon/${item.id}`));
});
Promise.all(promiseArr).then(res2=>{
this.iconArray=[...res.data.list];
this.iconArray.forEach((item,index)=>{
this.tools[1].children.push({
...imageTemp,
data:{
...imageTemp.data,
text:item.imageName,
image:res2[index],
imageId:item.id,
}
})
item.image=res2[index];
});
this.imgInit=true;
})
})
}else{
this.imgageLoading=true; this.imgageLoading=true;
this.tools[1].children=[]; this.tools[1].children=[];
let promiseArr=[]; let promiseArr=[];
res.data.list.forEach((item,index)=>{ imgidList.forEach((item,index)=>{
item.imageName=item.name; if(item.data.imageId){
delete item.name; promiseArr.push( this.dealImg(`/project/topo/icon/${item.data.imageId}`));
promiseArr.push( this.dealImg(`/project/topo/icon/${item.id}`)); }
}); });
Promise.all(promiseArr).then(res2=>{ Promise.all(promiseArr).then(res2=>{
this.iconArray=[...res.data.list]; this.iconArray=imgidList.map(item=>{
return {
id:item.data.imageId
}
});
this.iconArray.forEach((item,index)=>{ this.iconArray.forEach((item,index)=>{
if(!item.id){return};
this.tools[1].children.push({ this.tools[1].children.push({
...imageTemp, ...imageTemp,
data:{ data:{
@@ -1554,9 +1626,7 @@
}); });
this.imgInit=true; this.imgInit=true;
}) })
}
})
}, },
dealImg(url){ dealImg(url){
@@ -1754,6 +1824,7 @@
this.toolShow.height=domRect.height; this.toolShow.height=domRect.height;
getTopology(this.topologyIndex).canvasPos=domRect; getTopology(this.topologyIndex).canvasPos=domRect;
getTopology(this.topologyIndex).centerView(); getTopology(this.topologyIndex).centerView();
this.getNodesArr();
}, },
canvasMove(e){// 画布上的移动 确定tooltip的位置 canvasMove(e){// 画布上的移动 确定tooltip的位置
if(this.tooltipPosition.show){ if(this.tooltipPosition.show){
@@ -2244,6 +2315,9 @@
position: relative; position: relative;
border: 1px solid #eeeeee; border: 1px solid #eeeeee;
border-radius: 2px; border-radius: 2px;
.pickTime{
margin-top: -13px;
}
.project-title { .project-title {
height: 34px; height: 34px;
padding-top: 8px; padding-top: 8px;
@@ -2265,7 +2339,7 @@
.page { .page {
display: flex; display: flex;
height: calc(100% - 80px); height: calc(100% - 60px);
width: 100%; width: 100%;
position: relative; position: relative;
@@ -2301,7 +2375,9 @@
border-radius: 0px; border-radius: 0px;
} }
} }
.overview-page{
height: 100%;
}
.special-select svg { .special-select svg {
width: 75px; width: 75px;
height: 30px; height: 30px;

View File

@@ -181,18 +181,23 @@
<button @click="editTopology" class="nz-btn nz-btn-size-normal nz-btn-style-light float-right pickTime" <button @click="editTopology" class="nz-btn nz-btn-size-normal nz-btn-style-light float-right"
style="border-right: 1px solid rgba(162,162,162,0.50);margin-right: 12px" type="button" style="border-right: 1px solid rgba(162,162,162,0.50);margin-right: 12px" type="button"
> >
<i class="nz-icon nz-icon-edit" :title="$t('project.topology.edit')"></i> <i class="nz-icon nz-icon-edit" :title="$t('project.topology.edit')"></i>
</button> </button>
<pick-time v-show="!editTopologyFlag" :showTimePicker="false" class="float-right pickTime" <pick-time
:refresh-data-func="reload" v-model="searchTime" :use-chart-unit="false" v-show="!editTopologyFlag"
ref="pickTime"></pick-time> class="float-right pickTime"
:refresh-data-func="dateChange"
v-model="searchTime"
:use-chart-unit="false"
ref="pickTime">
</pick-time>
</span> </span>
</div> </div>
</div> </div>
<div class="page"> <div :class="['page',fromOverView?'overview-page':'']">
<!--画布部分--> <!--画布部分-->
<div :id="'topology-canvas' + topologyIndexF" class="full" :ref="'topology-canvas'+ topologyIndexF"></div> <div :id="'topology-canvas' + topologyIndexF" class="full" :ref="'topology-canvas'+ topologyIndexF"></div>
<!--设置属性--> <!--设置属性-->
@@ -209,7 +214,7 @@
</div> </div>
<!--所有节点上的小图标--> <!--所有节点上的小图标-->
<div v-for="(item,index) in nodesArr" <div v-for="(item,index) in nodesArr"
:style="{position: 'absolute',top:item.rect.y - 48+'px',left:item.rect.center.x - 24 +'px'}" :style="{position: 'absolute',top:item.rect.y - (48*(fromOverView?penToolTipScale:1))+'px',left:item.rect.center.x - (24*(fromOverView?penToolTipScale:1)) +'px',transform:'scale('+(fromOverView?penToolTipScale:1)+')'}"
v-if="!editTopologyFlag&&item.data.iconToolState&&!fromPrev" v-if="!editTopologyFlag&&item.data.iconToolState&&!fromPrev"
class="network-pop" class="network-pop"
> >
@@ -347,6 +352,7 @@
translateKey:'None', translateKey:'None',
disableEmptyLine:true, disableEmptyLine:true,
autoExpandDistance:0, autoExpandDistance:0,
minScale:0.01,
}; };
let canvas; let canvas;
export default { export default {
@@ -381,7 +387,7 @@
saveData:{}, saveData:{},
dataLength:0, dataLength:0,
editTopologyFlag:false, editTopologyFlag:false,
searchTime:{}, searchTime: bus.getTimezontDateRange(),
activeNames:[], activeNames:[],
topologyIndex:0, topologyIndex:0,
iconArray:[], iconArray:[],
@@ -460,6 +466,7 @@
projectAlertShow:false, projectAlertShow:false,
previewShow:false, previewShow:false,
penId:undefined, penId:undefined,
penToolTipScale:1,
}; };
}, },
components:{ components:{
@@ -505,7 +512,6 @@
immediate:true, immediate:true,
handler(n){ handler(n){
this.topologyIndex=n; this.topologyIndex=n;
console.log(n,this.fromPrev);
} }
}, },
obj:{ obj:{
@@ -580,9 +586,11 @@
} }
}, },
created(){ created(){
this.addNodeInit();
}, },
mounted(){ mounted(){
if(!this.fromOverView){//从overview来的 加载相应图片 优化首页加载速度
this.addNodeInit();
}
document.getElementById('topology-canvas'+this.topologyIndexF).addEventListener('mousemove',this.canvasMove); document.getElementById('topology-canvas'+this.topologyIndexF).addEventListener('mousemove',this.canvasMove);
window.addEventListener('resize',this.winResize) window.addEventListener('resize',this.winResize)
}, },
@@ -628,41 +636,39 @@
getTopology(this.topologyIndex).open(data); getTopology(this.topologyIndex).open(data);
getTopology(this.topologyIndex).lock(1); getTopology(this.topologyIndex).lock(1);
this.objChange=false; this.objChange=false;
if(this.fromOverView){ let flag=false;
let flag=false;
let position={ let position={
x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth, x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth,
y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight, y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight,
}
getTopology(this.topologyIndex).centerView(50);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.x>position.x || item.rect.y>position.y){
getTopology(this.topologyIndex).fitView(50);
flag=true
}
});
getTopology(this.topologyIndex).centerView(50);
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
} }
getTopology(this.topologyIndex).centerView(20);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.ex>position.x || item.rect.ey>position.y){
getTopology(this.topologyIndex).fitView(20);
flag=true
}
});
getTopology(this.topologyIndex).centerView(20);
this.penToolTipScale= getTopology(this.topologyIndex).data.scale;
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
}); });
}) })
}); });
@@ -709,51 +715,81 @@
getTopology(this.topologyIndex).open(data); getTopology(this.topologyIndex).open(data);
getTopology(this.topologyIndex).lock(1); getTopology(this.topologyIndex).lock(1);
this.objChange=false; this.objChange=false;
if(this.fromOverView){ let flag=false;
let flag=false;
let position={ let position={
x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth, x:this.$refs['topology-canvas'+this.topologyIndexF].offsetWidth,
y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight, y:this.$refs['topology-canvas'+this.topologyIndexF].offsetHeight,
}
getTopology(this.topologyIndex).centerView(50);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.x>position.x || item.rect.y>position.y){
getTopology(this.topologyIndex).fitView(50);
flag=true
}
});
getTopology(this.topologyIndex).centerView(50);
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
} }
getTopology(this.topologyIndex).centerView(20);
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(flag){
return
}
if(item.rect.ex>position.x || item.rect.ey>position.y){
getTopology(this.topologyIndex).fitView(20);
flag=true
}
});
getTopology(this.topologyIndex).centerView(20);
this.penToolTipScale= getTopology(this.topologyIndex).data.scale;
setTimeout(()=>{
getTopology(this.topologyIndex).data.pens.forEach(item=>{
if(item.animatePlay){
item.stopAnimate();
setTimeout(()=>{
item.startAnimate()
})
}
},100);
})
// if(this.fromPrev){
// getTopology(this.topologyIndex).scaleTo(data.scale/2)
// }
// getTopology(this.topologyIndex).fitView();
this.getNodesArr();
}); });
}) })
}); });
}, },
dateChange() {
let nowTimeType = this.$refs.pickTime.$refs.timePicker.nowTimeType;
this.setSearchTime(nowTimeType.type,nowTimeType.value);
this.filterTime[0] = bus.timeFormate(this.searchTime[0], 'yyyy-MM-dd hh:mm:ss');
this.filterTime[1] = bus.timeFormate(this.searchTime[1], 'yyyy-MM-dd hh:mm:ss');
this.reload();
},
setSearchTime(type,val){//设置searchTime
if(type==='minute'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setMinutes(new Date(bus.computeTimezone(new Date().getTime())).getMinutes() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "m");
}else if(type==='hour'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setHours(new Date(bus.computeTimezone(new Date().getTime())).getHours() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "h");
}else if(type==='date'){
let startTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())).setDate(new Date(bus.computeTimezone(new Date().getTime())).getDate() - val),'yyyy-MM-dd hh:mm:ss');
let endTime = bus.timeFormate(new Date(bus.computeTimezone(new Date().getTime())),'yyyy-MM-dd hh:mm:ss');
this.$set(this.searchTime, 0, startTime);
this.$set(this.searchTime, 1, endTime);
this.$set(this.searchTime, 2, val + "d");
}
this.$refs.pickTime.$refs.timePicker.searchTime=this.searchTime;
},
//打开topology数据
openTopologyData(data){ openTopologyData(data){
return new Promise(resolve=>{ return new Promise(resolve=>{
let canvas=new Topology('topology-canvas'+this.topologyIndexF,canvasOptions); if(!getTopology(this.topologyIndex)){
canvas.open(data); let canvas=new Topology('topology-canvas'+this.topologyIndexF,canvasOptions);
canvas.open(data);
setTopology(this.topologyIndex,canvas);
}
this.topologyLoading=false; this.topologyLoading=false;
setTopology(this.topologyIndex,canvas);
if(!getTopology(this.topologyIndex).data.name){ if(!getTopology(this.topologyIndex).data.name){
getTopology(this.topologyIndex).data.name=this.obj.name; getTopology(this.topologyIndex).data.name=this.obj.name;
} }
@@ -792,6 +828,10 @@
fontColor:data.data.fontColor, fontColor:data.data.fontColor,
opacity:data.data.opacity, opacity:data.data.opacity,
name:data.name name:data.name
};
if(this.fromOverView){//优化从首页来的加载速度
let arr=data.pens.filter(item=>!item.type);
this.addNodeInit(arr);
} }
let timer=setInterval(()=>{ let timer=setInterval(()=>{
if(!this.imgInit){ if(!this.imgInit){
@@ -1489,7 +1529,7 @@
}, },
/*topology 方法*/ /*topology 方法*/
end(v){ end(v){
console.log(v);
}, },
/*tools 方法*/ /*tools 方法*/
upload(){ upload(){
@@ -1528,19 +1568,51 @@
}) })
}, },
addNodeInit(){ addNodeInit(imgidList){
this.$get('/project/topo/icon').then(res=>{ if(!this.fromOverView){
this.$get('/project/topo/icon').then(res=>{
this.imgageLoading=true;
this.tools[1].children=[];
let promiseArr=[];
res.data.list.forEach((item,index)=>{
item.imageName=item.name;
delete item.name;
promiseArr.push( this.dealImg(`/project/topo/icon/${item.id}`));
});
Promise.all(promiseArr).then(res2=>{
this.iconArray=[...res.data.list];
this.iconArray.forEach((item,index)=>{
this.tools[1].children.push({
...imageTemp,
data:{
...imageTemp.data,
text:item.imageName,
image:res2[index],
imageId:item.id,
}
})
item.image=res2[index];
});
this.imgInit=true;
})
})
}else{
this.imgageLoading=true; this.imgageLoading=true;
this.tools[1].children=[]; this.tools[1].children=[];
let promiseArr=[]; let promiseArr=[];
res.data.list.forEach((item,index)=>{ imgidList.forEach((item,index)=>{
item.imageName=item.name; if(item.data.imageId){
delete item.name; promiseArr.push( this.dealImg(`/project/topo/icon/${item.data.imageId}`));
promiseArr.push( this.dealImg(`/project/topo/icon/${item.id}`)); }
}); });
Promise.all(promiseArr).then(res2=>{ Promise.all(promiseArr).then(res2=>{
this.iconArray=[...res.data.list]; this.iconArray=imgidList.map(item=>{
return {
id:item.data.imageId
}
});
this.iconArray.forEach((item,index)=>{ this.iconArray.forEach((item,index)=>{
if(!item.id){return};
this.tools[1].children.push({ this.tools[1].children.push({
...imageTemp, ...imageTemp,
data:{ data:{
@@ -1554,9 +1626,7 @@
}); });
this.imgInit=true; this.imgInit=true;
}) })
}
})
}, },
dealImg(url){ dealImg(url){
@@ -1754,6 +1824,7 @@
this.toolShow.height=domRect.height; this.toolShow.height=domRect.height;
getTopology(this.topologyIndex).canvasPos=domRect; getTopology(this.topologyIndex).canvasPos=domRect;
getTopology(this.topologyIndex).centerView(); getTopology(this.topologyIndex).centerView();
this.getNodesArr();
}, },
canvasMove(e){// 画布上的移动 确定tooltip的位置 canvasMove(e){// 画布上的移动 确定tooltip的位置
if(this.tooltipPosition.show){ if(this.tooltipPosition.show){
@@ -2244,6 +2315,9 @@
position: relative; position: relative;
border: 1px solid #eeeeee; border: 1px solid #eeeeee;
border-radius: 2px; border-radius: 2px;
.pickTime{
margin-top: -13px;
}
.project-title { .project-title {
height: 34px; height: 34px;
padding-top: 8px; padding-top: 8px;
@@ -2265,7 +2339,7 @@
.page { .page {
display: flex; display: flex;
height: calc(100% - 80px); height: calc(100% - 60px);
width: 100%; width: 100%;
position: relative; position: relative;
@@ -2301,7 +2375,9 @@
border-radius: 0px; border-radius: 0px;
} }
} }
.overview-page{
height: 100%;
}
.special-select svg { .special-select svg {
width: 75px; width: 75px;
height: 30px; height: 30px;