济菏高速业务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
4.1 KiB

1 year ago
<template>
<div class="left-chart-2">
<div class="rc1-header">设备类型</div>
<div class="rc1-chart-container">
<dv-charts class="rc1-right" :option="option" />
</div>
</div>
</template>
<script>
import request from '@/utils/request'
var datav;
function getContent(eqTunnelId) {
return request({
url: '/devices/bigscreenlist?eqTunnelId='+ eqTunnelId,
method: 'get'
})
}
export default {
name: 'RightChart2',
props: ['test'],
watch: {
test: {
deep: true,
handler(val) {
this.getList();
}
}
},
mounted() {
this.$nextTick(() => {
this.getList()
})
},
data () {
return {
option: {
series: [
{
type: 'pie',
data: [
{ name: '交通信号灯', value: 93 },
{ name: '车道指示器', value: 66 },
{ name: '卷帘门', value: 52 },
{ name: '风机', value: 34 },
{ name: '照明', value: 22 },
{ name: '情报板', value: 34 },
{ name: '其他', value: 22 }
],
radius: ['45%', '65%'],
insideLabel: {
show: false
},
outsideLabel: {
labelLineEndLength: 10,
formatter: '{percent}%\n{name}',
style: {
fontSize: 14,
fill: '#fff'
}
}
}
],
color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b', '#4fc8a0', '#a11fbb']
}
}
},
created() {
/* setInterval(this.updateHandler,1000); */
setInterval(this.getList,10000);
// this.updateHandler();
// this.getList();
},
methods: {
getList() {
this.loading = true;
getContent(this.test).then(response => {
datav = response;
this.updateHandler();
});
},
// 更新数据的示例方法
updateHandler () {
const { option } = this;
/**
* 只是这样做是无效
* config指向的内存地址没有发生变化
* 组件无法侦知数据变化
*/
this.option.series[0].data[0].value = datav[0]; //chezhi
this.option.series[0].data[1].value = datav[1]; //
this.option.series[0].data[2].value = datav[2]; //
this.option.series[0].data[3].value = datav[3]; //
this.option.series[0].data[4].value = datav[4]; //
this.option.series[0].data[5].value = datav[5]; //
this.option.series[0].data[6].value = datav[6]; //
/**
* 使用ES6拓展运算符生成新的props对象
* 组件侦知数据变化 自动刷新状态
*/
this.option = { ...this.option }
}
}
}
</script>
<style>
.left-chart-2 {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
.rc1-header {
text-align: center;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
font-size: 25px;
margin-top: 10px;
margin-bottom: 5px;
color:white;
}
.rc1-chart-container {
flex: 1;
display: flex;
}
.rc1-right {
flex: 1;
height:22vh;
padding-bottom: 20px;
padding-right: 20px;
box-sizing: border-box;
}
</style>