<template> <div class="demand"> <triangle> <slot> <div class="common-title"> <img class="icon-title" src="@/assets/images/screen/boardsDemand.png" alt="" /> <span class="title">{{ title }}</span> <img class="bg" src="@/assets/images/screen/title02_bg.png" alt="" /> </div> <div id="barDemand" @click="echartsClick"></div> </slot> </triangle> </div> </template> <script> import triangle from "../components/slot/triangle"; export default { name: "demand", data() { return { title: "互动频次", echartsDiv: "", }; }, components: { triangle }, props: { data: { type: Object, default: () => { return {}; }, }, }, mounted() {}, methods: { init() { let option = { tooltip: { trigger: "axis", }, grid: { top: 40, left: 30, right: 40, bottom: "15%", containLabel: true, }, // dataZoom: [{ // type: "slider", // show: true, // bottom: '20', // start: 0, // end: 100, // height: 18, // handleStyle: { // color: "#d3dee5", // }, // textStyle: { // color: "#fff", // fontSize: "10px" // }, // } // ], xAxis: { type: "category", boundaryGap: true, //坐标轴两边留白 data: this.data.xAxisData, axisLabel: { //坐标轴刻度标签的相关设置。 interval: 0, textStyle: { color: "#FFFFFF", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 14, }, formatter: function (value, index) { if (value.length > 4) { return value.slice(0, 4) + "..."; } else { return value; } }, }, axisTick: { //坐标轴刻度相关设置。 show: false, }, axisLine: { //坐标轴轴线相关设置 lineStyle: { color: "rgba(98,186,255,0.6)", type: "solid", }, }, splitLine: { //坐标轴在 grid 区域中的分隔线。 show: false, }, }, yAxis: [ { type: "value", name: "单位/次", splitNumber: 5, nameTextStyle: { color: "#fff", }, axisLabel: { textStyle: { color: "#FFFFFFFF", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 12, }, interval: "auto", }, axisLine: { show: false, }, axisTick: { show: false, }, splitLine: { show: true, lineStyle: { color: "rgba(98,186,255,0.6)", type: "dashed", }, }, }, ], series: [ { type: "bar", barWidth: 16, // 柱子宽度 itemStyle: { barBorderRadius: 120, // 圆角(左上、右上、右下、左下) }, color: new this.$echarts.graphic.LinearGradient( 0, 0, 0, 1, ["rgba(78,255,253,1)", "rgba(255,74,83,1)"].map( (color, offset) => ({ color, offset, }) ) ), // 渐变 data: this.data.yAxisData, }, ], }; this.echartsDiv = this.$echarts.init( document.getElementById("barDemand") ); this.echartsDiv.setOption(option); }, // 点击事件 echartsClick() { this.$emit("itemClick", { type: 1, title: this.title }); }, }, watch: { data() { if (this.echartsDiv) { this.echartsDiv.clear(); } this.init(); }, }, }; </script> <style lang=scss> #barDemand { width: 100%; height: calc(100% - 0.6rem); margin-top: 0.6rem; } </style>