238 lines
5.3 KiB
Vue
238 lines
5.3 KiB
Vue
<!--
|
|
* @Author: zhp
|
|
* @Date: 2024-01-29 13:45:56
|
|
* @LastEditTime: 2024-04-17 15:48:21
|
|
* @LastEditors: zhp
|
|
* @Description:
|
|
-->
|
|
<template>
|
|
<div>
|
|
<!-- <NotMsg v-show="notMsg"/> -->
|
|
<div id="israChart" class="isra-chart" style="height:390px;"></div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { position } from '@antv/x6-common/lib/dom/position';
|
|
import * as echarts from 'echarts';
|
|
// import resize from './../mixins/resize'
|
|
// import NotMsg from './../components/NotMsg'
|
|
|
|
export default {
|
|
name: 'ISRAChart',
|
|
// mixins: [resize],
|
|
// components:{ NotMsg },
|
|
props: {},
|
|
data() {
|
|
return {
|
|
chart: null,
|
|
// notMsg:true,
|
|
colors: ['#2760ff', '#518eec', '#49FBD6', '#ddb523'],
|
|
chartData: []
|
|
};
|
|
},
|
|
activated() {
|
|
},
|
|
computed: {
|
|
israChartMsg() {
|
|
return this.$store.state.websocket.israKiln
|
|
}
|
|
},
|
|
watch: {
|
|
israChartMsg: {
|
|
handler(newVal, oldVal) {
|
|
this.chartData = newVal || []
|
|
this.updateChart()
|
|
this.$emit('emitFun')
|
|
}
|
|
}
|
|
},
|
|
mounted() {
|
|
this.chartData = [
|
|
{
|
|
name: '0904褶皱/严重',
|
|
num: 1112,
|
|
yield: 0.97,
|
|
},
|
|
{
|
|
name: '0904褶皱/严重',
|
|
num: 1112,
|
|
yield: 0.97,
|
|
},
|
|
{
|
|
name: '0904褶皱/严重',
|
|
num: 1112,
|
|
yield: 0.97,
|
|
},
|
|
{
|
|
name: '0904褶皱/严重',
|
|
num: 1112,
|
|
yield: 0.97,
|
|
}
|
|
]
|
|
this.updateChart()
|
|
},
|
|
methods: {
|
|
getEqualNewlineString(params, length) {
|
|
let text = ''
|
|
let count = Math.ceil(params.length / length) // 向上取整数
|
|
// 一行展示length个
|
|
if (count > 1) {
|
|
for (let z = 1; z <= count; z++) {
|
|
text += params.substr((z - 1) * length, length)
|
|
if (z < count) {
|
|
text += '\n'
|
|
}
|
|
}
|
|
} else {
|
|
text += params.substr(0, length)
|
|
}
|
|
return text
|
|
},
|
|
updateChart() {
|
|
console.log('update')
|
|
let num = 0
|
|
this.chartData && this.chartData.length > 0 && this.chartData.map(i => {
|
|
num+=i.num
|
|
})
|
|
if (
|
|
this.chart !== null &&
|
|
this.chart !== '' &&
|
|
this.chart !== undefined
|
|
) {
|
|
this.chart.dispose()
|
|
}
|
|
// if (this.chartData && this.chartData.length > 0) {
|
|
// this.notMsg = false
|
|
// } else {
|
|
// this.notMsg = true
|
|
// return
|
|
// }
|
|
this.chart = echarts.init(document.getElementById('israChart'));
|
|
var option = {
|
|
color:this.colors,
|
|
title:{
|
|
text: num,
|
|
subtext: '总数/片',
|
|
top: '32%',
|
|
left: '49%',
|
|
textAlign: 'center',
|
|
textStyle: {
|
|
fontSize: 32,
|
|
color: '#fff',
|
|
},
|
|
subtextStyle: {
|
|
fontSize: 20,
|
|
color: '#fff00',
|
|
},
|
|
},
|
|
grid: {
|
|
left: '1%',
|
|
right: '1%',
|
|
bottom: '0',
|
|
containLabel: true
|
|
},
|
|
// legend: {
|
|
// bottom: '10%',
|
|
// left: 'center',
|
|
// itemWidth: 12,
|
|
// itemHeight:12,
|
|
// icon: 'roundRect',
|
|
// textStyle: {
|
|
// color: '#fff'
|
|
// },
|
|
// data:this.chartData && this.chartData.length > 0 && this.chartData.map((item,index)=>({
|
|
// name:item.name,
|
|
// itemStyle:{
|
|
// color: this.colors[index%4]
|
|
// }
|
|
// }))
|
|
// },
|
|
series:[{
|
|
name: 'ISRA缺陷检测',
|
|
type: 'pie',
|
|
// position:outerHeight,
|
|
center: ['50%', '40%'],
|
|
radius: ['45%', '70%'],
|
|
avoidLabelOverlap: true,
|
|
label: {
|
|
show: true,
|
|
normal: {
|
|
alignTo: 'labelLine',
|
|
margin: 10,
|
|
edgeDistance: 10,
|
|
lineHeight: 16,
|
|
// 各分区的提示内容
|
|
// params: 即下面传入的data数组,通过自定义函数,展示你想要的内容和格式
|
|
formatter: function (params) {
|
|
console.log(params);
|
|
return ;
|
|
},
|
|
formatter: (params) => {
|
|
//调用自定义显示格式
|
|
return this.getEqualNewlineString(params.value + " | " + params.percent.toFixed(0) + "%" + "\n" + params.name,10);
|
|
},
|
|
textStyle: { // 提示文字的样式
|
|
// color: '#595959',
|
|
fontSize: 18
|
|
}
|
|
}
|
|
},
|
|
labelLine: {
|
|
show: true,
|
|
length: 25,
|
|
length2: 10,
|
|
},
|
|
data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({
|
|
name:item.name,
|
|
value: item.num,
|
|
label: {
|
|
color: this.colors[index % 4]
|
|
},
|
|
itemStyle:{
|
|
color:{
|
|
type: 'linear',
|
|
x: 0,
|
|
y: 0,
|
|
x2: 0,
|
|
y2: 1,
|
|
global: false,
|
|
colorStops:[
|
|
{offset: 0,color: this.colors[index%4]},
|
|
{offset: 1,color: this.colors[index%4]+'33'}
|
|
]
|
|
}
|
|
}
|
|
}))}],
|
|
tooltip: {
|
|
trigger: 'item',
|
|
className: "isra-chart-tooltip"
|
|
},
|
|
}
|
|
this.chart.setOption(option);
|
|
}
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.isra-chart {
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
top: 7%;
|
|
}
|
|
.isra-chart-tooltip {
|
|
background: #0a2b4f77 !important;
|
|
border: none !important;
|
|
backdrop-filter: blur(12px);
|
|
}
|
|
|
|
.isra-chart-tooltip * {
|
|
color: #fff !important;
|
|
}
|
|
</style>
|
|
<style>
|
|
|
|
</style>
|