fix: 室外空气等级修正为6级(优/良/轻度污染/中度污染/重度污染/严重污染)

- 室外空气指数: 6级等级配置,颜色(绿/浅绿/橙/橙红/红/紫)
- 室内空气指数: 5级等级配置,颜色(青/绿/橙/橙红/红)
- 柱状堆积图/Tooltip/图例统一根据等级配置动态渲染
This commit is contained in:
liuyunqin
2026-06-04 14:48:23 +08:00
parent 05482bca61
commit b78e81ead0
@@ -255,7 +255,32 @@ var chartLine = '#1aad8d';
function genTrend(metricName, period) {
// 各指标的模拟数据
var configs = {
'空气质量指数': {
'室外空气指数': {
isAQI: true, yMax: 300, yTicks: [300,200,100,50,0],
limitUpper: null, limitLower: null,
levelBands: [
{yMin:0,yMax:50,label:'优',color:'#52C41A',opacity:.1},
{yMin:50,yMax:100,label:'良',color:'#73D13D',opacity:.1},
{yMin:100,yMax:150,label:'轻度污染',color:'#FAAD14',opacity:.1},
{yMin:150,yMax:200,label:'中度污染',color:'#FA541C',opacity:.1},
{yMin:200,yMax:250,label:'重度污染',color:'#FF4D4F',opacity:.1},
{yMin:250,yMax:300,label:'严重污染',color:'#722ED1',opacity:.1}
],
levelColors: ['#52C41A','#73D13D','#FAAD14','#FA541C','#FF4D4F','#722ED1'],
levelNames: ['优','良','轻度污染','中度污染','重度污染','严重污染'],
'24h': {points:[55,42,35,48,65,78,82,75,62,58,52,48]},
'7d': {barData:[
{excellent:6,good:8,light:6,moderate:4,heavy:0,severe:0},
{excellent:8,good:7,light:5,moderate:4,heavy:0,severe:0},
{excellent:4,good:6,light:8,moderate:5,heavy:1,severe:0},
{excellent:2,good:5,light:7,moderate:8,heavy:2,severe:0},
{excellent:7,good:8,light:5,moderate:4,heavy:0,severe:0},
{excellent:9,good:7,light:4,moderate:4,heavy:0,severe:0},
{excellent:6,good:9,light:5,moderate:4,heavy:0,severe:0}
]},
'30d': {barData:(function(){var r=[];for(var i=0;i<30;i++){r.push({excellent:Math.floor(Math.random()*8)+2,good:Math.floor(Math.random()*8)+2,light:Math.floor(Math.random()*6)+2,moderate:Math.floor(Math.random()*6)+2,heavy:Math.floor(Math.random()*3),severe:Math.floor(Math.random()*2)})}return r})()}
},
'室内空气指数': {
isAQI: true, yMax: 200, yTicks: [200,150,100,50,0],
limitUpper: null, limitLower: null,
levelBands: [
@@ -434,9 +459,11 @@ function renderGradeBarChart(cfg, timeData, labels) {
// 根据 levelNames 动态构建分段
var levelNames = cfg.levelNames;
// barData 的 key 映射:空气质量指数→clean/good/light/moderate/heavy, 过敏等级→vl/lo/md/hi/vh, 水质等级→pass/fail
// barData 的 key 映射:室外→excellent/good/light/moderate/heavy/severe, 室内→clean/good/light/moderate/heavy, 过敏→vl/lo/md/hi/vh, 水质→pass/fail
var levelKeys;
if (levelNames.length === 5 && levelNames[0] === '很低') {
if (levelNames[0] === '') {
levelKeys = [{k:'severe'},{k:'heavy'},{k:'moderate'},{k:'light'},{k:'good'},{k:'excellent'}];
} else if (levelNames[0] === '很低') {
levelKeys = [{k:'vh'},{k:'hi'},{k:'md'},{k:'lo'},{k:'vl'}];
} else if (levelNames.length === 2) {
levelKeys = [{k:'fail'},{k:'pass'}];
@@ -648,7 +675,9 @@ function showBarTip(e, el) {
var levelColors = td.levelColors;
// 根据 levelKeys 读取 barData 值
var levelKeysArr;
if (levelNames[0] === '很低') {
if (levelNames[0] === '') {
levelKeysArr = ['excellent','good','light','moderate','heavy','severe'];
} else if (levelNames[0] === '很低') {
levelKeysArr = ['vl','lo','md','hi','vh'];
} else if (levelNames.length === 2) {
levelKeysArr = ['pass','fail'];
@@ -734,8 +763,8 @@ function renderChart(metricIdx, period) {
}
// 根据 tab 类型确定主指标名称和等级标签
var primaryMetricName = (tab === 'outdoor' || tab === 'indoor') ? '空气质量指数' : tab === 'water' ? '水质等级' : tab === 'pollen' ? '过敏等级' : '空气质量指数';
var gradeLabelText = (tab === 'outdoor' || tab === 'indoor') ? '空气质量级别:' : tab === 'water' ? '水质等级:' : tab === 'pollen' ? '过敏等级:' : '空气质量级别:';
var primaryMetricName = tab === 'outdoor' ? '室外空气指数' : tab === 'indoor' ? '室内空气指数' : tab === 'water' ? '水质等级' : tab === 'pollen' ? '过敏等级' : '室外空气指数';
var gradeLabelText = tab === 'outdoor' ? '空气质量级别:' : tab === 'indoor' ? '空气质量级别:' : tab === 'water' ? '水质等级:' : tab === 'pollen' ? '过敏等级:' : '空气质量级别:';
function render() {
document.getElementById('levelName').textContent = tabData.levelLabels[li];