diff --git a/index.html b/index.html index d08c55d..6b1f9ad 100644 --- a/index.html +++ b/index.html @@ -600,12 +600,12 @@ const SITE_MAP = [ { file:'config-ambulance.html', label:'基础配置 · 救护车列表' }, { file:'daily-treatment-staff.html', label:'日常业务 · 员工就诊' }, { file:'daily-treatment-nonstaff.html', label:'日常业务 · 非员工就诊' }, - { file:'daily-stock-in.html', label:'日常业务 · 入库记录' }, - { file:'daily-stock-out.html', label:'日常业务 · 出库记录' }, + { file:'daily-ambulance-attendance.html', label:'日常业务 · 救护车出勤' }, { file:'daily-follow.html', label:'日常业务 · 随访管理' }, { file:'daily-chronic.html', label:'日常业务 · 慢病管理' }, { file:'daily-chronic-intervention.html', label:'日常业务 · 慢病干预(二级页)' }, { file:'daily-employee-search.html', label:'日常业务 · 员工档案' }, + { file:'daily-employee-file.html', label:'日常业务 · 健康档案(二级页)' }, { file:'daily-follow-task.html', label:'日常业务 · 随访任务' }, { file:'daily-interpret.html', label:'日常业务 · 解读任务' }, { file:'daily-education.html', label:'日常业务 · 健康宣教管理' }, @@ -620,12 +620,11 @@ const SITE_MAP = [ { file:'bed-call-record.html', label:'床头呼叫 · 呼叫记录' }, { file:'bed-timeout-alarm.html', label:'床头呼叫 · 告警记录' }, { file:'bed-stat.html', label:'床头呼叫 · 汇总统计' }, - { file:'stat-clinic-chart.html', label:'数据统计 · 医疗点统计-图表' }, - { file:'stat-clinic-table.html', label:'数据统计 · 医疗点统计-报表' }, - { file:'stat-ambulance-chart.html', label:'数据统计 · 救护车统计-图表' }, - { file:'stat-ambulance-table.html', label:'数据统计 · 救护车统计-报表' }, - { file:'stat-rescue-chart.html', label:'数据统计 · 救助物品统计-图表' }, - { file:'stat-rescue-table.html', label:'数据统计 · 救助物品统计-报表' }, + { file:'stat-clinic-chart.html', label:'数据统计 · 医疗点统计-统计图表' }, + { file:'stat-clinic-table.html', label:'数据统计 · 医疗点统计-统计报表' }, + { file:'stat-ambulance-chart.html', label:'数据统计 · 救护车统计-统计图表' }, + { file:'stat-ambulance-table.html', label:'数据统计 · 救护车统计-统计报表' }, + { file:'stat-rescue-chart.html', label:'数据统计 · 救助物品统计' }, { file:'hut-banner.html', label:'健康小屋 · 轮播图配置' }, { file:'hut-room.html', label:'健康小屋 · 健康室管理' }, { file:'hut-appointment.html', label:'健康小屋 · 预约管理' }, diff --git a/web-admin/frontline-medical/bed-allocate-record.html b/web-admin/frontline-medical/bed-allocate-record.html index c9a90ba..4b51e69 100644 --- a/web-admin/frontline-medical/bed-allocate-record.html +++ b/web-admin/frontline-medical/bed-allocate-record.html @@ -54,7 +54,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .tab-item{padding:10px 18px;font-size:var(--font-sm);color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;} .tab-item.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600;} .table-card{background:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1300px;} @@ -205,7 +205,6 @@ tbody tr:hover{background:#F8FBFF;}
- 设备分配记录
@@ -303,7 +302,6 @@ function renderAll(){ }).join('')||'没有符合条件的分配记录'; document.getElementById('thead').innerHTML=headDev(); document.getElementById('totalTip').textContent='共 '+list.length+' 条 · 未解除 '+list.filter(function(r){return !r.unbind;}).length+' 条'; - document.getElementById('cardTitle').textContent='设备分配记录'; }else{ var b2=document.getElementById('filterEBuilding').value,d2=document.getElementById('filterEDorm').value; var en=document.getElementById('filterEName').value.trim(),eo=document.getElementById('filterENo').value.trim().toUpperCase(); @@ -318,7 +316,6 @@ function renderAll(){ }).join('')||'没有符合条件的分配记录'; document.getElementById('thead').innerHTML=headEmp(); document.getElementById('totalTip').textContent='共 '+list2.length+' 条 · 未解除 '+list2.filter(function(r){return !r.unbind;}).length+' 条'; - document.getElementById('cardTitle').textContent='床位分配记录'; } document.getElementById('tbody').innerHTML=rows; } diff --git a/web-admin/frontline-medical/bed-bed.html b/web-admin/frontline-medical/bed-bed.html index db4fa3a..2160ef0 100644 --- a/web-admin/frontline-medical/bed-bed.html +++ b/web-admin/frontline-medical/bed-bed.html @@ -52,9 +52,9 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .btn-link{background:none;color:var(--primary);padding:0 4px;height:auto;}.btn-link:hover{color:#40a9ff;} .btn-link--danger{background:none;color:var(--danger);padding:0 4px;height:auto;}.btn-link--danger:hover{color:#ff7875;} .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;margin-top:16px;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} -.table-card__head .btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;} +.table-card__head .btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1300px;} thead th{background:#FAFAFA;padding:10px 14px;text-align:center;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;} @@ -198,7 +198,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- 床位列表
@@ -311,7 +310,6 @@ function renderAll(){ +''+r.station+''+r.space+''; }).join('')||'没有符合条件的呼叫记录'; document.getElementById('totalTip').textContent='共 '+list.length+' 条记录'; - document.getElementById('cardTitle').textContent='员工呼入记录'; }else{ var kf=document.getElementById('outFrom').value.trim().toUpperCase(); var kt=document.getElementById('outTo').value.trim().toUpperCase(); @@ -325,7 +323,6 @@ function renderAll(){ +''; }).join('')||'没有符合条件的呼叫记录'; document.getElementById('totalTip').textContent='共 '+list2.length+' 条记录'; - document.getElementById('cardTitle').textContent='终端呼出记录'; } } /* [交互] TAB 切换:呼入/呼出各自独立筛选组与导出按钮组 */ diff --git a/web-admin/frontline-medical/bed-device-allocate.html b/web-admin/frontline-medical/bed-device-allocate.html index 3b20753..d807076 100644 --- a/web-admin/frontline-medical/bed-device-allocate.html +++ b/web-admin/frontline-medical/bed-device-allocate.html @@ -52,7 +52,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .btn-link{background:none;color:var(--primary);padding:0 4px;height:auto;}.btn-link:hover{color:#40a9ff;} .btn-link--danger{background:none;color:var(--danger);padding:0 4px;height:auto;}.btn-link--danger:hover{color:#ff7875;} .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;margin-top:16px;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1250px;} @@ -178,7 +178,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- 设备分配
diff --git a/web-admin/frontline-medical/bed-device.html b/web-admin/frontline-medical/bed-device.html index 97aeacd..50cfc97 100644 --- a/web-admin/frontline-medical/bed-device.html +++ b/web-admin/frontline-medical/bed-device.html @@ -55,9 +55,9 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .tab-item{padding:10px 18px;font-size:var(--font-sm);color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;} .tab-item.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600;} .table-card{background:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} -.table-card__head .btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;} +.table-card__head .btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1560px;} thead th{background:#FAFAFA;padding:10px 14px;text-align:center;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;} @@ -187,7 +187,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- 呼叫设备
'; }).join('')||'没有符合条件的设备'; document.getElementById('totalTip').textContent='共 '+list.length+' 台(正常 '+list.filter(function(r){return r.status==='0';}).length+' / 故障 '+list.filter(function(r){return r.status==='1';}).length+' / 停用 '+list.filter(function(r){return r.status==='2';}).length+')'; - document.getElementById('cardTitle').textContent=tabName(); } function switchTab(t){ curTab=t; diff --git a/web-admin/frontline-medical/bed-dormitory.html b/web-admin/frontline-medical/bed-dormitory.html index 661e169..bf1853b 100644 --- a/web-admin/frontline-medical/bed-dormitory.html +++ b/web-admin/frontline-medical/bed-dormitory.html @@ -52,7 +52,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .btn-link{background:none;color:var(--primary);padding:0 4px;height:auto;}.btn-link:hover{color:#40a9ff;} .btn-link--danger{background:none;color:var(--danger);padding:0 4px;height:auto;}.btn-link--danger:hover{color:#ff7875;} .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;margin-top:16px;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1300px;} @@ -177,7 +177,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- 宿舍列表
@@ -242,7 +241,6 @@ function render(){ var tv=list.length?'合计'+list.length+' 个'+(dim==='dep'?'部门':'站点')+'' +num(sum('dev'))+num(sum('alloc'))+num(sum('calls'))+num(sum('ok'))+num(sum('miss'))+num(sum('done'))+num(sum('undone'))+num(sum('alarm'))+'':''; document.getElementById('tfoot').innerHTML=tv; - document.getElementById('cardTitle').textContent=dim==='dep'?'部门统计':'站点统计'; document.getElementById('totalTip').textContent='共 '+list.length+' 行 · 统计区间 '+(f||'—')+' 至 '+(t||'—'); } /* [交互] 周期切换:非选时隐藏时间范围并即时出数,选时默认展示上一周期区间 */ diff --git a/web-admin/frontline-medical/bed-station.html b/web-admin/frontline-medical/bed-station.html index b938270..ceca78f 100644 --- a/web-admin/frontline-medical/bed-station.html +++ b/web-admin/frontline-medical/bed-station.html @@ -52,7 +52,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .btn-link{background:none;color:var(--primary);padding:0 4px;height:auto;}.btn-link:hover{color:#40a9ff;} .btn-link--danger{background:none;color:var(--danger);padding:0 4px;height:auto;}.btn-link--danger:hover{color:#ff7875;} .table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;margin-top:16px;} -.table-card__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);} +.table-card__head{display:flex;align-items:center;justify-content:flex-start;padding:12px 16px;border-bottom:1px solid var(--border);} .table-card__title{font-size:var(--font-sm);font-weight:600;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1300px;} @@ -175,7 +175,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- 站点列表
diff --git a/web-admin/frontline-medical/config-allocate-stat.html b/web-admin/frontline-medical/config-allocate-stat.html index ba078a4..88dc3f9 100644 --- a/web-admin/frontline-medical/config-allocate-stat.html +++ b/web-admin/frontline-medical/config-allocate-stat.html @@ -168,15 +168,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 分配统计
- + 救护车配置 @@ -215,7 +207,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - + @@ -320,7 +312,7 @@ function renderTable(){ document.getElementById('prevBtn').disabled=currentPage<=1; document.getElementById('nextBtn').disabled=currentPage>=totalPages; var tbody=document.getElementById('tableBody'); - if(!pageData.length){tbody.innerHTML='';return;} + if(!pageData.length){tbody.innerHTML='';return;} var html=''; pageData.forEach(function(p,i){ var hosp=p.hospital?p.hospital:'未指定'; @@ -334,7 +326,6 @@ function renderTable(){ +'' +'' +'' - +'' +''; }); tbody.innerHTML=html; diff --git a/web-admin/frontline-medical/config-allocate.html b/web-admin/frontline-medical/config-allocate.html index 03c5a98..99908ed 100644 --- a/web-admin/frontline-medical/config-allocate.html +++ b/web-admin/frontline-medical/config-allocate.html @@ -181,15 +181,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 分配统计 - + 救护车配置 @@ -329,18 +321,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ - - -
+ + diff --git a/web-admin/frontline-medical/daily-chronic-intervention.html b/web-admin/frontline-medical/daily-chronic-intervention.html index d0383cd..defbe25 100644 --- a/web-admin/frontline-medical/daily-chronic-intervention.html +++ b/web-admin/frontline-medical/daily-chronic-intervention.html @@ -60,10 +60,6 @@ tbody tr:hover{background:#F8FBFF;} .badge--info{background:#E6F7FF;color:#096DD9;border:1px solid #91D5FF;} .badge--muted{background:#F5F5F5;color:var(--text-secondary);border:1px solid var(--border);} .chip{display:inline-block;padding:2px 10px;border-radius:10px;font-size:var(--font-xs);background:#FFF1F0;color:#CF1322;border:1px solid #FFCCC7;margin-right:6px;} -.plan-blocks{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:16px 24px 24px;} -.plan-block{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;} -.plan-block__title{padding:10px 16px;background:#FAFAFA;font-size:var(--font-sm);font-weight:600;border-bottom:1px solid var(--border);} -.plan-block table{min-width:0;} .toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 24px;border-radius:var(--radius-sm);font-size:var(--font-sm);z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none;} .toast.show{opacity:1;} @@ -98,13 +94,7 @@ tbody tr:hover{background:#F8FBFF;} 非员工就诊 - + 救护车出勤随访管理慢病管理员工档案 @@ -128,12 +118,11 @@ tbody tr:hover{background:#F8FBFF;}
- +
-
@@ -163,25 +152,6 @@ tbody tr:hover{background:#F8FBFF;}
-
序号医疗点所属单位医疗点名称医疗点地址合作医院设立时间医护人员数量已分配员工数量操作序号医疗点所属单位医疗点名称医疗点地址合作医院设立时间医护人员数量已分配员工数量
暂无匹配数据
暂无匹配数据
'+p.found+''+p.staff+'
- - -
周期早餐午餐晚餐
-
-
-
运动处方
- - - -
序号运动项目单次时长(分钟)频率
-
-
-
-
@@ -304,7 +274,7 @@ function renderHead(){ } function switchTab(k){ document.querySelectorAll('.tab-btn').forEach(function(b){b.classList.toggle('active',b.dataset.tab===k);}); - ['Visit','Follow','Med','Plan'].forEach(function(p){document.getElementById('pane'+p).style.display=(p.toLowerCase()===k)?'':'none';}); + ['Visit','Follow','Med'].forEach(function(p){document.getElementById('pane'+p).style.display=(p.toLowerCase()===k)?'':'none';}); } function renderAll(){ document.getElementById('visitBody').innerHTML=emp.visits.length?emp.visits.map(function(v,i){ @@ -317,13 +287,6 @@ function renderAll(){ return ''+(i+1)+''+m.name+''+m.spec+''+m.dose+''+m.freq+''+m.start+''+m.end+'' +''+(m.using?'在用':'已停')+''; }).join(''):'该员工目前无需用药'; - document.getElementById('mealBody').innerHTML=emp.meals.map(function(m){ - return ''+m.w+''+m.b+''+m.l+''+m.d+''; - }).join(''); - document.getElementById('sportBody').innerHTML=emp.sports.map(function(s,i){ - return ''+(i+1)+''+s.n+''+s.t+''+s.f+''; - }).join(''); - document.getElementById('planAdvice').textContent='干预要点:'+emp.advice; } function showToast(msg){ var t=document.getElementById('toast');t.textContent=msg;t.classList.add('show'); diff --git a/web-admin/frontline-medical/daily-chronic.html b/web-admin/frontline-medical/daily-chronic.html index 8047550..567f4b0 100644 --- a/web-admin/frontline-medical/daily-chronic.html +++ b/web-admin/frontline-medical/daily-chronic.html @@ -97,13 +97,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;} .drawer__close:hover{color:var(--text-primary);} .drawer__body{flex:1;overflow-y:auto;padding:24px;} .drawer__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;} -.form-section{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin:20px 0 12px;padding-left:8px;border-left:3px solid var(--primary);} -.form-section:first-child{margin-top:0;} -.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;} -.detail-item{display:flex;border-bottom:1px solid var(--border);} -.detail-item--full{grid-column:1/-1;} -.detail-item .dk{width:110px;flex-shrink:0;background:#FAFAFA;padding:9px 12px;font-size:var(--font-sm);color:var(--text-secondary);border-right:1px solid var(--border);} -.detail-item .dv{flex:1;padding:9px 12px;font-size:var(--font-sm);color:var(--text-primary);white-space:normal;line-height:1.5;} .modal-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:950;align-items:center;justify-content:center;} .modal-mask.open{display:flex;} .modal{width:440px;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:24px;} @@ -147,13 +140,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 非员工就诊
- + 救护车出勤 随访管理 慢病管理 员工档案 @@ -242,7 +229,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - + @@ -258,17 +245,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - -
-
-
慢病员工详情
-
- -
- + + +
@@ -331,7 +318,7 @@ var chronics=[ {code:'CQ036441',name:'刘玉梅',sex:'女',age:40,unit:'采气一厂',dept:'靖边净化厂',point:'靖边气田医疗点',type:['高血压'],join:'2026-04-18',doctor:'呼建国',note:'体检血压 142/88mmHg,复测确认',advice:'限盐减重,规律服药,月度随访'}, {code:'CQ029905',name:'呼建国',sex:'男',age:36,unit:'采气一厂',dept:'靖边净化厂',point:'靖边气田医疗点',type:['其他'],join:'2026-07-02',doctor:'刘玉梅',note:'颈椎病史,反复上肢麻木',advice:'工间操干预,避免久坐,季度随访'} ]; -var editingCode=null,viewCode=null; +var editingCode=null; /* ===== 单位部门双列筛选 ===== */ var deptMap={ @@ -454,7 +441,7 @@ function renderTable(){ document.getElementById('prevBtn').disabled=currentPage<=1; document.getElementById('nextBtn').disabled=currentPage>=totalPages; var tbody=document.getElementById('tableBody'); - if(!pageData.length){tbody.innerHTML='
';return;} + if(!pageData.length){tbody.innerHTML='';return;} var html=''; pageData.forEach(function(c,i){ html+='' @@ -464,10 +451,11 @@ function renderTable(){ +'' +'' +'' + +'' +''; }); tbody.innerHTML=html; @@ -488,41 +476,26 @@ function turnPage(d){ renderTable(); } -/* ===== 详情抽屉 ===== */ -function openView(code){ +/* ===== 体检报告弹窗 ===== */ +function openReport(code){ var c=chronics.find(function(x){return x.code===code;}); - viewCode=code; - document.getElementById('viewTitle').textContent='慢病员工详情 · '+c.name; - function d(k,v,full){return '
'+k+'
'+(v||'—')+'
';} - document.getElementById('viewBody').innerHTML= - '
基础信息
' - +'
'+d('姓名',c.name)+d('员工编号',c.code)+d('性别/年龄',c.sex+' / '+c.age+'岁')+d('所属单位',c.unit)+d('所属部门',c.dept)+d('分配医疗点',c.point+'('+pointUnit[c.point]+')')+'
' - +'
慢病管理信息
' - +'
'+d('入组日期',c.join)+d('管理医生',c.doctor)+d('慢病类型',typeChips(c.type),true)+d('入组依据',c.note,true)+d('干预建议',c.advice,true)+'
' - +'
最近一次随访摘要
' - +'
'+latestFollow(c)+'
'; - document.getElementById('viewGoIntervention').onclick=function(){goIntervention(code);}; - document.getElementById('viewMask').classList.add('open'); - document.getElementById('viewDrawer').classList.add('open'); -} -function latestFollow(c){ - var map={ - 'CQ033096':'2026-09-05 门诊随访:头晕较前减轻,血压 146/92mmHg 仍未达标,已强化用药依从性管理。', - 'CQ010564':'2026-09-03 门诊随访:口渴乏力减轻,空腹血糖 8.9mmol/L,两周复查并强化饮食管理。', - 'CQ027710':'2026-09-01 电话随访:腰痛缓解,血脂复查提醒,减重为核心干预目标。', - 'CQ021578':'2026-08-28 门诊随访:无头晕头痛,血压 138/86mmHg 临界,生活方式干预中。', - 'CQ022317':'2026-08-26 巡诊随访:中暑后恢复,乏力减轻,注意摄盐与高温作业防护。', - 'CQ019203':'2026-08-19 电话随访:无胸闷胸痛,规律服用他汀,避免超强度作业。', - 'CQ036441':'2026-08-21 门诊随访:血压 134/84mmHg 达标,维持现有方案。', - 'CQ029905':'2026-08-14 门诊随访:上肢麻木发作减少,坚持工间操。' - }; - return map[c.code]||'近两个月内暂无随访记录,请安排下次随访。'; + document.getElementById('reportTitle').textContent='体检报告 · '+c.name; + document.getElementById('reportMask').classList.add('open'); } + +/* ===== 跳转干预记录 ===== */ function goIntervention(code){ - closeDrawer('view'); location.href='daily-chronic-intervention.html?emp='+code; } +/* ===== 删除单条台账 ===== */ +function askDelete(code){ + var c=chronics.find(function(x){return x.code===code;}); + window._batchCodes=[code]; + document.getElementById('clearText').textContent='确认删除「'+c.name+'」的慢病台账记录?该员工将移出慢病管理台账,历史干预记录保留备查。'; + document.getElementById('clearMask').classList.add('open'); +} + /* ===== 修改慢病 ===== */ function openTypeModal(code){ window._batchCodes=null; @@ -550,7 +523,7 @@ function confirmClear(){ chronics=chronics.filter(function(c){return window._batchCodes.indexOf(c.code)===-1;}); var n=window._batchCodes.length;window._batchCodes=null; closeModal('clearMask');renderTable(); - showToast('已批量删除 '+n+' 条慢病台账记录'); + showToast(n>1?'已批量删除 '+n+' 条慢病台账记录':'已删除慢病台账记录'); return; } applyTypes([]); diff --git a/web-admin/frontline-medical/daily-education.html b/web-admin/frontline-medical/daily-education.html index 617ce9a..e74be2a 100644 --- a/web-admin/frontline-medical/daily-education.html +++ b/web-admin/frontline-medical/daily-education.html @@ -151,13 +151,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 非员工就诊 - + 救护车出勤随访管理慢病管理员工档案 @@ -254,10 +248,8 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
* 宣教主题
* 宣教日期
主讲人
-
* 医疗点所属单位 -
* 开展医疗点 -
+
覆盖区域
参加人数
* 宣教内容
@@ -278,6 +270,12 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 参加人员在 PAD 端签到屏完成电子确认签字,签到记录自动回传关联本宣教活动 +
签字图片
+
+
+ 上传签字图片 +
+
序号姓名员工编号性别年龄慢病类型入组日期员工单位部门分配医疗点操作序号姓名员工编号性别年龄慢病类型入组日期员工单位部门分配医疗点体检报告操作
暂无匹配数据
暂无匹配数据
'+c.code+''+c.sex+''+c.age+''+typeChips(c.type)+''+c.join+''+c.unit+''+c.dept+''+c.point+'' - +'' +'' +'' + +'' +'
+ + +
序号体检日期体检年度体检医院审核时间报告上传时间操作
+
+
+ + + + + + + + + + + + + + + +
+ + + + diff --git a/web-admin/frontline-medical/daily-employee-search.html b/web-admin/frontline-medical/daily-employee-search.html index a341b4c..fc83bbf 100644 --- a/web-admin/frontline-medical/daily-employee-search.html +++ b/web-admin/frontline-medical/daily-employee-search.html @@ -74,25 +74,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;} .page-btn:disabled{opacity:.4;cursor:not-allowed;background:#fff;color:var(--text-placeholder);border-color:var(--border);} .toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 24px;border-radius:var(--radius-sm);font-size:var(--font-sm);z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none;} .toast.show{opacity:1;} -.drawer-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:900;} -.drawer-mask.open{display:block;} -.drawer{position:fixed;top:56px;right:-760px;bottom:0;width:720px;background:#fff;z-index:910;box-shadow:-8px 0 24px rgba(0,0,0,.12);transition:right .25s ease;display:flex;flex-direction:column;} -.drawer.open{right:0;} -.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);font-size:var(--font-lg);font-weight:600;flex-shrink:0;} -.drawer__close{cursor:pointer;color:var(--text-placeholder);font-size:20px;line-height:1;border:none;background:none;} -.drawer__close:hover{color:var(--text-primary);} -.drawer__body{flex:1;overflow-y:auto;padding:24px;} -.drawer__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;} -.form-section{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin:20px 0 12px;padding-left:8px;border-left:3px solid var(--primary);} -.form-section:first-child{margin-top:0;} -.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;} -.detail-item{display:flex;border-bottom:1px solid var(--border);} -.detail-item--full{grid-column:1/-1;} -.detail-item .dk{width:110px;flex-shrink:0;background:#FAFAFA;padding:9px 12px;font-size:var(--font-sm);color:var(--text-secondary);border-right:1px solid var(--border);} -.detail-item .dv{flex:1;padding:9px 12px;font-size:var(--font-sm);color:var(--text-primary);white-space:normal;line-height:1.5;} -.mini-table{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;min-width:0;} -.mini-table thead th{background:#FAFAFA;position:sticky;top:0;font-size:var(--font-sm);} -.mini-table td{white-space:normal;font-size:var(--font-sm);} @@ -125,13 +106,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 非员工就诊
- + 救护车出勤 随访管理 慢病管理 员工档案 @@ -208,17 +183,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
- -
-
-
员工健康档案
-
- -
-
diff --git a/web-admin/frontline-medical/daily-follow.html b/web-admin/frontline-medical/daily-follow.html index 324f136..376a881 100644 --- a/web-admin/frontline-medical/daily-follow.html +++ b/web-admin/frontline-medical/daily-follow.html @@ -163,13 +163,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 非员工就诊
- + 救护车出勤 随访管理 慢病管理 员工档案 @@ -822,6 +816,11 @@ function showToast(msg){ } renderTable(); +/* [交互] 从随访任务页跳转:?action=new 自动打开新增随访抽屉 */ +(function(){ + var q=new URLSearchParams(location.search); + if(q.get('action')==='new'){ setTimeout(function(){ openForm(); },100); } +})(); function toggleSubgroup(header){header.parentElement.classList.toggle('open');} diff --git a/web-admin/frontline-medical/daily-interpret-manage.html b/web-admin/frontline-medical/daily-interpret-manage.html index 71ffdf8..fc15b74 100644 --- a/web-admin/frontline-medical/daily-interpret-manage.html +++ b/web-admin/frontline-medical/daily-interpret-manage.html @@ -55,6 +55,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .org-item{padding:8px 12px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:4px;} .org-item:hover{background:#F0F8FF;color:var(--primary);} .org-item.active{background:var(--primary-light);color:var(--primary);font-weight:500;} +.drawer-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:900;} +.drawer-mask.open{display:block;} +.drawer{position:fixed;top:56px;right:-760px;bottom:0;width:720px;background:#fff;z-index:910;box-shadow:-8px 0 24px rgba(0,0,0,.12);transition:right .25s ease;display:flex;flex-direction:column;} +.drawer.open{right:0;} +.drawer--narrow{width:640px;right:-680px;} +.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);font-size:var(--font-lg);font-weight:600;flex-shrink:0;} +.drawer__close{cursor:pointer;color:var(--text-placeholder);font-size:20px;line-height:1;border:none;background:none;} +.drawer__close:hover{color:var(--text-primary);} +.drawer__body{flex:1;overflow-y:auto;padding:24px;} +.drawer__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;} .mini-table{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;min-width:0;} .mini-table thead th{background:#FAFAFA;position:sticky;top:0;font-size:var(--font-sm);} .mini-table td{white-space:normal;font-size:var(--font-sm);} @@ -62,7 +72,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .btn-primary{background:var(--primary);color:#fff;}.btn-primary:hover{background:#40a9ff;} .btn-default{background:#fff;color:var(--text-primary);border:1px solid var(--border);}.btn-default:hover{color:var(--primary);border-color:var(--primary);} .btn-link{background:none;color:var(--primary);padding:0 4px;height:auto;}.btn-link:hover{color:#40a9ff;} -.action-bar{display:flex;align-items:center;gap:8px;padding:16px 24px;background:#fff;margin-top:16px;border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:var(--shadow-sm);} +.action-bar{display:flex;align-items:center;gap:8px;padding:12px 24px;background:#fff;margin-top:16px;border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:var(--shadow-sm);} .table-card{background:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;} .table-card__content{overflow-x:auto;-webkit-overflow-scrolling:touch;} table{width:100%;border-collapse:separate;border-spacing:0;min-width:1550px;} @@ -87,28 +97,42 @@ tbody tr:hover td:last-child{background:#F8FBFF;} .page-btn:disabled{opacity:.4;cursor:not-allowed;background:#fff;color:var(--text-placeholder);border-color:var(--border);} .toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 24px;border-radius:var(--radius-sm);font-size:var(--font-sm);z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none;} .toast.show{opacity:1;} -.drawer-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:900;} -.drawer-mask.open{display:block;} -.drawer{position:fixed;top:56px;right:-760px;bottom:0;width:720px;background:#fff;z-index:910;box-shadow:-8px 0 24px rgba(0,0,0,.12);transition:right .25s ease;display:flex;flex-direction:column;} -.drawer.open{right:0;} -.drawer--narrow{width:640px;right:-680px;} -.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);font-size:var(--font-lg);font-weight:600;flex-shrink:0;} -.drawer__close{cursor:pointer;color:var(--text-placeholder);font-size:20px;line-height:1;border:none;background:none;} -.drawer__close:hover{color:var(--text-primary);} -.drawer__body{flex:1;overflow-y:auto;padding:24px;} -.drawer__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;} -.form-section{font-size:var(--font-sm);font-weight:600;color:var(--text-primary);margin:20px 0 12px;padding-left:8px;border-left:3px solid var(--primary);} -.form-section:first-child{margin-top:0;} -.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;} -.detail-item{display:flex;border-bottom:1px solid var(--border);} -.detail-item--full{grid-column:1/-1;} -.detail-item .dk{width:110px;flex-shrink:0;background:#FAFAFA;padding:9px 12px;font-size:var(--font-sm);color:var(--text-secondary);border-right:1px solid var(--border);} -.detail-item .dv{flex:1;padding:9px 12px;font-size:var(--font-sm);color:var(--text-primary);white-space:normal;line-height:1.5;} .modal-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:950;align-items:center;justify-content:center;} .modal-mask.open{display:flex;} -.modal{width:440px;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:24px;} -.modal__title{font-size:var(--font-base);font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px;} -.modal__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;} +.modal--wide{width:1240px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);} +.modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);font-size:var(--font-base);font-weight:600;flex-shrink:0;} +.modal__close{cursor:pointer;color:var(--text-placeholder);font-size:20px;line-height:1;border:none;background:none;} +.modal__close:hover{color:var(--text-primary);} +.modal__body{flex:1;overflow-y:auto;padding:20px 24px;} +.modal__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;} +/* 详情弹窗左右两栏 */ +.report-cols{display:flex;gap:0;height:calc(90vh - 130px);} +.report-cols__left{width:50%;overflow-y:auto;padding-right:20px;border-right:1px dashed var(--border);} +.report-cols__right{width:50%;overflow-y:auto;padding-left:20px;} +.report-title{font-size:var(--font-base);font-weight:700;padding:10px 0 10px 12px;position:relative;margin-top:4px;} +.report-title::before{content:'';position:absolute;left:0;top:13px;width:6px;height:18px;background:#E3CB2C;border-radius:2px;} +.report-sub{font-size:var(--font-sm);color:var(--text-secondary);line-height:1.7;padding:0 12px 8px;} +.report-group{margin-top:16px;} +.report-group__name{font-weight:700;font-size:var(--font-base);padding:10px 12px;background:#F6F6F6;border-radius:var(--radius-sm) var(--radius-sm) 0 0;} +.report-cat{padding-left:20px;} +.report-cat__name{font-size:var(--font-sm);font-weight:700;padding:10px 0 8px 12px;position:relative;} +.report-cat__name::before{content:'';position:absolute;left:0;top:12px;width:6px;height:16px;background:#02C2A6;border-radius:2px;} +.report-ul{padding:0;margin:0;width:100%;display:flex;} +.report-ul li{flex:1;text-align:center;padding:6px 0;font-size:var(--font-sm);border:1px solid #E6E6E6;border-left:none;border-top:none;} +.report-ul li:first-child{border-left:1px solid #E6E6E6;} +.report-ul.report-ul--head{font-weight:700;} +.report-ul.report-ul--head li{background:#F0F2FF;} +.report-ul.report-ul--head li:first-child{background:#F0F2FF;} +.report-ul:not(.report-ul--head) li:first-child{background:#F6F6F6;} +.emp-basic{display:flex;flex-wrap:wrap;gap:4px 0;} +.emp-basic div{font-size:var(--font-sm);color:var(--text-secondary);padding:4px 0;} +.emp-basic b{color:var(--text-primary);font-weight:600;} +.emp-basic .w25{width:25%;} +.emp-basic .w50{width:50%;} +.emp-basic .w100{width:100%;} +.advise-box{background:#F4F4F4;border-radius:var(--radius-sm);padding:10px;font-size:var(--font-sm);line-height:1.7;color:var(--text-primary);min-height:88px;} +.sign-box{border:1px dashed var(--border);border-radius:var(--radius-sm);padding:16px;text-align:center;min-height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;} +.group-badge{display:inline-block;padding:2px 12px;border-radius:10px;font-size:var(--font-sm);font-weight:600;} @@ -141,13 +165,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 非员工就诊
- + 救护车出勤 随访管理 慢病管理 员工档案 @@ -168,8 +186,12 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
- - + + +
+
+ +
@@ -224,8 +246,12 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
- - + +
@@ -234,7 +260,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - + @@ -250,29 +276,51 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - -
-
-
解读归档详情
-
- -
- - -
序号解读员工员工编号性别年龄员工单位部门分配医疗点医疗点单位体检年份解读医生解读日期操作序号解读员工工号性别年龄员工所属单位员工所属部门分配医疗点医疗点所属单位体检年份解读医生解读日期操作
- - - - - - -
序号出库单号药品名称规格单位出库数量出库类型关联单据出库日期操作人出库医疗点操作
-
- - -
- - - - - - - - -
- - - - diff --git a/web-admin/frontline-medical/daily-treatment-nonstaff.html b/web-admin/frontline-medical/daily-treatment-nonstaff.html index 5d36133..72564d1 100644 --- a/web-admin/frontline-medical/daily-treatment-nonstaff.html +++ b/web-admin/frontline-medical/daily-treatment-nonstaff.html @@ -146,13 +146,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 非员工就诊
- + 救护车出勤 随访管理 慢病管理 员工档案 @@ -251,17 +245,10 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
* 联系电话
与员工关系
* 就诊时间
-
* 医疗点所属单位 -
* 就诊医疗点 -
+
* 就诊医生
-
纳入随访 -
- - -
诊断信息
@@ -357,12 +344,12 @@ var medPool=[ var pointUnit={'樊学作业区医疗点':'采油一厂','姬圪台作业区医疗点':'采油二厂','西峰基地医疗点':'第四采油厂','靖边气田医疗点':'采气一厂','桐园作业区医疗点':'采油二厂','安塞采油队长住点医疗室':'采油一厂','乌审旗采气区医疗点':'采气一厂','姬塬作业区医疗点':'采油一厂'}; /* 非员工就诊:家属/协作单位人员,身份证为虚构号码 */ var nonstaffs=[ - {id:1,user:'马凤莲',sex:'女',age:58,idcard:'622822196803124523',phone:'151****3027',rel:'员工家属',point:'樊学作业区医疗点',disease:'高血压病(2级)',doctor:'李桂芳',time:'2026-09-05 10:10',main:'头晕耳鸣3天',inspect:'血压152/94mmHg',past:'高血压4年',present:'劳累后加重',allergy:'无',revisit:'否',follow:'是',rx:[{m:'硝苯地平控释片',spec:'30mg*7片',num:1,dosage:'一次1片 一日1次'}],advice:'每日监测血压',food:'低盐低脂',sport:'适度散步'}, - {id:2,user:'杨来贵',sex:'男',age:63,idcard:'620521196307083317',phone:'132****7108',rel:'员工家属',point:'姬圪台作业区医疗点',disease:'2型糖尿病复诊',doctor:'曲志明',time:'2026-09-04 15:40',main:'口渴乏力半月',inspect:'空腹血糖9.2mmol/L',past:'糖尿病8年',present:'血糖控制欠佳',allergy:'无',revisit:'是',follow:'是',rx:[{m:'二甲双胍缓释片',spec:'0.5g*30片',num:2,dosage:'一次1片 一日2次'}],advice:'两周后复查血糖',food:'控制总热量',sport:'餐后快走30分钟'}, - {id:3,user:'白莲香',sex:'女',age:41,idcard:'612731198502146625',phone:'158****4410',rel:'协作单位人员',point:'桐园作业区医疗点',disease:'急性胃肠炎',doctor:'张秀兰',time:'2026-09-02 11:20',main:'腹痛腹泻1天',inspect:'脐周压痛,肠鸣音活跃',past:'无',present:'进食不洁饭后腹泻',allergy:'无',revisit:'否',follow:'否',rx:[{m:'蒙脱石散',spec:'3g*10袋',num:1,dosage:'一次1袋 一日3次'},{m:'复方氯化钠注射液',spec:'500ml',num:1,dosage:'静脉滴注 1次'}],advice:'补液防脱水',food:'流质饮食',sport:'注意休息'}, - {id:4,user:'丁胜海',sex:'男',age:52,idcard:'620102197403059116',phone:'139****0213',rel:'员工家属',point:'西峰基地医疗点',disease:'腰肌劳损',doctor:'闫婷',time:'2026-08-30 09:15',main:'腰部酸痛2周',inspect:'腰两侧压痛',past:'久坐工作史',present:'渐进性酸痛',allergy:'磺胺类过敏',revisit:'否',follow:'否',rx:[{m:'布洛芬缓释胶囊',spec:'0.3g*20粒',num:1,dosage:'一次1粒 一日2次'}],advice:'避免久坐,配合理疗',food:'均衡营养',sport:'腰背肌锻炼'}, - {id:5,user:'周翠兰',sex:'女',age:36,idcard:'610628199001074412',phone:'177****5521',rel:'协作单位人员',point:'乌审旗采气区医疗点',disease:'中暑(先兆)',doctor:'刘玉梅',time:'2026-08-28 14:05',main:'高温作业后头晕出汗',inspect:'体温37.7℃,面色潮红',past:'无',present:'午间露天作业后不适',allergy:'无',revisit:'否',follow:'否',rx:[{m:'藿香正气口服液',spec:'10ml*10支',num:1,dosage:'一次1支 一日2次'}],advice:'阴凉处休息,少量多次饮水',food:'清淡,补充电解质',sport:'避开高温时段'}, - {id:6,user:'石长有',sex:'男',age:70,idcard:'622801195601021235',phone:'181****6640',rel:'员工家属',point:'安塞采油队长住点医疗室',disease:'冠心病复诊',doctor:'石维国',time:'2026-08-22 10:35',main:'活动后胸闷1月',inspect:'心率78次/分,律齐',past:'冠心病6年',present:'冬季症状加重',allergy:'无',revisit:'是',follow:'是',rx:[],advice:'随身携带急救药物,一月后心内科复诊',food:'低脂高纤维',sport:'避免剧烈运动'} + {id:1,user:'马凤莲',sex:'女',age:58,idcard:'622822196803124523',phone:'151****3027',rel:'员工家属',point:'樊学作业区医疗点',disease:'高血压病(2级)',doctor:'李桂芳',time:'2026-09-05 10:10',main:'头晕耳鸣3天',inspect:'血压152/94mmHg',past:'高血压4年',present:'劳累后加重',allergy:'无',revisit:'否',rx:[{m:'硝苯地平控释片',spec:'30mg*7片',num:1,dosage:'一次1片 一日1次'}],advice:'每日监测血压',food:'低盐低脂',sport:'适度散步'}, + {id:2,user:'杨来贵',sex:'男',age:63,idcard:'620521196307083317',phone:'132****7108',rel:'员工家属',point:'姬圪台作业区医疗点',disease:'2型糖尿病复诊',doctor:'曲志明',time:'2026-09-04 15:40',main:'口渴乏力半月',inspect:'空腹血糖9.2mmol/L',past:'糖尿病8年',present:'血糖控制欠佳',allergy:'无',revisit:'是',rx:[{m:'二甲双胍缓释片',spec:'0.5g*30片',num:2,dosage:'一次1片 一日2次'}],advice:'两周后复查血糖',food:'控制总热量',sport:'餐后快走30分钟'}, + {id:3,user:'白莲香',sex:'女',age:41,idcard:'612731198502146625',phone:'158****4410',rel:'协作单位人员',point:'桐园作业区医疗点',disease:'急性胃肠炎',doctor:'张秀兰',time:'2026-09-02 11:20',main:'腹痛腹泻1天',inspect:'脐周压痛,肠鸣音活跃',past:'无',present:'进食不洁饭后腹泻',allergy:'无',revisit:'否',rx:[{m:'蒙脱石散',spec:'3g*10袋',num:1,dosage:'一次1袋 一日3次'},{m:'复方氯化钠注射液',spec:'500ml',num:1,dosage:'静脉滴注 1次'}],advice:'补液防脱水',food:'流质饮食',sport:'注意休息'}, + {id:4,user:'丁胜海',sex:'男',age:52,idcard:'620102197403059116',phone:'139****0213',rel:'员工家属',point:'西峰基地医疗点',disease:'腰肌劳损',doctor:'闫婷',time:'2026-08-30 09:15',main:'腰部酸痛2周',inspect:'腰两侧压痛',past:'久坐工作史',present:'渐进性酸痛',allergy:'磺胺类过敏',revisit:'否',rx:[{m:'布洛芬缓释胶囊',spec:'0.3g*20粒',num:1,dosage:'一次1粒 一日2次'}],advice:'避免久坐,配合理疗',food:'均衡营养',sport:'腰背肌锻炼'}, + {id:5,user:'周翠兰',sex:'女',age:36,idcard:'610628199001074412',phone:'177****5521',rel:'协作单位人员',point:'乌审旗采气区医疗点',disease:'中暑(先兆)',doctor:'刘玉梅',time:'2026-08-28 14:05',main:'高温作业后头晕出汗',inspect:'体温37.7℃,面色潮红',past:'无',present:'午间露天作业后不适',allergy:'无',revisit:'否',rx:[{m:'藿香正气口服液',spec:'10ml*10支',num:1,dosage:'一次1支 一日2次'}],advice:'阴凉处休息,少量多次饮水',food:'清淡,补充电解质',sport:'避开高温时段'}, + {id:6,user:'石长有',sex:'男',age:70,idcard:'622801195601021235',phone:'181****6640',rel:'员工家属',point:'安塞采油队长住点医疗室',disease:'冠心病复诊',doctor:'石维国',time:'2026-08-22 10:35',main:'活动后胸闷1月',inspect:'心率78次/分,律齐',past:'冠心病6年',present:'冬季症状加重',allergy:'无',revisit:'是',rx:[],advice:'随身携带急救药物,一月后心内科复诊',food:'低脂高纤维',sport:'避免剧烈运动'} ]; var nextId=7,editingId=null,curRx=[],pendingDelId=null; @@ -462,11 +449,16 @@ function fillDoctorSel(keep){ sel.appendChild(o); }); } -function onFormUnit(){ - var unit=document.getElementById('fUnit').value; +function fillPointSel(keep){ var sel=document.getElementById('fPoint'); sel.innerHTML=''; - if(unit){(pointMap[unit]||[]).forEach(function(p){var o=document.createElement('option');o.textContent=p;sel.appendChild(o);});} + Object.keys(pointMap).forEach(function(u){ + (pointMap[u]||[]).forEach(function(p){ + var o=document.createElement('option');o.textContent=p; + if(p===keep)o.selected=true; + sel.appendChild(o); + }); + }); } function setRadio(name,val){document.querySelectorAll('input[name="'+name+'"]').forEach(function(r){r.checked=(r.value===val);});} function getRadio(name){var r=document.querySelector('input[name="'+name+'"]:checked');return r?r.value:'';} @@ -476,9 +468,8 @@ function openForm(id){ document.getElementById('formTitle').textContent=id?('编辑就诊记录 · '+t.user):'新增就诊记录'; ['fName','fAge','fIdcard','fPhone','fRel','fMain','fInspect','fPast','fPresent','fAllergy','fDisease','fAdvice','fFood','fSport'].forEach(function(k){document.getElementById(k).value='';}); document.getElementById('fTime').value=t?t.time.replace(' ','T'):'2026-09-07T09:00'; - document.getElementById('fUnit').value=t?pointUnit[t.point]:''; - onFormUnit(); - if(t){var ps=document.getElementById('fPoint');[].slice.call(ps.options).forEach(function(o){if(o.text===t.point)o.selected=true;}); + fillPointSel(t?t.point:''); + if(t){ document.getElementById('fName').value=t.user; document.getElementById('fAge').value=t.age; document.getElementById('fIdcard').value=t.idcard; @@ -490,7 +481,6 @@ function openForm(id){ document.getElementById('fAdvice').value=t.advice;document.getElementById('fFood').value=t.food;document.getElementById('fSport').value=t.sport; } setRadio('fSex',t?t.sex:''); - setRadio('fFollow',t?t.follow:'否'); setRadio('fRevisit',t?t.revisit:'否'); fillDoctorSel(t?t.doctor:''); curRx=t?t.rx.map(function(r){return {m:r.m,spec:r.spec,stock:(medPool.find(function(m){return m.name===r.m;})||{}).stock||0,num:r.num,dosage:r.dosage};}):[]; @@ -505,7 +495,6 @@ function saveForm(){ var idcard=document.getElementById('fIdcard').value.trim(); var phone=document.getElementById('fPhone').value.trim(); var time=document.getElementById('fTime').value; - var unit=document.getElementById('fUnit').value; var point=document.getElementById('fPoint').value; var doctor=document.getElementById('fDoctor').value; var disease=document.getElementById('fDisease').value.trim(); @@ -515,7 +504,7 @@ function saveForm(){ if(!/^[1-9]\d{16}[\dXx]$/.test(idcard)){showToast('身份证号需为18位有效号码');return;} if(!/^1[3-9]\d{9}$/.test(phone.replace(/\*/g,'0'))&&!/^1\d{2}\*{4}\d{4}$/.test(phone)){showToast('请填写有效联系电话');return;} if(!time){showToast('请选择就诊时间');return;} - if(!unit||!point){showToast('请选择就诊医疗点');return;} + if(!point){showToast('请选择就诊医疗点');return;} if(!doctor){showToast('请选择就诊医生');return;} if(!disease){showToast('请填写诊断疾病');return;} var rx=curRx.filter(function(r){return r.m;}); @@ -526,14 +515,14 @@ function saveForm(){ rel:document.getElementById('fRel').value,point:point,disease:disease,doctor:doctor,time:time.replace('T',' '), main:document.getElementById('fMain').value,inspect:document.getElementById('fInspect').value, past:document.getElementById('fPast').value,present:document.getElementById('fPresent').value, - allergy:document.getElementById('fAllergy').value,revisit:getRadio('fRevisit'),follow:getRadio('fFollow'), + allergy:document.getElementById('fAllergy').value,revisit:getRadio('fRevisit'), rx:rx,advice:document.getElementById('fAdvice').value, food:document.getElementById('fFood').value,sport:document.getElementById('fSport').value }; if(editingId){nonstaffs.splice(nonstaffs.findIndex(function(x){return x.id===editingId;}),1,obj);} else{nonstaffs.push(obj);} closeDrawer('form');renderTable(); - showToast(editingId?'就诊记录已更新':'就诊记录已登记'+(obj.follow==='是'?',并已生成随访任务':'')); + showToast(editingId?'就诊记录已更新':'就诊记录已登记'); } /* ===== 详情抽屉 ===== */ @@ -544,7 +533,7 @@ function openView(id){ var rxHtml=t.rx.length?''+t.rx.map(function(r){return '';}).join('')+'
药品名称规格数量用法用量
'+r.m+''+r.spec+''+r.num+''+r.dosage+'
':'本次就诊未开药'; document.getElementById('viewBody').innerHTML= '
就诊人信息
' - +'
'+d('就诊人',t.user)+d('性别/年龄',t.sex+' / '+t.age+'岁')+d('身份证号',t.idcard)+d('联系电话',t.phone)+d('与员工关系',t.rel)+d('就诊医疗点',t.point)+d('就诊医生',t.doctor)+d('就诊时间',t.time)+d('是否复诊',t.revisit)+d('纳入随访',t.follow)+'
' + +'
'+d('就诊人',t.user)+d('性别/年龄',t.sex+' / '+t.age+'岁')+d('身份证号',t.idcard)+d('联系电话',t.phone)+d('与员工关系',t.rel)+d('就诊医疗点',t.point)+d('就诊医生',t.doctor)+d('就诊时间',t.time)+d('是否复诊',t.revisit)+'
' +'
诊断信息
' +'
'+d('主诉',t.main,true)+d('查体',t.inspect,true)+d('既往史',t.past)+d('现病史',t.present)+d('过敏史',t.allergy)+d('诊断疾病',t.disease,true)+'
' +'
用药方案
'+rxHtml diff --git a/web-admin/frontline-medical/daily-treatment-staff.html b/web-admin/frontline-medical/daily-treatment-staff.html index 0d4db01..abcea1f 100644 --- a/web-admin/frontline-medical/daily-treatment-staff.html +++ b/web-admin/frontline-medical/daily-treatment-staff.html @@ -160,13 +160,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ 非员工就诊 - + 救护车出勤 随访管理 慢病管理 员工档案 @@ -279,19 +273,18 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ +
工号
+
性别/年龄
+
身份证号
+
联系电话
+
所属单位
+
所属部门
* 就诊时间
-
* 医疗点所属单位 -
* 就诊医疗点 -
+
* 就诊医生
-
纳入随访 -
- - -
诊断信息
@@ -410,27 +403,27 @@ var medPool=[ ]; /* 就诊员工池 */ var userPool=[ - {name:'石维国',code:'CQ021578',sex:'男',age:46,unit:'采油一厂',dept:'樊学作业区',tel:'139****2051'}, - {name:'李桂芳',code:'CQ032144',sex:'女',age:38,unit:'采油一厂',dept:'樊学作业区',tel:'138****7742'}, - {name:'白瑞',code:'CQ044871',sex:'男',age:31,unit:'采油一厂',dept:'生产技术部',tel:'155****3316'}, - {name:'曲志明',code:'CQ019203',sex:'男',age:42,unit:'采油二厂',dept:'姬圪台联合站',tel:'137****8890'}, - {name:'张秀兰',code:'CQ027710',sex:'女',age:45,unit:'采油二厂',dept:'姬圪台联合站',tel:'136****2248'}, - {name:'赵万福',code:'CQ033096',sex:'男',age:39,unit:'采油二厂',dept:'桐园作业区',tel:'150****6127'}, - {name:'高建军',code:'CQ010564',sex:'男',age:50,unit:'第四采油厂',dept:'基地管理处',tel:'139****0086'}, - {name:'闫婷',code:'CQ041822',sex:'女',age:34,unit:'第四采油厂',dept:'健康管理部',tel:'186****5527'}, - {name:'刘玉梅',code:'CQ036441',sex:'女',age:40,unit:'采气一厂',dept:'靖边净化厂',tel:'135****7719'}, - {name:'呼建国',code:'CQ029905',sex:'男',age:36,unit:'采气一厂',dept:'靖边净化厂',tel:'147****9003'} + {name:'石维国',code:'CQ021578',sex:'男',age:46,unit:'采油一厂',dept:'樊学作业区',tel:'139****2051',idcard:'610102197804154213'}, + {name:'李桂芳',code:'CQ032144',sex:'女',age:38,unit:'采油一厂',dept:'樊学作业区',tel:'138****7742',idcard:'610102198603214826'}, + {name:'白瑞',code:'CQ044871',sex:'男',age:31,unit:'采油一厂',dept:'生产技术部',tel:'155****3316',idcard:'610102199307104517'}, + {name:'曲志明',code:'CQ019203',sex:'男',age:42,unit:'采油二厂',dept:'姬圪台联合站',tel:'137****8890',idcard:'610102198209285310'}, + {name:'张秀兰',code:'CQ027710',sex:'女',age:45,unit:'采油二厂',dept:'姬圪台联合站',tel:'136****2248',idcard:'610102197912064629'}, + {name:'赵万福',code:'CQ033096',sex:'男',age:39,unit:'采油二厂',dept:'桐园作业区',tel:'150****6127',idcard:'610102198511224737'}, + {name:'高建军',code:'CQ010564',sex:'男',age:50,unit:'第四采油厂',dept:'基地管理处',tel:'139****0086',idcard:'610102197406304419'}, + {name:'闫婷',code:'CQ041822',sex:'女',age:34,unit:'第四采油厂',dept:'健康管理部',tel:'186****5527',idcard:'610102199001184928'}, + {name:'刘玉梅',code:'CQ036441',sex:'女',age:40,unit:'采气一厂',dept:'靖边净化厂',tel:'135****7719',idcard:'610102198408214523'}, + {name:'呼建国',code:'CQ029905',sex:'男',age:36,unit:'采气一厂',dept:'靖边净化厂',tel:'147****9003',idcard:'610102198805174635'} ]; var pointUnit={'樊学作业区医疗点':'采油一厂','姬圪台作业区医疗点':'采油二厂','西峰基地医疗点':'第四采油厂','靖边气田医疗点':'采气一厂','桐园作业区医疗点':'采油二厂','安塞采油队长住点医疗室':'采油一厂','乌审旗采气区医疗点':'采气一厂'}; var treatments=[ - {id:1,user:'呼建国',code:'CQ029905',sex:'男',age:36,uUnit:'采气一厂',uDept:'靖边净化厂',point:'靖边气田医疗点',disease:'上呼吸道感染',tel:'147****9003',doctor:'刘玉梅',time:'2026-09-06 09:30',main:'发热咽痛2天',inspect:'体温38.2℃,咽部充血',past:'无',present:'受凉后发热',allergy:'无',revisit:'否',follow:'是',rx:[{m:'阿莫西林胶囊',spec:'0.25g*24粒',num:2,dosage:'一次2粒 一日3次'}],advice:'多饮水注意休息,三天后复诊',food:'清淡饮食,忌辛辣',sport:'暂缓运动'}, - {id:2,user:'赵万福',code:'CQ033096',sex:'男',age:39,uUnit:'采油二厂',uDept:'桐园作业区',point:'桐园作业区医疗点',disease:'高血压病(2级)',tel:'150****6127',doctor:'曲志明',time:'2026-09-05 15:10',main:'头晕1周,血压波动',inspect:'血压158/96mmHg',past:'高血压3年,规律服药',present:'劳累后头晕加重',allergy:'无',revisit:'是',follow:'是',rx:[{m:'硝苯地平控释片',spec:'30mg*7片',num:1,dosage:'一次1片 一日1次'}],advice:'每日晨起测量血压',food:'低盐低脂,每日食盐<5g',sport:'每周150分钟中等强度有氧'}, - {id:3,user:'杨慧敏',code:'CQ045130',sex:'女',age:33,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'踝关节扭伤',tel:'188****7214',doctor:'石维国',time:'2026-09-04 11:00',main:'跌倒后右踝肿痛3小时',inspect:'右踝外侧肿胀,活动受限',past:'无',present:'井场巡检时滑倒',allergy:'无',revisit:'否',follow:'否',rx:[{m:'云南白药气雾剂',spec:'85g+30g',num:1,dosage:'外用 一日3次'}],advice:'48小时内冰敷,抬高患肢',food:'均衡饮食',sport:'两周制动,后渐进负重训练'}, - {id:4,user:'高建军',code:'CQ010564',sex:'男',age:50,uUnit:'第四采油厂',uDept:'基地管理处',point:'西峰基地医疗点',disease:'2型糖尿病复诊',tel:'139****0086',doctor:'闫婷',time:'2026-09-03 10:20',main:'口渴乏力1月',inspect:'空腹血糖8.9mmol/L',past:'糖尿病5年',present:'近1月血糖控制欠佳',allergy:'磺胺类过敏',revisit:'是',follow:'是',rx:[{m:'二甲双胍缓释片',spec:'0.5g*30片',num:2,dosage:'一次1片 一日2次'}],advice:'监测空腹与餐后血糖,两周后复查',food:'控制总热量,主食粗细搭配',sport:'餐后1小时快走30分钟'}, - {id:5,user:'田震',code:'CQ037744',sex:'男',age:35,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'急性胃肠炎',tel:'139****5218',doctor:'李桂芳',time:'2026-09-02 16:45',main:'腹痛腹泻1天',inspect:'肠鸣音活跃,脐周压痛',past:'无',present:'进食隔夜饭后腹泻',allergy:'无',revisit:'否',follow:'否',rx:[{m:'蒙脱石散',spec:'3g*10袋',num:1,dosage:'一次1袋 一日3次'},{m:'复方氯化钠注射液',spec:'500ml',num:1,dosage:'静脉滴注 1次'}],advice:'补液防脱水,症状加重随时就诊',food:'流质饮食过渡,忌生冷油腻',sport:'注意休息'}, - {id:6,user:'徐立成',code:'CQ022317',sex:'男',age:44,uUnit:'采气一厂',uDept:'苏里格南作业区',point:'乌审旗采气区医疗点',disease:'中暑(先兆)',tel:'133****4860',doctor:'刘玉梅',time:'2026-08-28 13:30',main:'高温作业后头晕出汗',inspect:'体温37.8℃,面色潮红',past:'无',present:'午间巡检后不适',allergy:'无',revisit:'否',follow:'否',rx:[{m:'藿香正气口服液',spec:'10ml*10支',num:1,dosage:'一次1支 一日2次'}],advice:'阴凉处休息,少量多次饮水',food:'清淡,适当补充电解质',sport:'避开高温时段作业'}, - {id:7,user:'张秀兰',code:'CQ027710',sex:'女',age:45,uUnit:'采油二厂',uDept:'姬圪台联合站',point:'姬圪台作业区医疗点',disease:'腰肌劳损',tel:'136****2248',doctor:'曲志明',time:'2026-08-25 09:00',main:'腰部酸痛2周',inspect:'腰两侧压痛,活动受限',past:'久坐工作史',present:'渐进性酸痛',allergy:'无',revisit:'是',follow:'是',rx:[{m:'布洛芬缓释胶囊',spec:'0.3g*20粒',num:1,dosage:'一次1粒 一日2次'}],advice:'避免久坐,配合理疗',food:'均衡营养',sport:'小燕飞等腰背肌锻炼'}, - {id:8,user:'石维国',code:'CQ021578',sex:'男',age:46,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'电光性眼炎',tel:'139****2051',doctor:'李桂芳',time:'2026-08-21 18:20',main:'焊接后眼痛流泪6小时',inspect:'睑结膜充血',past:'无',present:'未戴护目镜作业',allergy:'无',revisit:'否',follow:'否',rx:[],advice:'冷敷,避免揉眼,24小时复查',food:'忌辛辣刺激',sport:'减少用眼'} + {id:1,user:'呼建国',code:'CQ029905',sex:'男',age:36,uUnit:'采气一厂',uDept:'靖边净化厂',point:'靖边气田医疗点',disease:'上呼吸道感染',tel:'147****9003',doctor:'刘玉梅',time:'2026-09-06 09:30',main:'发热咽痛2天',inspect:'体温38.2℃,咽部充血',past:'无',present:'受凉后发热',allergy:'无',revisit:'否',rx:[{m:'阿莫西林胶囊',spec:'0.25g*24粒',num:2,dosage:'一次2粒 一日3次'}],advice:'多饮水注意休息,三天后复诊',food:'清淡饮食,忌辛辣',sport:'暂缓运动'}, + {id:2,user:'赵万福',code:'CQ033096',sex:'男',age:39,uUnit:'采油二厂',uDept:'桐园作业区',point:'桐园作业区医疗点',disease:'高血压病(2级)',tel:'150****6127',doctor:'曲志明',time:'2026-09-05 15:10',main:'头晕1周,血压波动',inspect:'血压158/96mmHg',past:'高血压3年,规律服药',present:'劳累后头晕加重',allergy:'无',revisit:'是',rx:[{m:'硝苯地平控释片',spec:'30mg*7片',num:1,dosage:'一次1片 一日1次'}],advice:'每日晨起测量血压',food:'低盐低脂,每日食盐<5g',sport:'每周150分钟中等强度有氧'}, + {id:3,user:'杨慧敏',code:'CQ045130',sex:'女',age:33,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'踝关节扭伤',tel:'188****7214',doctor:'石维国',time:'2026-09-04 11:00',main:'跌倒后右踝肿痛3小时',inspect:'右踝外侧肿胀,活动受限',past:'无',present:'井场巡检时滑倒',allergy:'无',revisit:'否',rx:[{m:'云南白药气雾剂',spec:'85g+30g',num:1,dosage:'外用 一日3次'}],advice:'48小时内冰敷,抬高患肢',food:'均衡饮食',sport:'两周制动,后渐进负重训练'}, + {id:4,user:'高建军',code:'CQ010564',sex:'男',age:50,uUnit:'第四采油厂',uDept:'基地管理处',point:'西峰基地医疗点',disease:'2型糖尿病复诊',tel:'139****0086',doctor:'闫婷',time:'2026-09-03 10:20',main:'口渴乏力1月',inspect:'空腹血糖8.9mmol/L',past:'糖尿病5年',present:'近1月血糖控制欠佳',allergy:'磺胺类过敏',revisit:'是',rx:[{m:'二甲双胍缓释片',spec:'0.5g*30片',num:2,dosage:'一次1片 一日2次'}],advice:'监测空腹与餐后血糖,两周后复查',food:'控制总热量,主食粗细搭配',sport:'餐后1小时快走30分钟'}, + {id:5,user:'田震',code:'CQ037744',sex:'男',age:35,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'急性胃肠炎',tel:'139****5218',doctor:'李桂芳',time:'2026-09-02 16:45',main:'腹痛腹泻1天',inspect:'肠鸣音活跃,脐周压痛',past:'无',present:'进食隔夜饭后腹泻',allergy:'无',revisit:'否',rx:[{m:'蒙脱石散',spec:'3g*10袋',num:1,dosage:'一次1袋 一日3次'},{m:'复方氯化钠注射液',spec:'500ml',num:1,dosage:'静脉滴注 1次'}],advice:'补液防脱水,症状加重随时就诊',food:'流质饮食过渡,忌生冷油腻',sport:'注意休息'}, + {id:6,user:'徐立成',code:'CQ022317',sex:'男',age:44,uUnit:'采气一厂',uDept:'苏里格南作业区',point:'乌审旗采气区医疗点',disease:'中暑(先兆)',tel:'133****4860',doctor:'刘玉梅',time:'2026-08-28 13:30',main:'高温作业后头晕出汗',inspect:'体温37.8℃,面色潮红',past:'无',present:'午间巡检后不适',allergy:'无',revisit:'否',rx:[{m:'藿香正气口服液',spec:'10ml*10支',num:1,dosage:'一次1支 一日2次'}],advice:'阴凉处休息,少量多次饮水',food:'清淡,适当补充电解质',sport:'避开高温时段作业'}, + {id:7,user:'张秀兰',code:'CQ027710',sex:'女',age:45,uUnit:'采油二厂',uDept:'姬圪台联合站',point:'姬圪台作业区医疗点',disease:'腰肌劳损',tel:'136****2248',doctor:'曲志明',time:'2026-08-25 09:00',main:'腰部酸痛2周',inspect:'腰两侧压痛,活动受限',past:'久坐工作史',present:'渐进性酸痛',allergy:'无',revisit:'是',rx:[{m:'布洛芬缓释胶囊',spec:'0.3g*20粒',num:1,dosage:'一次1粒 一日2次'}],advice:'避免久坐,配合理疗',food:'均衡营养',sport:'小燕飞等腰背肌锻炼'}, + {id:8,user:'石维国',code:'CQ021578',sex:'男',age:46,uUnit:'采油一厂',uDept:'樊学作业区',point:'樊学作业区医疗点',disease:'电光性眼炎',tel:'139****2051',doctor:'李桂芳',time:'2026-08-21 18:20',main:'焊接后眼痛流泪6小时',inspect:'睑结膜充血',past:'无',present:'未戴护目镜作业',allergy:'无',revisit:'否',rx:[],advice:'冷敷,避免揉眼,24小时复查',food:'忌辛辣刺激',sport:'减少用眼'} ]; var nextId=9,editingId=null,curRx=[],curUser=null,pendingDelId=null,pendingUser=null; @@ -631,11 +624,16 @@ function fillDoctorSel(keep){ sel.appendChild(o); }); } -function onFormUnit(){ - var unit=document.getElementById('fUnit').value; +function fillPointSel(keep){ var sel=document.getElementById('fPoint'); sel.innerHTML=''; - if(unit){(pointMap[unit]||[]).forEach(function(p){var o=document.createElement('option');o.textContent=p;sel.appendChild(o);});} + Object.keys(pointMap).forEach(function(u){ + (pointMap[u]||[]).forEach(function(p){ + var o=document.createElement('option');o.textContent=p; + if(p===keep)o.selected=true; + sel.appendChild(o); + }); + }); } function setRadio(name,val){document.querySelectorAll('input[name="'+name+'"]').forEach(function(r){r.checked=(r.value===val);});} function getRadio(name){var r=document.querySelector('input[name="'+name+'"]:checked');return r?r.value:'';} @@ -645,11 +643,8 @@ function openForm(id){ document.getElementById('formTitle').textContent=id?('编辑就诊记录 · '+t.user):'新增就诊记录'; document.getElementById('fUser').value=t?t.user:''; document.getElementById('fTime').value=t?t.time.replace(' ','T'):'2026-09-07T09:00'; - document.getElementById('fUnit').value=t?pointUnit[t.point]:''; - onFormUnit(); - if(t){var ps=document.getElementById('fPoint');[].slice.call(ps.options).forEach(function(o){if(o.text===t.point)o.selected=true;});} + fillPointSel(t?t.point:''); fillDoctorSel(t?t.doctor:''); - setRadio('fFollow',t?t.follow:'否'); setRadio('fRevisit',t?t.revisit:'否'); ['fMain','fInspect','fPast','fPresent','fAllergy','fDisease','fAdvice','fFood','fSport'].forEach(function(k){document.getElementById(k).value='';}); if(t){ @@ -659,6 +654,7 @@ function openForm(id){ document.getElementById('fAdvice').value=t.advice;document.getElementById('fFood').value=t.food;document.getElementById('fSport').value=t.sport; } curUser=t?userPool.find(function(u){return u.code===t.code;}):null; + renderUserInfo(curUser); curRx=t?t.rx.map(function(r){return {m:r.m,spec:r.spec,stock:(medPool.find(function(m){return m.name===r.m;})||{}).stock||0,num:r.num,dosage:r.dosage};}):[]; renderRx(); document.getElementById('formMask').classList.add('open'); @@ -667,32 +663,31 @@ function openForm(id){ function saveForm(){ var user=document.getElementById('fUser').value; var time=document.getElementById('fTime').value; - var unit=document.getElementById('fUnit').value; var point=document.getElementById('fPoint').value; var doctor=document.getElementById('fDoctor').value; var disease=document.getElementById('fDisease').value.trim(); if(!user){showToast('请选择就诊人');return;} if(!time){showToast('请选择就诊时间');return;} - if(!unit||!point){showToast('请选择就诊医疗点');return;} + if(!point){showToast('请选择就诊医疗点');return;} if(!doctor){showToast('请选择就诊医生');return;} if(!disease){showToast('请填写诊断疾病');return;} var rx=curRx.filter(function(r){return r.m;}); var bad=rx.find(function(r){return r.num>r.stock;}); if(bad){showToast('「'+bad.m+'」库存仅 '+bad.stock+',开药数量超限');return;} var obj={ - id:editingId||nextId++,user:user,code:curUser?curUser.code:'--',sex:curUser?curUser.sex:'--',age:curUser?curUser.age:'--', + id:editingId||nextId++,user:user,code:curUser?curUser.code:'--',idcard:curUser?curUser.idcard:'--',sex:curUser?curUser.sex:'--',age:curUser?curUser.age:'--', uUnit:curUser?curUser.unit:'--',uDept:curUser?curUser.dept:'--',point:point,disease:disease, tel:curUser?curUser.tel:'--',doctor:doctor,time:time.replace('T',' '), main:document.getElementById('fMain').value,inspect:document.getElementById('fInspect').value, past:document.getElementById('fPast').value,present:document.getElementById('fPresent').value, - allergy:document.getElementById('fAllergy').value,revisit:getRadio('fRevisit'),follow:getRadio('fFollow'), + allergy:document.getElementById('fAllergy').value,revisit:getRadio('fRevisit'), rx:rx,advice:document.getElementById('fAdvice').value, food:document.getElementById('fFood').value,sport:document.getElementById('fSport').value }; if(editingId){treatments.splice(treatments.findIndex(function(x){return x.id===editingId;}),1,obj);} else{treatments.push(obj);} closeDrawer('form');renderTable(); - showToast(editingId?'就诊记录已更新':'就诊记录已登记'+(obj.follow==='是'?',并已生成随访任务':'')); + showToast(editingId?'就诊记录已更新':'就诊记录已登记'); } /* ===== 详情抽屉 ===== */ @@ -703,7 +698,7 @@ function openView(id){ var rxHtml=t.rx.length?''+t.rx.map(function(r){return '';}).join('')+'
药品名称规格数量用法用量
'+r.m+''+r.spec+''+r.num+''+r.dosage+'
':'本次就诊未开药'; document.getElementById('viewBody').innerHTML= '
就诊信息
' - +'
'+d('就诊人',t.user)+d('工号',t.code)+d('性别/年龄',t.sex+' / '+t.age+'岁')+d('联系电话',t.tel)+d('所属单位',t.uUnit)+d('所属部门',t.uDept)+d('就诊医疗点',t.point)+d('就诊医生',t.doctor)+d('就诊时间',t.time)+d('是否复诊',t.revisit)+d('纳入随访',t.follow)+d('体检报告','')+'
' + +'
'+d('就诊人',t.user)+d('工号',t.code)+d('性别/年龄',t.sex+' / '+t.age+'岁')+d('身份证号',t.idcard)+d('联系电话',t.tel)+d('所属单位',t.uUnit)+d('所属部门',t.uDept)+d('就诊医疗点',t.point)+d('就诊医生',t.doctor)+d('就诊时间',t.time)+d('是否复诊',t.revisit)+d('体检报告','')+'
' +'
诊断信息
' +'
'+d('主诉',t.main,true)+d('查体',t.inspect,true)+d('既往史',t.past)+d('现病史',t.present)+d('过敏史',t.allergy)+d('诊断疾病',t.disease,true)+'
' +'
用药方案
'+rxHtml @@ -727,11 +722,20 @@ function renderUserPick(){ +''+e.name+''+e.code+''+e.unit+''+e.dept+''; }).join(''):'未找到匹配员工'; } +function renderUserInfo(u){ + document.getElementById('fCode').value=u?u.code:''; + document.getElementById('fSexAge').value=u?(u.sex+' / '+u.age+'岁'):''; + document.getElementById('fIdcard').value=u?u.idcard:''; + document.getElementById('fTel').value=u?u.tel:''; + document.getElementById('fUUnit').value=u?u.unit:''; + document.getElementById('fUDept').value=u?u.dept:''; +} function confirmUser(){ var r=document.querySelector('input[name="userSel"]:checked'); if(!r){showToast('请选择一名员工');return;} curUser=userPool.find(function(x){return x.code===r.value;}); document.getElementById('fUser').value=curUser.name; + renderUserInfo(curUser); closeModal('userMask'); } diff --git a/web-admin/frontline-medical/doc/CHANGELOG.md b/web-admin/frontline-medical/doc/CHANGELOG.md index 5dc32d5..bb8bf7f 100644 --- a/web-admin/frontline-medical/doc/CHANGELOG.md +++ b/web-admin/frontline-medical/doc/CHANGELOG.md @@ -132,3 +132,53 @@ - `web-admin/frontline-medical/bed-station.html` / `stat-rescue-chart.html` / `stat-rescue-table.html` — 新增 3 页 - `web-admin/frontline-medical/*.html` — 45 页侧栏分组/更名/视觉尺寸批量改版 - `D:\Work\platform-prototype\index.html` — 站点地图同步 + +## [2026-09-08] refactor: 救护车配置收敛 · 侧栏平铺与出勤记录/取消分配移除 + +在二线迭代侧栏二级分组基础上,对救护车配置相关功能做收敛简化: + +- **侧栏简化**:基础配置域「救护车」二级子组(含「救护车列表」子项)收敛为顶层平铺单菜单项「救护车配置」,基础配置 8 页侧栏同步调整 +- **救护车配置页**:移除「数据管理」入口与单车出勤记录台账(出勤登记/编辑/删除、随车医护多选、救助员工选人弹窗、系统生成记录只读标记) +- **员工分配页**:移除「取消分配」功能(重新分配保留,已分配员工不再支持取消回落未分配) +- **分配统计页**:移除「操作」列,「查看名册」动作并入「已分配员工数量」人数列点击下钻 + +**涉及文件:** + +- `web-admin/frontline-medical/config-ambulance.html` — 移除数据管理(出勤记录)功能 +- `web-admin/frontline-medical/config-allocate.html` — 移除取消分配功能 +- `web-admin/frontline-medical/config-allocate-stat.html` — 移除操作列、人数列直接下钻名册 +- `web-admin/frontline-medical/config-medical-point.html` / `config-partner-hospital.html` / `config-medical-staff.html` / `config-medicine.html` / `config-medicine-stock.html` — 侧栏救护车子组平铺 + +## [2026-09-09] feat: 日常业务新增救护车出勤 · 移除用药记录 + +日常业务域菜单结构调整:删除「用药记录」子分组及其入库/出库两页,新增二级菜单「救护车出勤」,以「所有救护车出勤数据」视角重建(此前单车出勤台账已于 2026-09-08 救护车配置收敛时移除)。 + +- **菜单调整**:日常业务侧边栏移除「用药记录」子分组(入库记录/出库记录),在「日常诊疗」后新增顶层二级菜单「救护车出勤」,10 个 daily 页面侧边栏同步 +- **删除页面**:`daily-stock-in.html`(入库记录)、`daily-stock-out.html`(出库记录) +- **新增页面** `daily-ambulance-attendance.html` — 救护车出勤:顶部四统计卡片(当周出勤/当月出勤/年度出勤/累计出勤,按出勤日期统计);医疗点→救护车级联筛选 + 出勤类型/日期区间;列表带所属医疗点/救护车(车牌号)/救护类型等出勤台账列(不展示所属单位);新增/编辑抽屉「医疗点→救护车」级联选车(自动带出救护类型)、出勤司机独立下拉(全部救护车司机,选后带出电话)、出勤日期、出勤类型(病情急救/伤情急救/日常巡诊/应急戒备四类)、随车医护多选弹窗、出勤/到达地点;详情抽屉全字段展示;编辑/删除/异步导出 +- **`D:\Work\platform-prototype\index.html`** — SITE_MAP 删除入库/出库两行、新增「日常业务 · 救护车出勤」条目 + +**涉及文件:** + +- `web-admin/frontline-medical/daily-ambulance-attendance.html` — 新增 +- `web-admin/frontline-medical/daily-stock-in.html` / `daily-stock-out.html` — 删除 +- `web-admin/frontline-medical/daily-treatment-staff.html` / `daily-treatment-nonstaff.html` / `daily-follow.html` / `daily-chronic.html` / `daily-chronic-intervention.html` / `daily-employee-search.html` / `daily-follow-task.html` / `daily-interpret.html` / `daily-education.html` / `daily-interpret-manage.html` — 侧边栏移除用药记录、新增救护车出勤 +- `D:\Work\platform-prototype\index.html` — 站点地图同步 + +## [2026-09-09] refactor: 数据统计菜单三级化 · 医疗点/救护车统计报表重做 + +数据统计域菜单结构重构:移除「图表视图/报表视图」页内互切,改为三级菜单。 + +- **菜单重构**:数据统计下 3 个二级菜单不变;「医疗点统计」「救护车统计」改为可展开子组(复用 sidebar-subgroup 样式),各下挂「统计图表」「统计报表」两个三级菜单;「救助物品统计」删除报表视图,仅保留图表页 +- **医疗点统计-图表**(stat-clinic-chart.html):移除视图开关;「单个医疗点」Tab 默认选中首个单位+医疗点,进入即有数据 +- **医疗点统计-报表**(stat-clinic-table.html):完全重做,复刻老项目 medicalPointStatistics —— 本周/本月/本年/自定义时间切换 + 导出/查看导出记录 + 所属单位/时间筛选 + 分组大表(就诊人次/慢病管理/培训宣教/体检报告解读 多级表头) +- **救护车统计-报表**(stat-ambulance-table.html):完全重做,复刻老项目救护车数据统计(ambulanceData)—— 本周/本月/本年/自定义时间切换 + 导出/查看导出记录 + 单位→医疗点级联/救护类型/时间筛选 + 分组报表(所属单位/所属医疗点/救护类型/车型/车牌号 + 急诊转运/平诊转运/日常巡诊/应急戒备/其他 各本周·累计出勤次数) +- **删除页面**:`stat-rescue-table.html`(救助物品统计-报表) + +**涉及文件:** + +- `web-admin/frontline-medical/stat-clinic-chart.html` / `stat-ambulance-chart.html` / `stat-rescue-chart.html` — 侧栏三级子组化 + 移除视图开关 +- `web-admin/frontline-medical/stat-clinic-table.html` — 医疗点统计报表重做 +- `web-admin/frontline-medical/stat-ambulance-table.html` — 救护车统计报表重做 +- `web-admin/frontline-medical/stat-rescue-table.html` — 删除 +- `D:\Work\platform-prototype\index.html` — 站点地图同步 diff --git a/web-admin/frontline-medical/hut-appointment.html b/web-admin/frontline-medical/hut-appointment.html index a64ae0d..7be3d31 100644 --- a/web-admin/frontline-medical/hut-appointment.html +++ b/web-admin/frontline-medical/hut-appointment.html @@ -30,6 +30,14 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .sidebar-item{display:flex;align-items:center;gap:8px;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;} .sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);} .sidebar-item.active{color:#fff;background:var(--primary);} +/* [交互] 二级分组菜单展开/收起:点击分组标题切换 open 类,三级子项默认收起 */ +.sidebar-group__label{display:flex;align-items:center;justify-content:space-between;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;} +.sidebar-group__label:hover{color:#fff;background:rgba(255,255,255,0.06);} +.sidebar-group__label svg{transition:transform .2s;flex-shrink:0;} +.sidebar-group.open .sidebar-group__label svg{transform:rotate(180deg);} +.sidebar-group__items{display:none;} +.sidebar-group.open .sidebar-group__items{display:block;} +.sidebar-item--sub{padding-left:44px;} .main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);} .filter-bar{background:#fff;padding:16px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);} .filter-item{display:flex;align-items:center;gap:8px;} @@ -108,13 +116,27 @@ tbody tr:hover td:last-child{background:#F8FBFF;} @@ -312,6 +334,8 @@ function confirmDel(){ delCodes.slice().sort(function(a,b){return b-a;}).forEach(function(i){appts.splice(i,1);}); closeDel();render();showToast('已删除 '+delCodes.length+' 条预约记录'); } +/* [交互] 侧栏分组展开/收起 */ +function toggleGroup(id){document.getElementById(id).classList.toggle('open');} function showToast(msg){ var t=document.getElementById('toast');t.textContent=msg;t.classList.add('show'); clearTimeout(t._timer);t._timer=setTimeout(function(){t.classList.remove('show');},2200); diff --git a/web-admin/frontline-medical/hut-banner.html b/web-admin/frontline-medical/hut-banner.html index 047ac41..5a8b020 100644 --- a/web-admin/frontline-medical/hut-banner.html +++ b/web-admin/frontline-medical/hut-banner.html @@ -30,6 +30,14 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .sidebar-item{display:flex;align-items:center;gap:8px;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;} .sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);} .sidebar-item.active{color:#fff;background:var(--primary);} +/* [交互] 二级分组菜单展开/收起:点击分组标题切换 open 类,三级子项默认收起 */ +.sidebar-group__label{display:flex;align-items:center;justify-content:space-between;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;} +.sidebar-group__label:hover{color:#fff;background:rgba(255,255,255,0.06);} +.sidebar-group__label svg{transition:transform .2s;flex-shrink:0;} +.sidebar-group.open .sidebar-group__label svg{transform:rotate(180deg);} +.sidebar-group__items{display:none;} +.sidebar-group.open .sidebar-group__items{display:block;} +.sidebar-item--sub{padding-left:44px;} .main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);} .filter-bar{background:#fff;padding:16px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);} .filter-item{display:flex;align-items:center;gap:8px;} @@ -116,13 +124,27 @@ tbody tr:hover td:last-child{background:#F8FBFF;} @@ -297,6 +319,8 @@ function openDel(i){ } function closeDel(){document.getElementById('delMask').classList.remove('open');} function confirmDel(){banners.splice(delIdx,1);closeDel();render();showToast('已删除');} +/* [交互] 侧栏分组展开/收起 */ +function toggleGroup(id){document.getElementById(id).classList.toggle('open');} function showToast(msg){ var t=document.getElementById('toast');t.textContent=msg;t.classList.add('show'); clearTimeout(t._timer);t._timer=setTimeout(function(){t.classList.remove('show');},2200); diff --git a/web-admin/frontline-medical/hut-cabin-stat.html b/web-admin/frontline-medical/hut-cabin-stat.html index 7f22ce1..467bf6f 100644 --- a/web-admin/frontline-medical/hut-cabin-stat.html +++ b/web-admin/frontline-medical/hut-cabin-stat.html @@ -30,6 +30,14 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .sidebar-item{display:flex;align-items:center;gap:8px;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;} .sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);} .sidebar-item.active{color:#fff;background:var(--primary);} +/* [交互] 二级分组菜单展开/收起:点击分组标题切换 open 类,三级子项默认收起 */ +.sidebar-group__label{display:flex;align-items:center;justify-content:space-between;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;} +.sidebar-group__label:hover{color:#fff;background:rgba(255,255,255,0.06);} +.sidebar-group__label svg{transition:transform .2s;flex-shrink:0;} +.sidebar-group.open .sidebar-group__label svg{transform:rotate(180deg);} +.sidebar-group__items{display:none;} +.sidebar-group.open .sidebar-group__items{display:block;} +.sidebar-item--sub{padding-left:44px;} .main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);} .filter-bar{background:#fff;padding:16px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);} .filter-item{display:flex;align-items:center;gap:8px;} @@ -90,13 +98,27 @@ tbody tr:hover td:last-child{background:#F8FBFF;} @@ -236,6 +258,8 @@ function render(){ +''+sbp+''+sbg+''+stbp+''+stbg+'':''; document.getElementById('totalTip').textContent='区间 '+pr.from+' ~ '+pr.to+' · 共 '+rows.length+' 座小屋'; } +/* [交互] 侧栏分组展开/收起 */ +function toggleGroup(id){document.getElementById(id).classList.toggle('open');} function showToast(msg){ var t=document.getElementById('toast');t.textContent=msg;t.classList.add('show'); clearTimeout(t._timer);t._timer=setTimeout(function(){t.classList.remove('show');},2200); diff --git a/web-admin/frontline-medical/hut-cabin.html b/web-admin/frontline-medical/hut-cabin.html index 6edafa9..c582b25 100644 --- a/web-admin/frontline-medical/hut-cabin.html +++ b/web-admin/frontline-medical/hut-cabin.html @@ -30,6 +30,14 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .sidebar-item{display:flex;align-items:center;gap:8px;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;} .sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);} .sidebar-item.active{color:#fff;background:var(--primary);} +/* [交互] 二级分组菜单展开/收起:点击分组标题切换 open 类,三级子项默认收起 */ +.sidebar-group__label{display:flex;align-items:center;justify-content:space-between;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;} +.sidebar-group__label:hover{color:#fff;background:rgba(255,255,255,0.06);} +.sidebar-group__label svg{transition:transform .2s;flex-shrink:0;} +.sidebar-group.open .sidebar-group__label svg{transform:rotate(180deg);} +.sidebar-group__items{display:none;} +.sidebar-group.open .sidebar-group__items{display:block;} +.sidebar-item--sub{padding-left:44px;} .main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);} .filter-bar{background:#fff;padding:16px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);} .filter-item{display:flex;align-items:center;gap:8px;} @@ -108,13 +116,27 @@ tbody tr:hover td:last-child{background:#F8FBFF;} @@ -399,6 +421,8 @@ function openDel(i){ } function closeDel(){document.getElementById('delMask').classList.remove('open');} function confirmDel(){cabins.splice(delIdx,1);closeDel();render();showToast('已删除');} +/* [交互] 侧栏分组展开/收起 */ +function toggleGroup(id){document.getElementById(id).classList.toggle('open');} function showToast(msg){ var t=document.getElementById('toast');t.textContent=msg;t.classList.add('show'); clearTimeout(t._timer);t._timer=setTimeout(function(){t.classList.remove('show');},2200); diff --git a/web-admin/frontline-medical/hut-room.html b/web-admin/frontline-medical/hut-room.html index da7b0da..f5848f5 100644 --- a/web-admin/frontline-medical/hut-room.html +++ b/web-admin/frontline-medical/hut-room.html @@ -30,6 +30,14 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .sidebar-item{display:flex;align-items:center;gap:8px;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;text-decoration:none;} .sidebar-item:hover{color:#fff;background:rgba(255,255,255,0.06);} .sidebar-item.active{color:#fff;background:var(--primary);} +/* [交互] 二级分组菜单展开/收起:点击分组标题切换 open 类,三级子项默认收起 */ +.sidebar-group__label{display:flex;align-items:center;justify-content:space-between;padding:9px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;} +.sidebar-group__label:hover{color:#fff;background:rgba(255,255,255,0.06);} +.sidebar-group__label svg{transition:transform .2s;flex-shrink:0;} +.sidebar-group.open .sidebar-group__label svg{transform:rotate(180deg);} +.sidebar-group__items{display:none;} +.sidebar-group.open .sidebar-group__items{display:block;} +.sidebar-item--sub{padding-left:44px;} .main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);} .filter-bar{background:#fff;padding:16px 24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);} .filter-item{display:flex;align-items:center;gap:8px;} @@ -71,17 +79,22 @@ tbody tr:hover td:last-child{background:#F8FBFF;} .modal-mask.open{display:flex;} .modal{width:440px;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:24px;} .modal--wide{width:760px;max-height:86vh;display:flex;flex-direction:column;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:24px;} +.modal--xl{width:1120px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:24px;} .modal__header{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-base);font-weight:600;padding-bottom:12px;border-bottom:1px solid var(--border);flex-shrink:0;} .modal__close{cursor:pointer;color:var(--text-placeholder);font-size:20px;line-height:1;border:none;background:none;} .modal__close:hover{color:var(--text-primary);} .modal__body{flex:1;overflow-y:auto;padding:16px 2px 4px;} -.modal__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;} +.modal__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-shrink:0;} .form-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;} .form-row__label{width:104px;flex-shrink:0;text-align:right;font-size:var(--font-sm);color:var(--text-secondary);padding-top:7px;} .form-row__label i{color:var(--danger);font-style:normal;margin-right:2px;} -.form-row__control{flex:1;display:flex;align-items:center;gap:8px;} +.form-row__control{flex:1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;} .form-input{width:100%;height:34px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 10px;font-size:var(--font-sm);outline:none;} .form-input:focus{border-color:var(--primary);} +.form-textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;font-size:var(--font-sm);outline:none;resize:vertical;min-height:64px;line-height:1.6;} +.form-textarea:focus{border-color:var(--primary);} +.time-input{height:34px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 8px;font-size:var(--font-sm);color:var(--text-primary);outline:none;} +.time-input:focus{border-color:var(--primary);} .radio-group{display:flex;gap:18px;padding-top:7px;} .radio-group label{display:flex;align-items:center;gap:6px;font-size:var(--font-sm);cursor:pointer;} .radio-group input{accent-color:var(--primary);} @@ -94,9 +107,28 @@ tbody tr:hover td:last-child{background:#F8FBFF;} .detail-item--full{grid-column:1/-1;} .detail-item .dk{width:104px;flex-shrink:0;background:#FAFAFA;padding:9px 12px;font-size:var(--font-sm);color:var(--text-secondary);border-right:1px solid var(--border);} .detail-item .dv{flex:1;padding:9px 12px;font-size:var(--font-sm);color:var(--text-primary);white-space:normal;line-height:1.5;} -.inner-table{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;} -.inner-table th{background:#FAFAFA;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;padding:7px;border-bottom:1px solid var(--border);} -.inner-table td{font-size:var(--font-sm);padding:8px 7px;text-align:center;border-bottom:1px solid #F0F0F0;} +.inner-table{width:100%;min-width:0;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;border-collapse:separate;border-spacing:0;} +.inner-table th{background:#FAFAFA;font-size:var(--font-sm);color:var(--text-secondary);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap;} +.inner-table td{font-size:var(--font-sm);padding:10px 12px;text-align:center;border-bottom:1px solid #F0F0F0;color:var(--text-primary);white-space:nowrap;} +.inner-table tbody tr:nth-child(even){background:#FAFCFF;} +.inner-table tbody tr:hover{background:#F0F7FF;} +.inner-table tbody tr:last-child td{border-bottom:none;} +.inner-table .mono{font-family:'SFMono-Regular',Consolas,monospace;} +.more-wrap{position:relative;display:inline-block;} +.more-menu{display:none;position:absolute;right:0;top:calc(100% + 4px);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:120px;z-index:60;padding:4px 0;text-align:left;} +.more-wrap:hover .more-menu{display:block;} +.more-menu a{display:block;padding:8px 14px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;white-space:nowrap;text-decoration:none;} +.more-menu a:hover{background:var(--primary-light);color:var(--primary);} +.more-menu a.danger{color:var(--danger);} +.more-menu a.danger:hover{background:#FFF1F0;color:var(--danger);} +tbody td:last-child:has(.more-wrap:hover){z-index:30;} +.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;} +.toolbar__label{font-size:var(--font-xs);color:var(--text-secondary);white-space:nowrap;} +.toolbar__spacer{flex:1;} +.time-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;} +.time-row .sep{color:var(--text-placeholder);} +.icon-btn{width:34px;height:34px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--text-secondary);cursor:pointer;font-size:var(--font-base);line-height:1;} +.icon-btn:hover{color:var(--primary);border-color:var(--primary);} @@ -122,13 +154,27 @@ tbody tr:hover td:last-child{background:#F8FBFF;} @@ -179,7 +225,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} 序号名称地点 图片所属部门 - 启用法定排班设备数操作 + 启用法定排班设备数操作 @@ -188,7 +234,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;} - +