fix: 健康监护设备详情页水质/花粉Tab隐藏右上角综合指数与等级文字(PRD/设计总览同步、截图重截)
@@ -4,6 +4,21 @@
|
||||
|
||||
---
|
||||
|
||||
## [2026-08-28] fix: 设备详情页水质/花粉Tab隐藏右上角综合指数与等级文字
|
||||
|
||||
**涉及文件(4个修改):**
|
||||
- `environment/device-detail.html`
|
||||
- `doc/PRD.md` — 第24节同步
|
||||
- `doc/design-overview.html` — 水质/花粉近7日卡片标签同步
|
||||
- `doc/screenshots/environment/device-detail-water*.jpg`、`device-detail-pollen*.jpg` — 重截(共6张)
|
||||
|
||||
**变更说明:**
|
||||
- 设备详情页 `tab=water` / `tab=pollen` 时隐藏头部右上角"综合指数"与等级文字(水质仅区分达标/未达标、花粉以"很低~很高"五级文字表达,无指数分级概念)
|
||||
- 室外/室内空气 Tab 保持原有展示不变
|
||||
- 截图脚本 `doc/screenshot-final.mjs` 支持命令行子串过滤,可按需重截部分页面
|
||||
|
||||
---
|
||||
|
||||
## [2026-06-05] feat: 新增活动详情页+问卷填写页+问卷详情查看页
|
||||
|
||||
**涉及文件(3个新增):**
|
||||
|
||||
@@ -549,7 +549,7 @@
|
||||
**功能说明:** 展示单个环境监测设备的详细数据,包括当前指标、等级评价和变化趋势。页面根据 URL 参数 `tab` 区分监测类型,标题、等级评价文案、可选指标随类型变化。
|
||||
|
||||
**通用 UI 元素:**
|
||||
- 顶部等级头部:左侧等级名称大字 + 评价副标题,右侧综合指数 + 等级
|
||||
- 顶部等级头部:左侧等级名称大字 + 评价副标题,右侧综合指数 + 等级(仅室外/室内空气展示;水质/花粉不展示综合指数与等级文字,隐藏右上角区域)
|
||||
- 主卡片:设备位置/时间、等级描述文案、半圆仪表盘、指标网格
|
||||
- 变化趋势卡片:指标下拉、时间 Tab(近24小时/7日/30日)、折线/柱状图(含阈值线)
|
||||
- 底部"报警数据"按钮(带上下文参数跳转)
|
||||
@@ -584,7 +584,7 @@
|
||||

|
||||
|
||||
- **评价副标题:** "水质综合评价"
|
||||
- **指数标签:** "综合指数",等级标签:"水质等级"(I 级或 V 级)
|
||||
- **头部右上角:** 不展示综合指数与等级文字(水质仅区分"达标/未达标",无指数分级概念)
|
||||
- **指标下拉可选:** 温度 / 电导率 / PH / 盐度 / 电阻率 / TDS
|
||||
- **趋势图阈值线(示例):** PH 区间 6.5~8.0,电导率 上限 1000 μS/cm,TDS 上限 500 mg/L
|
||||
- **示例等级文案:** "水质各项指标符合国家标准要求,可正常使用"
|
||||
@@ -594,7 +594,7 @@
|
||||

|
||||
|
||||
- **评价副标题:** "花粉过敏风险评价"
|
||||
- **指数标签:** "过敏指数",等级标签:"过敏等级"(I-V 级)
|
||||
- **头部右上角:** 不展示综合指数与等级文字(花粉以"很低~很高"五级文字直接表达风险)
|
||||
- **指标下拉可选:** 榆属 / 松属 / 杨属 / 柏科 / 柳属 / 蒿属 / 藜科 / 苋科 / 花粉总数
|
||||
- **趋势图阈值线(示例):** 花粉总数 上限 500 粒/千mm²、下限 100 粒/千mm²
|
||||
- **示例等级文案:** "花粉浓度极低,对过敏人群基本无影响,可正常户外活动"
|
||||
|
||||
@@ -476,7 +476,7 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-
|
||||
<div class="card__label">水质监测 · 设备详情(近7日)</div>
|
||||
<div class="card__tags">
|
||||
<span class="tag tag--state">近7日</span>
|
||||
<span class="tag tag--state">综合指数</span>
|
||||
<span class="tag tag--state">水质等级</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card" onclick="openLightbox('screenshots/environment/device-detail-water-metric.jpg', '水质监测 · 设备详情(PH 近24小时)')">
|
||||
@@ -524,7 +524,7 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-
|
||||
<div class="card__label">花粉监测 · 设备详情(近7日)</div>
|
||||
<div class="card__tags">
|
||||
<span class="tag tag--state">近7日</span>
|
||||
<span class="tag tag--state">过敏指数</span>
|
||||
<span class="tag tag--state">过敏等级</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card" onclick="openLightbox('screenshots/environment/device-detail-pollen-metric.jpg', '花粉监测 · 设备详情(花粉总数 近24小时)')">
|
||||
|
||||
@@ -93,10 +93,15 @@ const tasks = [
|
||||
];
|
||||
|
||||
(async () => {
|
||||
// 命令行子串过滤:node screenshot-final.mjs device-detail-water device-detail-pollen
|
||||
// 不传参数则截取全部
|
||||
const filters = process.argv.slice(2);
|
||||
const runTasks = filters.length ? tasks.filter(t => filters.some(f => t.out.includes(f))) : tasks;
|
||||
|
||||
const browser = await chromium.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
|
||||
const context = await browser.newContext({ viewport: { width: 390, height: 4000 } });
|
||||
|
||||
for (const t of tasks) {
|
||||
for (const t of runTasks) {
|
||||
const page = await context.newPage();
|
||||
const filePath = path.join(root, t.html);
|
||||
const url = `file:///${filePath.replace(/\\/g, '/')}${t.query || ''}`;
|
||||
@@ -214,5 +219,5 @@ const tasks = [
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
console.log(`\n完成!共截取 ${tasks.length} 张`);
|
||||
console.log(`\n完成!共截取 ${runTasks.length} 张`);
|
||||
})();
|
||||
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 36 KiB |
@@ -766,6 +766,11 @@ function renderChart(metricIdx, period) {
|
||||
var primaryMetricName = tab === 'outdoor' ? '室外空气指数' : tab === 'indoor' ? '室内空气指数' : tab === 'water' ? '水质等级' : tab === 'pollen' ? '过敏等级' : '室外空气指数';
|
||||
var gradeLabelText = tab === 'outdoor' ? '空气质量级别:' : tab === 'indoor' ? '空气质量级别:' : tab === 'water' ? '水质等级:' : tab === 'pollen' ? '过敏等级:' : '空气质量级别:';
|
||||
|
||||
// 水质/花粉无综合指数与级别概念,隐藏头部右上角文字
|
||||
if (tab === 'water' || tab === 'pollen') {
|
||||
document.querySelector('.level-header__right').style.display = 'none';
|
||||
}
|
||||
|
||||
function render() {
|
||||
document.getElementById('levelName').textContent = tabData.levelLabels[li];
|
||||
document.getElementById('levelSub').textContent = tabData.sub;
|
||||
|
||||