<template> <div class="wrap"> <div class="tool"> <div style="font-weight:bold"> 已查问到<span style="font-weight:bold" class="base-color">{{ total }}</span >条日志 </div> <div> <el-select v-model="time" placeholder="请输出工夫距离"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> <el-button @click=" () => { showChart = !showChart; } " >{{ showChart ? "暗藏" : "展现" }}图表</el-button > </div> </div> <div v-show="showChart" id="main"></div> </div></template><script>import { mapGetters } from "vuex";export default { data() { return { showChart: true, chart: null, time: "", options: [ { label: "五分钟", value: "5" }, { label: "四分钟", value: "4" } ] }; }, props: { total: { type: Number, default: 0 }, reportSeries: { default() { return { date: [], abnormal: [], normal: [] }; } } }, computed: { ...mapGetters(["isOpenedSidebar"]) }, mounted() { this.chart = this.$echarts.init(document.getElementById("main")); window.onresize = () => { this.chart.resize(); }; }, watch: { isOpenedSidebar() { setTimeout(() => { this.chart.resize(); }, 300); }, reportSeries() { this.renderEcharts(); } }, destroyed() { window.onresize = null; }, methods: { renderEcharts() { const option = { tooltip: { trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发无效 type: "shadow" // 默认为直线,可选为:'line' | 'shadow' } }, // calculable: true, xAxis: [ { type: "category", data: this.reportSeries.date, // 是否显示分隔线 splitLine: { show: true }, // 是否显示坐标轴轴线 axisLine: { show: false }, // 是否显示坐标轴刻度 axisTick: { show: false }, // 刻度标签款式 axisLabel: { show: true, color: "rgba(0, 0, 0, 0.65)" } } ], yAxis: [ { type: "value", // 刻度标签款式 axisLabel: { show: true, color: "rgba(0, 0, 0, 0.65)" }, // 是否显示分隔线 splitLine: { show: true }, // 是否显示坐标轴刻度 axisTick: { show: false }, // 是否显示坐标轴轴线 axisLine: { show: false }, splitNumber: 4, axisLabel: { formatter(value) { if (value > 1000) { value = parseInt(value) / 1000 + "k"; } return value; } } } ], series: [ { name: "异样", type: "bar", stack: "广告", data: this.reportSeries.abnormal, itemStyle: { color: "#F34871" } }, { name: "失常", type: "bar", barWidth: 20, stack: "广告", data: this.reportSeries.normal, itemStyle: { color: "#007AFF" } } ], grid: { x: 50, y: 25, x2: 30, y2: 35 } }; this.chart.setOption(option); } }};</script><style scoped lang="scss">.base-color { color: $theme-a-base;}.wrap { width: 100%; margin-bottom: 12px; #main { width: 100%; height: 210px; } .tool { height: 50px; width: 100%; display: flex; justify-content: space-between; align-items: center; .el-select { margin-right: 12px; } }}</style>