Merge branch 'master' of https://gitea.rk-health.com/yixiong/platform-prototype
This commit is contained in:
@@ -239,6 +239,7 @@ const SITE_MAP = [
|
||||
{ file:'pre-special-cta.html', label:'冠脉CTA体检人员' },
|
||||
{ file:'pre-special-hospital.html', label:'指定员工体检医院' },
|
||||
{ file:'mid-appointment-track.html', label:'体检预约' },
|
||||
{ file:'mid-appointment-track2.html', label:'体检预约跟踪' },
|
||||
{ file:'mid-selected-items.html', label:'已选项目' },
|
||||
{ file:'mid-participation.html', label:'已检员工' },
|
||||
{ file:'mid-unit-appointment.html', label:'单位预约人数统计' },
|
||||
@@ -253,6 +254,7 @@ const SITE_MAP = [
|
||||
{ file:'mid-unit-expected.html', label:'签约单位应检人数' },
|
||||
{ file:'post-unit-count.html', label:'单位体检人数统计' },
|
||||
{ file:'post-unit-cost-stat.html', label:'单位体检费用统计' },
|
||||
{ file:'post-unit-item-stat.html', label:'单位体检项目统计' },
|
||||
{ file:'post-hospital-count.html', label:'医院体检人数统计' },
|
||||
{ file:'post-doctor-count.html', label:'医生检查人数统计' },
|
||||
{ file:'post-item-stat.html', label:'医院体检项目统计' },
|
||||
|
||||
@@ -116,6 +116,15 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
.form-control:focus{border-color:var(--primary);}
|
||||
textarea.form-control{height:64px;padding:8px 10px;resize:vertical;line-height:1.5;}
|
||||
select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;-webkit-appearance:none;padding-right:28px;cursor:pointer;}
|
||||
/* 年份选择控件 */
|
||||
.year-picker{position:relative;}
|
||||
.year-picker .form-control{padding-right:30px;cursor:pointer;}
|
||||
.year-picker>svg{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none;}
|
||||
.year-picker__dropdown{display:none;position:absolute;top:36px;left:0;width:100%;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:50;max-height:180px;overflow-y:auto;}
|
||||
.year-picker__dropdown.open{display:block;}
|
||||
.year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;}
|
||||
.year-picker__dropdown div:hover{background:var(--primary-light);}
|
||||
.year-picker__dropdown div.selected{color:var(--primary);font-weight:600;}
|
||||
.radio-group{display:flex;gap:20px;height:32px;align-items:center;}
|
||||
.radio{display:flex;align-items:center;gap:6px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;}
|
||||
.radio input{accent-color:var(--primary);cursor:pointer;}
|
||||
@@ -223,7 +232,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<button class="btn btn-primary" onclick="openImport()"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 9V2M4.5 4.5L7 2l2.5 2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>批量导入数据</button>
|
||||
<button class="btn btn-default" onclick="openImportTasks()"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="2" y="2" width="10" height="10" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M4 5h6M4 7.5h4" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg>查看导入任务</button>
|
||||
<button class="btn btn-primary" onclick="showToast('救护车台账已导出(演示)')"><svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>导出列表数据</button>
|
||||
<button class="btn btn-default" onclick="askDelete(checkedIds())">批量删除</button>
|
||||
</div>
|
||||
|
||||
<!-- 表格 -->
|
||||
@@ -261,54 +269,67 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 所属医疗点</span>
|
||||
<select class="form-control" id="fPoint"><option value="">请先选择所属单位</option></select></div>
|
||||
</div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 救护类型</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fType" value="急救型" checked>急救型</label>
|
||||
<label class="radio"><input type="radio" name="fType" value="转运型">转运型</label>
|
||||
</div></div>
|
||||
|
||||
<div class="form-section">车辆信息</div>
|
||||
<div class="form-grid">
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 车型</span><input class="form-control" id="fModel" placeholder="如:江铃轻型监护型救护车"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 车牌号</span><input class="form-control" id="fPlate" placeholder="如:CQ·0712A"></div>
|
||||
<div class="form-item"><span class="form-label">年支付费用(万元)</span><input class="form-control" id="fFee" type="number" min="0" step="0.1" placeholder="0.0"></div>
|
||||
<div class="form-item"><span class="form-label">救护车所属机构名称</span><input class="form-control" id="fOrg" placeholder="如:CQ油田总医院"></div>
|
||||
<div class="form-item"><span class="form-label">开始服务年份</span><input class="form-control" id="fYear" type="number" min="2000" max="2026" placeholder="不晚于当年"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 救护类型</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fType" value="急救型" checked>急救型</label>
|
||||
<label class="radio"><input type="radio" name="fType" value="转运型">转运型</label>
|
||||
</div></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 车型</span><input class="form-control" id="fModel" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 车牌号</span><input class="form-control" id="fPlate" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label">救护车所属机构名称</span><input class="form-control" id="fOrg" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label">开始服务年份</span>
|
||||
<div class="year-picker">
|
||||
<input class="form-control" id="fYear" type="text" readonly placeholder="请选择年份">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="1.5" y="2.5" width="11" height="10" rx="1.5" stroke="#999" stroke-width="1.2"/><path d="M1.5 5.5h11M4.5 1v3M9.5 1v3" stroke="#999" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
<div class="year-picker__dropdown">
|
||||
<div onclick="pickYear(this)">2026</div>
|
||||
<div onclick="pickYear(this)">2025</div>
|
||||
<div onclick="pickYear(this)">2024</div>
|
||||
<div onclick="pickYear(this)">2023</div>
|
||||
<div onclick="pickYear(this)">2022</div>
|
||||
<div onclick="pickYear(this)">2021</div>
|
||||
<div onclick="pickYear(this)">2020</div>
|
||||
<div onclick="pickYear(this)">2019</div>
|
||||
<div onclick="pickYear(this)">2018</div>
|
||||
<div onclick="pickYear(this)">2017</div>
|
||||
<div onclick="pickYear(this)">2016</div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div class="form-item"><span class="form-label">年支付费用(万元)</span><input class="form-control" id="fFee" type="number" min="0" step="0.1" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label">是否安装GPS</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fGps" value="是" checked>是</label>
|
||||
<label class="radio"><input type="radio" name="fGps" value="否">否</label>
|
||||
</div></div>
|
||||
<div class="form-item"><span class="form-label">是否链接公司车辆管理系统</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fLink" value="是">是</label>
|
||||
<label class="radio"><input type="radio" name="fLink" value="否" checked>否</label>
|
||||
</div></div>
|
||||
<div class="form-item form-item--full"><span class="form-label">救护车照片(最多5张)</span>
|
||||
<div class="photo-row" id="phCar"></div>
|
||||
<div class="photo-tip">点击 + 上传,支持 jpg/png,单张不超过 5MB</div></div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">覆盖范围</div>
|
||||
<div class="form-grid">
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 覆盖区域</span><input class="form-control" id="fArea" placeholder="如:樊学作业区及沿线井站"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 覆盖人数</span><input class="form-control" id="fPeople" type="number" min="1" placeholder="正整数"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 覆盖区域</span><input class="form-control" id="fArea" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 覆盖人数</span><input class="form-control" id="fPeople" type="number" min="1" placeholder="请输入"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">急救能力</div>
|
||||
<div class="form-item form-item--full"><span class="form-label">所配急救设备</span>
|
||||
<textarea class="form-control" id="fEquip" placeholder="如:除颤仪、心电监护仪、氧气袋、创伤固定包"></textarea></div>
|
||||
<textarea class="form-control" id="fEquip" placeholder="请输入"></textarea></div>
|
||||
<div class="form-item form-item--full"><span class="form-label">救护能力</span>
|
||||
<textarea class="form-control" id="fAbility" placeholder="描述救护车可承担的院前急救与转运能力"></textarea></div>
|
||||
<textarea class="form-control" id="fAbility" placeholder="请输入"></textarea></div>
|
||||
|
||||
<div class="form-section">驾驶员信息</div>
|
||||
<div class="form-grid">
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 驾驶员姓名</span><input class="form-control" id="fDriver" placeholder="请输入驾驶员姓名"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 联系电话</span><input class="form-control" id="fTel" placeholder="手机号或区号-座机号"></div>
|
||||
</div>
|
||||
<div class="form-item"><span class="form-label">是否安装GPS</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fGps" value="是" checked>是</label>
|
||||
<label class="radio"><input type="radio" name="fGps" value="否">否</label>
|
||||
</div></div>
|
||||
|
||||
<div class="form-section">证照与照片</div>
|
||||
<div class="form-item"><span class="form-label">救护车照片(最多5张)</span>
|
||||
<div class="photo-row" id="phCar"></div>
|
||||
<div class="photo-tip">点击 + 上传,支持 jpg/png,单张不超过 5MB</div></div>
|
||||
<div class="form-grid">
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 驾驶员姓名</span><input class="form-control" id="fDriver" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 联系电话</span><input class="form-control" id="fTel" placeholder="请输入"></div>
|
||||
<div class="form-item"><span class="form-label">驾驶证图片(最多5张)</span>
|
||||
<div class="photo-row" id="phLicense"></div></div>
|
||||
<div class="form-item"><span class="form-label">资格证图片(最多5张)</span>
|
||||
@@ -425,7 +446,7 @@ function renderTable(){
|
||||
+'<td><input type="checkbox" class="row-check" value="'+a.id+'"></td>'
|
||||
+'<td>'+(start+i+1)+'</td>'
|
||||
+'<td>'+a.unit+'</td>'
|
||||
+'<td style="text-align:left;font-weight:600;">'+a.point+'</td>'
|
||||
+'<td style="text-align:left;">'+a.point+'</td>'
|
||||
+'<td>'+typeBadge+'</td>'
|
||||
+'<td style="text-align:left;max-width:200px;overflow:hidden;text-overflow:ellipsis;">'+a.model+'</td>'
|
||||
+'<td>'+a.plate+'</td>'
|
||||
@@ -458,6 +479,29 @@ function turnPage(d){
|
||||
function toggleAll(el){document.querySelectorAll('.row-check').forEach(function(c){c.checked=el.checked;});}
|
||||
function checkedIds(){return [].slice.call(document.querySelectorAll('.row-check:checked')).map(function(c){return +c.value;});}
|
||||
|
||||
/* ===== 年份选择控件 ===== */
|
||||
function pickYear(el){
|
||||
var dp=el.parentElement,input=dp.parentElement.querySelector('input');
|
||||
input.value=el.textContent;
|
||||
dp.querySelectorAll('div').forEach(function(d){d.classList.toggle('selected',d===el);});
|
||||
dp.classList.remove('open');
|
||||
}
|
||||
document.querySelectorAll('.year-picker>input').forEach(function(inp){
|
||||
inp.addEventListener('click',function(e){
|
||||
e.stopPropagation();
|
||||
var dp=inp.parentElement.querySelector('.year-picker__dropdown');
|
||||
var wasOpen=dp.classList.contains('open');
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
if(!wasOpen){
|
||||
dp.querySelectorAll('div').forEach(function(d){d.classList.toggle('selected',d.textContent===inp.value);});
|
||||
dp.classList.add('open');
|
||||
}
|
||||
});
|
||||
});
|
||||
document.addEventListener('click',function(){
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
});
|
||||
|
||||
/* ===== 照片占位 ===== */
|
||||
function renderPhotos(boxId,count){
|
||||
var html='';
|
||||
@@ -558,17 +602,19 @@ function openDetail(id){
|
||||
var a=ambulances.find(function(x){return x.id===id;});
|
||||
document.getElementById('detailTitle').textContent='救护车详情 · '+a.plate;
|
||||
function d(k,v,full){return '<div class="detail-item'+(full?' detail-item--full':'')+'"><div class="dk">'+k+'</div><div class="dv">'+(v===''||v==null?'—':v)+'</div></div>';}
|
||||
function dPhoto(k,tiles){return '<div class="detail-item detail-item--full"><div class="dk">'+k+'</div><div class="dv"><div class="photo-row">'+tiles+'</div></div></div>';}
|
||||
document.getElementById('detailBody').innerHTML=
|
||||
'<div class="form-section" style="margin-top:0;">归属与类型</div>'
|
||||
+'<div class="detail-grid">'+d('所属单位',a.unit)+d('所属医疗点',a.point)+d('救护类型',a.type)+d('车型',a.model)+'</div>'
|
||||
'<div class="form-section" style="margin-top:0;">归属信息</div>'
|
||||
+'<div class="detail-grid">'+d('所属单位',a.unit)+d('所属医疗点',a.point)+'</div>'
|
||||
+'<div class="form-section">车辆信息</div>'
|
||||
+'<div class="detail-grid">'+d('车牌号',a.plate)+d('年支付费用(万元)',a.fee)+d('所属机构',a.org)+d('开始服务年份',a.year)+d('链接车辆管理系统',a.link)+d('是否安装GPS',a.gps)+'</div>'
|
||||
+'<div class="detail-grid">'+d('救护类型',a.type)+d('车型',a.model)+d('车牌号',a.plate)+d('所属机构',a.org)+d('开始服务年份',a.year)+d('年支付费用(万元)',a.fee)+d('是否安装GPS',a.gps)+d('链接车辆管理系统',a.link)+'</div>'
|
||||
+dPhoto('救护车照片','<div class="photo-tile">🚑</div><div class="photo-tile">🚑</div>')
|
||||
+'<div class="form-section">覆盖与急救能力</div>'
|
||||
+'<div class="detail-grid">'+d('覆盖区域',a.area)+d('覆盖人数',a.people.toLocaleString()+' 人')+d('所配急救设备',a.equip,true)+d('救护能力',a.ability,true)+'</div>'
|
||||
+'<div class="form-section">驾驶员</div>'
|
||||
+'<div class="form-section">驾驶员信息</div>'
|
||||
+'<div class="detail-grid">'+d('驾驶员姓名',a.driver)+d('联系电话',a.tel)+'</div>'
|
||||
+'<div class="form-section">证照与照片</div>'
|
||||
+'<div class="photo-row"><div class="photo-tile">🚑</div><div class="photo-tile">🚑</div><div class="photo-tile">🪪</div><div class="photo-tile">📄</div></div>';
|
||||
+dPhoto('驾驶证图片','<div class="photo-tile">🪪</div>')
|
||||
+dPhoto('资格证图片','<div class="photo-tile">📄</div>');
|
||||
document.getElementById('detailMask').classList.add('open');
|
||||
document.getElementById('detailDrawer').classList.add('open');
|
||||
}
|
||||
|
||||
@@ -39,17 +39,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei
|
||||
.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);}
|
||||
/* 统计卡片 */
|
||||
.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;}
|
||||
.stat-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:18px 20px;display:flex;align-items:center;gap:14px;}
|
||||
.stat-card__icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;}
|
||||
.stat-card__icon--blue{background:var(--primary-light);}
|
||||
.stat-card__icon--green{background:#F6FFED;}
|
||||
.stat-card__icon--orange{background:#FFFBE6;}
|
||||
.stat-card__icon--red{background:#FFF1F0;}
|
||||
.stat-card__label{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.stat-card__value{font-size:24px;font-weight:600;color:var(--text-primary);line-height:1.3;font-variant-numeric:tabular-nums;}
|
||||
.stat-card__extra{font-size:var(--font-xs);color:var(--text-placeholder);}
|
||||
/* 筛选栏 */
|
||||
.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;}
|
||||
.filter-item label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
|
||||
@@ -158,7 +148,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item active">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -172,40 +161,38 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item active">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
<!-- 主内容 -->
|
||||
<main class="main">
|
||||
|
||||
<!-- [状态] 统计卡片 -->
|
||||
<div class="stat-cards">
|
||||
<div class="stat-card"><div class="stat-card__icon stat-card__icon--blue">📅</div><div><div class="stat-card__label">当周出勤</div><div class="stat-card__value" id="kWeek">0</div><div class="stat-card__extra" id="kWeekExtra">本周</div></div></div>
|
||||
<div class="stat-card"><div class="stat-card__icon stat-card__icon--green">🗓️</div><div><div class="stat-card__label">当月出勤</div><div class="stat-card__value" id="kMonth">0</div><div class="stat-card__extra" id="kMonthExtra">本月</div></div></div>
|
||||
<div class="stat-card"><div class="stat-card__icon stat-card__icon--orange">📆</div><div><div class="stat-card__label">年度出勤</div><div class="stat-card__value" id="kYear">0</div><div class="stat-card__extra" id="kYearExtra">本年度</div></div></div>
|
||||
<div class="stat-card"><div class="stat-card__icon stat-card__icon--red">📊</div><div><div class="stat-card__label">累计出勤</div><div class="stat-card__value" id="kTotal">0</div><div class="stat-card__extra">历史累计</div></div></div>
|
||||
</div>
|
||||
|
||||
<!-- [交互] 筛选栏:医疗点→救护车级联 + 出勤类型 + 日期区间 -->
|
||||
<!-- [交互] 筛选栏:单位→医疗点级联 + 车牌号搜索 + 出勤类型 + 日期区间 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>所属单位</label>
|
||||
<select class="filter-select" id="filterUnit" onchange="onFilterUnit()" style="min-width:140px;">
|
||||
<option value="">全部单位</option>
|
||||
<option>采油一厂</option><option>采油二厂</option><option>第四采油厂</option><option>采气一厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>所属医疗点</label>
|
||||
<select class="filter-select" id="filterPoint" onchange="onFilterPoint()" style="min-width:170px;">
|
||||
<select class="filter-select" id="filterPoint" style="min-width:170px;">
|
||||
<option value="">全部医疗点</option>
|
||||
<option>樊学作业区医疗点</option><option>安塞采油队长住点医疗室</option><option>姬塬作业区医疗点</option><option>姬圪台作业区医疗点</option><option>桐园作业区医疗点</option><option>西峰基地医疗点</option><option>靖边气田医疗点</option><option>乌审旗采气区医疗点</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>救护车</label>
|
||||
<select class="filter-select" id="filterAmb" style="min-width:130px;">
|
||||
<option value="">全部救护车</option>
|
||||
</select>
|
||||
<label>车牌号</label>
|
||||
<input class="filter-input" id="filterPlate" placeholder="请输入车牌号" style="min-width:130px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>出勤类型</label>
|
||||
<select class="filter-select" id="filterType" style="min-width:110px;">
|
||||
<option value="">全部类型</option>
|
||||
<option>病情急救</option><option>伤情急救</option><option>日常巡诊</option><option>应急戒备</option>
|
||||
<option>急诊转运</option><option>平诊转运</option><option>日常巡诊</option><option>应急戒备</option><option>床头呼叫</option><option>其他</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -272,10 +259,12 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<input class="form-control" type="date" id="fDate"></div>
|
||||
<div class="form-item form-item--full"><span class="form-label"><span class="req">*</span> 出勤类型</span>
|
||||
<div class="radio-group">
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="病情急救" checked>病情急救</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="伤情急救">伤情急救</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="急诊转运" checked>急诊转运</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="平诊转运">平诊转运</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="日常巡诊">日常巡诊</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="应急戒备">应急戒备</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="床头呼叫">床头呼叫</label>
|
||||
<label class="radio"><input type="radio" name="fDispatch" value="其他">其他</label>
|
||||
</div></div>
|
||||
<div class="form-item"><span class="form-label"><span class="req">*</span> 出勤司机</span>
|
||||
<select class="form-control" id="fDriver" onchange="onFormDriver()"><option value="">请选择司机</option></select></div>
|
||||
@@ -360,7 +349,14 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
|
||||
<script>
|
||||
/* ===== 基础数据 ===== */
|
||||
var points=['樊学作业区医疗点','安塞采油队长住点医疗室','姬塬作业区医疗点','姬圪台作业区医疗点','桐园作业区医疗点','西峰基地医疗点','靖边气田医疗点','乌审旗采气区医疗点'];
|
||||
/* 单位→医疗点映射:与「基础配置·救护车配置」一致 */
|
||||
var unitMap={
|
||||
'采油一厂':['樊学作业区医疗点','安塞采油队长住点医疗室','姬塬作业区医疗点'],
|
||||
'采油二厂':['姬圪台作业区医疗点','桐园作业区医疗点'],
|
||||
'第四采油厂':['西峰基地医疗点'],
|
||||
'采气一厂':['靖边气田医疗点','乌审旗采气区医疗点']
|
||||
};
|
||||
var allPoints=['樊学作业区医疗点','安塞采油队长住点医疗室','姬塬作业区医疗点','姬圪台作业区医疗点','桐园作业区医疗点','西峰基地医疗点','靖边气田医疗点','乌审旗采气区医疗点'];
|
||||
/* 救护车台账:与「基础配置·救护车配置」一致 */
|
||||
var ambulances=[
|
||||
{plate:'CQ·0712A',point:'樊学作业区医疗点',type:'急救型',model:'江铃轻型监护型救护车',driver:'田震',tel:'13936485218'},
|
||||
@@ -393,71 +389,50 @@ var medStaff=[
|
||||
{id:11,name:'荣大海',job:'副主任医师',post:'医生',point:'乌审旗采气区医疗点'},
|
||||
{id:12,name:'牛玉洁',job:'护师',post:'药师',point:'姬塬作业区医疗点'}
|
||||
];
|
||||
/* 救护车出勤记录:多救护车混合,覆盖四类出勤类型 */
|
||||
/* 救护车出勤记录:多救护车混合,覆盖六类出勤类型 */
|
||||
var attendances=[
|
||||
{id:1,date:'2026-09-08',point:'樊学作业区医疗点',plate:'CQ·0712A',type:'急救型',dispatch:'病情急救',driver:'田震',tel:'13936485218',staff:['韩东学','兰小娟'],out:'樊学作业区 7#井站',to:'CQ油田总医院'},
|
||||
{id:2,date:'2026-09-08',point:'姬圪台作业区医疗点',plate:'CQ·1366B',type:'急救型',dispatch:'伤情急救',driver:'冯保山',tel:'13581136174',staff:['窦志远','苗慧敏'],out:'姬圪台联合站',to:'庆阳市人民医院'},
|
||||
{id:1,date:'2026-09-08',point:'樊学作业区医疗点',plate:'CQ·0712A',type:'急救型',dispatch:'急诊转运',driver:'田震',tel:'13936485218',staff:['韩东学','兰小娟'],out:'樊学作业区 7#井站',to:'CQ油田总医院'},
|
||||
{id:2,date:'2026-09-08',point:'姬圪台作业区医疗点',plate:'CQ·1366B',type:'急救型',dispatch:'急诊转运',driver:'冯保山',tel:'13581136174',staff:['窦志远','苗慧敏'],out:'姬圪台联合站',to:'庆阳市人民医院'},
|
||||
{id:3,date:'2026-09-07',point:'西峰基地医疗点',plate:'CQ·0208C',type:'转运型',dispatch:'日常巡诊',driver:'罗建平',tel:'15077088357',staff:['霍静怡'],out:'西峰基地机关',to:'西峰基地卫生室'},
|
||||
{id:4,date:'2026-09-07',point:'靖边气田医疗点',plate:'CQ·1533D',type:'急救型',dispatch:'应急戒备',driver:'邓成',tel:'13392699481',staff:['康永强','花灵芝'],out:'靖边净化厂',to:'现场应急指挥部'},
|
||||
{id:5,date:'2026-09-06',point:'安塞采油队长住点医疗室',plate:'CQ·0917E',type:'转运型',dispatch:'日常巡诊',driver:'苏文斌',tel:'15598486703',staff:['白宇峰'],out:'安塞基地队部',to:'吴起油田医院'},
|
||||
{id:6,date:'2026-09-06',point:'乌审旗采气区医疗点',plate:'CQ·2201F',type:'急救型',dispatch:'伤情急救',driver:'曹雪芹',tel:'18642802940',staff:['荣大海','花灵芝'],out:'苏里格南作业区营地',to:'乌审旗人民医院'},
|
||||
{id:6,date:'2026-09-06',point:'乌审旗采气区医疗点',plate:'CQ·2201F',type:'急救型',dispatch:'平诊转运',driver:'曹雪芹',tel:'18642802940',staff:['荣大海','花灵芝'],out:'苏里格南作业区营地',to:'乌审旗人民医院'},
|
||||
{id:7,date:'2026-09-05',point:'樊学作业区医疗点',plate:'CQ·0712A',type:'急救型',dispatch:'应急戒备',driver:'田震',tel:'13936485218',staff:['韩东学'],out:'樊学作业区应急演练现场',to:'演练指挥部'},
|
||||
{id:8,date:'2026-09-05',point:'姬圪台作业区医疗点',plate:'CQ·1366B',type:'急救型',dispatch:'病情急救',driver:'冯保山',tel:'13581136174',staff:['窦志远','屈二娃'],out:'姬圪台作业区 3#站',to:'庆阳市人民医院'},
|
||||
{id:9,date:'2026-09-04',point:'西峰基地医疗点',plate:'CQ·0208C',type:'转运型',dispatch:'病情急救',driver:'罗建平',tel:'15077088357',staff:['霍静怡'],out:'西峰基地生活区',to:'第四采油厂总医院'},
|
||||
{id:8,date:'2026-09-05',point:'姬圪台作业区医疗点',plate:'CQ·1366B',type:'急救型',dispatch:'急诊转运',driver:'冯保山',tel:'13581136174',staff:['窦志远','屈二娃'],out:'姬圪台作业区 3#站',to:'庆阳市人民医院'},
|
||||
{id:9,date:'2026-09-04',point:'西峰基地医疗点',plate:'CQ·0208C',type:'转运型',dispatch:'床头呼叫',driver:'罗建平',tel:'15077088357',staff:['霍静怡'],out:'西峰基地生活区',to:'第四采油厂总医院'},
|
||||
{id:10,date:'2026-09-04',point:'靖边气田医疗点',plate:'CQ·1533D',type:'急救型',dispatch:'日常巡诊',driver:'邓成',tel:'13392699481',staff:['康永强'],out:'靖边气田井场巡诊',to:'靖边气田医疗点'},
|
||||
{id:11,date:'2026-09-03',point:'安塞采油队长住点医疗室',plate:'CQ·0917E',type:'转运型',dispatch:'日常巡诊',driver:'苏文斌',tel:'15598486703',staff:['白宇峰','牛玉洁'],out:'安塞基地各井站',to:'安塞采油队长住点医疗室'},
|
||||
{id:12,date:'2026-09-03',point:'乌审旗采气区医疗点',plate:'CQ·2201F',type:'急救型',dispatch:'病情急救',driver:'曹雪芹',tel:'18642802940',staff:['荣大海'],out:'乌审旗采气区集气站',to:'乌审旗人民医院'}
|
||||
{id:12,date:'2026-09-03',point:'乌审旗采气区医疗点',plate:'CQ·2201F',type:'急救型',dispatch:'其他',driver:'曹雪芹',tel:'18642802940',staff:['荣大海'],out:'乌审旗采气区集气站',to:'乌审旗人民医院'}
|
||||
];
|
||||
var nextId=13,editingId=null,pendingDelId=null;
|
||||
var dispatchBadge={'病情急救':'badge--danger','伤情急救':'badge--warning','日常巡诊':'badge--info','应急戒备':'badge--success'};
|
||||
var dispatchBadge={'急诊转运':'badge--danger','平诊转运':'badge--info','日常巡诊':'badge--success','应急戒备':'badge--warning','床头呼叫':'badge--info','其他':'badge--muted'};
|
||||
var typeBadge={'急救型':'badge--danger','转运型':'badge--info'};
|
||||
|
||||
/* ===== 筛选与渲染 ===== */
|
||||
var pageSize=10,currentPage=1;
|
||||
function onFilterPoint(){
|
||||
var point=document.getElementById('filterPoint').value;
|
||||
var sel=document.getElementById('filterAmb');
|
||||
sel.innerHTML='<option value="">全部救护车</option>';
|
||||
ambulances.filter(function(a){return !point||a.point===point;}).forEach(function(a){
|
||||
var o=document.createElement('option');o.textContent=a.plate;sel.appendChild(o);
|
||||
function fillFilterPoints(unit){
|
||||
var sel=document.getElementById('filterPoint');
|
||||
var list=unit?(unitMap[unit]||[]):allPoints;
|
||||
sel.innerHTML='<option value="">全部医疗点</option>';
|
||||
list.forEach(function(p){
|
||||
var o=document.createElement('option');o.textContent=p;sel.appendChild(o);
|
||||
});
|
||||
}
|
||||
function onFilterUnit(){fillFilterPoints(document.getElementById('filterUnit').value);}
|
||||
function currentData(){
|
||||
var unit=document.getElementById('filterUnit').value;
|
||||
var point=document.getElementById('filterPoint').value;
|
||||
var amb=document.getElementById('filterAmb').value;
|
||||
var plate=document.getElementById('filterPlate').value.trim();
|
||||
var type=document.getElementById('filterType').value;
|
||||
var from=document.getElementById('filterFrom').value;
|
||||
var to=document.getElementById('filterTo').value;
|
||||
var points=unit?(unitMap[unit]||[]):null;
|
||||
return attendances.filter(function(r){
|
||||
return (!point||r.point===point)&&(!amb||r.plate===amb)
|
||||
return (!point||r.point===point)&&(!points||points.indexOf(r.point)!==-1)
|
||||
&&(!plate||r.plate.indexOf(plate)!==-1)
|
||||
&&(!type||r.dispatch===type)&&(!from||r.date>=from)&&(!to||r.date<=to);
|
||||
});
|
||||
}
|
||||
var TODAY='2026-09-09';
|
||||
function pad(n){return n<10?'0'+n:''+n;}
|
||||
function fmtDate(d){return d.getFullYear()+'-'+pad(d.getMonth()+1)+'-'+pad(d.getDate());}
|
||||
function weekRange(){
|
||||
var base=new Date(TODAY+'T00:00:00');
|
||||
var dow=base.getDay();
|
||||
var monOffset=dow===0?-6:1-dow;
|
||||
var mon=new Date(base);mon.setDate(base.getDate()+monOffset);
|
||||
var sun=new Date(mon);sun.setDate(mon.getDate()+6);
|
||||
return {start:fmtDate(mon),end:fmtDate(sun)};
|
||||
}
|
||||
function renderStats(){
|
||||
var list=attendances;
|
||||
var wk=weekRange();
|
||||
var week=list.filter(function(r){return r.date>=wk.start&&r.date<=wk.end;}).length;
|
||||
var month=list.filter(function(r){return r.date.slice(0,7)===TODAY.slice(0,7);}).length;
|
||||
var year=list.filter(function(r){return r.date.slice(0,4)===TODAY.slice(0,4);}).length;
|
||||
document.getElementById('kWeek').textContent=week;
|
||||
document.getElementById('kWeekExtra').textContent=wk.start+' ~ '+wk.end;
|
||||
document.getElementById('kMonth').textContent=month;
|
||||
document.getElementById('kMonthExtra').textContent=parseInt(TODAY.slice(5,7),10)+'月';
|
||||
document.getElementById('kYear').textContent=year;
|
||||
document.getElementById('kYearExtra').textContent=TODAY.slice(0,4)+'年度';
|
||||
document.getElementById('kTotal').textContent=list.length;
|
||||
}
|
||||
function renderTable(){
|
||||
var list=currentData();
|
||||
var start=(currentPage-1)*pageSize,pageData=list.slice(start,start+pageSize);
|
||||
@@ -492,7 +467,9 @@ function renderTable(){
|
||||
}
|
||||
function applyFilter(){currentPage=1;renderTable();}
|
||||
function resetFilter(){
|
||||
document.getElementById('filterPoint').value='';onFilterPoint();
|
||||
document.getElementById('filterUnit').value='';
|
||||
fillFilterPoints('');
|
||||
document.getElementById('filterPlate').value='';
|
||||
document.getElementById('filterType').value='';
|
||||
document.getElementById('filterFrom').value='';
|
||||
document.getElementById('filterTo').value='';
|
||||
@@ -563,7 +540,7 @@ function openForm(id){
|
||||
if(!r)document.getElementById('fAmb').innerHTML='<option value="">请先选择医疗点</option>';
|
||||
fillDriverSel(r?r.driver:'');
|
||||
document.getElementById('fDate').value=r?r.date:'';
|
||||
setRadio('fDispatch',r?r.dispatch:'病情急救');
|
||||
setRadio('fDispatch',r?r.dispatch:'急诊转运');
|
||||
selectedStaffIds=(r?r.staff.slice():[]).map(function(n){var m=medStaff.find(function(x){return x.name===n;});return m?m.id:null;}).filter(function(id){return id!=null;});
|
||||
renderStaffChips();
|
||||
document.getElementById('fOut').value=r?r.out:'';
|
||||
@@ -600,7 +577,7 @@ function saveForm(){
|
||||
}else{
|
||||
attendances.push(obj);
|
||||
}
|
||||
closeDrawer('form');renderStats();renderTable();
|
||||
closeDrawer('form');renderTable();
|
||||
showToast(editingId?'出勤记录已更新':'出勤记录已新增');
|
||||
}
|
||||
|
||||
@@ -660,7 +637,7 @@ function askDelete(id){
|
||||
}
|
||||
function confirmDelete(){
|
||||
attendances=attendances.filter(function(r){return r.id!==pendingDelId;});
|
||||
closeModal('delMask');renderStats();renderTable();
|
||||
closeModal('delMask');renderTable();
|
||||
showToast('出勤记录已删除');
|
||||
pendingDelId=null;
|
||||
}
|
||||
@@ -680,7 +657,7 @@ function showToast(msg){
|
||||
clearTimeout(t._timer);t._timer=setTimeout(function(){t.classList.remove('show');},2200);
|
||||
}
|
||||
|
||||
onFilterPoint();renderStats();renderTable();
|
||||
renderTable();
|
||||
function toggleGroup(id){document.getElementById(id).classList.toggle('open');}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -129,7 +129,6 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item active">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -143,6 +142,7 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -145,7 +145,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item active">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -159,6 +158,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -167,7 +167,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -181,6 +180,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item active">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -193,7 +193,6 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item active">员工档案</a>
|
||||
@@ -207,6 +206,7 @@ tbody tr:hover{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -128,7 +128,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item active">员工档案</a>
|
||||
@@ -142,6 +141,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -190,7 +190,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -204,6 +203,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -186,7 +186,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item active">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -200,6 +199,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -154,7 +154,6 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -168,6 +167,7 @@ tbody tr:hover td:last-child{background:#F8FBFF;}
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item active">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -197,7 +197,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -211,6 +210,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -188,7 +188,6 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">日常业务</div>
|
||||
<a href="daily-treatment.html" class="sidebar-item active">日常诊疗</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-follow.html" class="sidebar-item">随访管理</a>
|
||||
<a href="daily-chronic.html" class="sidebar-item">慢病管理</a>
|
||||
<a href="daily-employee-search.html" class="sidebar-item">员工档案</a>
|
||||
@@ -202,6 +201,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
|
||||
</div>
|
||||
</div>
|
||||
<a href="daily-education.html" class="sidebar-item">健康宣教</a>
|
||||
<a href="daily-ambulance-attendance.html" class="sidebar-item">救护车出勤</a>
|
||||
<a href="daily-interpret-manage.html" class="sidebar-item">报告解读记录</a>
|
||||
</aside>
|
||||
|
||||
|
||||
@@ -211,16 +211,15 @@
|
||||
<th>总人数</th><th>应检人数</th><th>已选项目人数</th><th>已预约人数</th><th>已检人数</th><th>未检人数</th>
|
||||
<th>受检率<span class="th-help">?<span class="th-help__tip">受检率 = 实际检查人数 ÷ 应检人数</span></span></th>
|
||||
<th>检出率<span class="th-help">?<span class="th-help__tip">检出率 = 异常人数 ÷ 实际检查人数</span></span></th>
|
||||
<th>患病率<span class="th-help">?<span class="th-help__tip">患病率 = 单病种异常人数 ÷ 实际参加检查人数</span></span></th>
|
||||
<th>重点指标异常人数</th><th>冠脉CTA异常人数</th><th>防癌筛查异常人数</th>
|
||||
<th>计划总费用(元)</th><th>实际总费用(元)</th><th>人均费用(元)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td class="td-frz frz0">1</td><td class="td-frz frz1">公司机关</td><td class="td-frz frz2 col-dept">综合管理部</td><td>2025</td><td>宝石花医院</td><td>宝石花医院</td><td>2025-06-23至2025-08-31</td><td>1000</td><td>1000</td><td>980</td><td>850</td><td>800</td><td>200</td><td>80.0%</td><td>41.0%</td><td>18.0%</td><td>328</td><td>9</td><td>12</td><td>2,600,000</td><td>2,180,000</td><td>2,725.00</td></tr>
|
||||
<tr><td class="td-frz frz0">2</td><td class="td-frz frz1">采油一厂</td><td class="td-frz frz2 col-dept">采油作业一区</td><td>2025</td><td>宝石花医院</td><td>西安高新医院</td><td>2025-07-01至2025-09-15</td><td>3200</td><td>3000</td><td>2860</td><td>2450</td><td>2300</td><td>700</td><td>76.7%</td><td>40.0%</td><td>16.5%</td><td>920</td><td>24</td><td>35</td><td>7,800,000</td><td>6,210,000</td><td>2,700.00</td></tr>
|
||||
<tr><td class="td-frz frz0">3</td><td class="td-frz frz1">采油二厂</td><td class="td-frz frz2 col-dept">采油作业二区</td><td>2025</td><td>宝石花医院</td><td>长安心血管医院</td><td>2025-07-10至2025-09-30</td><td>2800</td><td>2600</td><td>2480</td><td>2100</td><td>1950</td><td>650</td><td>75.0%</td><td>40.0%</td><td>17.2%</td><td>780</td><td>21</td><td>28</td><td>6,760,000</td><td>5,265,000</td><td>2,700.00</td></tr>
|
||||
<tr><td class="td-frz frz0">4</td><td class="td-frz frz1">公司机关</td><td class="td-frz frz2 col-dept">综合管理部</td><td>2024</td><td>宝石花医院</td><td>宝石花医院</td><td>2024-06-20至2024-08-25</td><td>980</td><td>980</td><td>950</td><td>830</td><td>790</td><td>190</td><td>80.6%</td><td>39.0%</td><td>17.5%</td><td>308</td><td>8</td><td>10</td><td>2,450,000</td><td>2,020,000</td><td>2,556.96</td></tr>
|
||||
<tr><td class="td-frz frz0">1</td><td class="td-frz frz1">公司机关</td><td class="td-frz frz2 col-dept">综合管理部</td><td>2025</td><td>宝石花医院</td><td>宝石花医院</td><td>2025-06-23至2025-08-31</td><td>1000</td><td>1000</td><td>980</td><td>850</td><td>800</td><td>200</td><td>80.0%</td><td>41.0%</td><td>328</td><td>9</td><td>12</td><td>2,600,000</td><td>2,180,000</td><td>2,725.00</td></tr>
|
||||
<tr><td class="td-frz frz0">2</td><td class="td-frz frz1">采油一厂</td><td class="td-frz frz2 col-dept">采油作业一区</td><td>2025</td><td>宝石花医院</td><td>西安高新医院</td><td>2025-07-01至2025-09-15</td><td>3200</td><td>3000</td><td>2860</td><td>2450</td><td>2300</td><td>700</td><td>76.7%</td><td>40.0%</td><td>920</td><td>24</td><td>35</td><td>7,800,000</td><td>6,210,000</td><td>2,700.00</td></tr>
|
||||
<tr><td class="td-frz frz0">3</td><td class="td-frz frz1">采油二厂</td><td class="td-frz frz2 col-dept">采油作业二区</td><td>2025</td><td>宝石花医院</td><td>长安心血管医院</td><td>2025-07-10至2025-09-30</td><td>2800</td><td>2600</td><td>2480</td><td>2100</td><td>1950</td><td>650</td><td>75.0%</td><td>40.0%</td><td>780</td><td>21</td><td>28</td><td>6,760,000</td><td>5,265,000</td><td>2,700.00</td></tr>
|
||||
<tr><td class="td-frz frz0">4</td><td class="td-frz frz1">公司机关</td><td class="td-frz frz2 col-dept">综合管理部</td><td>2024</td><td>宝石花医院</td><td>宝石花医院</td><td>2024-06-20至2024-08-25</td><td>980</td><td>980</td><td>950</td><td>830</td><td>790</td><td>190</td><td>80.6%</td><td>39.0%</td><td>308</td><td>8</td><td>10</td><td>2,450,000</td><td>2,020,000</td><td>2,556.96</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item active">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -151,6 +151,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -151,6 +151,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -148,6 +148,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item active">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -148,6 +148,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item active">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item active">单位预约人数统计</a>
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="mid-appointment-track.html" class="sidebar-item">体检预约</a>
|
||||
<a href="mid-appointment-track2.html" class="sidebar-item">体检预约跟踪</a>
|
||||
<a href="mid-selected-items.html" class="sidebar-item">已选项目</a>
|
||||
<a href="mid-participation.html" class="sidebar-item">已检员工</a>
|
||||
<a href="mid-unit-appointment.html" class="sidebar-item">单位预约人数统计</a>
|
||||
|
||||
@@ -143,7 +143,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -156,6 +157,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -184,7 +186,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -194,7 +196,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -139,6 +140,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -167,7 +170,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,7 +180,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -153,7 +153,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -166,6 +167,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -194,7 +196,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -204,7 +206,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -117,7 +117,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -130,6 +131,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -158,7 +160,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -168,7 +170,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -184,7 +184,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -197,6 +198,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -225,7 +227,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -235,7 +237,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item active">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item active">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -143,7 +143,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -156,6 +157,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -184,7 +186,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -194,7 +196,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item active">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -151,7 +151,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -164,6 +165,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -192,7 +194,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -202,7 +204,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -139,6 +140,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item active">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -167,7 +170,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,7 +180,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -81,6 +81,9 @@
|
||||
.col2{left:166px;width:120px;min-width:120px;max-width:120px;}
|
||||
.th-base.col0,.th-base.col1,.th-base.col2{z-index:5;}
|
||||
.res-abn{color:var(--danger);font-weight:600;}
|
||||
.stat-row td{background:#F0F5FF!important;color:var(--primary);font-weight:500;text-align:center;}
|
||||
th.sortable{cursor:pointer;user-select:none;}
|
||||
th.sortable:hover{color:var(--primary);}
|
||||
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:var(--font-xs);}
|
||||
.tag-blue{background:var(--primary-light);color:var(--primary);}
|
||||
.link{color:var(--primary);cursor:pointer;font-size:var(--font-sm);}.link:hover{color:#40a9ff;}
|
||||
@@ -139,7 +142,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item active">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -152,6 +156,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -180,7 +186,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -190,7 +196,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -378,6 +384,65 @@ var CAT_DEFAULTS={
|
||||
'电解质检测':['-'],'肿瘤标志物检测M':['-'],'糖化血红蛋白':['-'],'血糖':['-'],'幽门螺杆菌检测':['阴性'],
|
||||
'同型半胱氨酸':['-'],'淀粉酶':['-'],'Homa-B':['-'],'Homa-IR':['-']
|
||||
};
|
||||
/* 各项目参考范围(定性项目为"阴性";白细胞/红细胞按分类区分) */
|
||||
var REF_RANGE={
|
||||
'血常规|红细胞':'4.30-5.80','血常规|白细胞':'3.5-9.5','尿常规|红细胞':'阴性','尿常规|白细胞':'阴性',
|
||||
'血小板数目':'125-350','血红蛋白':'115-150',
|
||||
'尿糖':'阴性','酮体':'阴性','隐血':'阴性','尿蛋白':'阴性','胆红素':'阴性','亚硝酸盐':'阴性','上皮细胞':'阴性',
|
||||
'碱性磷酸酶':'45-125','总蛋白':'65-85','ALT':'9-50','总胆红素':'3.4-20.5','AST':'15-40','白蛋白':'40-55',
|
||||
'γ-谷氨酰转移酶':'10-60','球蛋白':'20-40','白球比':'1.2-2.4','直接胆红素':'0-6.8','间接胆红素':'1.7-13.7','总胆汁酸':'0-10','胆碱脂酶':'5000-12000',
|
||||
'尿酸':'208-428','肌酐':'57-97','尿素':'3.1-8.8','eGFR':'≥90','胱抑素-C':'0.5-1.2','渗透压':'275-305','尿微量白蛋白':'0-30',
|
||||
'总胆固醇':'<5.2','甘油三酯':'<1.7','高密度脂蛋白胆固醇':'>1.0','高密度脂蛋白胆固醇2':'>0.4','低密度脂蛋白胆固醇':'<3.4','极低密度脂蛋白':'<0.78','脂蛋白a':'0-300','ApoA1':'1.0-2.0','ApoB':'0.6-1.1',
|
||||
'肌酸激酶':'50-310','乳酸脱氢酶':'120-250','天门冬氨酸氨基转移酶同工酶':'0-25','α-羟丁酸脱氢酶':'72-182','肌酸激酶同工酶MB':'0-24',
|
||||
'氯':'99-110','无机磷':'0.85-1.51','镁':'0.75-1.02','钙':'2.11-2.52',
|
||||
'癌胚抗原':'<5.0','甲胎蛋白':'<7.0','CA19-9':'<37','CA242':'<20','CA72-4':'<6.9','神经元特异性烯醇化酶':'<16.3','细胞角蛋白19片段':'<3.3','鳞状细胞癌相关抗原':'<1.5','CA15-3':'<28','CA50':'<20','肿瘤特异性生长因子':'0-64','总前列腺特异性抗原':'<4.0','游离前列腺特异性抗原':'<1.0','细胞角蛋白':'<3.3','表皮生长因子':'<2.5','CC16':'<7.0','细胞角蛋白20片段':'<3.3','p53蛋白':'<0.5','血管内皮生长因子':'<142','CA125':'<35','HE4':'<70','胃蛋白酶原比值比值':'>3',
|
||||
'糖化血红蛋白(生化检测)':'4.0-6.0','糖化血红蛋白HPLC法定性':'4.0-6.0',
|
||||
'血糖测定':'3.9-6.1','餐后2小时血糖':'<7.8','糖化白蛋白':'11-16','胰岛素':'2.6-24.9',
|
||||
'幽门螺旋杆菌抗体定量':'<30','碳13呼气试验':'阴性',
|
||||
'同型半胱氨酸':'5-15','淀粉酶':'35-135','Homa-B':'1.0-3.0','Homa-IR':'<2.5'
|
||||
};
|
||||
/* 把结果值拆成"数值 + 单位"(括注如"(正常)"留在数值里) */
|
||||
function splitVal(s){
|
||||
var m=s.match(/^([<≤>≥]?[-+]?\d+(?:\.\d+)?)(.*)$/);
|
||||
if(m&&m[2]){
|
||||
if(/^\(.*\)$/.test(m[2]))return {v:m[1]+m[2],u:''};
|
||||
return {v:m[1],u:m[2]};
|
||||
}
|
||||
return {v:s,u:''};
|
||||
}
|
||||
/* 取某项目参考范围(优先 cat|name 精确匹配) */
|
||||
function getRef(col){return REF_RANGE[col.cat+'|'+col.name]||REF_RANGE[col.name]||'-';}
|
||||
/* 某字段去重计数 */
|
||||
function distinct(rows,key){var o={};rows.forEach(function(r){o[r[key]]=1;});return Object.keys(o).length;}
|
||||
/* 结果列排序状态:dir 1=升序 -1=倒序 */
|
||||
var SORT={cat:null,name:null,dir:1};
|
||||
/* 取某员工在指定项目上的"结果"字符串 */
|
||||
function resultVal(r,col){
|
||||
var val=r.r[col.cat+'|'+col.name]||r.r[col.name];
|
||||
if(!val)val=[(CAT_DEFAULTS[col.cat]||['-'])[0]];
|
||||
return splitVal(val[0]).v;
|
||||
}
|
||||
/* 数值化:取结果中的首个数字 */
|
||||
function numericOf(v){
|
||||
var m=String(v).match(/[-+]?\d+(?:\.\d+)?/);
|
||||
return m?parseFloat(m[0]):null;
|
||||
}
|
||||
/* 结果比较:数值按大小,定性项排在数值后按字符串 */
|
||||
function cmpResult(a,b){
|
||||
var na=numericOf(a),nb=numericOf(b);
|
||||
if(na===null&&nb===null)return String(a).localeCompare(String(b),'zh');
|
||||
if(na===null)return 1;
|
||||
if(nb===null)return -1;
|
||||
return na-nb;
|
||||
}
|
||||
/* 点击"结果"表头排序 */
|
||||
function sortByItem(th){
|
||||
var cat=th.getAttribute('data-cat'),name=th.getAttribute('data-name');
|
||||
if(SORT.cat===cat&&SORT.name===name){SORT.dir=-SORT.dir;}
|
||||
else{SORT.cat=cat;SORT.name=name;SORT.dir=1;}
|
||||
renderBigTable();
|
||||
}
|
||||
|
||||
/* 展开所有项目列:[{name,cat}](保持顺序) */
|
||||
function allItems(){
|
||||
var arr=[];
|
||||
@@ -385,26 +450,64 @@ function allItems(){
|
||||
return arr;
|
||||
}
|
||||
function buildHead(){
|
||||
/* 行1:基本信息(rowspan=3) + 一级分类(colspan);行2:二级分类(colspan);行3:具体项目 */
|
||||
var r1=[],r2=[],r3=[];
|
||||
/* 行1:基本信息(rowspan=4) + 一级分类(colspan);行2:二级分类(colspan);行3:具体项目(colspan=3);行4:结果/单位/参考范围 */
|
||||
var r1=[],r2=[],r3=[],r4=[];
|
||||
BASE_COLS.forEach(function(c,i){
|
||||
var cls='th-base'+(i<3?' col'+i:'');
|
||||
r1.push('<th class="'+cls+'" rowspan="3">'+c.label+'</th>');
|
||||
r1.push('<th class="'+cls+'" rowspan="4">'+c.label+'</th>');
|
||||
});
|
||||
ITEM_TREE.forEach(function(g){
|
||||
var cnt=0;g.lvl2.forEach(function(s){cnt+=s.items.length;});
|
||||
r1.push('<th class="lvl1" colspan="'+cnt+'">'+g.lvl1+'</th>');
|
||||
r1.push('<th class="lvl1" colspan="'+(cnt*3)+'">'+g.lvl1+'</th>');
|
||||
g.lvl2.forEach(function(s){
|
||||
r2.push('<th class="lvl2" colspan="'+s.items.length+'">'+s.name+'</th>');
|
||||
s.items.forEach(function(it){r3.push('<th class="item">'+it+'</th>');});
|
||||
r2.push('<th class="lvl2" colspan="'+(s.items.length*3)+'">'+s.name+'</th>');
|
||||
s.items.forEach(function(it){
|
||||
r3.push('<th class="item" colspan="3">'+it+'</th>');
|
||||
var ind=(SORT.cat===s.name&&SORT.name===it)?(SORT.dir>0?' ▲':' ▼'):' ↕';
|
||||
r4.push('<th class="item sortable" title="点击按结果升序/倒序排序" data-cat="'+s.name+'" data-name="'+it+'" onclick="sortByItem(this)">结果'+ind+'</th><th class="item">单位</th><th class="item">参考范围</th>');
|
||||
});
|
||||
});
|
||||
});
|
||||
return '<table><thead><tr>'+r1.join('')+'</tr><tr>'+r2.join('')+'</tr><tr>'+r3.join('')+'</tr></thead>';
|
||||
return '<table><thead><tr>'+r1.join('')+'</tr><tr>'+r2.join('')+'</tr><tr>'+r3.join('')+'</tr><tr>'+r4.join('')+'</tr></thead>';
|
||||
}
|
||||
function buildStatRow(){
|
||||
var items=allItems(),rows=getDisplayRows(),total=rows.length;
|
||||
var baseKeys=['idx','name','empNo','gender','age','idCard','unit','dept','hospital','checkDate'];
|
||||
var cells='';
|
||||
baseKeys.forEach(function(k,i){
|
||||
var cls='td-base'+(i<3?' col'+i:'');
|
||||
var txt;
|
||||
if(k==='idx')txt='统计行';
|
||||
else if(k==='name'||k==='empNo'||k==='idCard')txt=total+'个员工';
|
||||
else if(k==='gender')txt=distinct(rows,'gender')+'种性别';
|
||||
else if(k==='age')txt=distinct(rows,'age')+'种年龄';
|
||||
else if(k==='unit')txt=distinct(rows,'unit')+'个单位';
|
||||
else if(k==='dept')txt=distinct(rows,'dept')+'个部门';
|
||||
else if(k==='hospital')txt=distinct(rows,'hospital')+'个医院';
|
||||
else if(k==='checkDate')txt=distinct(rows,'checkDate')+'个日期';
|
||||
cells+='<td class="'+cls+'">'+txt+'</td>';
|
||||
});
|
||||
items.forEach(function(col){
|
||||
var abn=0;
|
||||
rows.forEach(function(r){
|
||||
var val=r.r[col.cat+'|'+col.name]||r.r[col.name];
|
||||
if(!val)val=[(CAT_DEFAULTS[col.cat]||['-'])[0]];
|
||||
if(val[1])abn++;
|
||||
});
|
||||
cells+='<td class="item" colspan="3">'+abn+'/'+total+'</td>';
|
||||
});
|
||||
return '<tr class="stat-row">'+cells+'</tr>';
|
||||
}
|
||||
function buildBody(){
|
||||
var items=allItems();
|
||||
var baseKeys=['idx','name','empNo','gender','age','idCard','unit','dept','hospital','checkDate'];
|
||||
var rows=getDisplayRows().map(function(r,ri){
|
||||
var display=getDisplayRows();
|
||||
if(SORT.name){
|
||||
display=display.slice().sort(function(a,b){
|
||||
return SORT.dir*cmpResult(resultVal(a,SORT),resultVal(b,SORT));
|
||||
});
|
||||
}
|
||||
var rows=display.map(function(r,ri){
|
||||
var cells='';
|
||||
baseKeys.forEach(function(k,i){
|
||||
var cls='td-base'+(i<3?' col'+i:'');
|
||||
@@ -414,11 +517,14 @@ function buildBody(){
|
||||
items.forEach(function(col){
|
||||
var val=r.r[col.cat+'|'+col.name]||r.r[col.name];
|
||||
if(!val)val=[(CAT_DEFAULTS[col.cat]||['-'])[0]];
|
||||
cells+='<td class="item'+(val[1]?' res-abn':'')+'">'+val[0]+'</td>';
|
||||
var sp=splitVal(val[0]);
|
||||
cells+='<td class="item'+(val[1]?' res-abn':'')+'">'+sp.v+'</td>';
|
||||
cells+='<td class="item">'+(sp.u||'-')+'</td>';
|
||||
cells+='<td class="item">'+getRef(col)+'</td>';
|
||||
});
|
||||
return '<tr>'+cells+'</tr>';
|
||||
}).join('');
|
||||
return '<tbody>'+rows+'</tbody></table>';
|
||||
return '<tbody>'+buildStatRow()+rows+'</tbody></table>';
|
||||
}
|
||||
/* 员工是否存在异常指标(任一项目结果带异常标记) */
|
||||
function hasAbnormal(r){
|
||||
@@ -444,7 +550,7 @@ function renderBigTable(){
|
||||
document.getElementById('bigTable').innerHTML=buildHead()+buildBody();
|
||||
document.getElementById('pageTotal').textContent='共 '+getDisplayRows().length+' 条';
|
||||
var k=document.getElementById('keyCount');
|
||||
if(k)k.textContent='重点项目 '+allItems().length+' 列';
|
||||
if(k)k.textContent='体检项目 '+allItems().length+' 个';
|
||||
}
|
||||
var toastTimer=null;
|
||||
function showToast(msg){
|
||||
|
||||
@@ -143,7 +143,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -156,6 +157,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -184,7 +186,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item active">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -194,7 +196,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,508 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>健康体检 - 单位群体报告 | 健康CQ原型</title>
|
||||
<style>
|
||||
*{box-sizing:border-box;margin:0;padding:0;}
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:#F5F7FA;color:#333;min-width:1280px;}
|
||||
:root{
|
||||
--primary:#1890FF;--primary-light:#E6F7FF;--success:#52C41A;--warning:#FAAD14;--danger:#FF4D4F;
|
||||
--text-primary:#333;--text-secondary:#666;--text-placeholder:#999;--border:#E8E8E8;--background:#F5F7FA;
|
||||
--font-xs:11px;--font-sm:13px;--font-base:15px;--font-lg:17px;--font-xl:20px;--font-xxl:24px;
|
||||
--radius-sm:4px;--radius-md:8px;--radius-lg:12px;
|
||||
--shadow-sm:0 1px 4px rgba(0,0,0,0.08);--shadow-md:0 4px 12px rgba(0,0,0,0.12);
|
||||
}
|
||||
/* 顶部导航 */
|
||||
.top-bar{display:flex;align-items:center;height:56px;background:#001529;padding:0 24px;position:fixed;top:0;left:0;right:0;z-index:100;}
|
||||
.top-bar__logo{display:flex;align-items:center;gap:8px;color:#fff;font-size:var(--font-lg);font-weight:600;white-space:nowrap;width:240px;flex-shrink:0;}
|
||||
.top-bar__logo svg{width:28px;height:28px;}
|
||||
.top-bar__right{display:flex;align-items:center;gap:16px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);}
|
||||
.top-bar__right .btn-back{color:rgba(255,255,255,0.65);cursor:pointer;display:flex;align-items:center;gap:4px;text-decoration:none;}
|
||||
.top-bar__right .btn-back:hover{color:#fff;}
|
||||
.avatar{width:32px;height:32px;border-radius:50%;background:#1890FF;display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--font-sm);cursor:pointer;}
|
||||
.top-bar__nav{display:flex;align-items:center;gap:4px;flex:1;}
|
||||
.top-bar__nav a{color:rgba(255,255,255,0.65);text-decoration:none;padding:6px 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);transition:all .2s;}
|
||||
.top-bar__nav a:hover{color:#fff;background:rgba(255,255,255,0.08);}
|
||||
.top-bar__nav a.active{color:#fff;background:var(--primary);}
|
||||
/* 侧边栏 */
|
||||
.sidebar{position:fixed;top:56px;left:0;bottom:0;width:240px;background:#001529;overflow-y:auto;z-index:90;padding-top:8px;}
|
||||
.sidebar-menu__title{color:rgba(255,255,255,0.35);font-size:var(--font-xs);padding:16px 24px 8px;text-transform:uppercase;letter-spacing:.5px;}
|
||||
.sidebar-item{display:flex;align-items:center;gap:8px;padding:10px 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);}
|
||||
.sidebar-subgroup__header{display:flex;align-items:center;gap:6px;padding:10px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;user-select:none;}
|
||||
.sidebar-subgroup__header:hover{color:rgba(255,255,255,0.85);background:rgba(255,255,255,0.04);}
|
||||
.sidebar-subgroup__header .arrow{width:10px;height:10px;transition:transform .2s;flex-shrink:0;}
|
||||
.sidebar-subgroup__header .arrow path{stroke:rgba(255,255,255,0.45);}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__header{color:rgba(255,255,255,0.85);}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__header .arrow{transform:rotate(90deg);}
|
||||
.sidebar-subgroup__body{display:none;padding-left:16px;}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__body{display:block;}
|
||||
.sidebar-subgroup__body .sidebar-item{padding-left:36px;font-size:12px;}
|
||||
.sidebar-subgroup .sidebar-subgroup{padding-left:12px;}
|
||||
.sidebar-subgroup .sidebar-subgroup .sidebar-item{padding-left:40px;}
|
||||
.sidebar-subgroup .sidebar-subgroup>.sidebar-subgroup__header{font-size:12px;}
|
||||
/* 主内容 */
|
||||
.main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);}
|
||||
/* 筛选栏 */
|
||||
.filter-bar{background:#fff;border-radius:var(--radius-md);padding:16px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
|
||||
.filter-item{display:flex;align-items:center;gap:8px;}
|
||||
.filter-item label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
|
||||
.filter-input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff;min-width:200px;}
|
||||
.filter-input:focus{border-color:var(--primary);}
|
||||
.btn{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
|
||||
.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);}
|
||||
.link{color:var(--primary);cursor:pointer;font-size:var(--font-sm);}.link:hover{color:#40a9ff;}
|
||||
/* 体检年份选择控件 */
|
||||
.year-picker{position:relative;}
|
||||
.year-picker .filter-input{padding-right:30px;cursor:pointer;}
|
||||
.year-picker>svg{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none;}
|
||||
.year-picker__dropdown{display:none;position:absolute;top:40px;left:0;width:120px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:50;max-height:180px;overflow-y:auto;}
|
||||
.year-picker__dropdown.open{display:block;}
|
||||
.year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;}
|
||||
.year-picker__dropdown div:hover{background:var(--primary-light);}
|
||||
.year-picker__dropdown div.selected{color:var(--primary);font-weight:600;}
|
||||
/* ============ 左右布局 ============ */
|
||||
.report-wrap{display:flex;gap:16px;align-items:flex-start;}
|
||||
/* 左侧单位列表 */
|
||||
.unit-list{width:280px;flex-shrink:0;background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;position:sticky;top:80px;}
|
||||
.unit-list__header{padding:16px;border-bottom:1px solid var(--border);}
|
||||
.unit-list__title{font-size:var(--font-base);font-weight:600;margin-bottom:12px;}
|
||||
.unit-list__search{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 10px;font-size:var(--font-sm);color:var(--text-primary);outline:none;}
|
||||
.unit-list__search:focus{border-color:var(--primary);}
|
||||
.unit-list__body{max-height:calc(100vh - 230px);overflow-y:auto;}
|
||||
.unit-list__item{padding:12px 16px;cursor:pointer;border-bottom:1px solid #F5F5F5;border-left:3px solid transparent;transition:all .15s;}
|
||||
.unit-list__item:last-child{border-bottom:none;}
|
||||
.unit-list__item:hover{background:#F8FBFF;}
|
||||
.unit-list__item.active{background:var(--primary-light);border-left-color:var(--primary);}
|
||||
.unit-list__item.active .unit-list__name{color:var(--primary);}
|
||||
.unit-list__name{font-size:var(--font-sm);font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
|
||||
.unit-list__meta{font-size:var(--font-xs);color:var(--text-placeholder);margin-top:5px;display:flex;gap:12px;}
|
||||
.unit-list__empty{padding:32px 16px;text-align:center;font-size:var(--font-sm);color:var(--text-placeholder);}
|
||||
/* 右侧报告面板 */
|
||||
.report-panel{flex:1;min-width:0;}
|
||||
/* 报告头 */
|
||||
.report-head{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px 24px;margin-bottom:16px;}
|
||||
.report-head__title{font-size:var(--font-xl);font-weight:600;color:var(--text-primary);}
|
||||
.report-head__meta{display:flex;align-items:center;gap:24px;margin-top:10px;font-size:var(--font-sm);color:var(--text-secondary);flex-wrap:wrap;}
|
||||
.report-head__meta b{color:var(--text-primary);font-weight:500;}
|
||||
/* 概览指标卡 */
|
||||
.overview-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px;}
|
||||
.ov-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:18px 12px;text-align:center;}
|
||||
.ov-card__value{font-size:var(--font-xxl);font-weight:600;color:var(--text-primary);line-height:1.2;}
|
||||
.ov-card__value--primary{color:var(--primary);}
|
||||
.ov-card__value--success{color:var(--success);}
|
||||
.ov-card__value--warning{color:var(--warning);}
|
||||
.ov-card__value--danger{color:var(--danger);}
|
||||
.ov-card__label{font-size:var(--font-xs);color:var(--text-placeholder);margin-top:8px;}
|
||||
/* 报告卡片 */
|
||||
.report-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:16px;overflow:hidden;}
|
||||
.report-card__header{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;}
|
||||
.report-card__bar{width:4px;height:14px;background:var(--primary);border-radius:2px;flex-shrink:0;}
|
||||
.report-card__title{font-size:var(--font-base);font-weight:600;color:var(--text-primary);}
|
||||
.report-card__sub{font-size:var(--font-xs);color:var(--text-placeholder);margin-left:auto;}
|
||||
.report-card__body{padding:16px 20px;}
|
||||
/* 分布表格 */
|
||||
.dist-table{width:100%;border-collapse:collapse;}
|
||||
.dist-table th,.dist-table td{padding:11px 12px;font-size:var(--font-sm);border-bottom:1px solid #F0F0F0;text-align:left;}
|
||||
.dist-table th{background:#FAFAFA;color:var(--text-secondary);font-weight:500;}
|
||||
.dist-table td{color:var(--text-primary);}
|
||||
.dist-table tr:last-child td{border-bottom:none;}
|
||||
.dist-table .cat-row td{background:#F7F9FC;font-weight:600;color:var(--text-primary);border-bottom:1px solid #EDF0F5;}
|
||||
.dist-table .num{font-variant-numeric:tabular-nums;color:var(--text-secondary);}
|
||||
.dist-table .rate{font-variant-numeric:tabular-nums;color:var(--primary);}
|
||||
/* 异常指标条形图 */
|
||||
.bar-row{display:flex;align-items:center;gap:12px;margin-bottom:13px;}
|
||||
.bar-row:last-child{margin-bottom:0;}
|
||||
.bar-row__label{width:120px;flex-shrink:0;font-size:var(--font-sm);color:var(--text-primary);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
|
||||
.bar-row__track{flex:1;height:18px;background:#F0F2F5;border-radius:9px;overflow:hidden;}
|
||||
.bar-row__fill{height:100%;background:linear-gradient(90deg,#69C0FF,#1890FF);border-radius:9px;transition:width .3s;}
|
||||
.bar-row__fill.top1{background:linear-gradient(90deg,#FF9C6E,#FF4D4F);}
|
||||
.bar-row__fill.top2{background:linear-gradient(90deg,#FFD591,#FAAD14);}
|
||||
.bar-row__fill.top3{background:linear-gradient(90deg,#95DE64,#52C41A);}
|
||||
.bar-row__val{width:140px;flex-shrink:0;font-size:var(--font-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums;}
|
||||
.bar-row__val b{color:var(--text-primary);font-weight:600;}
|
||||
/* 专项筛查卡片项 */
|
||||
.screen-item{display:flex;align-items:center;padding:13px 0;border-bottom:1px solid #F0F0F0;}
|
||||
.screen-item:first-child{padding-top:0;}
|
||||
.screen-item:last-child{border-bottom:none;padding-bottom:0;}
|
||||
.screen-item__name{width:180px;flex-shrink:0;font-size:var(--font-sm);color:var(--text-primary);}
|
||||
.screen-item__val{font-size:var(--font-base);font-weight:600;color:var(--danger);margin-right:6px;font-variant-numeric:tabular-nums;}
|
||||
.screen-item__unit{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.screen-item__rate{margin-left:auto;font-size:var(--font-sm);color:var(--text-placeholder);font-variant-numeric:tabular-nums;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- 顶部导航 -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar__logo">
|
||||
<svg viewBox="0 0 28 28" fill="none"><rect width="28" height="28" rx="6" fill="#1890FF"/><path d="M7 14h14M14 7v14" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/></svg>
|
||||
健康体检
|
||||
</div>
|
||||
<nav class="top-bar__nav">
|
||||
<a href="archive-personal.html">档案</a>
|
||||
<a href="config-material-notice.html">基础配置</a>
|
||||
<a href="pre-hospital-scope.html">检前</a>
|
||||
<a href="mid-appointment-track.html">检中</a>
|
||||
<a href="post-unit-count.html" class="active">检后</a>
|
||||
<a href="exception-dirty.html">异常事件</a>
|
||||
</nav>
|
||||
<div class="top-bar__right">
|
||||
<a class="btn-back" href="../../index.html">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M10 3L5 8l5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
返回首页
|
||||
</a>
|
||||
<div class="avatar">管</div>
|
||||
<span style="color:rgba(255,255,255,0.65);">系统管理员 ▾</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 侧边栏 -->
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">检后</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item active">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
<a href="post-report-unmatched.html" class="sidebar-item">体检报告未匹配项目</a>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
体检统计汇总
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
<a href="post-cancer-screening.html" class="sidebar-item">防癌筛查人数统计</a>
|
||||
<a href="post-standard-stat.html" class="sidebar-item">系统标准化项目统计</a>
|
||||
<a href="post-contracted-hospital.html" class="sidebar-item">签约医院人数统计</a>
|
||||
<a href="post-key-indicator-stat.html" class="sidebar-item">重点指标异常统计</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
病种信息管理
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-disease-info.html" class="sidebar-item">病种信息配置</a>
|
||||
<a href="post-conclusion-disease.html" class="sidebar-item">体检结论关联病种</a>
|
||||
<a href="post-auto-select-disease.html" class="sidebar-item">员工病种信息</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- 主内容 -->
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<div class="year-picker">
|
||||
<input class="filter-input" type="text" readonly value="2026" style="min-width:90px;" id="year-input">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="1.5" y="2.5" width="11" height="10" rx="1.5" stroke="#999" stroke-width="1.2"/><path d="M1.5 5.5h11M4.5 1v3M9.5 1v3" stroke="#999" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
<div class="year-picker__dropdown" id="year-dropdown">
|
||||
<div class="selected" onclick="pickYear(this)">2026</div>
|
||||
<div onclick="pickYear(this)">2025</div>
|
||||
<div onclick="pickYear(this)">2024</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-item" style="margin-left:auto;">
|
||||
<button class="btn btn-primary" onclick="exportReport()">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
导出群体报告
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 左右布局:左侧单位列表 + 右侧群体分析报告 -->
|
||||
<div class="report-wrap">
|
||||
<!-- 左侧单位列表 -->
|
||||
<div class="unit-list">
|
||||
<div class="unit-list__header">
|
||||
<div class="unit-list__title">单位列表</div>
|
||||
<input class="unit-list__search" type="text" placeholder="搜索单位名称" oninput="filterUnits(this.value)">
|
||||
</div>
|
||||
<div class="unit-list__body" id="unit-list-body"></div>
|
||||
</div>
|
||||
|
||||
<!-- 右侧群体分析报告 -->
|
||||
<div class="report-panel" id="report-panel"></div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script>
|
||||
/* ============ 数据 ============ */
|
||||
/* 确定性伪随机(0-1),保证同一单位每次打开数据一致 */
|
||||
function pseudo(i){var x=Math.sin(i*127.1)*43758.5453;return x-Math.floor(x);}
|
||||
function fmt(n){return String(n).replace(/\B(?=(\d{3})+(?!\d))/g,',');}
|
||||
|
||||
var UNITS=['公司机关','第一采油厂','第二采油厂','第三采油厂','第八采油厂','第九采油厂','第十一采油厂','采气一厂','水电厂','公用事业公司','运输公司','伴生气综合利用项目部','质量安全环保技术监督中心'];
|
||||
var HOSPITALS=['宝石花医院','延安医院','西安高新医院','长安心血管医院','宁夏宝石花','CQ总医院'];
|
||||
|
||||
/* 年龄区间×性别分布 */
|
||||
var AGE_BANDS=['35岁以下','35岁至44岁','45岁及以上'];
|
||||
/* 异常指标排名(名称 / 排名着色 class) */
|
||||
var INDICATORS=['血脂异常','血压升高','超重(肥胖)','高尿酸','脂肪肝','空腹血糖升高','甲状腺结节','肺部结节','肝功能异常','心电图异常'];
|
||||
/* 疾病(病种)分布,按病种类别分组 */
|
||||
var DISEASE_CATS=[
|
||||
{name:'血液及动脉病种',items:['高脂血','高血压','痛风(高尿酸)','动脉斑块']},
|
||||
{name:'内分泌及代谢病种',items:['超重','甲状腺结节','高血糖']},
|
||||
{name:'消化系统病种',items:['脂肪肝','胆囊息肉','肝囊肿']},
|
||||
{name:'泌尿系统病种',items:['肾囊肿','前列腺增生']},
|
||||
{name:'心血管病种',items:['心电图异常','心律失常']},
|
||||
{name:'呼吸系统病种',items:['肺部结节']},
|
||||
{name:'五官科病种',items:['白内障','牙病']},
|
||||
{name:'其他病种',items:['颈部淋巴结增大']}
|
||||
];
|
||||
|
||||
var state={unitIdx:0, year:'2026', keyword:''};
|
||||
|
||||
/* 某单位某年的群体基础数据(确定性生成) */
|
||||
function yearSeed(idx,year){return idx*13.7+parseInt(year,10)*5.3;}
|
||||
function unitData(idx){
|
||||
var s=yearSeed(idx,state.year);
|
||||
var total=500+Math.floor(pseudo(s+1.3)*7500); // 应检人数 500~8000
|
||||
var examined=Math.round(total*(0.75+pseudo(s+2.1)*0.20)); // 已检人数
|
||||
var abnormal=Math.round(examined*(0.22+pseudo(s+3.7)*0.38)); // 异常人数
|
||||
var keyAbn=Math.round(abnormal*(0.25+pseudo(s+4.9)*0.30)); // 重点指标异常人数
|
||||
var cancerPos=Math.round(total*(0.008+pseudo(s+5.3)*0.022)); // 防癌筛查阳性人数
|
||||
var ctaAbn=Math.round(examined*(0.012+pseudo(s+6.1)*0.038)); // 冠脉CTA异常人数
|
||||
return {
|
||||
name:UNITS[idx], total:total, examined:examined, abnormal:abnormal, keyAbn:keyAbn,
|
||||
cancerPos:cancerPos, ctaAbn:ctaAbn, hospital:HOSPITALS[idx%HOSPITALS.length]
|
||||
};
|
||||
}
|
||||
/* 年龄×性别分布 */
|
||||
function ageGender(d){
|
||||
var s=yearSeed(state.unitIdx,state.year);
|
||||
var a35=Math.round(d.examined*(0.26+pseudo(s+7.7)*0.10));
|
||||
var a44=Math.round(d.examined*(0.32+pseudo(s+8.3)*0.08));
|
||||
var a45=d.examined-a35-a44;
|
||||
function split(n,k){var m=Math.round(n*(0.46+pseudo(s+k)*0.14));return [n-m,m];}
|
||||
return [
|
||||
{band:AGE_BANDS[0], male:split(a35,9.1)[0], female:split(a35,9.1)[1]},
|
||||
{band:AGE_BANDS[1], male:split(a44,10.3)[0], female:split(a44,10.3)[1]},
|
||||
{band:AGE_BANDS[2], male:split(a45,11.7)[0], female:split(a45,11.7)[1]}
|
||||
];
|
||||
}
|
||||
/* 异常指标排名(人数近似递减) */
|
||||
function indicatorRank(d){
|
||||
var s=yearSeed(state.unitIdx,state.year);
|
||||
var list=INDICATORS.map(function(name,ki){
|
||||
var share=(0.05+pseudo(s+ki*2.9)*0.16)*(INDICATORS.length-ki)/INDICATORS.length;
|
||||
return {name:name, cnt:Math.max(3,Math.round(d.examined*share))};
|
||||
});
|
||||
list.sort(function(a,b){return b.cnt-a.cnt;});
|
||||
return list;
|
||||
}
|
||||
/* 疾病(病种)分布:按病种类别分组,类别与病种均按人数降序 */
|
||||
function diseaseDist(d){
|
||||
var s=yearSeed(state.unitIdx,state.year);
|
||||
var groups=DISEASE_CATS.map(function(cat,ci){
|
||||
var items=cat.items.map(function(name,ii){
|
||||
var share=(0.018+pseudo(s+ci*3.3+ii*1.9)*0.11)*(DISEASE_CATS.length-ci)/DISEASE_CATS.length;
|
||||
return {name:name, cnt:Math.max(1,Math.round(d.examined*share))};
|
||||
});
|
||||
items.sort(function(a,b){return b.cnt-a.cnt;});
|
||||
return {cat:cat.name, items:items};
|
||||
});
|
||||
groups.sort(function(a,b){return b.items[0].cnt-a.items[0].cnt;});
|
||||
return groups;
|
||||
}
|
||||
|
||||
/* ============ 左侧单位列表 ============ */
|
||||
function renderUnitList(){
|
||||
var box=document.getElementById('unit-list-body');
|
||||
var list=UNITS.filter(function(u){return !state.keyword||u.indexOf(state.keyword)>=0;});
|
||||
if(!list.length){box.innerHTML='<div class="unit-list__empty">未找到匹配单位</div>';return;}
|
||||
var html=list.map(function(u){
|
||||
var idx=UNITS.indexOf(u);
|
||||
var d=unitData(idx);
|
||||
return '<div class="unit-list__item'+(idx===state.unitIdx?' active':'')+'" onclick="selectUnit('+idx+')">'
|
||||
+'<div class="unit-list__name">'+u+'</div>'
|
||||
+'<div class="unit-list__meta"><span>应检 '+fmt(d.total)+'</span><span>检出率 '+pct(d.abnormal,d.examined)+'</span></div>'
|
||||
+'</div>';
|
||||
}).join('');
|
||||
box.innerHTML=html;
|
||||
}
|
||||
function filterUnits(kw){state.keyword=kw.trim();renderUnitList();}
|
||||
function selectUnit(idx){state.unitIdx=idx;renderUnitList();renderReport();}
|
||||
function pct(a,b){return b?((a/b)*100).toFixed(1)+'%':'0.0%';}
|
||||
|
||||
/* ============ 右侧群体分析报告 ============ */
|
||||
function renderReport(){
|
||||
var d=unitData(state.unitIdx);
|
||||
var ag=ageGender(d);
|
||||
var rank=indicatorRank(d);
|
||||
var dist=diseaseDist(d);
|
||||
var maxCnt=rank[0].cnt;
|
||||
var panel=document.getElementById('report-panel');
|
||||
|
||||
/* 概览指标卡 */
|
||||
var cards=[
|
||||
['应检人数',fmt(d.total),''],
|
||||
['已检人数',fmt(d.examined),'ov-card__value--primary'],
|
||||
['受检率',pct(d.examined,d.total),'ov-card__value--success'],
|
||||
['检出率',pct(d.abnormal,d.examined),'ov-card__value--warning'],
|
||||
['异常人数',fmt(d.abnormal),'ov-card__value--danger'],
|
||||
['重点指标异常',fmt(d.keyAbn),'ov-card__value--danger']
|
||||
].map(function(c){
|
||||
return '<div class="ov-card"><div class="ov-card__value '+c[2]+'">'+c[1]+'</div><div class="ov-card__label">'+c[0]+'</div></div>';
|
||||
}).join('');
|
||||
|
||||
/* 年龄性别分布表 */
|
||||
var agRows=ag.map(function(r){
|
||||
return '<tr><td>'+r.band+'</td><td class="num">'+fmt(r.male)+'</td><td class="num">'+fmt(r.female)+'</td><td class="num">'+fmt(r.male+r.female)+'</td><td class="rate">'+pct(r.male+r.female,d.examined)+'</td></tr>';
|
||||
}).join('');
|
||||
var agTotal=ag.reduce(function(a,r){return a+r.male+r.female;},0);
|
||||
var agMale=ag.reduce(function(a,r){return a+r.male;},0);
|
||||
var agFemale=ag.reduce(function(a,r){return a+r.female;},0);
|
||||
|
||||
/* 异常指标条形图 */
|
||||
var bars=rank.map(function(r,i){
|
||||
var cls=i===0?'top1':(i===1?'top2':(i===2?'top3':''));
|
||||
return '<div class="bar-row">'
|
||||
+'<div class="bar-row__label">'+r.name+'</div>'
|
||||
+'<div class="bar-row__track"><div class="bar-row__fill '+cls+'" style="width:'+(r.cnt/maxCnt*100).toFixed(1)+'%;"></div></div>'
|
||||
+'<div class="bar-row__val"><b>'+fmt(r.cnt)+'</b> 人 · '+pct(r.cnt,d.examined)+'</div>'
|
||||
+'</div>';
|
||||
}).join('');
|
||||
|
||||
/* 疾病分布表 */
|
||||
var distRows='';
|
||||
dist.forEach(function(g){
|
||||
distRows+='<tr class="cat-row"><td colspan="4">'+g.cat+'</td></tr>';
|
||||
g.items.forEach(function(x){
|
||||
distRows+='<tr><td></td><td>'+x.name+'</td><td class="num">'+fmt(x.cnt)+'</td><td class="rate">'+pct(x.cnt,d.examined)+'</td></tr>';
|
||||
});
|
||||
});
|
||||
|
||||
panel.innerHTML=
|
||||
'<div class="report-head">'
|
||||
+'<div class="report-head__title">'+d.name+' · 群体分析报告</div>'
|
||||
+'<div class="report-head__meta">'
|
||||
+'<span>体检年份:<b>'+state.year+'</b></span>'
|
||||
+'<span>承检医院:<b>'+d.hospital+'</b></span>'
|
||||
+'<span>体检计划:<b>2026-06-23 至 2026-08-31</b></span>'
|
||||
+'</div></div>'
|
||||
|
||||
+'<div class="overview-cards">'+cards+'</div>'
|
||||
|
||||
+'<div class="report-card">'
|
||||
+'<div class="report-card__header"><div class="report-card__bar"></div><div class="report-card__title">年龄与性别分布</div><div class="report-card__sub">按已检人数统计</div></div>'
|
||||
+'<div class="report-card__body"><table class="dist-table">'
|
||||
+'<thead><tr><th>年龄区间</th><th>男</th><th>女</th><th>合计</th><th>占比</th></tr></thead>'
|
||||
+'<tbody>'+agRows
|
||||
+'<tr><td style="font-weight:600;">合计</td><td class="num" style="font-weight:600;">'+fmt(agMale)+'</td><td class="num" style="font-weight:600;">'+fmt(agFemale)+'</td><td class="num" style="font-weight:600;">'+fmt(agTotal)+'</td><td class="rate">100%</td></tr>'
|
||||
+'</tbody></table></div></div>'
|
||||
|
||||
+'<div class="report-card">'
|
||||
+'<div class="report-card__header"><div class="report-card__bar"></div><div class="report-card__title">异常指标排名</div><div class="report-card__sub">按检出人数排序</div></div>'
|
||||
+'<div class="report-card__body">'+bars+'</div></div>'
|
||||
|
||||
+'<div class="report-card">'
|
||||
+'<div class="report-card__header"><div class="report-card__bar"></div><div class="report-card__title">疾病(病种)分布</div><div class="report-card__sub">按病种字典归类</div></div>'
|
||||
+'<div class="report-card__body"><table class="dist-table">'
|
||||
+'<thead><tr><th style="width:24px;"></th><th>病种</th><th>人数</th><th>占比</th></tr></thead>'
|
||||
+'<tbody>'+distRows+'</tbody></table></div></div>'
|
||||
|
||||
+'<div class="report-card">'
|
||||
+'<div class="report-card__header"><div class="report-card__bar"></div><div class="report-card__title">专项筛查结果</div></div>'
|
||||
+'<div class="report-card__body">'
|
||||
+'<div class="screen-item"><div class="screen-item__name">防癌筛查 · Septin9</div><span class="screen-item__val">'+d.cancerPos+'</span><span class="screen-item__unit">人阳性</span><span class="screen-item__rate">占应检 '+pct(d.cancerPos,d.total)+'</span></div>'
|
||||
+'<div class="screen-item"><div class="screen-item__name">防癌筛查 · CA724</div><span class="screen-item__val">'+Math.max(1,Math.round(d.cancerPos*0.8))+'</span><span class="screen-item__unit">人阳性</span><span class="screen-item__rate">占应检 '+pct(Math.round(d.cancerPos*0.8),d.total)+'</span></div>'
|
||||
+'<div class="screen-item"><div class="screen-item__name">冠脉CTA</div><span class="screen-item__val">'+d.ctaAbn+'</span><span class="screen-item__unit">人异常</span><span class="screen-item__rate">占已检 '+pct(d.ctaAbn,d.examined)+'</span></div>'
|
||||
+'</div></div>';
|
||||
}
|
||||
|
||||
/* 导出群体报告(CSV,Excel 兼容) */
|
||||
function exportReport(){
|
||||
var d=unitData(state.unitIdx);
|
||||
var rank=indicatorRank(d);
|
||||
var dist=diseaseDist(d);
|
||||
var rows=[['单位群体报告',''],['单位',d.name],['体检年份',state.year],['承检医院',d.hospital],[],
|
||||
['应检人数',d.total],['已检人数',d.examined],['受检率',pct(d.examined,d.total)],['检出率',pct(d.abnormal,d.examined)],['异常人数',d.abnormal],['重点指标异常人数',d.keyAbn],[],
|
||||
['异常指标排名','人数'],[]].concat(rank.map(function(r){return [r.name,r.cnt];})).concat([[],['疾病(病种)分布','人数']]);
|
||||
dist.forEach(function(g){g.items.forEach(function(x){rows.push([g.cat+' · '+x.name,x.cnt]);});});
|
||||
var csv=rows.map(function(r){return r.map(function(c){return '"'+String(c).replace(/"/g,'""')+'"';}).join(',');}).join('\r\n');
|
||||
var a=document.createElement('a');
|
||||
a.href=URL.createObjectURL(new Blob([csv],{type:'text/csv;charset=utf-8'}));
|
||||
a.download=d.name+'_'+state.year+'年_群体分析报告.csv';
|
||||
document.body.appendChild(a);a.click();document.body.removeChild(a);
|
||||
setTimeout(function(){URL.revokeObjectURL(a.href);},1000);
|
||||
}
|
||||
|
||||
/* ============ 通用 ============ */
|
||||
function toggleSubgroup(header){header.parentElement.classList.toggle('open');}
|
||||
/* 体检年份选择控件 */
|
||||
function pickYear(el){
|
||||
var dp=el.parentElement,input=dp.parentElement.querySelector('input');
|
||||
state.year=el.textContent;
|
||||
input.value=el.textContent;
|
||||
dp.querySelectorAll('div').forEach(function(d){d.classList.toggle('selected',d===el);});
|
||||
dp.classList.remove('open');
|
||||
renderUnitList();renderReport();
|
||||
}
|
||||
document.querySelectorAll('.year-picker>input').forEach(function(inp){
|
||||
inp.addEventListener('click',function(e){
|
||||
e.stopPropagation();
|
||||
var dp=inp.parentElement.querySelector('.year-picker__dropdown');
|
||||
var wasOpen=dp.classList.contains('open');
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
if(!wasOpen)dp.classList.add('open');
|
||||
});
|
||||
});
|
||||
document.addEventListener('click',function(){
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
});
|
||||
/* 初始化:默认选中第一个单位,自动展开当前子分组 */
|
||||
(function(){
|
||||
renderUnitList();
|
||||
renderReport();
|
||||
var active=document.querySelector('.sidebar-item.active');
|
||||
if(!active)return;
|
||||
var sub=active.closest('.sidebar-subgroup');
|
||||
while(sub){ sub.classList.add('open'); sub=sub.parentElement.closest('.sidebar-subgroup'); }
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -126,7 +126,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -139,6 +140,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item active">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -167,7 +170,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,7 +180,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -153,7 +153,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item active">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -166,6 +167,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -194,7 +196,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -204,7 +206,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -125,7 +125,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item active">指标异常通知</a>
|
||||
@@ -138,6 +139,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -166,7 +168,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -176,7 +178,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -117,7 +117,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -130,6 +131,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item active">医院体检项目统计</a>
|
||||
@@ -158,7 +160,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -168,7 +170,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -150,7 +150,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -163,6 +164,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -191,7 +193,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -201,7 +203,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -152,7 +152,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item active">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item active">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -165,6 +166,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -193,7 +196,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -203,7 +206,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -203,7 +203,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -216,6 +217,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -244,7 +246,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item active">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item active">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -254,7 +256,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -136,7 +136,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -149,6 +150,7 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -177,7 +179,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -187,7 +189,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -139,6 +140,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -167,7 +170,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,7 +180,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -86,13 +86,11 @@
|
||||
.pagination span{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.page-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:var(--font-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .2s;}
|
||||
.page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
|
||||
/* 三级单位tab下才显示的部门列 */
|
||||
.col-dept{display:none;}
|
||||
body.level-3 .col-dept{display:table-cell;}
|
||||
/* 员工费用明细弹窗 */
|
||||
.modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.45);z-index:200;display:flex;align-items:center;justify-content:center;}
|
||||
.modal{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);width:1000px;max-width:92vw;display:flex;flex-direction:column;max-height:82vh;}
|
||||
.modal--narrow{width:560px;}
|
||||
.modal{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);width:1500px;max-width:96vw;display:flex;flex-direction:column;max-height:82vh;}
|
||||
.modal--narrow{width:820px;}
|
||||
.modal table th,.modal table td{padding:8px 12px;}
|
||||
.modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
|
||||
.modal__title{font-size:var(--font-base);font-weight:600;}
|
||||
.modal__close{font-size:22px;color:var(--text-placeholder);cursor:pointer;line-height:1;}
|
||||
@@ -147,7 +145,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -160,6 +159,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item active">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -188,7 +189,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -198,7 +199,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -218,11 +219,6 @@
|
||||
|
||||
<!-- 主内容 -->
|
||||
<main class="main">
|
||||
<!-- 单位级别切换TAB -->
|
||||
<div class="unit-level-tab">
|
||||
<div class="unit-level-tab__item active" onclick="switchUnitLevel(this)">二级单位</div>
|
||||
<div class="unit-level-tab__item" onclick="switchUnitLevel(this)">三级单位</div>
|
||||
</div>
|
||||
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
@@ -273,36 +269,36 @@
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
<th>单位</th>
|
||||
<th class="col-dept">部门</th>
|
||||
<th>体检医院</th>
|
||||
<th>已体检人数</th>
|
||||
<th>报告完整人数</th>
|
||||
<th>报告不完整人数</th>
|
||||
<th>报告缺少项目总数</th>
|
||||
<th>计划总体检费用(元)</th>
|
||||
<th>实际总体检费用(元)</th>
|
||||
<th>应检人数</th>
|
||||
<th>医院登记已检人数</th>
|
||||
<th>数据完整人数</th>
|
||||
<th>数据不完整人数</th>
|
||||
<th>计划体检费用(元)</th>
|
||||
<th>应付体检费用(元)</th>
|
||||
<th>实际体检费用(元)</th>
|
||||
<th>体检年份</th>
|
||||
<th>签约医院</th>
|
||||
<th>操作</th>
|
||||
<th>操作(员工费用明细)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(0,'checked')">3950</span></td><td><span class="link" onclick="showStatDetail(0,'complete')">3770</span></td><td><span class="link" onclick="showStatDetail(0,'incomplete')">180</span></td><td><span class="link" onclick="showStatDetail(0,'missing')">810</span></td><td>8,146,875.00</td><td>7,052,000.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(0)">员工费用明细</span></td></tr>
|
||||
<tr><td>2</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(1,'checked')">2160</span></td><td><span class="link" onclick="showStatDetail(1,'complete')">2055</span></td><td><span class="link" onclick="showStatDetail(1,'incomplete')">105</span></td><td><span class="link" onclick="showStatDetail(1,'missing')">430</span></td><td>4,455,000.00</td><td>3,862,600.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(1)">员工费用明细</span></td></tr>
|
||||
<tr><td>3</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(2,'checked')">1410</span></td><td><span class="link" onclick="showStatDetail(2,'complete')">1361</span></td><td><span class="link" onclick="showStatDetail(2,'incomplete')">49</span></td><td><span class="link" onclick="showStatDetail(2,'missing')">263</span></td><td>2,908,125.00</td><td>2,518,000.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(2)">员工费用明细</span></td></tr>
|
||||
<tr><td>4</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(3,'checked')">3760</span></td><td><span class="link" onclick="showStatDetail(3,'complete')">3590</span></td><td><span class="link" onclick="showStatDetail(3,'incomplete')">170</span></td><td><span class="link" onclick="showStatDetail(3,'missing')">620</span></td><td>7,755,000.00</td><td>6,706,262.50</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(3)">员工费用明细</span></td></tr>
|
||||
<tr><td>5</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(4,'checked')">2190</span></td><td><span class="link" onclick="showStatDetail(4,'complete')">2097</span></td><td><span class="link" onclick="showStatDetail(4,'incomplete')">93</span></td><td><span class="link" onclick="showStatDetail(4,'missing')">350</span></td><td>4,516,875.00</td><td>3,926,500.00</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(4)">员工费用明细</span></td></tr>
|
||||
<tr><td>6</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(5,'checked')">1360</span></td><td><span class="link" onclick="showStatDetail(5,'complete')">1300</span></td><td><span class="link" onclick="showStatDetail(5,'incomplete')">60</span></td><td><span class="link" onclick="showStatDetail(5,'missing')">225</span></td><td>2,805,000.00</td><td>2,443,000.00</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(5)">员工费用明细</span></td></tr>
|
||||
<tr><td>7</td><td>第三采油厂</td><td class="col-dept">集输作业一区</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(6,'checked')">3120</span></td><td><span class="link" onclick="showStatDetail(6,'complete')">2995</span></td><td><span class="link" onclick="showStatDetail(6,'incomplete')">125</span></td><td><span class="link" onclick="showStatDetail(6,'missing')">455</span></td><td>6,435,000.00</td><td>5,586,775.00</td><td>2026</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(6)">员工费用明细</span></td></tr>
|
||||
<tr><td>8</td><td>第三采油厂</td><td class="col-dept">集输作业一区</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(7,'checked')">2860</span></td><td><span class="link" onclick="showStatDetail(7,'complete')">2750</span></td><td><span class="link" onclick="showStatDetail(7,'incomplete')">110</span></td><td><span class="link" onclick="showStatDetail(7,'missing')">414</span></td><td>5,898,750.00</td><td>5,095,000.00</td><td>2026</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(7)">员工费用明细</span></td></tr>
|
||||
<tr><td>9</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(8,'checked')">4130</span></td><td><span class="link" onclick="showStatDetail(8,'complete')">3990</span></td><td><span class="link" onclick="showStatDetail(8,'incomplete')">140</span></td><td><span class="link" onclick="showStatDetail(8,'missing')">590</span></td><td>8,518,125.00</td><td>7,384,600.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(8)">员工费用明细</span></td></tr>
|
||||
<tr><td>10</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(9,'checked')">2110</span></td><td><span class="link" onclick="showStatDetail(9,'complete')">2040</span></td><td><span class="link" onclick="showStatDetail(9,'incomplete')">70</span></td><td><span class="link" onclick="showStatDetail(9,'missing')">310</span></td><td>4,351,875.00</td><td>3,783,000.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(9)">员工费用明细</span></td></tr>
|
||||
<tr><td>11</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(10,'checked')">1440</span></td><td><span class="link" onclick="showStatDetail(10,'complete')">1382</span></td><td><span class="link" onclick="showStatDetail(10,'incomplete')">58</span></td><td><span class="link" onclick="showStatDetail(10,'missing')">199</span></td><td>2,970,000.00</td><td>2,570,000.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(10)">员工费用明细</span></td></tr>
|
||||
<tr><td>12</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(11,'checked')">3910</span></td><td><span class="link" onclick="showStatDetail(11,'complete')">3770</span></td><td><span class="link" onclick="showStatDetail(11,'incomplete')">140</span></td><td><span class="link" onclick="showStatDetail(11,'missing')">520</span></td><td>8,064,375.00</td><td>6,983,562.50</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(11)">员工费用明细</span></td></tr>
|
||||
<tr><td>13</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(12,'checked')">2140</span></td><td><span class="link" onclick="showStatDetail(12,'complete')">2061</span></td><td><span class="link" onclick="showStatDetail(12,'incomplete')">79</span></td><td><span class="link" onclick="showStatDetail(12,'missing')">290</span></td><td>4,413,750.00</td><td>3,829,000.00</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(12)">员工费用明细</span></td></tr>
|
||||
<tr><td>14</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(13,'checked')">1400</span></td><td><span class="link" onclick="showStatDetail(13,'complete')">1350</span></td><td><span class="link" onclick="showStatDetail(13,'incomplete')">50</span></td><td><span class="link" onclick="showStatDetail(13,'missing')">185</span></td><td>2,887,500.00</td><td>2,495,000.00</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(13)">员工费用明细</span></td></tr>
|
||||
<tr><td>15</td><td>第三采油厂</td><td class="col-dept">集输作业一区</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(14,'checked')">3300</span></td><td><span class="link" onclick="showStatDetail(14,'complete')">3190</span></td><td><span class="link" onclick="showStatDetail(14,'incomplete')">110</span></td><td><span class="link" onclick="showStatDetail(14,'missing')">390</span></td><td>6,806,250.00</td><td>5,888,150.00</td><td>2025</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(14)">员工费用明细</span></td></tr>
|
||||
<tr><td>16</td><td>第三采油厂</td><td class="col-dept">集输作业一区</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(15,'checked')">2820</span></td><td><span class="link" onclick="showStatDetail(15,'complete')">2735</span></td><td><span class="link" onclick="showStatDetail(15,'incomplete')">85</span></td><td><span class="link" onclick="showStatDetail(15,'missing')">332</span></td><td>5,816,250.00</td><td>5,059,000.00</td><td>2025</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(15)">员工费用明细</span></td></tr>
|
||||
<tr><td>1</td><td>第一采油厂</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(0,'should')">4100</span></td><td><span class="link" onclick="showStatDetail(0,'checked')">3950</span></td><td><span class="link" onclick="showStatDetail(0,'complete')">3770</span></td><td><span class="link" onclick="showStatDetail(0,'incomplete')">180</span></td><td>8,146,875.00</td><td>7,489,950.00</td><td>7,052,000.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(0)">员工费用明细</span></td></tr>
|
||||
<tr><td>2</td><td>第一采油厂</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(1,'should')">2250</span></td><td><span class="link" onclick="showStatDetail(1,'checked')">2160</span></td><td><span class="link" onclick="showStatDetail(1,'complete')">2055</span></td><td><span class="link" onclick="showStatDetail(1,'incomplete')">105</span></td><td>4,455,000.00</td><td>4,099,560.00</td><td>3,862,600.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(1)">员工费用明细</span></td></tr>
|
||||
<tr><td>3</td><td>第一采油厂</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(2,'should')">1480</span></td><td><span class="link" onclick="showStatDetail(2,'checked')">1410</span></td><td><span class="link" onclick="showStatDetail(2,'complete')">1361</span></td><td><span class="link" onclick="showStatDetail(2,'incomplete')">49</span></td><td>2,908,125.00</td><td>2,674,050.00</td><td>2,518,000.00</td><td>2026</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(2)">员工费用明细</span></td></tr>
|
||||
<tr><td>4</td><td>第二采油厂</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(3,'should')">3920</span></td><td><span class="link" onclick="showStatDetail(3,'checked')">3760</span></td><td><span class="link" onclick="showStatDetail(3,'complete')">3590</span></td><td><span class="link" onclick="showStatDetail(3,'incomplete')">170</span></td><td>7,755,000.00</td><td>7,125,757.50</td><td>6,706,262.50</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(3)">员工费用明细</span></td></tr>
|
||||
<tr><td>5</td><td>第二采油厂</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(4,'should')">2280</span></td><td><span class="link" onclick="showStatDetail(4,'checked')">2190</span></td><td><span class="link" onclick="showStatDetail(4,'complete')">2097</span></td><td><span class="link" onclick="showStatDetail(4,'incomplete')">93</span></td><td>4,516,875.00</td><td>4,162,650.00</td><td>3,926,500.00</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(4)">员工费用明细</span></td></tr>
|
||||
<tr><td>6</td><td>第二采油厂</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(5,'should')">1430</span></td><td><span class="link" onclick="showStatDetail(5,'checked')">1360</span></td><td><span class="link" onclick="showStatDetail(5,'complete')">1300</span></td><td><span class="link" onclick="showStatDetail(5,'incomplete')">60</span></td><td>2,805,000.00</td><td>2,587,800.00</td><td>2,443,000.00</td><td>2026</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(5)">员工费用明细</span></td></tr>
|
||||
<tr><td>7</td><td>第三采油厂</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(6,'should')">3260</span></td><td><span class="link" onclick="showStatDetail(6,'checked')">3120</span></td><td><span class="link" onclick="showStatDetail(6,'complete')">2995</span></td><td><span class="link" onclick="showStatDetail(6,'incomplete')">125</span></td><td>6,435,000.00</td><td>5,926,065.00</td><td>5,586,775.00</td><td>2026</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(6)">员工费用明细</span></td></tr>
|
||||
<tr><td>8</td><td>第三采油厂</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(7,'should')">2990</span></td><td><span class="link" onclick="showStatDetail(7,'checked')">2860</span></td><td><span class="link" onclick="showStatDetail(7,'complete')">2750</span></td><td><span class="link" onclick="showStatDetail(7,'incomplete')">110</span></td><td>5,898,750.00</td><td>5,416,500.00</td><td>5,095,000.00</td><td>2026</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(7)">员工费用明细</span></td></tr>
|
||||
<tr><td>9</td><td>第一采油厂</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(8,'should')">4290</span></td><td><span class="link" onclick="showStatDetail(8,'checked')">4130</span></td><td><span class="link" onclick="showStatDetail(8,'complete')">3990</span></td><td><span class="link" onclick="showStatDetail(8,'incomplete')">140</span></td><td>8,518,125.00</td><td>7,838,010.00</td><td>7,384,600.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(8)">员工费用明细</span></td></tr>
|
||||
<tr><td>10</td><td>第一采油厂</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(9,'should')">2200</span></td><td><span class="link" onclick="showStatDetail(9,'checked')">2110</span></td><td><span class="link" onclick="showStatDetail(9,'complete')">2040</span></td><td><span class="link" onclick="showStatDetail(9,'incomplete')">70</span></td><td>4,351,875.00</td><td>4,010,550.00</td><td>3,783,000.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(9)">员工费用明细</span></td></tr>
|
||||
<tr><td>11</td><td>第一采油厂</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(10,'should')">1510</span></td><td><span class="link" onclick="showStatDetail(10,'checked')">1440</span></td><td><span class="link" onclick="showStatDetail(10,'complete')">1382</span></td><td><span class="link" onclick="showStatDetail(10,'incomplete')">58</span></td><td>2,970,000.00</td><td>2,730,000.00</td><td>2,570,000.00</td><td>2025</td><td>CQ总医院,泾河医院,庆阳医院</td><td><span class="link" onclick="showCostDetail(10)">员工费用明细</span></td></tr>
|
||||
<tr><td>12</td><td>第二采油厂</td><td>CQ总医院</td><td><span class="link" onclick="showStatDetail(11,'should')">4070</span></td><td><span class="link" onclick="showStatDetail(11,'checked')">3910</span></td><td><span class="link" onclick="showStatDetail(11,'complete')">3770</span></td><td><span class="link" onclick="showStatDetail(11,'incomplete')">140</span></td><td>8,064,375.00</td><td>7,415,887.50</td><td>6,983,562.50</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(11)">员工费用明细</span></td></tr>
|
||||
<tr><td>13</td><td>第二采油厂</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(12,'should')">2230</span></td><td><span class="link" onclick="showStatDetail(12,'checked')">2140</span></td><td><span class="link" onclick="showStatDetail(12,'complete')">2061</span></td><td><span class="link" onclick="showStatDetail(12,'incomplete')">79</span></td><td>4,413,750.00</td><td>4,062,900.00</td><td>3,829,000.00</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(12)">员工费用明细</span></td></tr>
|
||||
<tr><td>14</td><td>第二采油厂</td><td>泾河医院</td><td><span class="link" onclick="showStatDetail(13,'should')">1470</span></td><td><span class="link" onclick="showStatDetail(13,'checked')">1400</span></td><td><span class="link" onclick="showStatDetail(13,'complete')">1350</span></td><td><span class="link" onclick="showStatDetail(13,'incomplete')">50</span></td><td>2,887,500.00</td><td>2,652,000.00</td><td>2,495,000.00</td><td>2025</td><td>CQ总医院,延安医院,泾河医院</td><td><span class="link" onclick="showCostDetail(13)">员工费用明细</span></td></tr>
|
||||
<tr><td>15</td><td>第三采油厂</td><td>庆阳医院</td><td><span class="link" onclick="showStatDetail(14,'should')">3440</span></td><td><span class="link" onclick="showStatDetail(14,'checked')">3300</span></td><td><span class="link" onclick="showStatDetail(14,'complete')">3190</span></td><td><span class="link" onclick="showStatDetail(14,'incomplete')">110</span></td><td>6,806,250.00</td><td>6,255,390.00</td><td>5,888,150.00</td><td>2025</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(14)">员工费用明细</span></td></tr>
|
||||
<tr><td>16</td><td>第三采油厂</td><td>延安医院</td><td><span class="link" onclick="showStatDetail(15,'should')">2950</span></td><td><span class="link" onclick="showStatDetail(15,'checked')">2820</span></td><td><span class="link" onclick="showStatDetail(15,'complete')">2735</span></td><td><span class="link" onclick="showStatDetail(15,'incomplete')">85</span></td><td>5,816,250.00</td><td>5,361,900.00</td><td>5,059,000.00</td><td>2025</td><td>庆阳医院,延安医院</td><td><span class="link" onclick="showCostDetail(15)">员工费用明细</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -330,19 +326,19 @@
|
||||
<input class="filter-input" id="cost-filter-id" type="text" placeholder="请输入员工编号" style="min-width:150px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>报告完整状态:</label>
|
||||
<label>数据完成状态:</label>
|
||||
<select class="filter-select" id="cost-filter-status" style="min-width:100px;"><option>全部</option><option>完整</option><option>不完整</option></select>
|
||||
</div>
|
||||
<button class="btn btn-primary" onclick="renderCostDetail()">查询</button>
|
||||
<button class="btn btn-default" onclick="resetCostFilter()">重置</button>
|
||||
<button class="btn btn-default" style="margin-left:auto;">
|
||||
<button class="btn btn-default">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
导出列表数据
|
||||
</button>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>序号</th><th>姓名</th><th>员工编号</th><th>部门</th><th>体检日期</th><th>体检医院</th><th>应检项目数</th><th>已检项目数</th><th>报告完整状态</th><th>报告缺少项目数</th><th>计划体检费用(元)</th><th>实际体检费用(元)</th></tr>
|
||||
<tr><th>序号</th><th>姓名</th><th>员工编号</th><th>部门</th><th>体检日期</th><th>体检医院</th><th>应检项目数</th><th>医院登记数</th><th>已检结果数</th><th>数据完成状态</th><th>数据缺少项目数</th><th>计划体检费用(元)</th><th>应付体检费用(元)</th><th>实际体检费用(元)</th></tr>
|
||||
</thead>
|
||||
<tbody id="cost-detail-body"></tbody>
|
||||
</table>
|
||||
@@ -415,13 +411,6 @@
|
||||
|
||||
|
||||
<script>
|
||||
/* 单位级别TAB切换:三级单位显示部门列 */
|
||||
function switchUnitLevel(el){
|
||||
var items=el.parentElement.querySelectorAll('.unit-level-tab__item');
|
||||
items.forEach(function(item){item.classList.remove('active');});
|
||||
el.classList.add('active');
|
||||
document.body.classList.toggle('level-3', el.textContent.trim()==='三级单位');
|
||||
}
|
||||
/* 行配置:单位/部门/体检医院/签约医院(一个单位可签约多家医院,逗号相隔)/年份/已体检人数;计划与实际总体检费用为明细弹窗 8 名员工合计×(已体检人数/8),主表与明细人均口径一致 */
|
||||
var ROWS=[
|
||||
{unit:'第一采油厂',dept:'采油作业一区',hospital:'CQ总医院',signed:'CQ总医院,泾河医院,庆阳医院',year:2026,checked:3950},
|
||||
@@ -467,7 +456,7 @@ function buildPlan(rowIdx,empIdx){
|
||||
var tier=TIERS[EMP_POOL[empIdx].tier];
|
||||
var items=tier.map(function(it){return {name:it[0],fee:it[1],cat:it[2],status:'已检'};});
|
||||
var plan=0;items.forEach(function(it){plan+=it.fee;});
|
||||
var dropN=1+((empIdx+rowIdx)%2);
|
||||
var dropN=((empIdx+rowIdx)%2)?2:0;
|
||||
var byName={};items.forEach(function(it){byName[it.name]=it;});
|
||||
var pool=(DROPPED_BY_TIER[EMP_POOL[empIdx].tier]||[]).map(function(n){return byName[n];}).filter(Boolean);
|
||||
var sum=pool.reduce(function(s,it){return s+it.fee;},0);
|
||||
@@ -475,8 +464,12 @@ function buildPlan(rowIdx,empIdx){
|
||||
var k=0;
|
||||
while(pool.length<dropN&&k<rest.length){pool.push(rest[k]);sum+=rest[k].fee;k++;}
|
||||
while(pool.length>dropN){sum-=pool.pop().fee;}
|
||||
pool.forEach(function(it){it.status=(it.fee>=240)?'弃检':'未检';});
|
||||
return {items:items,plan:plan,actual:plan-sum,dropN:dropN,planN:items.length,checkedCnt:items.length-pool.length};
|
||||
var declinedCnt=0,declinedSum=0;
|
||||
pool.forEach(function(it){
|
||||
it.status=(it.fee>=240)?'弃检':'未检';
|
||||
if(it.status==='弃检'){declinedCnt++;declinedSum+=it.fee;}
|
||||
});
|
||||
return {items:items,plan:plan,actual:plan-sum,payable:plan-declinedSum,dropN:dropN,planN:items.length,checkedCnt:items.length-pool.length,registerN:items.length-declinedCnt};
|
||||
}
|
||||
var CUR_ROW=null,COST_IDX=0;
|
||||
function showCostDetail(rowIdx){
|
||||
@@ -489,12 +482,12 @@ function showCostDetail(rowIdx){
|
||||
document.getElementById('cost-detail-title').textContent='「'+CUR_ROW.unit+'」'+CUR_ROW.year+'年 员工费用明细';
|
||||
document.getElementById('cost-detail-modal').style.display='flex';
|
||||
}
|
||||
/* 弹窗内筛选重绘:姓名/员工编号模糊匹配,报告完整状态精确匹配,合计行随筛选结果汇总 */
|
||||
/* 弹窗内筛选重绘:姓名/员工编号模糊匹配,数据完成状态精确匹配 */
|
||||
function renderCostDetail(){
|
||||
var kw=document.getElementById('cost-filter-name').value.trim();
|
||||
var kid=document.getElementById('cost-filter-id').value.trim();
|
||||
var st=document.getElementById('cost-filter-status').value;
|
||||
var html='',pSum=0,aSum=0,cnSum=0,pnSum=0,mnSum=0,n=0;
|
||||
var html='',n=0;
|
||||
EMP_POOL.forEach(function(e,i){
|
||||
var complete=reportComplete(COST_IDX,i);
|
||||
if(kw&&e.name.indexOf(kw)<0)return;
|
||||
@@ -502,20 +495,17 @@ function renderCostDetail(){
|
||||
if(st==='完整'&&!complete)return;
|
||||
if(st==='不完整'&&complete)return;
|
||||
var d=buildPlan(COST_IDX,i);
|
||||
pSum+=d.plan;aSum+=d.actual;cnSum+=d.checkedCnt;pnSum+=d.planN;
|
||||
if(!complete)mnSum+=d.dropN;
|
||||
n++;
|
||||
html+='<tr><td>'+n+'</td><td>'+e.name+'</td><td>'+e.id+'</td><td>'+CUR_ROW.dept+'</td><td>'+CUR_ROW.year+'-'+(6+(i%3))+'-'+(11+i*2)+'</td><td>'+e.hospital+'</td>'+
|
||||
'<td><span class="link" onclick="showItems('+COST_IDX+','+i+',\'plan\')">'+d.planN+'</span></td>'+
|
||||
'<td><span class="link" onclick="showItems('+COST_IDX+','+i+',\'checked\')">'+d.checkedCnt+' <span class="sub-hint">(含未检/弃检'+d.dropN+')</span></span></td>'+
|
||||
'<td><span class="link" onclick="showItems('+COST_IDX+','+i+',\'registered\')">'+d.registerN+'</span></td>'+
|
||||
'<td><span class="link" onclick="showItems('+COST_IDX+','+i+',\'checked\')">'+d.checkedCnt+'</span></td>'+
|
||||
'<td>'+(complete?'<span class="tag tag-green">完整</span>':'<span class="tag tag-orange">不完整</span>')+'</td>'+
|
||||
'<td>'+(complete?0:'<span class="link" onclick="showEmpMissing('+COST_IDX+','+i+')">'+d.dropN+'</span>')+'</td>'+
|
||||
'<td>'+fmtMoney(d.plan)+'</td><td>'+fmtMoney(d.actual)+'</td></tr>';
|
||||
'<td>'+fmtMoney(d.plan)+'</td><td>'+fmtMoney(d.payable)+'</td><td>'+fmtMoney(d.actual)+'</td></tr>';
|
||||
});
|
||||
if(n===0){
|
||||
html='<tr><td colspan="12" style="text-align:center;color:var(--text-placeholder);">暂无数据</td></tr>';
|
||||
}else{
|
||||
html+='<tr style="font-weight:600;"><td></td><td>合计</td><td></td><td></td><td></td><td></td><td>'+pnSum+'</td><td>'+cnSum+'</td><td></td><td>'+mnSum+'</td><td>'+fmtMoney(pSum)+'</td><td>'+fmtMoney(aSum)+'</td></tr>';
|
||||
html='<tr><td colspan="14" style="text-align:center;color:var(--text-placeholder);">暂无数据</td></tr>';
|
||||
}
|
||||
document.getElementById('cost-detail-body').innerHTML=html;
|
||||
}
|
||||
@@ -525,21 +515,22 @@ function resetCostFilter(){
|
||||
document.getElementById('cost-filter-status').value='全部';
|
||||
renderCostDetail();
|
||||
}
|
||||
/* 第二层弹窗:应检=全部项目及应检费用;已检=已检项目及费用;两视角均标注体检状态 */
|
||||
/* 第二层弹窗:应检=全部项目;医院登记=已登记项目(已检+未检);已检=已检项目;费用统一拆为项目费用与折扣后费用两列 */
|
||||
function showItems(rowIdx,empIdx,mode){
|
||||
var d=buildPlan(rowIdx,empIdx),e=EMP_POOL[empIdx],rows=[],total=0;
|
||||
d.items.forEach(function(it){
|
||||
if(mode==='plan'||it.status==='已检'){rows.push(it);total+=it.fee;}
|
||||
var show=(mode==='plan')||(mode==='registered'&&it.status!=='弃检')||(mode==='checked'&&it.status==='已检');
|
||||
if(show){rows.push(it);total+=it.fee;}
|
||||
});
|
||||
var html='';
|
||||
rows.forEach(function(it,i2){
|
||||
var st=it.status==='已检'?'<span class="tag tag-green">已检</span>':(it.status==='弃检'?'<span class="tag tag-red">弃检</span>':'<span class="tag tag-orange">未检</span>');
|
||||
html+='<tr><td>'+(i2+1)+'</td><td>'+it.name+'</td><td>'+it.cat+'</td><td>'+fmtMoney(it.fee)+'</td><td>'+st+'</td></tr>';
|
||||
html+='<tr><td>'+(i2+1)+'</td><td>'+it.name+'</td><td>'+it.cat+'</td><td>'+fmtMoney(it.fee)+'</td><td>'+fmtMoney(it.fee*0.8)+'</td><td>'+st+'</td></tr>';
|
||||
});
|
||||
html+='<tr style="font-weight:600;"><td></td><td>合计</td><td></td><td>'+fmtMoney(total)+'</td><td></td></tr>';
|
||||
document.getElementById('item-modal-head').innerHTML='<tr><th>序号</th><th>项目名称</th><th>项目类别</th><th>'+(mode==='plan'?'应检项目费用(元)':'项目费用(元)')+'</th><th>体检状态</th></tr>';
|
||||
html+='<tr style="font-weight:600;"><td></td><td>合计</td><td></td><td>'+fmtMoney(total)+'</td><td>'+fmtMoney(total*0.8)+'</td><td></td></tr>';
|
||||
document.getElementById('item-modal-head').innerHTML='<tr><th>序号</th><th>项目名称</th><th>项目类别</th><th>项目费用(元)</th><th>折扣后费用(元)</th><th>体检状态</th></tr>';
|
||||
document.getElementById('item-modal-body').innerHTML=html;
|
||||
document.getElementById('item-modal-title').textContent='「'+e.name+'」'+(mode==='plan'?'应检项目':'已检项目')+'('+CUR_ROW.year+'年)';
|
||||
document.getElementById('item-modal-title').textContent='「'+e.name+'」'+(mode==='plan'?'应检项目':(mode==='registered'?'医院登记项目':'已检项目'))+'('+CUR_ROW.year+'年)';
|
||||
document.getElementById('item-modal').style.display='flex';
|
||||
}
|
||||
function hideItemModal(){
|
||||
@@ -549,8 +540,8 @@ function hideCostDetail(){
|
||||
document.getElementById('cost-detail-modal').style.display='none';
|
||||
hideItemModal();
|
||||
}
|
||||
/* 统计明细弹窗:点击已体检/报告完整/报告不完整/报告缺少项目总数数字查看
|
||||
* mode = checked 已体检人员 / complete 报告完整人员 / incomplete 报告不完整人员 / missing 报告缺少项目明细 */
|
||||
/* 统计明细弹窗:点击应检/医院登记已检/数据完整/数据不完整数字查看人员列表
|
||||
* mode = should 应检人员 / checked 已体检人员 / complete 数据完整人员 / incomplete 数据不完整人员 / missing 报告缺少项目明细 */
|
||||
/* 报告是否完整:与缺少项目数联动——偶数序员工报告完整,奇数序员工缺少 buildPlan 派生出的未检/弃检项 */
|
||||
function reportComplete(rowIdx,empIdx){return (empIdx+rowIdx)%2===0;}
|
||||
function showStatDetail(rowIdx,mode){
|
||||
@@ -567,24 +558,25 @@ function showStatDetail(rowIdx,mode){
|
||||
});
|
||||
document.getElementById('stat-modal-count').textContent='共 '+cn+' 人(示例数据)';
|
||||
} else {
|
||||
var onlyIncomplete=(mode==='incomplete');
|
||||
var showMissing=(mode!=='complete');
|
||||
head='<tr><th>序号</th><th>姓名</th><th>员工编号</th><th>部门</th><th>体检日期</th><th>体检医院</th><th>已检/应检项目数</th><th>报告状态</th>'+(showMissing?'<th>缺少项目数</th>':'')+'</tr>';
|
||||
var filterComplete=(mode==='complete');
|
||||
var filterIncomplete=(mode==='incomplete');
|
||||
head='<tr><th>序号</th><th>姓名</th><th>员工编号</th><th>部门</th><th>体检日期</th><th>体检医院</th><th>应检项目数</th><th>医院登记数</th><th>已检结果数</th><th>数据完成状态</th></tr>';
|
||||
EMP_POOL.forEach(function(e,i){
|
||||
var complete=reportComplete(rowIdx,i);
|
||||
if(mode==='complete'&&!complete)return;
|
||||
if(onlyIncomplete&&complete)return;
|
||||
if(filterComplete&&!complete)return;
|
||||
if(filterIncomplete&&complete)return;
|
||||
var d=buildPlan(rowIdx,i);
|
||||
cn++;
|
||||
body+='<tr><td>'+cn+'</td><td>'+e.name+'</td><td>'+e.id+'</td><td>'+CUR_ROW.dept+'</td><td>'+CUR_ROW.year+'-'+(6+(i%3))+'-'+(11+i*2)+'</td><td>'+e.hospital+'</td>'+
|
||||
'<td>'+d.checkedCnt+' / '+d.planN+'</td>'+
|
||||
'<td>'+d.planN+'</td>'+
|
||||
'<td>'+d.registerN+'</td>'+
|
||||
'<td>'+d.checkedCnt+'</td>'+
|
||||
'<td>'+(complete?'<span class="tag tag-green">完整</span>':'<span class="tag tag-orange">不完整</span>')+'</td>'+
|
||||
(showMissing?(complete?'<td>—</td>':'<td><span class="link" onclick="showEmpMissing('+rowIdx+','+i+')">'+d.dropN+'</span></td>'):'')+
|
||||
'</tr>';
|
||||
});
|
||||
document.getElementById('stat-modal-count').textContent='共 '+cn+' 人(示例数据)';
|
||||
}
|
||||
var TITLES={checked:'已体检人员明细',complete:'报告完整人员明细',incomplete:'报告不完整人员明细',missing:'报告缺少项目明细'};
|
||||
var TITLES={should:'应检人员列表',checked:'已体检人员明细',complete:'数据完整人员明细',incomplete:'数据不完整人员明细',missing:'报告缺少项目明细'};
|
||||
document.getElementById('stat-modal-title').textContent='「'+CUR_ROW.unit+'」'+CUR_ROW.year+'年 '+TITLES[mode];
|
||||
document.getElementById('stat-modal-head').innerHTML=head;
|
||||
document.getElementById('stat-modal-body').innerHTML=body;
|
||||
|
||||
@@ -156,7 +156,8 @@
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">常规体检报告</a>
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
@@ -169,6 +170,8 @@
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item active">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
@@ -197,7 +200,7 @@
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">胃肠镜体检报告</a>
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -207,7 +210,7 @@
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">冠脉CTA体检报告</a>
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -293,7 +296,6 @@
|
||||
<th rowspan="2">未预约人数</th>
|
||||
<th rowspan="2">受检率<span class="th-help">?<span class="th-help__tip">受检率 = 实际检查人数 ÷ 应检人数</span></span></th>
|
||||
<th rowspan="2">检出率<span class="th-help">?<span class="th-help__tip">检出率 = 异常人数 ÷ 实际检查人数</span></span></th>
|
||||
<th rowspan="2">患病率<span class="th-help">?<span class="th-help__tip th-help__tip--right">患病率 = 单病种异常人数 ÷ 实际参加检查人数</span></span></th>
|
||||
<th rowspan="2">体检年份</th>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -303,8 +305,8 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>8000</td><td>5000</td><td>4000</td><td>3000</td><td>1000</td><td>1000</td><td>37.5%</td><td>42.0%</td><td>18.0%</td><td>2025</td></tr>
|
||||
<tr><td>2</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>8000</td><td>5000</td><td>4000</td><td>3000</td><td>1000</td><td>1000</td><td>37.5%</td><td>39.5%</td><td>16.5%</td><td>2025</td></tr>
|
||||
<tr><td>1</td><td>第一采油厂</td><td class="col-dept">采油作业一区</td><td>8000</td><td>5000</td><td>4000</td><td>3000</td><td>1000</td><td>1000</td><td>37.5%</td><td>42.0%</td><td>2025</td></tr>
|
||||
<tr><td>2</td><td>第二采油厂</td><td class="col-dept">采油作业二区</td><td>8000</td><td>5000</td><td>4000</td><td>3000</td><td>1000</td><td>1000</td><td>37.5%</td><td>39.5%</td><td>2025</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>健康体检 - 单位体检项目统计 | 健康CQ原型</title>
|
||||
<style>
|
||||
*{box-sizing:border-box;margin:0;padding:0;}
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:#F5F7FA;color:#333;min-width:1280px;}
|
||||
:root{
|
||||
--primary:#1890FF;--primary-light:#E6F7FF;--success:#52C41A;--warning:#FAAD14;--danger:#FF4D4F;
|
||||
--text-primary:#333;--text-secondary:#666;--text-placeholder:#999;--border:#E8E8E8;--background:#F5F7FA;
|
||||
--font-xs:11px;--font-sm:13px;--font-base:15px;--font-lg:17px;--font-xl:20px;--font-xxl:24px;
|
||||
--radius-sm:4px;--radius-md:8px;--radius-lg:12px;
|
||||
--shadow-sm:0 1px 4px rgba(0,0,0,0.08);--shadow-md:0 4px 12px rgba(0,0,0,0.12);
|
||||
}
|
||||
/* 顶部导航 */
|
||||
.top-bar{display:flex;align-items:center;height:56px;background:#001529;padding:0 24px;position:fixed;top:0;left:0;right:0;z-index:100;}
|
||||
.top-bar__logo{display:flex;align-items:center;gap:8px;color:#fff;font-size:var(--font-lg);font-weight:600;white-space:nowrap;width:240px;flex-shrink:0;}
|
||||
.top-bar__logo svg{width:28px;height:28px;}
|
||||
.top-bar__right{display:flex;align-items:center;gap:16px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);}
|
||||
.top-bar__right .btn-back{color:rgba(255,255,255,0.65);cursor:pointer;display:flex;align-items:center;gap:4px;text-decoration:none;}
|
||||
.top-bar__right .btn-back:hover{color:#fff;}
|
||||
.avatar{width:32px;height:32px;border-radius:50%;background:#1890FF;display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--font-sm);cursor:pointer;}
|
||||
.top-bar__nav{display:flex;align-items:center;gap:4px;flex:1;}
|
||||
.top-bar__nav a{color:rgba(255,255,255,0.65);text-decoration:none;padding:6px 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);transition:all .2s;}
|
||||
.top-bar__nav a:hover{color:#fff;background:rgba(255,255,255,0.08);}
|
||||
.top-bar__nav a.active{color:#fff;background:var(--primary);}
|
||||
/* 侧边栏 */
|
||||
.sidebar{position:fixed;top:56px;left:0;bottom:0;width:240px;background:#001529;overflow-y:auto;z-index:90;padding-top:8px;}
|
||||
.sidebar-menu__title{color:rgba(255,255,255,0.35);font-size:var(--font-xs);padding:16px 24px 8px;text-transform:uppercase;letter-spacing:.5px;}
|
||||
.sidebar-item{display:flex;align-items:center;gap:8px;padding:10px 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);}
|
||||
.sidebar-subgroup__header{display:flex;align-items:center;gap:6px;padding:10px 24px;color:rgba(255,255,255,0.65);font-size:var(--font-sm);cursor:pointer;transition:all .15s;user-select:none;}
|
||||
.sidebar-subgroup__header:hover{color:rgba(255,255,255,0.85);background:rgba(255,255,255,0.04);}
|
||||
.sidebar-subgroup__header .arrow{width:10px;height:10px;transition:transform .2s;flex-shrink:0;}
|
||||
.sidebar-subgroup__header .arrow path{stroke:rgba(255,255,255,0.45);}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__header{color:rgba(255,255,255,0.85);}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__header .arrow{transform:rotate(90deg);}
|
||||
.sidebar-subgroup__body{display:none;padding-left:16px;}
|
||||
.sidebar-subgroup.open>.sidebar-subgroup__body{display:block;}
|
||||
.sidebar-subgroup__body .sidebar-item{padding-left:36px;font-size:12px;}
|
||||
.sidebar-subgroup .sidebar-subgroup{padding-left:12px;}
|
||||
.sidebar-subgroup .sidebar-subgroup .sidebar-item{padding-left:40px;}
|
||||
.sidebar-subgroup .sidebar-subgroup>.sidebar-subgroup__header{font-size:12px;}
|
||||
/* 主内容 */
|
||||
.main{margin-left:240px;margin-top:56px;padding:24px;min-height:calc(100vh - 56px);}
|
||||
/* 筛选栏 */
|
||||
.filter-bar{background:#fff;border-radius:var(--radius-md);padding:20px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
|
||||
.filter-item{display:flex;align-items:center;gap:8px;}
|
||||
.filter-item label{font-size:var(--font-sm);color:var(--text-secondary);white-space:nowrap;}
|
||||
.filter-input{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff;min-width:200px;}
|
||||
.filter-input:focus{border-color:var(--primary);}
|
||||
.filter-select{height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;cursor:pointer;min-width:120px;}
|
||||
.btn{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;}
|
||||
.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-danger{background:#fff;color:var(--danger);border:1px solid var(--danger);}.btn-danger:hover{background:#fff1f0;}
|
||||
/* 表格 */
|
||||
.table-card{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;}
|
||||
.table-card__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);}
|
||||
.table-card__title{font-size:var(--font-base);font-weight:600;}
|
||||
.table-card__actions{display:flex;gap:8px;align-items:center;}
|
||||
.table-card__content{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}
|
||||
.table-card__content table{min-width:100%;white-space:nowrap;}
|
||||
table{width:100%;border-collapse:collapse;}
|
||||
thead th{background:#FAFAFA;padding:12px 16px;text-align:left;font-size:var(--font-sm);color:var(--text-secondary);font-weight:500;border-bottom:1px solid var(--border);white-space:nowrap;}
|
||||
tbody td{padding:14px 16px;font-size:var(--font-sm);color:var(--text-primary);border-bottom:1px solid var(--border);white-space:nowrap;}
|
||||
tbody tr:last-child td{border-bottom:none;}
|
||||
tbody tr:hover{background:#F8FBFF;}
|
||||
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:var(--font-xs);}
|
||||
.tag-blue{background:var(--primary-light);color:var(--primary);}
|
||||
.tag-green{background:#F6FFED;color:var(--success);}
|
||||
.tag-orange{background:#FFF7E6;color:var(--warning);}
|
||||
.tag-red{background:#FFF1F0;color:var(--danger);}
|
||||
.link{color:var(--primary);cursor:pointer;font-size:var(--font-sm);}.link:hover{color:#40a9ff;}
|
||||
.rate-high{color:var(--danger);font-weight:600;}
|
||||
/* 分页 */
|
||||
.pagination{display:flex;align-items:center;justify-content:flex-end;padding:16px 24px;gap:8px;border-top:1px solid var(--border);}
|
||||
.pagination span{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.page-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:var(--font-sm);display:inline-flex;align-items:center;justify-content:center;transition:all .2s;}
|
||||
.page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
|
||||
/* 体检年份选择控件 */
|
||||
.year-picker{position:relative;}
|
||||
.year-picker .filter-input{padding-right:30px;cursor:pointer;}
|
||||
.year-picker>svg{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none;}
|
||||
.year-picker__dropdown{display:none;position:absolute;top:40px;left:0;width:120px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:50;max-height:180px;overflow-y:auto;}
|
||||
.year-picker__dropdown.open{display:block;}
|
||||
.year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;}
|
||||
.year-picker__dropdown div:hover{background:var(--primary-light);}
|
||||
.year-picker__dropdown div.selected{color:var(--primary);font-weight:600;}
|
||||
/* 人员列表弹窗 */
|
||||
.modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.45);z-index:200;display:flex;align-items:center;justify-content:center;}
|
||||
.modal{background:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);width:860px;max-width:92vw;display:flex;flex-direction:column;max-height:82vh;}
|
||||
.modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
|
||||
.modal__title{font-size:var(--font-base);font-weight:600;}
|
||||
.modal__close{font-size:22px;color:var(--text-placeholder);cursor:pointer;line-height:1;}
|
||||
.modal__close:hover{color:var(--text-secondary);}
|
||||
.modal__body{padding:16px 24px;overflow:auto;}
|
||||
.modal__footer{display:flex;align-items:center;justify-content:flex-end;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0;}
|
||||
.sub-hint{color:var(--text-placeholder);font-size:var(--font-xs);}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- 顶部导航 -->
|
||||
<div class="top-bar">
|
||||
<div class="top-bar__logo">
|
||||
<svg viewBox="0 0 28 28" fill="none"><rect width="28" height="28" rx="6" fill="#1890FF"/><path d="M7 14h14M14 7v14" stroke="#fff" stroke-width="2.5" stroke-linecap="round"/></svg>
|
||||
健康体检
|
||||
</div>
|
||||
<nav class="top-bar__nav">
|
||||
<a href="archive-personal.html">档案</a>
|
||||
<a href="config-material-notice.html">基础配置</a>
|
||||
<a href="pre-hospital-scope.html">检前</a>
|
||||
<a href="mid-appointment-track.html">检中</a>
|
||||
<a href="post-unit-count.html" class="active">检后</a>
|
||||
<a href="exception-dirty.html">异常事件</a>
|
||||
</nav>
|
||||
<div class="top-bar__right">
|
||||
<a class="btn-back" href="../../index.html">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M10 3L5 8l5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
返回首页
|
||||
</a>
|
||||
<div class="avatar">管</div>
|
||||
<span style="color:rgba(255,255,255,0.65);">系统管理员 ▾</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 侧边栏 -->
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-menu__title">检后</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
常规体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-employee.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-group-report.html" class="sidebar-item">单位群体报告</a>
|
||||
<a href="post-employee-master.html" class="sidebar-item">员工体检大表</a>
|
||||
<a href="post-illness-personnel.html" class="sidebar-item">大病人员信息</a>
|
||||
<a href="post-indicator-notify.html" class="sidebar-item">指标异常通知</a>
|
||||
<a href="post-report-unmatched.html" class="sidebar-item">体检报告未匹配项目</a>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
体检统计汇总
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-unit-count.html" class="sidebar-item">单位体检人数统计</a>
|
||||
<a href="post-unit-cost-stat.html" class="sidebar-item">单位体检费用统计</a>
|
||||
<a href="post-unit-item-stat.html" class="sidebar-item active">单位体检项目统计</a>
|
||||
<a href="post-hospital-count.html" class="sidebar-item">医院体检人数统计</a>
|
||||
<a href="post-doctor-count.html" class="sidebar-item">医生检查人数统计</a>
|
||||
<a href="post-item-stat.html" class="sidebar-item">医院体检项目统计</a>
|
||||
<a href="post-cancer-screening.html" class="sidebar-item">防癌筛查人数统计</a>
|
||||
<a href="post-standard-stat.html" class="sidebar-item">系统标准化项目统计</a>
|
||||
<a href="post-contracted-hospital.html" class="sidebar-item">签约医院人数统计</a>
|
||||
<a href="post-key-indicator-stat.html" class="sidebar-item">重点指标异常统计</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
病种信息管理
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-disease-info.html" class="sidebar-item">病种信息配置</a>
|
||||
<a href="post-conclusion-disease.html" class="sidebar-item">体检结论关联病种</a>
|
||||
<a href="post-auto-select-disease.html" class="sidebar-item">员工病种信息</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
胃肠镜体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-report-gastro.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-gastro-stat.html" class="sidebar-item">胃肠镜体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-subgroup">
|
||||
<div class="sidebar-subgroup__header" onclick="toggleSubgroup(this)">
|
||||
<svg class="arrow" viewBox="0 0 12 12"><path d="M4 2l4 4-4 4" fill="none" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||
冠脉CTA体检
|
||||
</div>
|
||||
<div class="sidebar-subgroup__body">
|
||||
<a href="post-cta-report.html" class="sidebar-item">员工体检报告</a>
|
||||
<a href="post-cta-stat.html" class="sidebar-item">冠脉CTA体检统计</a>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- 主内容 -->
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<div class="year-picker">
|
||||
<input class="filter-input" type="text" readonly value="2026" style="min-width:100px;">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="1.5" y="2.5" width="11" height="10" rx="1.5" stroke="#999" stroke-width="1.2"/><path d="M1.5 5.5h11M4.5 1v3M9.5 1v3" stroke="#999" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
<div class="year-picker__dropdown">
|
||||
<div class="selected" onclick="pickYear(this)">2026</div>
|
||||
<div onclick="pickYear(this)">2025</div>
|
||||
<div onclick="pickYear(this)">2024</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>CQ总医院</option><option>泾河医院</option><option>庆阳医院</option><option>延安医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>项目名称:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入项目名称" style="min-width:160px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>项目编码:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入项目编码" style="min-width:140px;">
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<div style="display:flex;gap:12px;margin-bottom:16px;">
|
||||
<button class="btn btn-primary">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 10v2h10v-2M7 2v7M4.5 6.5L7 9l2.5-2.5" stroke="#fff" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
导出列表数据
|
||||
</button>
|
||||
<button class="btn btn-default">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><rect x="2" y="2" width="10" height="10" rx="1.5" stroke="currentColor" stroke-width="1.4"/><path d="M4 5h6M4 7.5h4" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
查看导出任务
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="table-card">
|
||||
<div class="table-card__header">
|
||||
<div class="table-card__title">单位体检项目统计</div>
|
||||
</div>
|
||||
<div class="table-card__content">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>序号</th><th>单位</th><th>体检医院</th><th>体检项目名称</th><th>项目编码</th><th>已选人数</th><th>已检人数</th><th>异常人数</th><th>患病率</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="stat-body"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<span id="stat-count"></span>
|
||||
<button class="page-btn active">1</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 人员列表弹窗 -->
|
||||
<div class="modal-mask" id="person-modal" style="display:none;" onclick="if(event.target===this)hidePersonList()">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title" id="person-modal-title">人员列表</div>
|
||||
<span class="modal__close" onclick="hidePersonList()">×</span>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<table>
|
||||
<thead id="person-modal-head"></thead>
|
||||
<tbody id="person-modal-body"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<span class="sub-hint" id="person-modal-count" style="margin-right:auto;"></span>
|
||||
<button class="btn btn-default" onclick="hidePersonList()">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
||||
<script>
|
||||
/* 统计明细数据:单位 → 体检医院 → 体检项目;患病率 = 异常人数 ÷ 已检人数 */
|
||||
var ROWS=[
|
||||
{unit:'第一采油厂',hospital:'CQ总医院',item:'血常规',code:'XM1001',selected:5000,checked:4800,abnormal:96},
|
||||
{unit:'第一采油厂',hospital:'CQ总医院',item:'尿常规',code:'XM1002',selected:5000,checked:4780,abnormal:143},
|
||||
{unit:'第一采油厂',hospital:'CQ总医院',item:'肝功能',code:'XM1003',selected:4200,checked:4000,abnormal:320},
|
||||
{unit:'第一采油厂',hospital:'CQ总医院',item:'心电图',code:'XM1007',selected:5000,checked:4700,abnormal:188},
|
||||
{unit:'第一采油厂',hospital:'CQ总医院',item:'腹部彩超',code:'XM1008',selected:3800,checked:3600,abnormal:432},
|
||||
{unit:'第一采油厂',hospital:'泾河医院',item:'血常规',code:'XM1001',selected:2250,checked:2160,abnormal:65},
|
||||
{unit:'第一采油厂',hospital:'泾河医院',item:'尿常规',code:'XM1002',selected:2250,checked:2140,abnormal:86},
|
||||
{unit:'第一采油厂',hospital:'泾河医院',item:'肾功能',code:'XM1004',selected:1800,checked:1720,abnormal:138},
|
||||
{unit:'第一采油厂',hospital:'泾河医院',item:'胸部正位片',code:'XM1009',selected:2250,checked:2100,abnormal:126},
|
||||
{unit:'第一采油厂',hospital:'庆阳医院',item:'肝功能',code:'XM1003',selected:1480,checked:1410,abnormal:127},
|
||||
{unit:'第一采油厂',hospital:'庆阳医院',item:'肿瘤标志物',code:'XM1010',selected:900,checked:860,abnormal:103},
|
||||
{unit:'第二采油厂',hospital:'CQ总医院',item:'血常规',code:'XM1001',selected:3920,checked:3760,abnormal:113},
|
||||
{unit:'第二采油厂',hospital:'CQ总医院',item:'血脂',code:'XM1005',selected:3500,checked:3300,abnormal:330},
|
||||
{unit:'第二采油厂',hospital:'CQ总医院',item:'心电图',code:'XM1007',selected:3920,checked:3700,abnormal:185},
|
||||
{unit:'第二采油厂',hospital:'CQ总医院',item:'腹部彩超',code:'XM1008',selected:3000,checked:2800,abnormal:336},
|
||||
{unit:'第二采油厂',hospital:'延安医院',item:'血常规',code:'XM1001',selected:2280,checked:2190,abnormal:88},
|
||||
{unit:'第二采油厂',hospital:'延安医院',item:'尿常规',code:'XM1002',selected:2280,checked:2170,abnormal:87},
|
||||
{unit:'第二采油厂',hospital:'延安医院',item:'肾功能',code:'XM1004',selected:1900,checked:1820,abnormal:164},
|
||||
{unit:'第二采油厂',hospital:'泾河医院',item:'肝功能',code:'XM1003',selected:1430,checked:1360,abnormal:109},
|
||||
{unit:'第二采油厂',hospital:'泾河医院',item:'胸部正位片',code:'XM1009',selected:1430,checked:1330,abnormal:93},
|
||||
{unit:'第三采油厂',hospital:'庆阳医院',item:'血常规',code:'XM1001',selected:3260,checked:3120,abnormal:125},
|
||||
{unit:'第三采油厂',hospital:'庆阳医院',item:'肝功能',code:'XM1003',selected:2800,checked:2680,abnormal:241},
|
||||
{unit:'第三采油厂',hospital:'庆阳医院',item:'心电图',code:'XM1007',selected:3260,checked:3050,abnormal:183},
|
||||
{unit:'第三采油厂',hospital:'延安医院',item:'尿常规',code:'XM1002',selected:2990,checked:2860,abnormal:143},
|
||||
{unit:'第三采油厂',hospital:'延安医院',item:'腹部彩超',code:'XM1008',selected:2400,checked:2280,abnormal:274},
|
||||
{unit:'第三采油厂',hospital:'延安医院',item:'胸部正位片',code:'XM1009',selected:2990,checked:2790,abnormal:167}
|
||||
];
|
||||
/* 人数列口径字典:字段名、标题用词、人员列表最后一列表头 */
|
||||
var TYPE_META={
|
||||
selected:{field:'selected',label:'已选',col:'体检状态'},
|
||||
checked:{field:'checked',label:'已检',col:'体检结果'},
|
||||
abnormal:{field:'abnormal',label:'异常',col:'异常结果'}
|
||||
};
|
||||
/* 示例员工池(人员列表弹窗展示用) */
|
||||
var EMP_POOL=[
|
||||
{name:'石维国',id:'CQ001234',dept:'采油作业一区'},
|
||||
{name:'曲志明',id:'CQ002187',dept:'采油作业一区'},
|
||||
{name:'李秀兰',id:'CQ003412',dept:'采油作业二区'},
|
||||
{name:'张卫东',id:'CQ004098',dept:'采油作业二区'},
|
||||
{name:'王海燕',id:'CQ005263',dept:'集输作业一区'},
|
||||
{name:'刘振华',id:'CQ006175',dept:'集输作业一区'},
|
||||
{name:'陈国庆',id:'CQ007321',dept:'采油作业一区'},
|
||||
{name:'杨春梅',id:'CQ008456',dept:'采油作业二区'}
|
||||
];
|
||||
function rateOf(r){return r.checked>0?(r.abnormal/r.checked*100).toFixed(1):'0.0';}
|
||||
/* 渲染主表:患病率 ≥10% 标红,人数三列均为可点击链接 */
|
||||
function renderTable(){
|
||||
var html='';
|
||||
ROWS.forEach(function(r,i){
|
||||
var rate=rateOf(r);
|
||||
var rateCell=(parseFloat(rate)>=10)?('<span class="rate-high">'+rate+'%</span>'):(rate+'%');
|
||||
html+='<tr><td>'+(i+1)+'</td><td>'+r.unit+'</td><td>'+r.hospital+'</td><td>'+r.item+'</td><td>'+r.code+'</td>'+
|
||||
'<td><span class="link" onclick="showPersonList('+i+',\'selected\')">'+r.selected+'</span></td>'+
|
||||
'<td><span class="link" onclick="showPersonList('+i+',\'checked\')">'+r.checked+'</span></td>'+
|
||||
'<td><span class="link" onclick="showPersonList('+i+',\'abnormal\')">'+r.abnormal+'</span></td>'+
|
||||
'<td>'+rateCell+'</td></tr>';
|
||||
});
|
||||
document.getElementById('stat-body').innerHTML=html;
|
||||
document.getElementById('stat-count').textContent='共 '+ROWS.length+' 条';
|
||||
}
|
||||
/* 点击人数列:按口径打开对应人员列表 */
|
||||
function showPersonList(rowIdx,type){
|
||||
var r=ROWS[rowIdx],meta=TYPE_META[type];
|
||||
var year=document.querySelector('.year-picker input').value;
|
||||
var html='';
|
||||
EMP_POOL.forEach(function(e,i){
|
||||
var st;
|
||||
if(type==='selected'){
|
||||
st=(i%2===0)?'<span class="tag tag-green">已检</span>':'<span class="tag tag-orange">未检</span>';
|
||||
}else if(type==='checked'){
|
||||
st='<span class="tag tag-green">正常</span>';
|
||||
}else{
|
||||
var txt=(i%3===0)?'偏高':(i%3===1?'偏低':'异常');
|
||||
st='<span class="tag tag-red">'+txt+'</span>';
|
||||
}
|
||||
html+='<tr><td>'+(i+1)+'</td><td>'+e.name+'</td><td>'+e.id+'</td><td>'+e.dept+'</td><td>'+r.hospital+'</td><td>'+year+'-06-'+(11+i*2)+'</td><td>'+st+'</td></tr>';
|
||||
});
|
||||
document.getElementById('person-modal-head').innerHTML='<tr><th>序号</th><th>姓名</th><th>员工编号</th><th>部门</th><th>体检医院</th><th>体检日期</th><th>'+meta.col+'</th></tr>';
|
||||
document.getElementById('person-modal-body').innerHTML=html;
|
||||
document.getElementById('person-modal-title').textContent='「'+r.unit+'」'+r.hospital+' · '+r.item+' '+meta.label+'人员列表';
|
||||
document.getElementById('person-modal-count').textContent='共 '+r[meta.field]+' 人(示例数据)';
|
||||
document.getElementById('person-modal').style.display='flex';
|
||||
}
|
||||
function hidePersonList(){document.getElementById('person-modal').style.display='none';}
|
||||
/* Esc 关闭人员列表弹窗 */
|
||||
document.addEventListener('keydown',function(e){
|
||||
if(e.key==='Escape')hidePersonList();
|
||||
});
|
||||
/* 侧边栏展开/折叠交互 */
|
||||
function toggleSubgroup(header){
|
||||
header.parentElement.classList.toggle('open');
|
||||
}
|
||||
/* 页面加载时自动展开当前页面所在的子分组 */
|
||||
(function(){
|
||||
var active=document.querySelector('.sidebar-item.active');
|
||||
if(!active)return;
|
||||
var sub=active.closest('.sidebar-subgroup');
|
||||
while(sub){ sub.classList.add('open'); sub=sub.parentElement.closest('.sidebar-subgroup'); }
|
||||
})();
|
||||
/* 体检年份选择控件 */
|
||||
function pickYear(el){
|
||||
var dp=el.parentElement,input=dp.parentElement.querySelector('input');
|
||||
input.value=el.textContent;
|
||||
dp.querySelectorAll('div').forEach(function(d){d.classList.toggle('selected',d===el);});
|
||||
dp.classList.remove('open');
|
||||
}
|
||||
document.querySelectorAll('.year-picker>input').forEach(function(inp){
|
||||
inp.addEventListener('click',function(e){
|
||||
e.stopPropagation();
|
||||
var dp=inp.parentElement.querySelector('.year-picker__dropdown');
|
||||
var wasOpen=dp.classList.contains('open');
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
if(!wasOpen)dp.classList.add('open');
|
||||
});
|
||||
});
|
||||
document.addEventListener('click',function(){
|
||||
document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');});
|
||||
});
|
||||
/* 初始渲染 */
|
||||
renderTable();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user