共计 2205 个字符,预计需要花费 6 分钟才能阅读完成。
<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>
正文完
发表至: javascript
2021-04-26