-
+
-
-
- 张
-
-
-
-
- 张伟 男 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
+
-
张伟
- 男 45岁 | 员工编号: EMP001 | 采油一厂 · 生产部
+ 张伟 男 45岁 | 员工编号: EMP001
+ 采油一厂 · 生产部
-
值班信息
-
-
-
3
- 当日应急人数
-
+
+
+
+
+
+
+
+
+
- 住宅区
+ 采油一厂
办公楼
+ 办公楼
食堂
+ 设备库房
+ 宿舍楼
+ CQ大道
+ 兴隆路
+ 能源北路
+
+
+
+
-
-
- 47
- 当月应急人数
-
-
-
- 96.8%
- 应急响应及时率
-
-
- 91.5%
- 应急任务完成率
-
-
-
-
- ‹
- ›
+
+
+
-
+
+
+
+
+ 已派救护车支援
+
+
+
--
+ 预计到达
日一二三四五六
-
-
-
-
- 今天
- 排班日
+
+
+
+
+
+
+
+
+
- 所属单位
+ 详细地址
+ 联系电话
+
- ';
+ 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='';
+ 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=' ';
+ 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;}
-
+
今日值班人员
-
-
@@ -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='李
- 李想
- 操作人员
+
+
+ 张伟
+ 男·45岁
+ 采油一厂3号楼办公室
+ ● 求助中
-
-
- 陈
- 陈旭 · 主治医师
- 专业人员
-
- ‹
+
+
王
- 王旭
- 操作人员
+
+
+
+ 附近医疗资源
+ ›
+
+
+
+ 全部资源
+ 医院
+ 医疗点
+ 救护车
+ AED
+ 急救包
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ '+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='
-
干预计划
+ 活动名称
-
-
+
+
+ 计划名称:-
+ 活动名称:-
组织机构:-
起止日期:-
进行天数:-
@@ -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;}
+
+
+
+ ×
+
+
+
@@ -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 = ' 暂无匹配数据,请选择干预计划后查看 ';
+ tbody.innerHTML = '暂无匹配数据,请选择干预活动后查看 ';
return;
}
var html = '';
@@ -687,7 +688,7 @@ document.addEventListener('click',function(e){
/* ===== 初始化 ===== */
(function init(){
- // 预填充计划下拉数据
+ // 预填充活动下拉数据
var html = '';
plans.forEach(function(p){
html += '
无匹配计划
';
+ 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 = '';
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;}