bodyCenterRight.vue 2.59 KB
<template>
	<div class="dv-content-body-center-list-right">
		<div id="mind"></div>
	</div>
</template>

<script>
export default {
	data() {
		return {
			optionTwoLine: window.inventoryInformation_body2,
			myChart: null,
		}
	},
	methods: {
		getData(data) {
			try {
				const dom = document.getElementById('mind')
				if (!dom) return
				if (!this.myChart) {
					this.myChart = this.$echarts.init(dom)
				}
				if (!data || !Array.isArray(data)) {
					// 数据为空时显示空图表
					if (this.myChart) {
						this.optionTwoLine.xAxis.data = []
						this.optionTwoLine.series[0].data = []
						this.myChart.clear()
						this.myChart.setOption(this.optionTwoLine)
					}
					return
				}
				// 过滤无效数据
				const validData = data.filter(item => item && item.day && item.count)
				if (validData.length === 0) {
					if (this.myChart) {
						this.optionTwoLine.xAxis.data = []
						this.optionTwoLine.series[0].data = []
						this.myChart.clear()
						this.myChart.setOption(this.optionTwoLine)
					}
					return
				}
				const dates = validData.map(item => item.day);
				const quantities = validData.map(item => parseInt(item.count) || 0);
				this.optionTwoLine.xAxis.data = this.monthDayDates(dates)
				this.optionTwoLine.series[0].data = quantities
				this.optionTwoLine.title.text = '出库趋势图'
				this.optionTwoLine.series[0].lineStyle.color = 'red'
				this.myChart.clear()
				this.myChart.setOption(this.optionTwoLine)
			} catch (error) {
				console.error('bodyCenterRight getData error:', error)
				// 出错时清空图表
				if (this.myChart) {
					try {
						this.optionTwoLine.xAxis.data = []
						this.optionTwoLine.series[0].data = []
						this.myChart.clear()
						this.myChart.setOption(this.optionTwoLine)
					} catch (e) {
						console.error('清空图表时出错:', e)
					}
				}
			}
		},
		monthDayDates(data) {
			return data.map(date => {
				const [year, month, day] = date.split('-');
				return `${month}-${day}`;
			});
		},
	},
	mounted() {
		//this.getData()
		//eslint-disable-next-line no-debugger
		// debugger
		this.resizeHandler = () => {
			this.myChart && this.myChart.resize();
		};
		window.addEventListener('resize', this.resizeHandler);
	},
	beforeDestroy() {
		// 移除事件监听
		window.removeEventListener('resize', this.resizeHandler);
		// 销毁 ECharts 实例
		if (this.myChart) {
			this.myChart.dispose();
			this.myChart = null;
		}
	},
}
</script>
<style lang="less" scoped>
.dv-content-body-center-list-right {
	width: 49%;
	height: 95%;
	border: 1.5px solid hsl(208.57deg 51.22% 40.2%);
}

#mind {
	width: 100%;
	height: 100%;
}
</style>