<template>
<!-- 柱状图 正常
1. 调用页面引入
import EcharsColumnNormal from '@/components/echarsColumnNormal.vue';
注:自定义的组件名称 不要使用关键字
components: {EcharsColumnNormal} 2. 调用页面入参: <EcharsColumnNormal :dataList = "valObj"></EcharsColumnNormal> valObj: {
title: "故障排名",
tooltip:
" 显示:所选设备中发生的故障次数和排名<br/> 结论:通过设备发生故障排名可以分析出所选设备中最容易发生的故障情况,此类故障是产品改进的主要方向",
width: 700,
height: 600,
echarsData: [
{ name: "shebei001", val: 0.2},
{ name: "配置", val: 0.6 },
{ name: "设备舞动", val: 0.5 },
{ name: "y15故障-确认", val: 0.3 },
{ name: "组合1_故障_确认并恢复", val: 0.3 },
{ name: "确认并恢复", val: 0.2 },
{ name: "y9组合故障-确认", val: 0.2 },
{ name: "y组合11-故障-确认", val: 0.1 },
{ name: "y2组合故障-确认", val: 0.1 },
{ name: "组合2-故障-确认并恢复", val: 0.1 },
],
color: ["yellow"], //颜色 数组
barWidth:25, //柱宽
echarsTooltipStr: "设备: ", //鼠标滑过顶部提示文字
average: true, //图表是否显示平均值的线条 , true显示,false隐藏
Rotate: true, //当数据大于五条时,是否倾斜显示
isScroll: false, //当数据大于十条时,是否显示滚动条,一般情况下选择了倾斜就不在显示滚动条
seriesName:"设备稼动率", //series name
percentage:false, //y轴是否显示百分比 , 当echarsData中的val为百分比时,设为true,否则false
legendList:['设备稼动率'] //是否显示legend
}
-->
<div class="echart_box">
<div class="echart_tit" v-show="dataList.title">{{dataList.title}}
<el-tooltip placement="bottom-start" effect="light" v-show="dataList.tooltip">
<div slot="content" v-html="dataList.tooltip">
</div>
<i class="el-icon-question"></i>
</el-tooltip>
</div>
<div class="echart_column" :style="{width:dataList.width+'px',height:dataList.height+'px'}" id="echarsColumn"></div>
</div>
</template> <script>
export default {
props: {
dataList: {
type: Object,
default: function() {
return {
width: 1400, //地图宽
height: 800 //地图高
};
}
}
},
data() {
return {};
},
mounted() {
this.initEcharsColumn();
},
methods: {
//初始化echars柱状图,
initEcharsColumn() {
let that = this;
let xAxisData = [],
yAxisData = [];
let isRotate = "";
let dataZoom = [];
if (this.dataList.echarsData.length > 10) {
//默认显示10条数据(当数据多余10条时,出滚动条)
dataZoom = [
{
//区域缩放
type: "slider", //slider表示有滑动块的,inside表示内置的
show: true, //是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。
height: 8, //滚动条高度
start: 0, //数据窗口范围的起始百分比,表示0%
end: (10 / this.dataList.echarsData.length) * 100 //默认显示10条数据(当数据多余10条时,出滚动条)
}
];
} else {
dataZoom = [
{
//区域缩放
type: "slider", //slider表示有滑动块的,inside表示内置的
show: false //是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。
}
];
} if (this.dataList.echarsData) {
//x轴小于等于5不旋转,否则旋转45
if (this.dataList.echarsData.length <= 5) {
isRotate = 0;
} else {
isRotate = 45;
}
this.dataList.echarsData.forEach(item => {
xAxisData.push(item.name);
if (item.val) {
yAxisData.push(item.val);
} else {
yAxisData.push(null);
}
let myChart = this.$echarts.init(document.getElementById("echarsColumn"));
myChart.clear(); let option = {
color: this.dataList.color,
tooltip: { //鼠标滑过提示信息格式
trigger: "axis",
textStyle: {
align: "left"
},
formatter: function(params) {
let strReturn =
that.dataList.echarsTooltipStr + params[0].name + "<br/>";
for (let i = 0; i < params.length; i++) {
that.dataList.percentage
? (strReturn +=
params[i].seriesName +
":" +
params[i].value +
"%<br/>")
: (strReturn +=
params[i].seriesName +
":" +
params[i].value +
"<br/>");
}
return strReturn;
}
}, xAxis: [
{
type: "category",
data: xAxisData, //xAxisData rotateData
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,
rotate: this.dataList.Rotate ? isRotate : 0,
formatter: function(value, index) {
//value:data中的每一项
var regChinese = new RegExp("[\\u4E00-\\u9FFF]+", "g"); //判断是否包含汉字
var chineseLength = 4;
var englishLength = 8;
if (regChinese.test(value)) {
if (value.length > chineseLength) {
return value.substring(0, 4) + "...";
} else {
return value;
}
} else {
if (value.length > englishLength) {
return value.substring(0, 8) + "...";
} else {
return value;
}
}
}
}
}
],
yAxis: [
{
type: "value",
//minInterval: 1, //设置成1保证坐标轴分割刻度显示成整数。
axisLabel: {
formatter: this.dataList.percentage ? "{value} %" : "{value}"
}
}
],
dataZoom: this.dataList.isScroll ? dataZoom : "",
series: [
{
name: this.dataList.seriesName,
type: "bar",
barWidth: this.dataList.barWidth,
data: yAxisData,
markLine: this.dataList.average
? {
data: [{ type: "average", name: "平均值" }]
}
: {}
}
]
}; this.dataList.legendList
? (option.legend = {
data: this.dataList.legendList
})
: "",
myChart.setOption(option);
});
}
}
}
};
</script> <style lang="scss" scoped>
.echart_box {
margin: 4px;
position: relative;
z-index: 1;
}
.echart_tit {
position: absolute;
top: 0;
left: 0;
z-index: 2;
width: 100%;
height: 40px;
line-height: 40px;
text-align: left;
padding-left: 14px;
box-sizing: border-box;
}
</style>

echars 柱状图正常状态 --》二次封装的更多相关文章

  1. echars 柱状图 堆叠状态 --》二次封装

    <template> <!-- 柱状图 堆叠 1. 调用页面引入 import EcharsColumnStack from '@/components/echarsColumnSt ...

  2. echars 饼图 --》二次封装

    <template> <!-- 饼状图 1. 调用页面引入 import EcharsPie from '@/components/echarsPie.vue'; 注:自定义的组件名 ...

  3. Android 应用程序集成Google 登录及二次封装

    谷歌登录API:  https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...

  4. Android 应用程序集成FaceBook 登录及二次封装

    1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台  https://developers.facebook.com/ap ...

  5. 对jquery的ajax进行二次封装

    第一种方法: $(function(){ /** * ajax封装 * url 发送请求的地址 * data 发送到服务器的数据,数组存储,如:{"username": " ...

  6. AFNetworking二次封装的那些事

    AFNetworking可是iOS网络开发的神器,大大简便了操作.不过网络可是重中之重,不能只会用AFNetworking.我觉得网络开发首先要懂基本的理论,例如tcp/ip,http协议,之后要了解 ...

  7. 本地缓存下载文件,download的二次封装

    来源:http://ask.dcloud.net.cn/article/524 源码下载链接 说明: (1)由于平时项目中大量用到了附件下载等功能,所以就花了一个时间,把plus的downlaod进行 ...

  8. iOS菜鸟之AFN的二次封装

    我用一个单例类将一些常用的网络请求进行了二次封装,主要包括post请求 get请求  图片文件上传下载  视频的断点续传等功能. 首先大家先去github上下载AFN,将文件夹内的AFNetworki ...

  9. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

    OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...

随机推荐

  1. pandas的corsstab

      pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=F ...

  2. HTTP协议的请求方法

    HTTP概念: HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件.图像.结果等,即是一个客户端和服务器端请求和应答的标准 1.http无连接:限制每次连接只处理一个请求,服务端完成客 ...

  3. redis开发使用规范

    redis开发使用规范 1.冷热数据分离,不要将所有数据全部都放在Redis中 根据业务只将高频热数据存储到Redis中[QPS大于5000],对于低频冷数据可以使用mysql等基于磁盘的存储方式. ...

  4. 在 Cloudera Data Flow 上运行你的第一个 Flink 例子

    文档编写目的 Cloudera Data Flow(CDF) 作为 Cloudera 一个独立的产品单元,围绕着实时数据采集,实时数据处理和实时数据分析有多个不同的功能模块,如下图所示: 图中 4 个 ...

  5. DNS预读取 dns-prefetch 提升页面载入速度

    DNS Prefetch,即DNS预获取,是前端优化的一部分.一般来说,在前端优化中与 DNS 有关的有两点: 一个是减少DNS的请求次数,另一个就是进行DNS预获取 . DNS 作为互联网的基础协议 ...

  6. BZOJ 3193: [JLOI2013]地形生成 计数 + 组合 + 动态规划

    第一问: 先不考虑山的高度有相同的:直接按照高度降序排序,试着将每一座山插入到前面山的缝隙中. 当然,这并不代表这些山的相对位置是固定的,因为后面高度更低的山是有机会插入进来的,所以就可以做到将所有情 ...

  7. 2018山东省赛 H Dominoes ( 搜索 )

    题目链接 题意 : 给出一个 n * m 的矩阵,用规格 1 * 2 的多米诺去填充,题目数据保证最后只有一个格子是空白的(即没有被多米诺骨牌覆盖),问你现在通过移动多米诺能够产生多少种不同的状态(空 ...

  8. codevs 1079 回家x

    1079 回家  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver   题目描述 Description 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰 ...

  9. Unity3D 中的FOV

    一直以为Unity中的相机FOV指的是frustum两个对角边的方向夹角,所以在看一篇教程的时候怎么算都算不对.后来灵机一动,查了一下,才发现Unity中的Fov指的是垂直方向的FOV: 参见这里:h ...

  10. HDU1254--推箱子(BFS+DFS)

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...