103 lines
3.5 KiB
JavaScript
103 lines
3.5 KiB
JavaScript
|
/**
|
|||
|
* 顶部header
|
|||
|
*/
|
|||
|
Vue.component("process-control-bar", {
|
|||
|
template: `
|
|||
|
<div @mouseover="MouseEnter" @mouseout="MouseLeave">
|
|||
|
<div class="output-content" ref="process" :style="{'height':height +'px'}">
|
|||
|
<div class="process-for" style="height: 60px;" v-for="(item,i) in forData">
|
|||
|
<div style="display: flex;align-items: center;justify-content: space-between;padding: 10px 0 5px;">
|
|||
|
<div>
|
|||
|
<img src="http://fileimg.makalu.cc/WEB_2B7C06210CD44D55BFEE6205A35DE4A7.png" width="12" height="8">
|
|||
|
<span style="color:#fcbc02;font-style:italic;padding-right: 5px;">No.{{i + 1}}</span>
|
|||
|
<span style="color:#c6d9fa">{{item.name}}</span>
|
|||
|
</div>
|
|||
|
<div style="color: #6c829a">
|
|||
|
<span style="color: #c6d9fa">{{item.total}}</span> {{item.unit}}
|
|||
|
<span>(</span>
|
|||
|
<span style="color: #52adf4">{{item.yesMonitor}}</span> {{item.unit}} /
|
|||
|
<span style="color: #4677ff">{{item.notMonitor}}</span> {{item.unit}}
|
|||
|
<span>)</span>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div style="padding-top: 8px;">
|
|||
|
<div style="height: 6px;background:rgba(22,203,115,0.1);display: flex;align-items: center">
|
|||
|
<div :style="{'width':item.yesWidth+'%','height':'6px','background':'#52adf4'}"></div>
|
|||
|
<div :style="{'width':item.notWidth+'%','height':'6px','background':'#4677ff'}"></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
`,
|
|||
|
props: {
|
|||
|
list:{
|
|||
|
type:Array
|
|||
|
},
|
|||
|
height:{
|
|||
|
type:Number
|
|||
|
},
|
|||
|
number:{
|
|||
|
type:Number
|
|||
|
}
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
forData:[],
|
|||
|
interval: '',
|
|||
|
index:0,
|
|||
|
}
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
//this.init()
|
|||
|
},
|
|||
|
methods: {
|
|||
|
init() {
|
|||
|
this.getData()
|
|||
|
//计划时间
|
|||
|
},
|
|||
|
getData(){
|
|||
|
var data = this.list
|
|||
|
var max = 0;
|
|||
|
for(let i = 0;i<data.length;i++){
|
|||
|
if(max < Number(data[i].total)){
|
|||
|
max = Number(data[i].total)
|
|||
|
}
|
|||
|
}
|
|||
|
data.map(x => {
|
|||
|
x.yesWidth = (Number(x.yesMonitor) / max ) * 100
|
|||
|
x.notWidth = (Number(x.notMonitor) / max ) * 100
|
|||
|
return x
|
|||
|
})
|
|||
|
this.forData = data
|
|||
|
this.$refs.process.scrollTop = 0
|
|||
|
this.index = 0
|
|||
|
this.interval = setInterval(this.scroll, 5000);
|
|||
|
},
|
|||
|
scroll() {
|
|||
|
let offsetHeight = this.$refs.process.querySelectorAll('.process-for')[0].offsetHeight;
|
|||
|
if(this.index == this.forData.length - this.number){
|
|||
|
this.index = 0
|
|||
|
}else{
|
|||
|
this.index += 1
|
|||
|
}
|
|||
|
$(this.$refs.process).animate({scrollTop:(offsetHeight * this.index)+'px'})
|
|||
|
},
|
|||
|
MouseEnter() {//鼠标移入停止滚动
|
|||
|
clearInterval(this.interval);
|
|||
|
},
|
|||
|
MouseLeave() {//鼠标离开继续滚动
|
|||
|
this.interval = setInterval(this.scroll, 5000);
|
|||
|
},
|
|||
|
|
|||
|
},
|
|||
|
watch:{
|
|||
|
list: function (n,o) {
|
|||
|
this.init()
|
|||
|
},
|
|||
|
}
|
|||
|
|
|||
|
})
|