@@ -164,7 +165,7 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
diff --git a/employee-app/health-monitor/health-status.html b/employee-app/health-monitor/health-status.html
new file mode 100644
index 0000000..733b0ee
--- /dev/null
+++ b/employee-app/health-monitor/health-status.html
@@ -0,0 +1,172 @@
+
+
+
+
+
+
健康现状 - 员工端 | 健康长庆原型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A
+
+
A类人群
+
更新时间:2026-03-26 14:36
+
+
+
+
+
+
💬 说明
+
现状评估的人群分类按A、B、C、D、E五个分类进行分类。
E类:健康人群 | D类:风险人群 | C类:异常人群 | B类:慢病人群 | A类:大病人群
+
+
+
+
+
+
住院信息
+
+
+ 住院状态
+ 治疗中
宁夏宝石花医院
+
+
+ 住院时间
+ 2026-03-26
+
+
+ 住院次数
+ 4
+
+
+ 联系人
+ 张智博
+
+
+ 联系电话
+ 15735365522
+
+
+
+
+
+
+
分类信息(大病信息)
+
+
+
+ 确诊年份
+ 2022年
+
+
+ 确诊医院
+ 宁夏宝石花医院
+
+
+ 大病状态
+ 可控
+
+
+ 治疗情况
+ 目前属于血糖偏高,可控阶段,按时服药,定期复诊。
+
+
+
+
+
+
+
+
+
diff --git a/employee-app/health-monitor/index.html b/employee-app/health-monitor/index.html
index 147415e..e53727c 100644
--- a/employee-app/health-monitor/index.html
+++ b/employee-app/health-monitor/index.html
@@ -74,7 +74,25 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
.entry-arrow { width: 16px; height: 16px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.entry-time-tag { font-size: 10px; color: #bbb; margin-top: 3px; }
-/* 底部安全区 */
+/* 健康现状卡片 */
+.health-status-card { background: linear-gradient(135deg, #f0f5ff 0%, #e6fffb 100%); border-radius: 16px; padding: 14px 16px; margin-bottom: 12px; display: flex; align-items: center; gap: 14px; cursor: pointer; transition: transform 0.15s; text-decoration: none; }
+.health-status-card:active { transform: scale(0.98); }
+.health-status__icon { width: 44px; height: 44px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 800; flex-shrink: 0; box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
+.health-status__icon--A { color: #ff4d4f; border: 2px solid #ff4d4f; }
+.health-status__icon--B { color: #fa8c16; border: 2px solid #fa8c16; }
+.health-status__icon--C { color: #faad14; border: 2px solid #faad14; }
+.health-status__icon--D { color: #1890ff; border: 2px solid #1890ff; }
+.health-status__icon--E { color: #52c41a; border: 2px solid #52c41a; }
+.health-status__info { flex: 1; min-width: 0; }
+.health-status__title { font-size: 14px; font-weight: 600; color: #1a1a1a; margin-bottom: 3px; }
+.health-status__desc { font-size: 12px; color: #666; }
+.health-status__tag { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 600; }
+.health-status__tag--A { color: #ff4d4f; background: #fff1f0; }
+.health-status__tag--B { color: #fa8c16; background: #fff7e6; }
+.health-status__tag--C { color: #faad14; background: #fffbe6; }
+.health-status__tag--D { color: #1890ff; background: #e6f7ff; }
+.health-status__tag--E { color: #52c41a; background: #f6ffed; }
+.health-status__arrow { width: 16px; height: 16px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.bottom-safe { height: 20px; flex-shrink: 0; }
@@ -97,6 +115,16 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
diff --git a/employee-app/health-monitor/wearable/blood-oxygen-alerts.html b/employee-app/health-monitor/wearable/blood-oxygen-alerts.html
index c90ef8c..e7e299f 100644
--- a/employee-app/health-monitor/wearable/blood-oxygen-alerts.html
+++ b/employee-app/health-monitor/wearable/blood-oxygen-alerts.html
@@ -205,6 +205,24 @@ body {
/* 底部安全区 */
.bottom-safe { height: 20px; flex-shrink: 0; }
+/* 右侧阈值范围 */
+.alert-card__threshold {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 4px;
+ flex-shrink: 0;
+ padding-top: 4px;
+}
+.alert-card__threshold-item {
+ font-size: 11px;
+ color: #bbb;
+}
+.alert-card__threshold-item span {
+ font-weight: 600;
+ color: #666;
+}
+
/* 筛选按钮 */
.filter-btn {
display: flex;
@@ -401,41 +419,6 @@ body {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
预警记录(共 1 条)
@@ -455,36 +438,20 @@ body {
-
+
93
%
-
-
-
-
触发原因:血氧低于 95% 阈值
+
+
+
diff --git a/employee-app/health-monitor/wearable/blood-oxygen.html b/employee-app/health-monitor/wearable/blood-oxygen.html
index 424c2cc..e8a0b1a 100644
--- a/employee-app/health-monitor/wearable/blood-oxygen.html
+++ b/employee-app/health-monitor/wearable/blood-oxygen.html
@@ -37,17 +37,27 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
.chart-wrap { position: relative; background: #fff; padding: 6px 16px 0; }
.chart-box { position: relative; height: 160px; }
.chart-svg { width: 100%; height: 100%; display: block; }
-.chart-grid line { stroke: #ececec; stroke-width: 1; }
-.chart-path { fill: none; stroke: var(--theme); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
-.chart-dot { fill: var(--theme); }
+.chart-grid line { stroke: #f0f0f0; stroke-width: 0.5; stroke-dasharray: none; }
+.chart-bar { rx: 2; }
+.chart-bar--normal { fill: #95de64; }
+.chart-bar--warn { fill: #fa8c16; }
+.chart-bar--danger { fill: #ff7875; }
.y-axis-labels { position: absolute; top: 6px; right: 0; width: 56px; height: 208px; pointer-events: none; }
.y-axis-label { position: absolute; right: 0; transform: translateY(50%); font-size: 12px; color: #666; }
.x-axis { display: grid; gap: 0; padding: 8px 14px 0 0; font-size: 12px; color: #666; }
-.x-axis span { text-align: center; white-space: nowrap; }
+.x-axis span { text-align: center; white-space: nowrap; cursor: pointer; transition: all 0.15s; }
+.x-axis span.active { color: #1a1a1a; font-weight: 700; font-size: 14px; }
.x-axis--dense { font-size: 10px; }
-.timeline-knob-row { position: relative; margin: 0; height: 24px; }
-.timeline-track { position: absolute; left: 0; right: 0; top: 10px; height: 1px; background: #e8e8e8; }
-.timeline-knob { position: absolute; right: 16px; top: -4px; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,0.12); }
+.x-axis--dense span.active { font-size: 12px; }
+.timeline-knob-row { position: relative; margin: 0; height: 32px; }
+.timeline-track { position: absolute; left: 0; right: 0; top: 14px; height: 2px; background: #e8e8e8; border-radius: 1px; }
+.timeline-knob { position: absolute; top: 4px; width: 28px; height: 28px; border-radius: 50%; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,0.15); cursor: grab; transition: left 0.15s; display: flex; align-items: center; justify-content: center; }
+.timeline-knob::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: #e0e0e0; }
+.timeline-knob:active { cursor: grabbing; box-shadow: 0 3px 14px rgba(0,0,0,0.2); }
+/* 选中柱子指示线 */
+.chart-indicator { stroke: #ffaaa5; stroke-width: 1; stroke-dasharray: 3 2; }
+.chart-bar--selected { opacity: 1; }
+.chart-bar--dimmed { opacity: 0.5; }
.card { margin: 8px 12px 0; background: #fff; border-radius: 22px; padding: 14px 12px; display: flex; gap: 0; }
.metric-row { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 6px 6px; }
@@ -105,15 +115,15 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
-
@@ -161,56 +171,56 @@ var dataMap = {
rangeText: '00:00-23:59',
unit: '%',
decimals: 0,
- points: [97,97,96,96,95,96,96,97,98,98,97,97,98,99,98,97,97,96,97,98,98,97,97,97],
+ points: [97,97,96,96,95,96,88,96,97,98,98,97,89,98,99,98,97,97,96,97,88,98,97,97],
totalMode: 'last',
- yTicks: [100, 98, 96, 94],
+ yTicks: [100, 90, 80],
xLabels: ['0:00','6:00','12:00','18:00','24:00'],
status: '正常',
max: { v:99, hint:'10:10' },
- min: { v:95, hint:'02:50' },
- avg: { v:97, hint:'全天' }
+ min: { v:88, hint:'06:30' },
+ avg: { v:96, hint:'全天' }
},
week: {
dateText: '4月27日-5月3日',
rangeText: '周一-周日',
unit: '%',
decimals: 0,
- points: [97,96,98,97,97,98,98],
- totalMode: 'avg',
- yTicks: [100, 98, 96, 94],
+ ranges: [{min:92,max:98},{min:90,max:97},{min:93,max:99},{min:91,max:98},{min:86,max:95},{min:93,max:99},{min:94,max:98}],
+ totalMode: 'range',
+ yTicks: [100, 90, 80],
xLabels: ['周一','周二','周三','周四','周五','周六','周日'],
status: '正常',
- max: { v:98, hint:'周三' },
- min: { v:96, hint:'周二' },
- avg: { v:97, hint:'本周' }
+ max: { v:99, hint:'周三' },
+ min: { v:86, hint:'周五' },
+ avg: { v:96, hint:'本周' }
},
month: {
dateText: '2026年4月',
rangeText: '4月1日-4月30日',
unit: '%',
decimals: 0,
- points: [97,97,96,96,95,96,96,97,98,98,97,97,98,99,98,97,97,96,97,98,98,97,97,97,97,97,96,96,95,96],
- totalMode: 'avg',
- yTicks: [100, 98, 96, 94],
+ ranges: [{min:92,max:98},{min:91,max:97},{min:90,max:98},{min:88,max:96},{min:93,max:99},{min:91,max:98},{min:92,max:97},{min:93,max:99},{min:94,max:98},{min:90,max:97},{min:91,max:98},{min:92,max:99},{min:93,max:98},{min:94,max:99},{min:91,max:97},{min:90,max:96},{min:86,max:94},{min:91,max:97},{min:92,max:98},{min:93,max:99},{min:94,max:98},{min:92,max:97},{min:91,max:98},{min:93,max:98},{min:92,max:97},{min:91,max:98},{min:90,max:97},{min:89,max:96},{min:87,max:95},{min:91,max:97}],
+ totalMode: 'range',
+ yTicks: [100, 90, 80],
xLabels: ['1日','7日','14日','21日','30日'],
status: '正常',
max: { v:99, hint:'04-14' },
- min: { v:95, hint:'04-05' },
- avg: { v:97, hint:'本月' }
+ min: { v:86, hint:'04-17' },
+ avg: { v:96, hint:'本月' }
},
year: {
dateText: '2026年',
rangeText: '1月-12月',
unit: '%',
decimals: 0,
- points: [97,97,96,96,97,96,96,97,98,97,96,97],
- totalMode: 'avg',
- yTicks: [100, 98, 96, 94],
+ ranges: [{min:91,max:98},{min:90,max:97},{min:89,max:97},{min:86,max:99},{min:88,max:98},{min:91,max:97},{min:92,max:98},{min:93,max:99},{min:91,max:98},{min:92,max:97},{min:90,max:98},{min:91,max:97}],
+ totalMode: 'range',
+ yTicks: [100, 90, 80],
xLabels: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
status: '正常',
- max: { v:98, hint:'01月' },
- min: { v:96, hint:'03月' },
- avg: { v:97, hint:'全年' }
+ max: { v:99, hint:'04月' },
+ min: { v:86, hint:'04月' },
+ avg: { v:96, hint:'全年' }
}
};
@@ -234,43 +244,72 @@ function formatValue(val, decimals) {
return String(val);
}
-function renderChart(cfg) {
- var chartWidth = 330;
+function renderChart(cfg, mode) {
+ var chartWidth = 310;
var chartHeight = 208;
var startY = 22;
- var stepX = chartWidth / (cfg.points.length - 1 || 1);
- var maxY = cfg.yTicks[0];
+ var yMin = cfg.yTicks[cfg.yTicks.length - 1];
+ var yMax = cfg.yTicks[0];
var grid = document.getElementById('chartGrid');
var yAxis = document.getElementById('yAxisLabels');
var xAxis = document.getElementById('xAxis');
- var lineEl = document.getElementById('line');
- var dotEl = document.getElementById('dot');
+ var barsGroup = document.getElementById('chartBars');
grid.innerHTML = '';
cfg.yTicks.forEach(function(_, index) {
var y = startY + (chartHeight / (cfg.yTicks.length - 1)) * index;
- grid.innerHTML += '
';
+ grid.innerHTML += '
';
});
yAxis.innerHTML = cfg.yTicks.map(function(tick, index) {
- return '
' + formatValue(tick, 0) + '';
+ return '
' + tick + '%';
}).join('');
- var pts = cfg.points.map(function(v, i) {
- var x = i * stepX;
- var y = startY + chartHeight - (v / maxY) * chartHeight;
- return { x: x, y: y };
- });
+ var barsHtml = '';
+ var threshold = 90;
+ var thresholdY = startY + ((yMax - threshold) / (yMax - yMin)) * chartHeight;
- var d = pts.map(function(p, index) {
- return (index === 0 ? 'M' : 'L') + p.x.toFixed(1) + ',' + p.y.toFixed(1);
- }).join(' ');
- lineEl.setAttribute('d', d);
-
- var last = pts[pts.length - 1];
- dotEl.setAttribute('cx', last.x.toFixed(1));
- dotEl.setAttribute('cy', last.y.toFixed(1));
+ if (mode === 'day') {
+ // 日视图:单值柱子从顶部垂下
+ var barGap = 2;
+ var barWidth = Math.max(3, (chartWidth / cfg.points.length) - barGap);
+ var totalBarSpace = barWidth + barGap;
+ var offsetX = (chartWidth - cfg.points.length * totalBarSpace) / 2;
+ cfg.points.forEach(function(v, i) {
+ var x = offsetX + i * totalBarSpace;
+ var valY = startY + ((yMax - v) / (yMax - yMin)) * chartHeight;
+ var h = (startY + chartHeight) - valY;
+ var colorClass = v < 90 ? 'chart-bar--warn' : 'chart-bar--normal';
+ barsHtml += '
';
+ });
+ } else {
+ // 周/月/年:范围柱状图,每根柱子从min到max,90分界线分色
+ var data = cfg.ranges;
+ var barGap = mode === 'month' ? 2 : 6;
+ var barWidth = Math.max(4, (chartWidth / data.length) - barGap);
+ var totalBarSpace = barWidth + barGap;
+ var offsetX = (chartWidth - data.length * totalBarSpace) / 2;
+ data.forEach(function(r, i) {
+ var x = offsetX + i * totalBarSpace;
+ var topY = startY + ((yMax - r.max) / (yMax - yMin)) * chartHeight;
+ var botY = startY + ((yMax - r.min) / (yMax - yMin)) * chartHeight;
+ if (r.max <= threshold) {
+ // 全部在90以下,整根橙色
+ barsHtml += '
';
+ } else if (r.min >= threshold) {
+ // 全部在90以上,整根绿色
+ barsHtml += '
';
+ } else {
+ // 跨越90线:上半绿色,下半橙色
+ var greenH = thresholdY - topY;
+ var orangeH = botY - thresholdY;
+ barsHtml += '
';
+ barsHtml += '
';
+ }
+ });
+ }
+ barsGroup.innerHTML = barsHtml;
xAxis.className = 'x-axis' + (cfg.xLabels.length > 7 ? ' x-axis--dense' : '');
xAxis.style.gridTemplateColumns = 'repeat(' + cfg.xLabels.length + ', 1fr)';
@@ -281,11 +320,18 @@ function renderChart(cfg) {
function renderMode(mode) {
var cfg = dataMap[mode];
- var value = getValue(cfg);
document.getElementById('dateText').textContent = cfg.dateText;
document.getElementById('rangeText').textContent = cfg.rangeText;
- document.getElementById('mainValue').textContent = formatValue(value, cfg.decimals);
- document.getElementById('mainUnit').textContent = cfg.unit;
+
+ if (cfg.totalMode === 'range') {
+ // 周/月/年显示范围
+ document.getElementById('mainValue').textContent = cfg.min.v + '% - ' + cfg.max.v + '%';
+ document.getElementById('mainUnit').textContent = '';
+ } else {
+ var value = getValue(cfg);
+ document.getElementById('mainValue').textContent = formatValue(value, cfg.decimals);
+ document.getElementById('mainUnit').textContent = cfg.unit;
+ }
document.getElementById('statusBadge').textContent = cfg.status;
document.getElementById('maxValue').textContent = formatValue(cfg.max.v, cfg.decimals);
@@ -295,14 +341,153 @@ function renderMode(mode) {
document.getElementById('avgValue').textContent = formatValue(cfg.avg.v, cfg.decimals);
document.getElementById('avgHint').textContent = cfg.avg.hint;
- renderChart(cfg);
+ renderChart(cfg, mode);
+ // 初始化选中状态
+ selectBar(currentMode === 'day' ? cfg.points.length - 1 : cfg.ranges.length - 1);
}
+var currentMode = 'day';
+var selectedIndex = -1;
+
+// 选中某根柱子
+function selectBar(idx) {
+ var cfg = dataMap[currentMode];
+ var count = currentMode === 'day' ? cfg.points.length : cfg.ranges.length;
+ if (idx < 0) idx = 0;
+ if (idx >= count) idx = count - 1;
+ selectedIndex = idx;
+
+ // 更新柱子高亮
+ var bars = document.querySelectorAll('#chartBars rect');
+ bars.forEach(function(b) { b.classList.remove('chart-bar--dimmed', 'chart-bar--selected'); });
+ // 对于范围模式每根柱子可能有2个rect
+ var barRects = [];
+ if (currentMode === 'day') {
+ barRects = [bars[idx]];
+ } else {
+ // 范围模式:找到对应index的rect(可能1或2个)
+ var data = cfg.ranges;
+ var rectIdx = 0;
+ for (var i = 0; i < data.length; i++) {
+ var rectsForBar = (data[i].min >= 90 || data[i].max <= 90) ? 1 : 2;
+ if (i === idx) {
+ for (var r = 0; r < rectsForBar; r++) barRects.push(bars[rectIdx + r]);
+ break;
+ }
+ rectIdx += rectsForBar;
+ }
+ }
+ bars.forEach(function(b) { if (barRects.indexOf(b) === -1) b.classList.add('chart-bar--dimmed'); });
+ barRects.forEach(function(b) { if (b) b.classList.add('chart-bar--selected'); });
+
+ // 指示线
+ var indicator = document.getElementById('chartIndicator');
+ var chartWidth = 310;
+ if (currentMode === 'day') {
+ var barGap = 2;
+ var barWidth = Math.max(3, (chartWidth / cfg.points.length) - barGap);
+ var totalBarSpace = barWidth + barGap;
+ var offsetX = (chartWidth - cfg.points.length * totalBarSpace) / 2;
+ var cx = offsetX + idx * totalBarSpace + barWidth / 2;
+ } else {
+ var data = cfg.ranges;
+ var barGap2 = currentMode === 'month' ? 2 : 6;
+ var barWidth2 = Math.max(4, (chartWidth / data.length) - barGap2);
+ var totalBarSpace2 = barWidth2 + barGap2;
+ var offsetX2 = (chartWidth - data.length * totalBarSpace2) / 2;
+ var cx = offsetX2 + idx * totalBarSpace2 + barWidth2 / 2;
+ }
+ indicator.setAttribute('x1', cx.toFixed(1));
+ indicator.setAttribute('x2', cx.toFixed(1));
+ indicator.style.display = '';
+
+ // 更新滚轮位置
+ var knob = document.getElementById('timelineKnob');
+ var row = document.getElementById('timelineRow');
+ var rowWidth = row.offsetWidth - 28;
+ var knobLeft = (idx / (count - 1)) * rowWidth;
+ knob.style.left = knobLeft.toFixed(1) + 'px';
+
+ // 更新X轴高亮
+ var xSpans = document.querySelectorAll('#xAxis span');
+ xSpans.forEach(function(s) { s.classList.remove('active'); });
+ // 映射选中index到xLabel index
+ var xCount = cfg.xLabels.length;
+ var mappedX = Math.round(idx / (count - 1) * (xCount - 1));
+ if (xSpans[mappedX]) xSpans[mappedX].classList.add('active');
+
+ // 更新顶部rangeText
+ updateSummaryForSelection(cfg, idx);
+}
+
+function updateSummaryForSelection(cfg, idx) {
+ if (currentMode === 'day') {
+ var hour = Math.floor(idx * 24 / cfg.points.length);
+ var hourEnd = Math.floor((idx + 1) * 24 / cfg.points.length);
+ document.getElementById('rangeText').textContent = hour + ':00 - ' + hourEnd + ':00';
+ document.getElementById('mainValue').textContent = cfg.points[idx];
+ document.getElementById('mainUnit').textContent = '%';
+ } else {
+ var r = cfg.ranges[idx];
+ document.getElementById('mainValue').textContent = r.min + '% - ' + r.max + '%';
+ document.getElementById('mainUnit').textContent = '';
+ if (currentMode === 'week') {
+ var days = ['周一','周二','周三','周四','周五','周六','周日'];
+ document.getElementById('rangeText').textContent = days[idx] || '';
+ } else if (currentMode === 'month') {
+ document.getElementById('rangeText').textContent = (idx + 1) + '日';
+ } else if (currentMode === 'year') {
+ document.getElementById('rangeText').textContent = (idx + 1) + '月';
+ }
+ }
+}
+
+// 滚轮拖动
+(function() {
+ var knob = document.getElementById('timelineKnob');
+ var row = document.getElementById('timelineRow');
+ var dragging = false;
+
+ function getIndexFromX(clientX) {
+ var rect = row.getBoundingClientRect();
+ var x = clientX - rect.left - 14;
+ var width = rect.width - 28;
+ var ratio = Math.max(0, Math.min(1, x / width));
+ var cfg = dataMap[currentMode];
+ var count = currentMode === 'day' ? cfg.points.length : cfg.ranges.length;
+ return Math.round(ratio * (count - 1));
+ }
+
+ knob.addEventListener('mousedown', function(e) { dragging = true; e.preventDefault(); });
+ knob.addEventListener('touchstart', function(e) { dragging = true; });
+ document.addEventListener('mousemove', function(e) { if (dragging) selectBar(getIndexFromX(e.clientX)); });
+ document.addEventListener('touchmove', function(e) { if (dragging) selectBar(getIndexFromX(e.touches[0].clientX)); });
+ document.addEventListener('mouseup', function() { dragging = false; });
+ document.addEventListener('touchend', function() { dragging = false; });
+
+ // 点击轨道也可选择
+ row.addEventListener('click', function(e) { selectBar(getIndexFromX(e.clientX)); });
+})();
+
+// X轴标签点击选择
+document.getElementById('xAxis').addEventListener('click', function(e) {
+ var span = e.target.closest('span');
+ if (!span) return;
+ var spans = Array.from(document.querySelectorAll('#xAxis span'));
+ var xIdx = spans.indexOf(span);
+ if (xIdx === -1) return;
+ var cfg = dataMap[currentMode];
+ var count = currentMode === 'day' ? cfg.points.length : cfg.ranges.length;
+ var barIdx = Math.round(xIdx / (cfg.xLabels.length - 1) * (count - 1));
+ selectBar(barIdx);
+});
+
document.querySelectorAll('.time-tab').forEach(function(tab) {
tab.onclick = function() {
document.querySelectorAll('.time-tab').forEach(function(item) { item.classList.remove('active'); });
tab.classList.add('active');
- renderMode(tab.getAttribute('data-mode'));
+ currentMode = tab.getAttribute('data-mode');
+ renderMode(currentMode);
};
});
diff --git a/employee-app/health-monitor/wearable/blood-pressure-alerts.html b/employee-app/health-monitor/wearable/blood-pressure-alerts.html
index 82c9928..41f3d5a 100644
--- a/employee-app/health-monitor/wearable/blood-pressure-alerts.html
+++ b/employee-app/health-monitor/wearable/blood-pressure-alerts.html
@@ -188,6 +188,24 @@ body {
.bottom-safe { height: 20px; flex-shrink: 0; }
+/* 右侧阈值范围 */
+.alert-card__threshold {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 4px;
+ flex-shrink: 0;
+ padding-top: 4px;
+}
+.alert-card__threshold-item {
+ font-size: 11px;
+ color: #bbb;
+}
+.alert-card__threshold-item span {
+ font-weight: 600;
+ color: #666;
+}
+
.filter-btn {
display: flex;
align-items: center;
@@ -235,26 +253,6 @@ body {
-
-
-
-
-
最近预警时间
-
2026-05-11 08:45
-
-
-
预警记录(共 4 条)
@@ -307,28 +292,15 @@ body {
142/92
mmHg
-
-
触发原因:收缩压超过 140 mmHg 阈值
+
+
@@ -340,28 +312,15 @@ body {
145/90
mmHg
-
-
触发原因:收缩压超过 140 mmHg 阈值
+
+