/** * 顶部header */ Vue.component("technical-disclosure-chart", { template: `
{{item.name}}
{{item.value}} {{item.prop}} %
`, props: { height:{ type: Number, }, datas:{ type:Array }, number:{ type: Number, }, }, data() { return { interval: '', index:0, listData:[], num:0 } }, mounted() { this.init() }, methods: { init() { this.getListDataChart() //计划时间 this.interval = setInterval(this.scroll, 3000); }, getListDataChart(){ if(this.datas.length>0){ var data = this.datas var arr = [] for(let i = 0;i< data.length;i++){ arr.push(data[i].value) } var max = Math.max(...arr) data.map(x => { x.prop =((x.value / max ) * 100) .toFixed(2) return x }) this.listData = data } }, scroll() { const height = $('.technical-disclosure-for').innerHeight() let n = this.number ? this.number:0; if(this.index == this.listData.length - n){ this.$refs.list.scrollTop = 0 this.index = 1 }else{ this.index+=1 } $(this.$refs.list).animate({scrollTop:(height * this.index)+'px'}) }, mouseEnter() {//鼠标移入停止滚动 clearInterval(this.interval); }, mouseLeave() {//鼠标离开继续滚动 this.interval = setInterval(this.scroll, 3000); }, onChart(item){ this.$emit('value',item); } }, watch:{ datas:function () { this.getListDataChart() } }, })