From 500ddf6571e656f33ef7fe10c570f6345344c989 Mon Sep 17 00:00:00 2001 From: quanyawei <401863037@qq.com> Date: Thu, 01 Feb 2024 15:47:38 +0800 Subject: [PATCH] fix:断线监控 --- src/views/onlineRate/detailBox.vue | 118 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 90 insertions(+), 28 deletions(-) diff --git a/src/views/onlineRate/detailBox.vue b/src/views/onlineRate/detailBox.vue index 608c90c..98394a2 100644 --- a/src/views/onlineRate/detailBox.vue +++ b/src/views/onlineRate/detailBox.vue @@ -35,6 +35,7 @@ value-format="yyyy-MM-dd HH:mm" :default-date="[macDate.startTime, macDate.endTime]" :picker-options="pickerOptions" + align="right" @change="changeDay" /> </el-form-item> @@ -43,7 +44,7 @@ <div> <div class="tit"> <p style="font-size:16px"> - {{ macOnlineDetailData.code }}% + ���<span class="greenClor">{{ sum }}</span>{{ time }}��������� <span class="greenClor">{{ macOnlineDetailData.pieChart2 }}</span>{{ time }}������������<span :class=" onlineRate<90 ?'redClor':'greenClor'">{{ onlineRate.toFixed(2) }}%</span> </p> <div id="myPieChart" /> </div> @@ -98,7 +99,11 @@ label="������������" align="center" label-class-name="itemSpan" - /> + > + <template slot-scope="scope"> + <span>{{ scope.row.mun }}</span>{{ time }} + </template> + </el-table-column> </el-table> </div> </div> @@ -117,6 +122,7 @@ data () { return { title: '������', + sum: '', formInline: {}, macOnlineDetailData: {}, time: '������', @@ -132,6 +138,35 @@ // ������ pickerOptions: { + shortcuts: [{ + text: '���1���', + onClick (picker) { + const end = dayjs().subtract(1, 'hour') + const start = dayjs().subtract(1, 'day') + picker.$emit('pick', [new Date(start), new Date(end)]) + } + }, { + text: '���3���', + onClick (picker) { + const end = dayjs().subtract(1, 'hour') + const start = dayjs().subtract(3, 'day') + picker.$emit('pick', [new Date(start), new Date(end)]) + } + }, { + text: '���5���', + onClick (picker) { + const end = dayjs().subtract(1, 'hour') + const start = dayjs().subtract(5, 'day') + picker.$emit('pick', [new Date(start), new Date(end)]) + } + }, { + text: '���7���', + onClick (picker) { + const end = dayjs().subtract(1, 'hour') + const start = dayjs().subtract(7, 'day') + picker.$emit('pick', [new Date(start), new Date(end)]) + } + }], onPick: ({ maxDate, minDate }) => { // ��������������������������������������������������� this.choiceDate = minDate.getTime() @@ -161,13 +196,22 @@ } } }, + computed: { + onlineRate () { + console.log('///', ((this.macOnlineDetailData.pieChart2) / this.sum)) + return (this.macOnlineDetailData.pieChart2 / this.sum) * 100 || 0 + } + }, watch: { time (newValue, oldValue) { if (newValue === '���') { this.type = 'day' + this.lineType = 'day' } else if (newValue === '������') { this.type = 'hour' + this.lineType = 'hour' } else if (newValue === '������') { + this.lineType = 'hour' this.type = 'minute' } } @@ -200,23 +244,34 @@ } }, initPieChart (pieChartData) { + let that = this + let percent = null let labelData = { - show: false, - } - if (pieChartData[0] > 0) { - labelData = { - show: true, - position: 'left', - normal: { - formatter: function (params) { - console.log('params22', params) - let onlineType = params.dataIndex === 0 ? '������' : '������' - return `${onlineType}: ${params.value}` - }, - fontSize: 14, // ������������������ - fontStyle: 'italic', // ������������������ + show: true, + position: 'right', + alignTo: 'edge', + margin: 0, + normal: { + formatter: function (params) { + percent = params.percent + let onlineType = params.dataIndex === 0 ? '������' : '������' + return `${onlineType}{a|${params.value}}${that.time}:{b|${params.percent}%}` }, - } + fontSize: 14, // ������������������ + fontStyle: 'italic', // ������������������ + rich: { // ���rich������������������������������������ + a: { + fontSize: 14, + fontStyle: 'italic', + color: '#67c23a' + }, + b: { + fontSize: 14, + fontStyle: 'italic', + color: percent !== 0 ? '#67c23a' : 'red' + }, + } + }, } let dom = document.getElementById('myPieChart') let myChart = echarts.init(dom) @@ -237,19 +292,21 @@ series: [ { radius: 30, - center: ['30%', '50%'], + center: ['50%', '50%'], type: 'pie', data: pieChartData, label: labelData, + labelLayout: { + hideOverlap: false + } }, ], }, true) }, initChart (myChart, option, dom) { myChart.setOption(option) - if (this.lineType === 'hour') { - myChart.on('click', (params) => { - console.log(params) + myChart.on('click', (params) => { + if (this.lineType === 'hour') { this.lineType = 'minute' echarts.dispose(dom) var myChart = echarts.init(dom) @@ -258,8 +315,9 @@ let endTiem = dayjs(starTiem).add(1, 'hour') this.getLineData(dayjs(starTiem).format('YYYY-MM-DD HH:mm:ss'), dayjs(endTiem).format('YYYY-MM-DD HH:mm:ss'), 'minute') myChart.setOption(option, true) - }) - } + } + console.log('this.lineType', this.lineType) + }) }, renderBack () { this.lineType = 'hour' @@ -278,13 +336,10 @@ }, getOption (xData, sData) { let option = null - let minTime = xData[0] - let maxTime = xData[xData.length] let interval = 3600 * 1000 if (this.type === 'minute') { interval = 60 * 1000 } - console.log(minTime, maxTime) option = { grid: { left: '40px', // ��������������� @@ -308,7 +363,7 @@ formatter: function (params) { console.log(params) var value = params.data[0] - let tip = params.value === 1 ? '������: ' + value : '������: ' + value + let tip = params.value[1] === 1 ? '������: ' + value : '������: ' + value return tip }, }, @@ -401,6 +456,7 @@ }) .then(res => { this.macOnlineDetailData = res.data + this.sum = res.data.sum this.tableData = res.data.tabulation let pieChartData = [this.macOnlineDetailData.pieChart1, this.macOnlineDetailData.pieChart2] this.initPieChart(pieChartData) @@ -436,7 +492,7 @@ } #myPieChart { height: 120px; - width: 400px!important; + width: 600px!important; canvas { width: 100%!important; } @@ -459,4 +515,10 @@ top: -40px; } } +.redClor{ + color: red; +} +.greenClor{ + color:#67c23a; +} </style> -- Gitblit v1.8.0