hightcharts 鼠标提示框信息

hightcharts 鼠标提示框信息

<template>
	<div id="app">

		<el-row :gutter="12" class="mb20" v-if="isShowHighcharts">
			<el-col :span="24">
				<el-card class="box-card" :shadow="shadow">
					<el-row :gutter="12">
						<el-col :span="24">
							<x-chart :id="id" class="high" :option="option" v-if="isShowHighcharts"></x-chart>
						</el-col>
					</el-row>
				</el-card>
			</el-col>
		</el-row>
	</div>
</template>

<script>
var myvue = {};
var qs = require('qs');
import XChart from '../../components/highcharts.vue'
import axios from 'axios'
export default {
	components: {
		XChart
	},
	data() {
		return {
			title:'',
			id: 'highcharts',
			option:{},
			option: {
                chart: {
                    type: 'line'
                },
                title: {
                    text: '' //表头文字
                },
                legend: {
                	labelFormatter: function() {
                		let text = ''
                		if(this.name == 'today'){
                			text = "今日发送"
                		}else if(this.name == 'yestday'){
                			text = "昨日发送"
                		}else if(this.name == 'beforeYestday'){
                			text = "前日发送"
                		}
						return text
					}
                },
                subtitle: {
                    text: ''//表头下文字
                },
                xAxis: {//x轴显示的内容
                    categories: ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24'],
						plotbands:[{//可以显示一个方块,如果需要的话可以更改透明度和颜色
							from:4.5,
							to:6.5,
							color:'rgba(68,170,213,0)'//透明度和颜色
						}]
					},
                    yAxis: {//y轴显示的内容
                    title: {
                        text: ''
                    }
                },
                tooltip: {
					style: {                      // 文字内容相关样式
					    color: "#000",
					    fontSize: "12px",
					    fontWeight: "normal"
					    // fontFamily: "Courir new"
					},
					shared: false,
					useHTML: true,
					formatter: function() {
						// console.log(this.x)
						// console.log(this.series.name)
						// console.log(myvue.data[this.x].successCount)
						return  '<b>' + myvue.data[this.series.name][this.x - 1].title + '</b><br>'
								+ '<b>' + (this.x - 1) + '-' + + this.x + '点发送:' + this.y + '</b><br>'
								+ '<b>' + '成功:' + myvue.data[this.series.name][this.x - 1].successCount + '</b><br>'
								+ '<b>' + '成功率:' + myvue.data[this.series.name][this.x - 1].percent + '</b><br>';
					}
				},
                plotOptions: {
                    line: {
                        dataLabels: {
                            enabled: false // 开启数据标签
                        },
                        enableMouseTracking: true, // 关闭鼠标跟踪,对应的提示框、点击事件会失效
                        colorByPoint:false
                    }
                },
                series: []
            },

            data: {
            	today: [],
	            yestday: [],
	            beforeYestday: []
            },
            series: [],
            isShowHighcharts: false
		}
	},
    beforeCreate:function(){
		myvue = this;
    },
	created(){
		myvue.getSmsTrendStatistics()
		myvue.getTimeIntervalTrendStatistics()
		myvue.getCompChannelList()
		myvue.getTypeChannels()

		// 2019-01-31行业通道时段发送量(条/每小时)
		let date = new Date();
        let seperator = "-";
        let year = date.getFullYear();
        let month = date.getMonth() + 1;
        let strDate = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
        }
        let currentdate = year + seperator + month + seperator + strDate;
        myvue.option.title.text = currentdate + '行业通道时段发送量(条/每小时)'
	},
	methods: {
		// 今日-昨日-前日
		getSmsTrendStatistics(smsType){
			myvue.sendArr = []
            axios.post('/smsReport/getSmsTrendStatistics', qs.stringify({
            	smsType:smsType
            })).then(function(response) {
            	if(response.data.success){
            		let today = response.data.result.today || {}
	            	let yestday = response.data.result.yestday || {}
	            	let beforeYestday = response.data.result.beforeYestday || {}
	            	today.name = '今日发送'
	            	yestday.name = '昨日发送'
	            	beforeYestday.name = '前日发送'
	                myvue.sendArr.push(today, yestday, beforeYestday)
            	}
            })
            .catch(function(error) {
                console.log(error);
            });
		},

		// 图表
		getTimeIntervalTrendStatistics(smsType){
            axios.post('/smsReport/getTimeIntervalTrendStatistics', qs.stringify({
            	smsType: smsType
            })).then(function(response) {
                if(response.data.success){
                	let today = response.data.result.today || []
                	let yestday = response.data.result.yestday || []
                	let beforeYestday = response.data.result.beforeYestday || []

                	myvue.getArr('today', today)
                	myvue.getArr('yestday', yestday)
                	myvue.getArr('beforeYestday', beforeYestday)
                }
            })
            .catch(function(error) {
                console.log(error);
            });
		},

		getArr(day, dayArr){
			let data = {}
			let dataDayObj = {}
			let dataArr = []
			dataDayObj.title = ''
			dataDayObj.sendCount = 0
			dataDayObj.successCount = 0
			dataDayObj.percent = 0
			if(day == 'today'){
				dataDayObj.title = '今日发送'
			}else if(day == 'yestday'){
				dataDayObj.title = '昨日发送'
			}else if(day == 'beforeYestday'){
				dataDayObj.title = '前日发送'
			}
			for(let j=1; j<25; j++){
				dataArr.push(dataDayObj)
			}

			for(let i=0; i<dayArr.length; i++){
				let changeObj = {}
				changeObj.title = dataDayObj.title
				changeObj.successCount = dayArr[i].successCount
				changeObj.sendCount = dayArr[i].sendCount
				changeObj.percent = dayArr[i].successRate
				let hour = parseInt(dayArr[i].hour) - 1
				dataArr[hour] = changeObj
			}

			let seriesObj = {}
			seriesObj.name = day
			seriesObj.title = dataDayObj.title
			seriesObj.data = []

			for(let m=0; m<dataArr.length; m++){
				seriesObj.data.push(parseInt(dataArr[m].sendCount))
			}
			myvue.series.push(seriesObj)
			myvue.option.series = myvue.series
			myvue.data[day] = dataArr

			if(myvue.series.length == 3){
				myvue.isShowHighcharts = true
			}
		},
	}
};
</script>

<style lang="scss">
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
font-size:14px;
	h2{margin-block-start: 0em;margin-block-end: 0em;}
	.mb10{margin-bottom:10px;}
	.mb20{margin-bottom:20px;}
	.mr20{margin-right:20px;}
	.f24{font-size:24px;}
	.orange{color:#f60;}
	.el-card{-webkit-box-shadow:none !important; box-shadow:none !important; }
	.w100{width:100px; display:inline-block}
	.w200{width:200px; display:inline-block}
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值