From fdeb8a2d09bdf1642063593c6d6b46ab2a2216cc Mon Sep 17 00:00:00 2001 From: liuyunqin Date: Fri, 7 Aug 2026 17:12:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=93=E9=87=8D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E9=A1=B5=E9=9D=A2=E6=9B=B4=E6=96=B0=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=BA=E5=91=98=E6=B5=8B=E9=87=8F=E8=AE=B0?= =?UTF-8?q?=E5=BD=95/=E6=A6=82=E8=A7=88=E8=AE=B0=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- employee-app/profile/index.html | 18 +- .../operator/emergency-active.html | 766 +++-- .../action-overview-detail.html | 31 +- .../weight-management/action-overview.html | 67 +- .../weight-management/action-record.html | 255 +- .../activity-statistics.html | 67 +- .../archive-algorithm-model.html | 5 +- .../archive-personal-weight-data.html | 21 +- .../archive-personal-weight-detail.html | 5 +- .../archive-unit-report-detail.html | 39 +- .../archive-unit-report.html | 5 +- .../bluetooth-device-add.html | 5 +- .../weight-management/bluetooth-device.html | 7 +- .../bluetooth-monitor-detail.html | 9 +- .../weight-management/bluetooth-monitor.html | 7 +- web-admin/weight-management/dept-stat.html | 21 +- .../employee-data-record.html | 5 +- .../weight-management/employee-data.html | 7 +- .../weight-management/employee-stat.html | 17 +- .../exception-result-abnormal.html | 29 +- .../exception-system-dirty.html | 15 +- .../weight-management/fat-device-add.html | 5 +- web-admin/weight-management/fat-device.html | 7 +- .../weight-management/fat-monitor-detail.html | 9 +- web-admin/weight-management/fat-monitor.html | 7 +- .../history-personnel-detail.html | 11 +- .../history-plan-detail.html | 77 +- .../weight-management/history-plan-list.html | 48 +- .../personal-target-data.html | 5 +- .../personal-target-detail.html | 23 +- .../personnel-measure-record.html | 2946 +++++++++++++++++ ...st.html => personnel-overview-record.html} | 71 +- web-admin/weight-management/plan-edit.html | 49 +- web-admin/weight-management/plan-list.html | 103 +- .../weight-management/recipe-record.html | 5 +- .../registration-tracking.html | 106 +- .../weight-management/scale-device-add.html | 5 +- web-admin/weight-management/scale-device.html | 7 +- .../scale-monitor-detail.html | 9 +- .../weight-management/scale-monitor.html | 7 +- .../weight-management/sport-device-add.html | 5 +- web-admin/weight-management/sport-device.html | 7 +- .../sport-monitor-detail.html | 9 +- .../weight-management/sport-monitor.html | 7 +- .../target-weight-review.html | 87 +- .../weight-management/weight-ranking.html | 97 +- 46 files changed, 4246 insertions(+), 867 deletions(-) create mode 100644 web-admin/weight-management/personnel-measure-record.html rename web-admin/weight-management/{history-personnel-list.html => personnel-overview-record.html} (94%) diff --git a/employee-app/profile/index.html b/employee-app/profile/index.html index 2849765..4441290 100644 --- a/employee-app/profile/index.html +++ b/employee-app/profile/index.html @@ -65,13 +65,19 @@ body { background: #f0f2f5; display: flex; justify-content: center; align-items:
- -
- 🆘 紧急联系人 - -
+ +
+ 🆘 紧急联系人 + +
- + +
+ 🩺 健康画像 + +
+ +
diff --git a/web-admin/emergency-dispatch/operator/emergency-active.html b/web-admin/emergency-dispatch/operator/emergency-active.html index af675a5..88b5889 100644 --- a/web-admin/emergency-dispatch/operator/emergency-active.html +++ b/web-admin/emergency-dispatch/operator/emergency-active.html @@ -5,6 +5,7 @@ 应急就医 - 正在应急 | 健康CQ原型 @@ -299,61 +342,97 @@
+ +
+
+ + + + 已派救护车支援 +
+
+ 车牌 -- + 驾驶人 -- + 医院 -- + 电话 -- +
+
+ 预计到达时间 + -- +
+
+
-
-
-
-
-
张伟 男 45岁
-
09:15
-
-
我现在胸口很闷,呼吸困难...
-
-
-
-
-
-
-
李明 男 38岁
-
09:02
-
-
头部受伤,有流血情况
-
-
2
-
-
-
-
-
-
王芳 女 52岁
-
08:45
-
-
好的,我已经按照您说的做了
-
-
-
-
-
-
-
赵刚 男 29岁
-
08:30
-
-
现在感觉好一些了
-
-
5
-
+
+
+
+
+
+
+
+
+
张伟 男 45岁
+
09:15
+
+
我现在胸口很闷,呼吸困难...
+
+
+
+
+
+
+
+
+
+
+
李明 男 38岁
+
09:02
+
+
头部受伤,有流血情况
+
+
2
+
+
+
+
+
+
+
+
+
+
王芳 女 52岁
+
08:45
+
+
好的,我已经按照您说的做了
+
+
+
+
+
+
+
+
+
+
+
赵刚 男 29岁
+
08:30
+
+
现在感觉好一些了
+
+
5
+
@@ -362,8 +441,8 @@
-
张伟
-
男 45岁 | 员工编号: EMP001 | 采油一厂 · 生产部
+
张伟 男 45岁 | 员工编号: EMP001
+
采油一厂 · 生产部
+
@@ -467,61 +546,122 @@
- -
-
值班信息
-
-
-
3
-
当日应急人数
- + +
+
+
+
+
+
+
+
住宅区
+
采油一厂
办公楼
+
食堂
+
设备库房
+
宿舍楼
+
CQ大道
+
兴隆路
+
能源北路
+ +
+ + -
-
47
-
当月应急人数
- -
-
-
96.8%
-
应急响应及时率
-
-
-
91.5%
-
应急任务完成率
-
-
-
-
- -
- - + +
+
+ + + +
+
+
已派救护车支援
+
+
+
+
--
+
预计到达
-
-
-
-
今天
-
排班日
+ +
+ + + +
+
+
+
所属单位
+
详细地址
+
联系电话
+
-
- -
-
今日值班人员
-
-
- 李想 - 操作人员 + +
+ 张伟 + 男·45岁 + 采油一厂3号楼办公室 + ● 求助中
-
-
- 陈旭 · 主治医师 - 专业人员 -
-
-
- 王旭 - 操作人员 + + + +
+
+ 附近医疗资源 + +
+
+
+ 全部资源 + 医院 + 医疗点 + 救护车 + AED + 急救包 +
+
+
+
+
CQ能源职工医院
CQ能源分公司
距离 1.2 km
西安市未央区CQ路68号
+
+
+
+
采油一厂卫生所
采油一厂
距离 0.3 km
采油一厂生活区A栋1层
+
+
+
+
西安交通大学第一附属医院
西安交大医学部
距离 8.5 km
西安市雁塔区雁塔西路277号
+
+
+
+
陕西省人民医院
陕西省卫健委
距离 12.3 km
西安市碑林区友谊西路256号
+
+
+
+
陕A·120-03 急救车
CQ能源职工医院
距离 1.5 km · 预计3分钟到达
当前位置:CQ大道与能源北路交叉口
+
+
+
+
AED-001 办公楼大厅
采油一厂
距离 0.05 km
采油一厂办公楼1层前台右侧
+
+
+
+
3层走廊急救箱
采油一厂办公楼
距离 0.02 km
办公楼3层电梯间旁
+
+
+
+
采油一厂医疗急救站
采油一厂安全环保部
距离 0.15 km
采油一厂办公楼1层大厅
+
+
+
@@ -916,7 +1056,117 @@ function submitAmb(){ dest:document.getElementById('ambDest').value.trim(),remark:document.getElementById('ambRemark').value.trim()}; _ambFormCache=null; closeAmb(); + startAmbTracking(); } +/* 救护车实时追踪 */ +var _ambTrackTimer=null; +var _ambTrackStart=null; +var _ambTrackDuration=180000; +var _ambArrivalTime=''; +function startAmbTracking(){ + if(!_ambData)return; + // 显示顶部横幅 + document.getElementById('ambBannerPlate').textContent=_ambData.plate; + document.getElementById('ambBannerDriver').textContent=_ambData.driver; + document.getElementById('ambBannerHospital').textContent=_ambData.org; + document.getElementById('ambBannerTel').textContent=_ambData.driverTel; + document.getElementById('ambBanner').classList.add('show'); + document.querySelector('.main').classList.add('main--with-banner'); + // 显示地图救护车卡片 + document.getElementById('mapAmbCardInfo').innerHTML=''+escapeHtml(_ambData.plate)+' · '+escapeHtml(_ambData.driver)+' · '+escapeHtml(_ambData.org); + document.getElementById('mapAmbCard').classList.add('show'); + // 计算ETA + var etaMin=3; + if(_ambData.plate.indexOf('120-01')>=0)etaMin=2; + else if(_ambData.plate.indexOf('120-05')>=0)etaMin=5; + else if(_ambData.plate.indexOf('120-06')>=0)etaMin=8; + _ambTrackDuration=etaMin*60000; + _ambTrackStart=Date.now(); + var arrival=new Date(Date.now()+_ambTrackDuration); + _ambArrivalTime=String(arrival.getHours()).padStart(2,'0')+':'+String(arrival.getMinutes()).padStart(2,'0'); + // 设置静态到达时间 + var etaText='预计 '+_ambArrivalTime+' 到达'; + document.getElementById('ambBannerEta').textContent=etaText; + document.getElementById('ambBannerEta').style.color='var(--warning)'; + document.getElementById('mapAmbCardEta').textContent=_ambArrivalTime; + document.getElementById('mapAmbCardEta').style.color='var(--warning)'; + // 显示救护车标记 + 路线 + var marker=document.getElementById('ambTrackMarker'); + marker.style.display=''; + marker.style.top='15%';marker.style.left='65%'; + var empTop=42,empLeft=52; + drawAmbRoute(15,65); + if(_ambTrackTimer)clearInterval(_ambTrackTimer); + _ambTrackTimer=setInterval(function(){ + var elapsed=Date.now()-_ambTrackStart; + var progress=Math.min(elapsed/_ambTrackDuration,1); + var curTop=15+(empTop-15)*progress; + var curLeft=65+(empLeft-65)*progress; + marker.style.top=curTop+'%'; + marker.style.left=curLeft+'%'; + drawAmbRoute(curTop,curLeft); + if(progress>=1){ + clearInterval(_ambTrackTimer);_ambTrackTimer=null; + marker.querySelector('.amb-track-marker__label').textContent='🚑 已到达'; + document.getElementById('ambBannerEta').textContent='已到达'; + document.getElementById('ambBannerEta').style.color='var(--success)'; + document.getElementById('mapAmbCardEta').textContent='已到达'; + document.getElementById('mapAmbCardEta').style.color='var(--success)'; + clearAmbRoute(); + addAmbArrivalMsg(); + } + },2000); +} +function dismissAmbBanner(){ + document.getElementById('ambBanner').classList.remove('show'); + document.querySelector('.main').classList.remove('main--with-banner'); + document.getElementById('ambTrackMarker').style.display='none'; + document.getElementById('mapAmbCard').classList.remove('show'); + clearAmbRoute(); + if(_ambTrackTimer){clearInterval(_ambTrackTimer);_ambTrackTimer=null;} +} +function dismissMapAmbCard(){ + document.getElementById('mapAmbCard').classList.remove('show'); +} +/* 救护车路线 */ +function drawAmbRoute(ambTop,ambLeft){ + var overlay=document.getElementById('routeOverlay'); + // 保留已有资源路线,追加救护车路线 + var existing=overlay.innerHTML; + // 清除旧救护车路线 + existing=existing.replace(/[\s\S]*?/g,''); + var empTop=42,empLeft=52; + var ambRoute=''; + overlay.innerHTML=existing+ambRoute; + // 救护车路线中点标签 + var oldLbl=document.getElementById('ambRouteLabel'); + if(oldLbl)oldLbl.remove(); + var midTop=((ambTop+empTop)/2).toFixed(1); + var midLeft=((ambLeft+empLeft)/2).toFixed(1); + var lbl=document.createElement('div'); + lbl.id='ambRouteLabel'; + lbl.className='route-mid-label'; + lbl.style.top=midTop+'%';lbl.style.left=midLeft+'%'; + lbl.style.background='rgba(250,173,20,0.9)'; + lbl.innerHTML='🚑 救护车赶往中'; + document.getElementById('inlineMapArea').appendChild(lbl); +} +function clearAmbRoute(){ + var overlay=document.getElementById('routeOverlay'); + overlay.innerHTML=overlay.innerHTML.replace(/[\s\S]*?/g,''); + var lbl=document.getElementById('ambRouteLabel'); + if(lbl)lbl.remove(); +} +function addAmbArrivalMsg(){ + var msgArea=document.querySelector('.im-right__messages'); + var now=new Date(); + var ts=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0')+' '+String(now.getHours()).padStart(2,'0')+':'+String(now.getMinutes()).padStart(2,'0'); + var html='
系统通知
' + +'
🚑 救护车 '+(_ambData?escapeHtml(_ambData.plate):'')+' 已到达现场
'+ts+'
'; + msgArea.insertAdjacentHTML('beforeend',html); + msgArea.scrollTop=msgArea.scrollHeight; +} +function escapeHtml(s){var d=document.createElement('div');d.textContent=s;return d.innerHTML;} function editAmb(){ document.getElementById('ambInfo').style.display='none'; document.getElementById('ambInfoFooter').style.display='none'; @@ -1039,58 +1289,178 @@ function toggleDispatchStatus(){ document.addEventListener('click',function(e){ if(!e.target.closest('#personSelect'))document.getElementById('personDrop').classList.remove('open'); }); -/* 月视图日历 */ -var _calYear,_calMonth; -var _calSelectedDay=null; -var _dutyDays={2026:{4:[1,2,3,7,8,9,10,14,15,16,17,21,22,23,24,28,29,30],5:[5,6,7,8,9,12,13,14,15,16,19,20,21,22,23,26,27,28,29,30]}}; -function initCalendar(){ - var d=new Date();_calYear=d.getFullYear();_calMonth=d.getMonth()+1; - renderCalendar(); +/* 内嵌地图面板:资源数据 */ +var RESOURCE_DATA = { + hospital1: {name:'CQ能源职工医院', cat:'医院', catColor:'#1890FF', unit:'CQ能源分公司', addr:'西安市未央区CQ路68号', phone:'029-86831120', dist:'1.2 km', time:'约5分钟'}, + hospital2: {name:'采油一厂卫生所', cat:'医院', catColor:'#1890FF', unit:'采油一厂', addr:'采油一厂生活区A栋1层', phone:'029-86835678', dist:'0.3 km', time:'约1分钟'}, + partner1: {name:'西安交通大学第一附属医院', cat:'医院', catColor:'#722ED1', unit:'西安交大医学部', addr:'西安市雁塔区雁塔西路277号', phone:'029-85323112', dist:'8.5 km', time:'约25分钟'}, + partner2: {name:'陕西省人民医院', cat:'医院', catColor:'#722ED1', unit:'陕西省卫健委', addr:'西安市碑林区友谊西路256号', phone:'029-85251331', dist:'12.3 km', time:'约35分钟'}, + ambulance1:{name:'陕A·120-03 急救车', cat:'救护车', catColor:'#FAAD14', unit:'CQ能源职工医院', addr:'CQ大道与能源北路交叉口', phone:'138-9101-2003', dist:'1.5 km', time:'约3分钟'}, + aed1: {name:'AED-001 办公楼大厅', cat:'AED设备', catColor:'#FF4D4F', unit:'采油一厂', addr:'采油一厂办公楼1层前台右侧', phone:'029-86836110', dist:'0.05 km', time:'约1分钟'}, + kit1: {name:'3层走廊急救箱', cat:'急救包', catColor:'#52C41A', unit:'采油一厂办公楼', addr:'办公楼3层电梯间旁', phone:'029-86836112', dist:'0.02 km', time:'约1分钟', d1Label:'急救物品', d1:'止血带×5、创可贴×20、碘伏棉签×10、三角巾×2'}, + clinic1: {name:'采油一厂医疗急救站', cat:'医疗点', catColor:'#13C2C2', unit:'采油一厂安全环保部', addr:'采油一厂办公楼1层大厅', phone:'029-86836120', dist:'0.15 km', time:'约1分钟'} +}; +var _routeCard=null; +var _activeMarkerKey=null; +/* Tab切换:过滤抽屉卡片 */ +function switchInlineTab(cat,el){ + var tabs=document.querySelectorAll('.map-drawer .res-tab'); + tabs.forEach(function(t){t.classList.remove('active');}); + el.classList.add('active'); + document.querySelectorAll('#inlineResList .res-card').forEach(function(c){ + if(cat==='all'){c.style.display='';} + else{c.style.display=c.getAttribute('data-res')===cat?'':'none';} + c.classList.remove('active'); + }); + // 同步过滤地图标记 + renderAllMarkers(cat); } -function changeMonth(dir){ - _calMonth+=dir; - if(_calMonth<1){_calMonth=12;_calYear--;} - if(_calMonth>12){_calMonth=1;_calYear++;} - renderCalendar(); +/* 渲染资源标记(可按类型过滤) */ +function renderAllMarkers(cat){ + cat=cat||'all'; + var container=document.getElementById('inlineResMarkers'); + container.innerHTML=''; + document.querySelectorAll('#inlineResList .res-card').forEach(function(card,i){ + if(cat!=='all'&&card.getAttribute('data-res')!==cat)return; + var pos=card.getAttribute('data-pos');if(!pos)return; + var pos=card.getAttribute('data-pos');if(!pos)return; + var parts=pos.split(';'); + var color=card.getAttribute('data-color')||'#1890FF'; + var label=card.getAttribute('data-label')||''; + var key=card.getAttribute('data-key')||''; + var m=document.createElement('div'); + m.className='res-marker res-marker--clickable'; + m.style.top=parts[0];m.style.left=parts[1]; + m.innerHTML='
'+label+'
'; + m.setAttribute('data-key',key); + (function(cardEl,keyVal){m.onclick=function(e){e.stopPropagation();onMarkerClick(cardEl,keyVal);};})(card,key); + container.appendChild(m); + }); } -function renderCalendar(){ - document.getElementById('calMonth').textContent=_calYear+'年'+_calMonth+'月'; - var grid=document.getElementById('calGrid');grid.innerHTML=''; - var firstDay=new Date(_calYear,_calMonth-1,1).getDay(); - var daysInMonth=new Date(_calYear,_calMonth,0).getDate(); - var prevDays=new Date(_calYear,_calMonth-1,0).getDate(); - var today=new Date();var isThisMonth=(_calYear===today.getFullYear()&&_calMonth===today.getMonth()+1); - var duties=(_dutyDays[_calYear]&&_dutyDays[_calYear][_calMonth])||[]; - for(var i=firstDay-1;i>=0;i--){ - var el=document.createElement('div');el.className='cal-day cal-day--other';el.textContent=prevDays-i;grid.appendChild(el); +/* 标记点击:弹窗 + 路线 */ +function onMarkerClick(card,key){ + var d=RESOURCE_DATA[key];if(!d)return; + highlightInlineResCardByKey(key); + drawRoute(card); + var marker=document.querySelector('#inlineResMarkers .res-marker[data-key="'+key+'"]'); + if(marker)showPopup(marker,d); + _activeMarkerKey=key; +} +function highlightInlineResCardByKey(key){ + document.querySelectorAll('#inlineResList .res-card').forEach(function(c){c.classList.remove('active');}); + document.querySelectorAll('#inlineResMarkers .res-marker').forEach(function(m){m.classList.remove('active');}); + var card=document.querySelector('#inlineResList .res-card[data-key="'+key+'"]'); + if(card){ + card.classList.add('active'); + var drawer=document.getElementById('mapDrawer'); + if(drawer.classList.contains('open')){card.scrollIntoView({block:'nearest',behavior:'smooth'});} } - for(var d=1;d<=daysInMonth;d++){ - var el=document.createElement('div');el.className='cal-day'; - var isDuty=duties.indexOf(d)>=0; - var isToday=isThisMonth&&d===today.getDate(); - if(isDuty)el.className+=' cal-day--duty'; - if(isToday){el.className+=' cal-day--today cal-day--selected';_calSelectedDay=d;} - el.textContent=d; - if(isDuty){ - var dot=document.createElement('span');dot.className='cal-dot';el.appendChild(dot); - } - el.style.cursor='pointer'; - el.setAttribute('data-day',d); - el.addEventListener('click',function(){selectCalDay(parseInt(this.getAttribute('data-day')));}); - grid.appendChild(el); - } - var total=firstDay+daysInMonth;var remain=total%7===0?0:7-total%7; - for(var i=1;i<=remain;i++){ - var el=document.createElement('div');el.className='cal-day cal-day--other';el.textContent=i;grid.appendChild(el); + var marker=document.querySelector('#inlineResMarkers .res-marker[data-key="'+key+'"]'); + if(marker)marker.classList.add('active'); +} +/* 卡片点击 */ +function onResCardClick(card){ + var key=card.getAttribute('data-key'); + if(!key)return; + onMarkerClick(card,key); +} +/* 路线规划 */ +function drawRoute(card){ + clearRoute(); + var mapArea=document.getElementById('inlineMapArea'); + var overlay=document.getElementById('routeOverlay'); + var empTop=42,empLeft=52; + var pos=card.getAttribute('data-pos'); + var parts=pos.split(';'); + var resTop=parseFloat(parts[0]),resLeft=parseFloat(parts[1]); + var color=card.getAttribute('data-color')||'#1890FF'; + var dist=card.getAttribute('data-dist')||''; + var eta=card.getAttribute('data-eta')||''; + var label=card.getAttribute('data-label')||''; + overlay.innerHTML=''; + var midTop=((empTop+resTop)/2).toFixed(1); + var midLeft=((empLeft+resLeft)/2).toFixed(1); + var lbl=document.createElement('div'); + lbl.className='route-mid-label'; + lbl.style.top=midTop+'%';lbl.style.left=midLeft+'%'; + lbl.innerHTML=''+label+' '+dist+' · '+eta; + mapArea.appendChild(lbl); + lbl.setAttribute('data-route-label','1'); + _routeCard=card; +} +function clearRoute(){ + var overlay=document.getElementById('routeOverlay'); + overlay.innerHTML=''; + var labels=document.querySelectorAll('[data-route-label]'); + labels.forEach(function(l){l.remove();}); + _routeCard=null; + _activeMarkerKey=null; + hidePopup(); + document.querySelectorAll('#inlineResList .res-card').forEach(function(c){c.classList.remove('active');}); + document.querySelectorAll('#inlineResMarkers .res-marker').forEach(function(m){m.classList.remove('active');}); +} +/* 气泡弹窗 */ +function showPopup(el,d){ + var popup=document.getElementById('markerPopup'); + var mapArea=document.getElementById('inlineMapArea'); + var mRect=el.getBoundingClientRect(); + var mapRect=mapArea.getBoundingClientRect(); + var left=mRect.left-mapRect.left+mRect.width/2; + // 先尝试上方 + popup.classList.remove('marker-popup--below','marker-popup--show'); + popup.style.top='auto';popup.style.left=left+'px'; + popup.style.bottom='';popup.style.top=''; + document.getElementById('popupName').textContent=d.name; + document.getElementById('popupCat').innerHTML=''+d.cat; + document.getElementById('popupUnit').textContent=d.unit||'--'; + document.getElementById('popupAddr').textContent=d.addr||'--'; + document.getElementById('popupPhone').textContent=d.phone||'--'; + var extraRow=document.getElementById('popupRowExtra'); + if(d.d1Label){extraRow.style.display='';document.getElementById('popupExtraLabel').textContent=d.d1Label;document.getElementById('popupExtraVal').textContent=d.d1||''; + }else{extraRow.style.display='none';} + // 先强制布局,测量高度 + popup.classList.add('marker-popup--show'); + var popH=popup.offsetHeight; + var aboveTop=mRect.top-mapRect.top-10-popH; + if(aboveTop<0){ + // 上方空间不够,显示在下方 + popup.classList.remove('marker-popup--show'); + popup.classList.add('marker-popup--below'); + popup.style.top=(mRect.bottom-mapRect.top+10)+'px'; + popup.classList.add('marker-popup--show'); + }else{ + popup.style.top=(mRect.top-mapRect.top-10)+'px'; } } -initCalendar(); -function selectCalDay(day){ - _calSelectedDay=day; - document.querySelectorAll('#calGrid .cal-day').forEach(function(el){el.classList.remove('cal-day--selected');}); - var target=document.querySelector('#calGrid .cal-day[data-day="'+day+'"]'); - if(target)target.classList.add('cal-day--selected'); +function hidePopup(){ + document.getElementById('markerPopup').classList.remove('marker-popup--show'); } +/* 地图空白区点击 */ +document.getElementById('inlineMapArea').addEventListener('click',function(e){ + if(e.target.closest('.res-marker')||e.target.closest('.map-drawer-toggle')||e.target.closest('.map-drawer'))return; + clearRoute(); +}); +/* 抽屉开关 */ +function toggleDrawer(){ + var drawer=document.getElementById('mapDrawer'); + if(drawer.classList.contains('open')){closeDrawer();}else{openDrawer();} +} +function openDrawer(){ + var drawer=document.getElementById('mapDrawer'); + var toggle=document.getElementById('mapDrawerToggle'); + drawer.classList.add('open'); + toggle.classList.add('hidden'); +} +function closeDrawer(){ + var drawer=document.getElementById('mapDrawer'); + var toggle=document.getElementById('mapDrawerToggle'); + drawer.classList.remove('open'); + toggle.classList.remove('hidden'); +} +/* 页面初始化:渲染全部标记,抽屉默认打开 */ +renderAllMarkers(); +document.getElementById('mapDrawer').classList.add('open'); +document.getElementById('mapDrawerToggle').classList.add('hidden'); /* 救助信息弹窗 */ var _summaryId=2; function openSummaryModal(){document.getElementById('summaryModal').classList.add('open');document.body.style.overflow='hidden';updateSummaryCount();} @@ -1148,11 +1518,11 @@ function deleteSummary(btn){ btn.closest('.summary-item').remove(); updateSummaryCount(); } -/* 资源Tab切换 */ +/* 资源Tab切换(弹窗内) */ function switchResTab(cat,el){ - document.querySelectorAll('.res-tab').forEach(function(t){t.classList.remove('active');}); + document.querySelectorAll('#mapModal .res-tab').forEach(function(t){t.classList.remove('active');}); el.classList.add('active'); - document.querySelectorAll('.res-card').forEach(function(c){ + document.querySelectorAll('#mapModal .res-card').forEach(function(c){ c.style.display=c.getAttribute('data-res')===cat?'':'none'; c.classList.remove('active'); }); @@ -1161,7 +1531,7 @@ function switchResTab(cat,el){ function renderResMarkers(cat){ var container=document.getElementById('resMarkers'); container.innerHTML=''; - document.querySelectorAll('.res-card[data-res="'+cat+'"]').forEach(function(card,i){ + document.querySelectorAll('#mapModal .res-card[data-res="'+cat+'"]').forEach(function(card,i){ var pos=card.getAttribute('data-pos');if(!pos)return; var parts=pos.split(';'); var color=card.getAttribute('data-color')||'#1890FF'; @@ -1176,18 +1546,18 @@ function renderResMarkers(cat){ }); } function highlightResCard(cat,idx){ - document.querySelectorAll('.res-card').forEach(function(c){c.classList.remove('active');}); - document.querySelectorAll('.res-marker').forEach(function(m){m.classList.remove('active');}); - var cards=document.querySelectorAll('.res-card[data-res="'+cat+'"]'); + document.querySelectorAll('#mapModal .res-card').forEach(function(c){c.classList.remove('active');}); + document.querySelectorAll('#resMarkers .res-marker').forEach(function(m){m.classList.remove('active');}); + var cards=document.querySelectorAll('#mapModal .res-card[data-res="'+cat+'"]'); if(cards[idx]){cards[idx].classList.add('active');cards[idx].scrollIntoView({block:'nearest',behavior:'smooth'});} - var markers=document.querySelectorAll('.res-marker'); + var markers=document.querySelectorAll('#resMarkers .res-marker'); if(markers[idx])markers[idx].classList.add('active'); } document.addEventListener('click',function(e){ - var card=e.target.closest('.res-card'); + var card=e.target.closest('#mapModal .res-card'); if(!card)return; var cat=card.getAttribute('data-res'); - var cards=Array.prototype.slice.call(document.querySelectorAll('.res-card[data-res="'+cat+'"]')); + var cards=Array.prototype.slice.call(document.querySelectorAll('#mapModal .res-card[data-res="'+cat+'"]')); var idx=cards.indexOf(card); if(idx>=0)highlightResCard(cat,idx); }); diff --git a/web-admin/weight-management/action-overview-detail.html b/web-admin/weight-management/action-overview-detail.html index 841c973..c3a011f 100644 --- a/web-admin/weight-management/action-overview-detail.html +++ b/web-admin/weight-management/action-overview-detail.html @@ -128,10 +128,11 @@ tbody tr:hover td:nth-child(2){background:#F8FBFF;}
- +
-
干预计划
+
活动名称
-
计划名称:-
+
活动名称:-
组织机构:-
起止日期:-
进行天数:-
@@ -269,14 +270,14 @@ tbody tr:hover td:nth-child(2){background:#F8FBFF;} /* ===== 数据 ===== */ var plans = [ - {id:1,name:'第四采油厂2026年超重健康干预计划',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, + {id:1,name:'第四采油厂2026年超重健康干预活动',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, {id:2,name:'采油一厂2026年体重管理专项行动',org:'采油一厂',dateFrom:'2026-04-01',dateTo:'2026-09-30',totalCount:186,actualCount:180}, - {id:3,name:'采油二厂2026年健康减重计划',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, - {id:4,name:'采气一厂2025年度体重管理计划',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, - {id:5,name:'第四采油厂2025年超重健康干预计划',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, - {id:6,name:'采油一厂2025年员工健康体重计划',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, - {id:7,name:'采气一厂2026下半年体重干预计划',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, - {id:8,name:'采油二厂2024年体重控制专项计划',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} + {id:3,name:'采油二厂2026年健康减重活动',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, + {id:4,name:'采气一厂2025年度体重管理活动',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, + {id:5,name:'第四采油厂2025年超重健康干预活动',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, + {id:6,name:'采油一厂2025年员工健康体重活动',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, + {id:7,name:'采气一厂2026下半年体重干预活动',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, + {id:8,name:'采油二厂2024年体重控制专项活动',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} ]; var baseEmployees = [ @@ -327,7 +328,7 @@ function getParam(name){ /* ===== 生成每日明细Mock数据 ===== */ function buildDetailData(emp){ var data = []; - // 使用计划起止日期生成每日数据 + // 使用活动起止日期生成每日数据 var dateFrom = new Date(plan.dateFrom); var dateTo = new Date(plan.dateTo); var today = new Date(); @@ -407,7 +408,7 @@ function buildDetailData(emp){ /* ===== 渲染信息卡片 ===== */ function renderInfoCards(){ if(!employee || !plan) return; - // 计划信息 + // 活动信息 document.getElementById('ciPlanName').textContent = plan.name; document.getElementById('ciOrg').textContent = plan.org; document.getElementById('ciDate').textContent = plan.dateFrom + ' ~ ' + plan.dateTo; @@ -695,7 +696,7 @@ function showToast(msg){ var planId = getParam('planId'); var empId = getParam('empId'); - // 查找计划和员工 + // 查找活动和员工 plan = plans.find(function(p){return p.id === parseInt(planId);}) || plans[0]; employee = baseEmployees.find(function(e){return e.empId === empId;}) || baseEmployees[0]; diff --git a/web-admin/weight-management/action-overview.html b/web-admin/weight-management/action-overview.html index f694851..1a4570a 100644 --- a/web-admin/weight-management/action-overview.html +++ b/web-admin/weight-management/action-overview.html @@ -45,7 +45,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei /* 搜索下拉 */ .search-select{position:relative;width:100%;} -.search-select__input{width:100%;height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-sm);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} +.search-select__input{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-xs);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} .search-select__input:focus{border-color:var(--primary);} .search-select__input::placeholder{color:var(--text-placeholder);} .search-select__panel{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:500;display:none;max-height:280px;overflow-y:auto;} @@ -108,7 +108,7 @@ tbody tr:hover{background:#F8FBFF;} /* 序号列 — 不固定 */ thead th:nth-child(1),tbody td:nth-child(1){width:52px;min-width:52px;max-width:52px;} -/* 干预计划/姓名/员工编号固定左侧(原1/2/3 → 现2/3/4) */ +/* 干预活动/姓名/员工编号固定左侧(原1/2/3 → 现2/3/4) */ thead th:nth-child(2),tbody td:nth-child(2){position:sticky;left:0;z-index:6;background:#fff;width:200px;min-width:200px;max-width:200px;overflow:hidden;text-overflow:ellipsis;} thead th:nth-child(2){z-index:9;background:#FAFAFA;} thead th:nth-child(3),tbody td:nth-child(3){position:sticky;left:200px;z-index:5;background:#fff;width:56px;min-width:56px;max-width:56px;} @@ -157,10 +157,11 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
- +
- -
- -
- - -
-
-
- +
@@ -222,6 +214,15 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
+ +
+ +
+ + +
+
+
@@ -255,7 +256,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -323,16 +324,16 @@ tbody tr:hover td:last-child{background:#F8FBFF;} }); })(); -/* ===== 干预计划数据 ===== */ +/* ===== 干预活动数据 ===== */ var plans = [ - {id:1,name:'第四采油厂2026年超重健康干预计划',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, + {id:1,name:'第四采油厂2026年超重健康干预活动',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, {id:2,name:'采油一厂2026年体重管理专项行动',org:'采油一厂',dateFrom:'2026-04-01',dateTo:'2026-09-30',totalCount:186,actualCount:180}, - {id:3,name:'采油二厂2026年健康减重计划',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, - {id:4,name:'采气一厂2025年度体重管理计划',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, - {id:5,name:'第四采油厂2025年超重健康干预计划',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, - {id:6,name:'采油一厂2025年员工健康体重计划',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, - {id:7,name:'采气一厂2026下半年体重干预计划',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, - {id:8,name:'采油二厂2024年体重控制专项计划',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} + {id:3,name:'采油二厂2026年健康减重活动',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, + {id:4,name:'采气一厂2025年度体重管理活动',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, + {id:5,name:'第四采油厂2025年超重健康干预活动',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, + {id:6,name:'采油一厂2025年员工健康体重活动',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, + {id:7,name:'采气一厂2026下半年体重干预活动',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, + {id:8,name:'采油二厂2024年体重控制专项活动',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} ]; /* ===== 基础员工数据 ===== */ @@ -383,7 +384,7 @@ function buildOverviewData(){ var fatChange = +(curFat - e.fat).toFixed(1); var waistChange = +(curWaist - e.waist).toFixed(1); - // 模拟计划已进行天数 + // 模拟活动已进行天数 var planDays = Math.floor(Math.random() * 120) + 30; // 饮食总览 - 缺天:随机0-5天 var dietMissDays = Math.floor(Math.random() * 6); @@ -391,7 +392,7 @@ function buildOverviewData(){ var dietMissMeals = dietMissDays > 0 ? Math.floor(Math.random() * 8) + 1 : 0; // 日均摄入:1200-2200千卡 var dietAvgDaily = Math.floor(Math.random() * 1000) + 1200; - // 累计摄入 = 日均 * (计划天数 - 缺天) + // 累计摄入 = 日均 * (活动天数 - 缺天) var dietTotal = dietAvgDaily * (planDays - dietMissDays); // 运动总览 - 缺天:随机0-5天 @@ -400,7 +401,7 @@ function buildOverviewData(){ var exAvgSteps = Math.floor(Math.random() * 10000) + 5000; // 日均消耗:200-600千卡 var exAvgDaily = Math.floor(Math.random() * 400) + 200; - // 累计消耗 = 日均 * (计划天数 - 缺天) + // 累计消耗 = 日均 * (活动天数 - 缺天) var exTotal = exAvgDaily * (planDays - exMissDays); data.push({ @@ -422,7 +423,7 @@ function buildOverviewData(){ var overviewData = buildOverviewData(); var selectedPlanId = null; -/* ===== 计算排名:按计划内排序 ===== */ +/* ===== 计算排名:按活动内排序 ===== */ (function computeRanks(){ var planGroups = {}; overviewData.forEach(function(d){ @@ -445,7 +446,7 @@ var pageSize = 10; var currentPage = 0; var filteredData = overviewData.slice(); -/* ===== 计划搜索选择 ===== */ +/* ===== 活动搜索选择 ===== */ function searchPlan(){ var keyword = document.getElementById('planSearchInput').value.trim().toLowerCase(); var panel = document.getElementById('planPanel'); @@ -456,7 +457,7 @@ function searchPlan(){ }); } if(filtered.length === 0){ - panel.innerHTML = '
无匹配计划
'; + panel.innerHTML = '
无匹配活动
'; } else { var html = ''; filtered.forEach(function(p){ @@ -486,7 +487,7 @@ function selectPlan(planId){ applyFilter(); } - /* [交互] 清空已选干预计划,恢复未选择状态 */ + /* [交互] 清空已选干预活动,恢复未选择状态 */ function clearPlan(){ selectedPlanId = null; document.getElementById('planSearchInput').value = ''; @@ -583,7 +584,7 @@ function renderTable(){ document.getElementById('pageInfo').textContent = '显示 ' + pageData.length + ' 条,共 ' + filteredData.length + ' 条记录'; document.getElementById('pageNum').textContent = '第 ' + (currentPage + 1) + '/' + totalPages + ' 页'; if(filteredData.length === 0){ - tbody.innerHTML = '暂无匹配数据,请选择干预计划后查看'; + tbody.innerHTML = '暂无匹配数据,请选择干预活动后查看'; return; } var html = ''; @@ -687,7 +688,7 @@ document.addEventListener('click',function(e){ /* ===== 初始化 ===== */ (function init(){ - // 预填充计划下拉数据 + // 预填充活动下拉数据 var html = ''; plans.forEach(function(p){ html += '
'; diff --git a/web-admin/weight-management/action-record.html b/web-admin/weight-management/action-record.html index e34c473..61d51ed 100644 --- a/web-admin/weight-management/action-record.html +++ b/web-admin/weight-management/action-record.html @@ -44,7 +44,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei /* 搜索下拉 */ .search-select{position:relative;width:100%;} -.search-select__input{width:100%;height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-sm);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} +.search-select__input{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-xs);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} .search-select__input:focus{border-color:var(--primary);} .search-select__input::placeholder{color:var(--text-placeholder);} .search-select__panel{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:500;display:none;max-height:280px;overflow-y:auto;} @@ -252,10 +252,11 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;}
- +
今日饮食
@@ -319,39 +320,39 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;}
- + +
+
全部单位/部门
+
+
+
单位
+
全部单位/部门
+
第四采油厂
+
采油一厂
+
采油二厂
+
采气一厂
+
+
+
部门
+
全部部门
+
+
+
+
+
+
- - + +
- - - -
-
- -
-
全部单位/部门
-
-
-
单位
-
全部单位/部门
-
第四采油厂
-
采油一厂
-
采油二厂
-
采气一厂
-
-
-
部门
-
全部部门
-
-
-
-
+ + + +
@@ -412,22 +413,22 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;}
-
- - - - -
-
- - -
+
+ + +
+
+ + + + +
@@ -447,7 +448,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 单位 - 总人数 + 活动人数 三测人数 三测率 @@ -597,7 +598,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -667,7 +668,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -743,7 +744,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -818,7 +819,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -848,7 +849,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;}
- +
@@ -945,7 +946,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -1015,7 +1016,7 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} 序号 - 干预计划 + 活动名称 姓名 员工编号 性别 @@ -1030,6 +1031,29 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;}
+ +
+
+
+ 单位详情 + +
+
+
+
+ + +
+ + + + + +
序号活动名称姓名员工编号单位部门体重记录饮食记录运动记录三测完成
+
+
+
+
@@ -1043,16 +1067,16 @@ tbody tr:hover td:nth-child(4){background:#F8FBFF;} }); })(); -/* ===== 干预计划数据 ===== */ +/* ===== 干预活动数据 ===== */ var plans = [ - {id:1,name:'第四采油厂2026年超重健康干预计划',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, + {id:1,name:'第四采油厂2026年超重健康干预活动',org:'第四采油厂',dateFrom:'2026-03-01',dateTo:'2026-08-31',totalCount:234,actualCount:218}, {id:2,name:'采油一厂2026年体重管理专项行动',org:'采油一厂',dateFrom:'2026-04-01',dateTo:'2026-09-30',totalCount:186,actualCount:180}, - {id:3,name:'采油二厂2026年健康减重计划',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, - {id:4,name:'采气一厂2025年度体重管理计划',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, - {id:5,name:'第四采油厂2025年超重健康干预计划',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, - {id:6,name:'采油一厂2025年员工健康体重计划',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, - {id:7,name:'采气一厂2026下半年体重干预计划',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, - {id:8,name:'采油二厂2024年体重控制专项计划',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} + {id:3,name:'采油二厂2026年健康减重活动',org:'采油二厂',dateFrom:'2026-05-15',dateTo:'2026-11-15',totalCount:312,actualCount:295}, + {id:4,name:'采气一厂2025年度体重管理活动',org:'采气一厂',dateFrom:'2025-06-01',dateTo:'2025-12-01',totalCount:158,actualCount:142}, + {id:5,name:'第四采油厂2025年超重健康干预活动',org:'第四采油厂',dateFrom:'2025-03-01',dateTo:'2025-08-31',totalCount:267,actualCount:251}, + {id:6,name:'采油一厂2025年员工健康体重活动',org:'采油一厂',dateFrom:'2025-04-15',dateTo:'2025-10-15',totalCount:420,actualCount:398}, + {id:7,name:'采气一厂2026下半年体重干预活动',org:'采气一厂',dateFrom:'2026-09-01',dateTo:'2026-12-31',totalCount:89,actualCount:72}, + {id:8,name:'采油二厂2024年体重控制专项活动',org:'采油二厂',dateFrom:'2024-07-01',dateTo:'2024-12-31',totalCount:145,actualCount:130} ]; /* ===== 基础员工数据 ===== */ @@ -1128,11 +1152,11 @@ function buildMeasureData(){ var monthAgo = new Date(); monthAgo.setMonth(monthAgo.getMonth()-3); var today = new Date(); baseEmployees.forEach(function(e,i){ - // 部分员工未参加干预计划 - var noPlan = i % 6 === 0; - var p = noPlan ? null : plans[i % plans.length]; - var planIdVal = p ? p.id : null; - var planNameVal = p ? p.name : '-'; + // 跳过未参加干预活动的员工 + if (i % 6 === 0) return; + var p = plans[i % plans.length]; + var planIdVal = p.id; + var planNameVal = p.name; var daysSinceStart = Math.floor(Math.random()*80)+10; types.forEach(function(t){ var hasRecord = i % 5 !== 4; @@ -1168,7 +1192,7 @@ var currentPage = 0; var filteredData = []; var selectedPlanId = null; -/* ===== 计划搜索选择 ===== */ +/* ===== 活动搜索选择 ===== */ function searchPlan(){ var keyword = document.getElementById('planSearchInput').value.trim().toLowerCase(); var panel = document.getElementById('planPanel'); @@ -1179,7 +1203,7 @@ function searchPlan(){ }); } if(filtered.length === 0){ - panel.innerHTML = '
无匹配计划
'; + panel.innerHTML = '
无匹配活动
'; } else { var html = ''; filtered.forEach(function(p){ @@ -1210,7 +1234,7 @@ function selectPlan(planId){ updateStatCards(); } -/* [交互] 清空已选干预计划,恢复未选择状态 */ +/* [交互] 清空已选干预活动,恢复未选择状态 */ function clearPlan(){ selectedPlanId = null; document.getElementById('planSearchInput').value = ''; @@ -1490,8 +1514,8 @@ function renderUnitTable(){ html += ''; html += ''+(i+1)+''; html += ''+esc(d.org)+''; - html += ''+d.total+''; - html += ''+d.measured+''; + html += ''+d.total+''; + html += ''+d.measured+''; html += ''+d.rate+'%'; html += ''; }); @@ -1585,7 +1609,7 @@ function renderOverviewHeader(){ if(currentSubTab === 'weight'){ html += ''; html += '序号'; - html += '干预计划'; + html += '活动名称'; html += '姓名'; html += '员工编号'; html += '性别'; @@ -1609,7 +1633,7 @@ function renderOverviewHeader(){ } else { html += ''; html += '序号'; - html += '干预计划'; + html += '活动名称'; html += '姓名'; html += '员工编号'; html += '性别'; @@ -2524,23 +2548,23 @@ var cumAllData = []; function openCumulativeDialog(tab){ cumCurrentTab = tab || 'diet'; - // 检查是否选择了计划,未选则提示 + // 检查是否选择了活动,未选则提示 if(!selectedPlanId){ - showToast('请先选择干预计划'); + showToast('请先选择干预活动'); return; } var plan = plans.find(function(p){return p.id === selectedPlanId;}); if(!plan) return; // 计算已进行天数 var elapsedDays = calcPlanDays(plan.dateFrom, plan.dateTo); - // 渲染计划基本信息 + // 渲染活动基本信息 var infoHtml = ''; - infoHtml += '
干预计划:'+esc(plan.name)+'
'; + infoHtml += '
干预活动:'+esc(plan.name)+'
'; infoHtml += '
组织机构:'+esc(plan.org)+'
'; infoHtml += '
起止日期:'+plan.dateFrom+' ~ '+plan.dateTo+'
'; infoHtml += '
已进行天数:'+elapsedDays+' 天
'; document.getElementById('cumPlanInfo').innerHTML = infoHtml; - // 生成累计数据:筛选当前计划的员工 + // 生成累计数据:筛选当前活动的员工 var planEmployees = baseEmployees.filter(function(e){return e.org === plan.org;}); cumAllData = planEmployees.map(function(emp, i){ // 累计记录天数:模拟为已进行天数的 50%~95% @@ -2592,7 +2616,7 @@ function renderCumTable(){ var count = cumAllData.length; document.getElementById('cumTableCount').textContent = '共 ' + count + ' 人'; if(count === 0){ - tbody.innerHTML = '暂无数据,请先选择干预计划'; + tbody.innerHTML = '暂无数据,请先选择干预活动'; return; } var html = ''; @@ -2899,7 +2923,7 @@ document.addEventListener('click',function(e){ /* ===== 初始化 ===== */ (function init(){ - // 预填充计划下拉数据 + // 预填充活动下拉数据 var html = ''; plans.forEach(function(p){ html += '
'; @@ -2926,6 +2950,73 @@ document.addEventListener('click',function(e){ applyFilter1(); updateStatCards(); })(); + + + +/* ===== 单位详情弹窗 ===== */ +function openUnitDetailDialog(org, type){ + var dateFrom = document.getElementById('unitDateFrom').value || '-'; + var dateTo = document.getElementById('unitDateTo').value || '-'; + var typeLabel = type === 'total' ? '活动人数' : (type === 'measured' ? '三测人数' : '三测率'); + document.getElementById('unitDetailTitle').textContent = org + ' - ' + typeLabel; + var infoHtml = ''; + infoHtml += '
单位:'+esc(org)+'
'; + infoHtml += '
日期范围:'+dateFrom+' ~ '+dateTo+'
'; + document.getElementById('unitDetailInfo').innerHTML = infoHtml; + var empMap = {}; + measureData.weight.forEach(function(w,i){ + if(w.org !== org) return; + if(selectedPlanId && w.planId !== selectedPlanId) return; + var dRec = measureData.diet[i], exRec = measureData.exercise[i]; + var key = w.empId; + if(!empMap[key]){ + empMap[key] = {planName:w.planName,name:w.name,empId:w.empId,org:w.org,dept:w.dept,hasWeight:false,hasDiet:false,hasExercise:false}; + } + function inRange(rec){ + if(!rec.hasRecord) return false; + if(dateFrom && rec.lastDate !== '-' && rec.lastDate < dateFrom) return false; + if(dateTo && rec.firstDate > dateTo) return false; + return true; + } + if(inRange(w)) empMap[key].hasWeight = true; + if(inRange(dRec)) empMap[key].hasDiet = true; + if(inRange(exRec)) empMap[key].hasExercise = true; + }); + var empList = []; + for(var k in empMap){ empMap[k].allDone = empMap[k].hasWeight && empMap[k].hasDiet && empMap[k].hasExercise; empList.push(empMap[k]); } + // 三测人数弹窗只显示三测完成的员工 + if(type === 'measured'){ empList = empList.filter(function(e){ return e.allDone; }); } + var tbody = document.getElementById('unitDetailTbody'); + if(empList.length === 0){ + tbody.innerHTML = '暂无数据'; + } else { + var html = ''; + empList.forEach(function(e,i){ + html += ''; + html += ''+(i+1)+''; + html += ''+esc(e.planName)+''; + html += ''+esc(e.name)+''; + html += ''+e.empId+''; + html += ''+esc(e.org)+''; + html += ''+esc(e.dept)+''; + html += ''+(e.hasWeight?'':'')+''; + html += ''+(e.hasDiet?'':'')+''; + html += ''+(e.hasExercise?'':'')+''; + html += ''+(e.allDone?'':'')+''; + html += ''; + }); + tbody.innerHTML = html; + } + document.getElementById('unitDetailOverlay').classList.add('show'); +} + +function closeUnitDetailDialog(){ + document.getElementById('unitDetailOverlay').classList.remove('show'); +} + +document.getElementById('unitDetailOverlay').addEventListener('click',function(e){ + if(e.target === this) closeUnitDetailDialog(); +}); diff --git a/web-admin/weight-management/activity-statistics.html b/web-admin/weight-management/activity-statistics.html index ea1d39a..e2d61ac 100644 --- a/web-admin/weight-management/activity-statistics.html +++ b/web-admin/weight-management/activity-statistics.html @@ -45,7 +45,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei /* 搜索下拉 */ .search-select{position:relative;width:100%;} -.search-select__input{width:100%;height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-sm);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} +.search-select__input{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 36px 0 12px;font-size:var(--font-xs);outline:none;transition:border-color .2s;box-sizing:border-box;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M0 0l6 7 6-7z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 12px center;} .search-select__input:focus{border-color:var(--primary);} .search-select__input::placeholder{color:var(--text-placeholder);} .search-select__panel{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:500;display:none;max-height:280px;overflow-y:auto;} @@ -108,7 +108,7 @@ tbody td{padding:10px 8px;text-align:center;font-size:var(--font-sm);color:var(- tbody tr:last-child td{border-bottom:none;} tbody tr:hover{background:#F8FBFF;} - /* 第二列(干预计划)固定左侧 */ + /* 第二列(干预活动)固定左侧 */ thead th:nth-child(2),tbody td:nth-child(2){position:sticky;left:0;z-index:4;background:#fff;min-width:240px;max-width:240px;text-align:left;overflow:hidden;text-overflow:ellipsis;} thead th:nth-child(2){z-index:7;background:#FAFAFA;} tbody tr:hover td:nth-child(2){background:#F8FBFF;} @@ -142,10 +142,11 @@ tbody tr:hover{background:#F8FBFF;}
- +
- -
- -
- - -
-
-
- +
@@ -215,6 +207,15 @@ tbody tr:hover{background:#F8FBFF;}
+ +
+ +
+ + +
+
+
- +
- - + +
@@ -253,7 +254,7 @@ tbody tr:hover{background:#F8FBFF;} 序号 - 干预计划 + 活动名称 组织机构 组织部门 起止日期 @@ -298,37 +299,37 @@ function getParam(name) { /* ===== Mock 活动数据 ===== */ var unitActivityData = { '第四采油厂': [ - {id:1,planName:'第四采油厂2024年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2024-03-01',dateTo:'2024-08-31',staffScope:'全厂员工',shouldCount:220,actualCount:205,notCount:15,weightGoalDone:168,fatGoalDone:152,waistGoalDone:145,avgWeightLoss:3.8,avgLossRate:4.5,avgWaistLoss:4.2,avgDailyIntake:1850,avgDailyConsume:520,avgDailyGap:330,avgScore:82.5,avgActionScore:76.3,responsible:'王建国'}, - {id:2,planName:'第四采油厂2025年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'全厂员工',shouldCount:267,actualCount:251,notCount:16,weightGoalDone:198,fatGoalDone:185,waistGoalDone:172,avgWeightLoss:4.2,avgLossRate:5.1,avgWaistLoss:4.8,avgDailyIntake:1780,avgDailyConsume:560,avgDailyGap:380,avgScore:85.3,avgActionScore:79.1,responsible:'王建国'}, - {id:3,planName:'第四采油厂2026年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'全厂员工',shouldCount:234,actualCount:218,notCount:16,weightGoalDone:92,fatGoalDone:78,waistGoalDone:71,avgWeightLoss:2.1,avgLossRate:2.5,avgWaistLoss:2.3,avgDailyIntake:1920,avgDailyConsume:490,avgDailyGap:280,avgScore:74.8,avgActionScore:68.2,responsible:'王建国'}, + {id:1,planName:'第四采油厂2024年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2024-03-01',dateTo:'2024-08-31',staffScope:'全厂员工',shouldCount:220,actualCount:205,notCount:15,weightGoalDone:168,fatGoalDone:152,waistGoalDone:145,avgWeightLoss:3.8,avgLossRate:4.5,avgWaistLoss:4.2,avgDailyIntake:1850,avgDailyConsume:520,avgDailyGap:330,avgScore:82.5,avgActionScore:76.3,responsible:'王建国'}, + {id:2,planName:'第四采油厂2025年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'全厂员工',shouldCount:267,actualCount:251,notCount:16,weightGoalDone:198,fatGoalDone:185,waistGoalDone:172,avgWeightLoss:4.2,avgLossRate:5.1,avgWaistLoss:4.8,avgDailyIntake:1780,avgDailyConsume:560,avgDailyGap:380,avgScore:85.3,avgActionScore:79.1,responsible:'王建国'}, + {id:3,planName:'第四采油厂2026年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'全厂员工',shouldCount:234,actualCount:218,notCount:16,weightGoalDone:92,fatGoalDone:78,waistGoalDone:71,avgWeightLoss:2.1,avgLossRate:2.5,avgWaistLoss:2.3,avgDailyIntake:1920,avgDailyConsume:490,avgDailyGap:280,avgScore:74.8,avgActionScore:68.2,responsible:'王建国'}, {id:4,planName:'第四采油厂2025年秋季健步走活动',unit:'第四采油厂',dept:'工会办公室',dateFrom:'2025-09-01',dateTo:'2025-10-31',staffScope:'一线员工',shouldCount:150,actualCount:138,notCount:12,weightGoalDone:89,fatGoalDone:76,waistGoalDone:70,avgWeightLoss:2.8,avgLossRate:3.2,avgWaistLoss:3.0,avgDailyIntake:1950,avgDailyConsume:510,avgDailyGap:290,avgScore:78.2,avgActionScore:72.5,responsible:'张翠花'}, {id:5,planName:'第四采油厂2026年春季健康训练营',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-04-01',dateTo:'2026-06-30',staffScope:'管理部门',shouldCount:96,actualCount:82,notCount:14,weightGoalDone:35,fatGoalDone:28,waistGoalDone:25,avgWeightLoss:1.5,avgLossRate:1.8,avgWaistLoss:1.6,avgDailyIntake:2010,avgDailyConsume:460,avgDailyGap:220,avgScore:69.5,avgActionScore:63.8,responsible:'王建国'} ], '采油一厂': [ - {id:6,planName:'采油一厂2024年健康体重专项计划',unit:'采油一厂',dept:'安全环保科',dateFrom:'2024-04-01',dateTo:'2024-09-30',staffScope:'管理部门',shouldCount:156,actualCount:142,notCount:14,weightGoalDone:110,fatGoalDone:98,waistGoalDone:89,avgWeightLoss:3.5,avgLossRate:4.2,avgWaistLoss:3.9,avgDailyIntake:1900,avgDailyConsume:480,avgDailyGap:300,avgScore:80.1,avgActionScore:73.5,responsible:'李明辉'}, - {id:7,planName:'采油一厂2025年员工健康体重计划',unit:'采油一厂',dept:'安全环保科',dateFrom:'2025-04-15',dateTo:'2025-10-15',staffScope:'全厂员工',shouldCount:420,actualCount:398,notCount:22,weightGoalDone:310,fatGoalDone:285,waistGoalDone:268,avgWeightLoss:3.9,avgLossRate:4.8,avgWaistLoss:4.3,avgDailyIntake:1820,avgDailyConsume:540,avgDailyGap:360,avgScore:83.7,avgActionScore:77.8,responsible:'李明辉'}, + {id:6,planName:'采油一厂2024年健康体重专项活动',unit:'采油一厂',dept:'安全环保科',dateFrom:'2024-04-01',dateTo:'2024-09-30',staffScope:'管理部门',shouldCount:156,actualCount:142,notCount:14,weightGoalDone:110,fatGoalDone:98,waistGoalDone:89,avgWeightLoss:3.5,avgLossRate:4.2,avgWaistLoss:3.9,avgDailyIntake:1900,avgDailyConsume:480,avgDailyGap:300,avgScore:80.1,avgActionScore:73.5,responsible:'李明辉'}, + {id:7,planName:'采油一厂2025年员工健康体重活动',unit:'采油一厂',dept:'安全环保科',dateFrom:'2025-04-15',dateTo:'2025-10-15',staffScope:'全厂员工',shouldCount:420,actualCount:398,notCount:22,weightGoalDone:310,fatGoalDone:285,waistGoalDone:268,avgWeightLoss:3.9,avgLossRate:4.8,avgWaistLoss:4.3,avgDailyIntake:1820,avgDailyConsume:540,avgDailyGap:360,avgScore:83.7,avgActionScore:77.8,responsible:'李明辉'}, {id:8,planName:'采油一厂2026年体重管理专项行动',unit:'采油一厂',dept:'安全环保科',dateFrom:'2026-04-01',dateTo:'2026-09-30',staffScope:'全厂员工',shouldCount:186,actualCount:180,notCount:6,weightGoalDone:65,fatGoalDone:52,waistGoalDone:48,avgWeightLoss:1.8,avgLossRate:2.1,avgWaistLoss:2.0,avgDailyIntake:1950,avgDailyConsume:470,avgDailyGap:250,avgScore:72.3,avgActionScore:65.8,responsible:'李明辉'}, {id:9,planName:'采油一厂2025年减脂达人挑战赛',unit:'采油一厂',dept:'工会办公室',dateFrom:'2025-06-01',dateTo:'2025-08-31',staffScope:'一线员工',shouldCount:78,actualCount:72,notCount:6,weightGoalDone:55,fatGoalDone:48,waistGoalDone:42,avgWeightLoss:5.2,avgLossRate:6.0,avgWaistLoss:5.5,avgDailyIntake:1700,avgDailyConsume:620,avgDailyGap:420,avgScore:88.5,avgActionScore:84.2,responsible:'李明辉'} ], '采气一厂': [ - {id:10,planName:'采气一厂2024年健康体重计划',unit:'采气一厂',dept:'生产技术部',dateFrom:'2024-06-01',dateTo:'2024-11-30',staffScope:'全厂员工',shouldCount:135,actualCount:118,notCount:17,weightGoalDone:92,fatGoalDone:78,waistGoalDone:72,avgWeightLoss:3.6,avgLossRate:4.3,avgWaistLoss:4.0,avgDailyIntake:1860,avgDailyConsume:510,avgDailyGap:340,avgScore:81.4,avgActionScore:74.9,responsible:'赵铁柱'}, - {id:11,planName:'采气一厂2025年度体重管理计划',unit:'采气一厂',dept:'生产技术部',dateFrom:'2025-06-01',dateTo:'2025-12-01',staffScope:'全厂员工',shouldCount:158,actualCount:142,notCount:16,weightGoalDone:115,fatGoalDone:98,waistGoalDone:90,avgWeightLoss:4.1,avgLossRate:5.0,avgWaistLoss:4.6,avgDailyIntake:1790,avgDailyConsume:570,avgDailyGap:390,avgScore:86.0,avgActionScore:80.2,responsible:'赵铁柱'}, - {id:12,planName:'采气一厂2026下半年体重干预计划',unit:'采气一厂',dept:'生产技术部',dateFrom:'2026-09-01',dateTo:'2026-12-31',staffScope:'全厂员工',shouldCount:89,actualCount:72,notCount:17,weightGoalDone:0,fatGoalDone:0,waistGoalDone:0,avgWeightLoss:0,avgLossRate:0,avgWaistLoss:0,avgDailyIntake:0,avgDailyConsume:0,avgDailyGap:0,avgScore:0,avgActionScore:0,responsible:'赵铁柱'} + {id:10,planName:'采气一厂2024年健康体重活动',unit:'采气一厂',dept:'生产技术部',dateFrom:'2024-06-01',dateTo:'2024-11-30',staffScope:'全厂员工',shouldCount:135,actualCount:118,notCount:17,weightGoalDone:92,fatGoalDone:78,waistGoalDone:72,avgWeightLoss:3.6,avgLossRate:4.3,avgWaistLoss:4.0,avgDailyIntake:1860,avgDailyConsume:510,avgDailyGap:340,avgScore:81.4,avgActionScore:74.9,responsible:'赵铁柱'}, + {id:11,planName:'采气一厂2025年度体重管理活动',unit:'采气一厂',dept:'生产技术部',dateFrom:'2025-06-01',dateTo:'2025-12-01',staffScope:'全厂员工',shouldCount:158,actualCount:142,notCount:16,weightGoalDone:115,fatGoalDone:98,waistGoalDone:90,avgWeightLoss:4.1,avgLossRate:5.0,avgWaistLoss:4.6,avgDailyIntake:1790,avgDailyConsume:570,avgDailyGap:390,avgScore:86.0,avgActionScore:80.2,responsible:'赵铁柱'}, + {id:12,planName:'采气一厂2026下半年体重干预活动',unit:'采气一厂',dept:'生产技术部',dateFrom:'2026-09-01',dateTo:'2026-12-31',staffScope:'全厂员工',shouldCount:89,actualCount:72,notCount:17,weightGoalDone:0,fatGoalDone:0,waistGoalDone:0,avgWeightLoss:0,avgLossRate:0,avgWaistLoss:0,avgDailyIntake:0,avgDailyConsume:0,avgDailyGap:0,avgScore:0,avgActionScore:0,responsible:'赵铁柱'} ] }; /* 部门活动数据(三级单位) */ var deptActivityData = { '第四采油厂|作业一区': [ - {id:1,planName:'第四采油厂2025年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'作业一区',shouldCount:85,actualCount:80,notCount:5,weightGoalDone:62,fatGoalDone:55,waistGoalDone:50,avgWeightLoss:4.8,avgLossRate:5.5,avgWaistLoss:5.2,avgDailyIntake:1750,avgDailyConsume:580,avgDailyGap:400,avgScore:87.2,avgActionScore:81.5,responsible:'王建国'}, - {id:2,planName:'第四采油厂2026年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'作业一区',shouldCount:78,actualCount:72,notCount:6,weightGoalDone:32,fatGoalDone:28,waistGoalDone:25,avgWeightLoss:2.5,avgLossRate:3.0,avgWaistLoss:2.8,avgDailyIntake:1900,avgDailyConsume:500,avgDailyGap:300,avgScore:76.5,avgActionScore:70.2,responsible:'王建国'} + {id:1,planName:'第四采油厂2025年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'作业一区',shouldCount:85,actualCount:80,notCount:5,weightGoalDone:62,fatGoalDone:55,waistGoalDone:50,avgWeightLoss:4.8,avgLossRate:5.5,avgWaistLoss:5.2,avgDailyIntake:1750,avgDailyConsume:580,avgDailyGap:400,avgScore:87.2,avgActionScore:81.5,responsible:'王建国'}, + {id:2,planName:'第四采油厂2026年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'作业一区',shouldCount:78,actualCount:72,notCount:6,weightGoalDone:32,fatGoalDone:28,waistGoalDone:25,avgWeightLoss:2.5,avgLossRate:3.0,avgWaistLoss:2.8,avgDailyIntake:1900,avgDailyConsume:500,avgDailyGap:300,avgScore:76.5,avgActionScore:70.2,responsible:'王建国'} ], '第四采油厂|作业二区': [ - {id:3,planName:'第四采油厂2025年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'作业二区',shouldCount:92,actualCount:88,notCount:4,weightGoalDone:70,fatGoalDone:65,waistGoalDone:60,avgWeightLoss:4.0,avgLossRate:4.8,avgWaistLoss:4.5,avgDailyIntake:1800,avgDailyConsume:550,avgDailyGap:370,avgScore:84.0,avgActionScore:78.3,responsible:'王建国'}, - {id:4,planName:'第四采油厂2026年超重健康干预计划',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'作业二区',shouldCount:82,actualCount:76,notCount:6,weightGoalDone:30,fatGoalDone:25,waistGoalDone:22,avgWeightLoss:1.8,avgLossRate:2.2,avgWaistLoss:2.0,avgDailyIntake:1950,avgDailyConsume:480,avgDailyGap:260,avgScore:73.2,avgActionScore:66.8,responsible:'王建国'} + {id:3,planName:'第四采油厂2025年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2025-03-01',dateTo:'2025-08-31',staffScope:'作业二区',shouldCount:92,actualCount:88,notCount:4,weightGoalDone:70,fatGoalDone:65,waistGoalDone:60,avgWeightLoss:4.0,avgLossRate:4.8,avgWaistLoss:4.5,avgDailyIntake:1800,avgDailyConsume:550,avgDailyGap:370,avgScore:84.0,avgActionScore:78.3,responsible:'王建国'}, + {id:4,planName:'第四采油厂2026年超重健康干预活动',unit:'第四采油厂',dept:'健康管理部',dateFrom:'2026-03-01',dateTo:'2026-08-31',staffScope:'作业二区',shouldCount:82,actualCount:76,notCount:6,weightGoalDone:30,fatGoalDone:25,waistGoalDone:22,avgWeightLoss:1.8,avgLossRate:2.2,avgWaistLoss:2.0,avgDailyIntake:1950,avgDailyConsume:480,avgDailyGap:260,avgScore:73.2,avgActionScore:66.8,responsible:'王建国'} ], '采油一厂|采油一队': [ - {id:5,planName:'采油一厂2025年员工健康体重计划',unit:'采油一厂',dept:'安全环保科',dateFrom:'2025-04-15',dateTo:'2025-10-15',staffScope:'采油一队',shouldCount:130,actualCount:125,notCount:5,weightGoalDone:98,fatGoalDone:90,waistGoalDone:85,avgWeightLoss:3.5,avgLossRate:4.2,avgWaistLoss:3.8,avgDailyIntake:1850,avgDailyConsume:520,avgDailyGap:340,avgScore:82.0,avgActionScore:76.5,responsible:'李明辉'}, + {id:5,planName:'采油一厂2025年员工健康体重活动',unit:'采油一厂',dept:'安全环保科',dateFrom:'2025-04-15',dateTo:'2025-10-15',staffScope:'采油一队',shouldCount:130,actualCount:125,notCount:5,weightGoalDone:98,fatGoalDone:90,waistGoalDone:85,avgWeightLoss:3.5,avgLossRate:4.2,avgWaistLoss:3.8,avgDailyIntake:1850,avgDailyConsume:520,avgDailyGap:340,avgScore:82.0,avgActionScore:76.5,responsible:'李明辉'}, {id:6,planName:'采油一厂2026年体重管理专项行动',unit:'采油一厂',dept:'安全环保科',dateFrom:'2026-04-01',dateTo:'2026-09-30',staffScope:'采油一队',shouldCount:62,actualCount:60,notCount:2,weightGoalDone:22,fatGoalDone:18,waistGoalDone:16,avgWeightLoss:2.0,avgLossRate:2.4,avgWaistLoss:2.2,avgDailyIntake:1920,avgDailyConsume:480,avgDailyGap:270,avgScore:74.0,avgActionScore:67.5,responsible:'李明辉'} ] }; diff --git a/web-admin/weight-management/archive-unit-report.html b/web-admin/weight-management/archive-unit-report.html index d086cce..b7fd5cf 100644 --- a/web-admin/weight-management/archive-unit-report.html +++ b/web-admin/weight-management/archive-unit-report.html @@ -123,10 +123,11 @@ tbody tr:hover{background:#F8FBFF;}
档案 - 计划管理 + 活动管理 报名管理 过程管理 - 历史干预 + 历史活动 + 人员数据 个人体重管理 设备管理 异常事件 diff --git a/web-admin/weight-management/bluetooth-device-add.html b/web-admin/weight-management/bluetooth-device-add.html index 09077b6..a5ef9e2 100644 --- a/web-admin/weight-management/bluetooth-device-add.html +++ b/web-admin/weight-management/bluetooth-device-add.html @@ -75,10 +75,11 @@
diff --git a/web-admin/weight-management/employee-data-record.html b/web-admin/weight-management/employee-data-record.html index 17d27a3..bd2728f 100644 --- a/web-admin/weight-management/employee-data-record.html +++ b/web-admin/weight-management/employee-data-record.html @@ -100,10 +100,11 @@
+
+ + +
+
+ + +
@@ -264,7 +265,7 @@ tbody tr:hover{background:#F8FBFF;} EMP-10004 采油二厂 生产运行科 - 计划管理 + 活动管理 目标值偏差 距目标差8.5kg 中等 @@ -323,7 +324,7 @@ tbody tr:hover{background:#F8FBFF;} EMP-10104 天然气处理厂 综合管理科 - 计划管理 + 活动管理 目标值偏差 距目标差6.3kg 中等 diff --git a/web-admin/weight-management/exception-system-dirty.html b/web-admin/weight-management/exception-system-dirty.html index 91deb86..fc096c2 100644 --- a/web-admin/weight-management/exception-system-dirty.html +++ b/web-admin/weight-management/exception-system-dirty.html @@ -89,10 +89,11 @@ tbody tr:hover{background:#F8FBFF;}