Update .gitignore and add files

This commit is contained in:
jrhlh
2025-07-17 23:13:04 +08:00
commit 39cedd4073
257 changed files with 34603 additions and 0 deletions

View File

@ -0,0 +1,163 @@
<template>
<div class="echarts-container">
<div ref="chartRef" style="width: 670px; height: 440px;"></div>
</div>
</template>
<script setup>
import {ref, onMounted, onBeforeUnmount} from 'vue';
import * as echarts from 'echarts';
const chartRef = ref(null);
let chartInstance = null;
// 手动设置故障时段数据 (6点1个18点1个22点1个)
const faultTimeData = ref([
{name: '00:00-02:00', value: 0},
{name: '02:00-04:00', value: 0},
{name: '04:00-06:00', value: 1}, // 6点一个故障
{name: '06:00-08:00', value: 0},
{name: '08:00-10:00', value: 0},
{name: '10:00-12:00', value: 0},
{name: '12:00-14:00', value: 0},
{name: '14:00-16:00', value: 0},
{name: '16:00-18:00', value: 0},
{name: '18:00-20:00', value: 0},
{name: '20:00-22:00', value: 1}, // 22点一个故障
{name: '22:00-24:00', value: 0}
]);
// 初始化图表
const initChart = () => {
if (!chartRef.value) return;
chartInstance = echarts.init(chartRef.value);
const option = {
title: {
text: '系统故障时段分布统计',
left: 'center',
textStyle: {
fontSize: 18,
fontWeight: 'bold',
color: '#333'
},
subtext: '24小时故障发生情况',
subtextStyle: {
fontSize: 14,
color: '#666'
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: '时段: {b}<br/>故障次数: {c}次',
backgroundColor: 'rgba(50,50,50,0.9)',
borderColor: '#333',
textStyle: {
color: '#fff'
}
},
grid: {
left: '10%',
right: '5%',
bottom: '8%',
top: '20%',
containLabel: true
},
xAxis: {
type: 'category',
data: faultTimeData.value.map(item => item.name),
axisLabel: {
interval: 0,
rotate: 30,
fontSize: 12,
margin: 15
},
axisLine: {lineStyle: {color: '#666'}},
axisTick: {alignWithLabel: true, length: 5}
},
yAxis: {
type: 'value',
name: '故障次数',
nameLocation: 'middle',
nameGap: 40,
nameTextStyle: {fontSize: 14, padding: [0, 0, 10, 0]},
axisLabel: {
fontSize: 12,
formatter: function (value) {
return value; // 确保Y轴只显示整数
}
},
min: 0, // 最小值设为0
max: 5, // 最大值设为5
interval: 1, // 间隔设为1
splitLine: {lineStyle: {type: 'dashed'}}
},
series: [{
name: '故障次数',
type: 'bar',
barWidth: '50%',
data: faultTimeData.value.map(item => item.value),
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#ff9e9e'},
{offset: 0.5, color: '#ff6b6b'},
{offset: 1, color: '#ff3d3d'}
]),
borderRadius: [6, 6, 0, 0]
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{offset: 0, color: '#ff6b6b'},
{offset: 0.7, color: '#ff3d3d'},
{offset: 1, color: '#cc2a2a'}
]),
shadowColor: 'rgba(255, 100, 100, 0.5)',
shadowBlur: 10,
shadowOffsetY: 3
}
},
label: {
show: true,
position: 'top',
formatter: '{c}',
fontSize: 12,
fontWeight: 'bold',
color: '#ff3d3d'
}
}]
};
chartInstance.setOption(option);
window.addEventListener('resize', handleResize);
};
const handleResize = () => {
chartInstance?.resize();
};
onMounted(() => {
initChart();
});
onBeforeUnmount(() => {
window.removeEventListener('resize', handleResize);
chartInstance?.dispose();
});
</script>
<style scoped>
.echarts-container {
display: flex;
justify-content: center;
align-items: center;
padding-top: 47px;
width: fit-content;
margin: 0 auto;
position: relative;
}
</style>