feat: 健康体检原型完善(胃肠镜体检计划管理新增新增/编辑/详情抽屉支持承检医院多选与机构树选人,医院基础信息列表加图片列并统一常规/胃肠镜医院编辑抽屉,报告模板详情与编辑复用同一弹窗含只读模式,组合模板/例外配置/医院费用/单位费用新增详情弹窗与编辑抽屉及生成费用确认弹窗,单位体检计划新增抽屉含允许预约日期范围,名额分组与材料操作说明弹窗抽屉,检中页面筛选项重排、预约跟踪多级表头,特殊项目页列表字段调整,档案页筛选排序统一)
This commit is contained in:
@@ -117,11 +117,17 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>年份</label>
|
||||
<label>体检年份</label>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
<option>2026</option><option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位部门</label>
|
||||
<select class="filter-select" style="min-width:140px;">
|
||||
<option value="">全部</option><option>公司机关</option><option>采油一厂</option><option>采油二厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:130px;min-width:unset;">
|
||||
@@ -130,12 +136,6 @@
|
||||
<label>员工编号</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:130px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位部门</label>
|
||||
<select class="filter-select" style="min-width:140px;">
|
||||
<option value="">全部</option><option>公司机关</option><option>采油一厂</option><option>采油二厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4" stroke="currentColor" stroke-width="1.4"/><path d="M10 10l2.5 2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
查询
|
||||
|
||||
@@ -126,15 +126,15 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>单位</label>
|
||||
<select class="filter-select" style="min-width:180px;">
|
||||
<option value="">请选择</option><option>公司机关</option><option>采油一厂</option><option>采油二厂</option>
|
||||
<label>体检年份</label>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
<option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年份选择</label>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
<option>2025</option><option>2024</option><option>2023</option>
|
||||
<label>单位</label>
|
||||
<select class="filter-select" style="min-width:180px;">
|
||||
<option value="">请选择</option><option>公司机关</option><option>采油一厂</option><option>采油二厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
.search-select__option{padding:10px 12px;font-size:var(--font-sm);cursor:pointer;transition:background .15s;color:var(--text-primary);}
|
||||
.search-select__option:hover,.search-select__option.active{background:var(--primary-light);color:var(--primary);}
|
||||
.search-select__empty{padding:10px 12px;font-size:var(--font-sm);color:var(--text-placeholder);text-align:center;}
|
||||
.search-select__input[readonly]{background:#F5F7FA;color:var(--text-secondary);cursor:not-allowed;}
|
||||
/* 医院信息卡片 */
|
||||
.hospital-info{background:#F5F7FA;border-radius:var(--radius-sm);padding:12px;margin-bottom:16px;display:none;}
|
||||
.hospital-info.show{display:block;}
|
||||
@@ -227,8 +228,8 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="normal-tbody">
|
||||
<tr><td>1</td><td>泾河医院</td><td>普通医院</td><td>西安市高陵区西安泾河开发区CQ西路20号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>西安宝石花CQ医院(高陵)</td><td>是</td><td>1</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>2</td><td>庆阳医院</td><td>指定医院</td><td>甘肃省庆阳市西峰区岐黄大道18号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>庆阳市人民医院体检中心</td><td>是</td><td>2</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>1</td><td>泾河医院</td><td>普通医院</td><td>西安市高陵区西安泾河开发区CQ西路20号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>西安宝石花CQ医院(高陵)</td><td>是</td><td>1</td><td><span class="link" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>2</td><td>庆阳医院</td><td>指定医院</td><td>甘肃省庆阳市西峰区岐黄大道18号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>庆阳市人民医院体检中心</td><td>是</td><td>2</td><td><span class="link" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -267,7 +268,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="gastro-tbody">
|
||||
<tr><td>1</td><td>长安胃肠镜医院</td><td>西安市雁塔区科技路66号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>西安长安胃肠镜专科医院</td><td>是</td><td>1</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>1</td><td>长安胃肠镜医院</td><td>西安市雁塔区科技路66号</td><td><img class="hospital-img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='48' viewBox='0 0 72 48'%3E%3Crect width='72' height='48' fill='%231890ff'/%3E%3Crect x='18' y='14' width='36' height='26' rx='2' fill='%23ffffff'/%3E%3Cpath d='M32 20h8v6h6v8h-6v6h-8v-6h-6v-8h6z' fill='%231890ff'/%3E%3C/svg%3E" alt="医院图片"></td><td>西安长安胃肠镜专科医院</td><td>是</td><td>1</td><td><span class="link" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -378,7 +379,7 @@ function switchType(type){
|
||||
document.getElementById('pane-' + type).classList.add('active');
|
||||
}
|
||||
|
||||
/* ===== 新增医院抽屉 ===== */
|
||||
/* ===== 新增/编辑医院抽屉 ===== */
|
||||
var hospitalData = {
|
||||
'h1': { name: '西安市中心医院', address: '西安市新城区西五路161号', intro: '西安市中心医院体检中心' },
|
||||
'h2': { name: '陕西省人民医院', address: '西安市碑林区友谊西路256号', intro: '陕西省人民医院健康管理中心' },
|
||||
@@ -387,13 +388,26 @@ var hospitalData = {
|
||||
'h5': { name: '宝鸡市人民医院', address: '宝鸡市渭滨区经二路185号', intro: '宝鸡市人民医院体检科' }
|
||||
};
|
||||
|
||||
function openDrawer(){
|
||||
var isNormal = currentType === 'normal';
|
||||
document.getElementById('drawer-title').textContent = isNormal ? '新增常规体检医院' : '新增胃肠镜体检医院';
|
||||
document.getElementById('normal-fields').style.display = isNormal ? '' : 'none';
|
||||
document.getElementById('gastro-fields').style.display = isNormal ? 'none' : '';
|
||||
document.getElementById('hospital-drawer').classList.add('open');
|
||||
document.getElementById('drawer-overlay').classList.add('open');
|
||||
/* 当前正在编辑的行(null 表示新增) */
|
||||
var editingRow = null;
|
||||
|
||||
/* 抽屉内是否锁定医院选择(编辑时医院不可更换) */
|
||||
function setHospitalLocked(locked, name, address){
|
||||
var input = document.getElementById('search-input');
|
||||
if(locked){
|
||||
input.value = name || '';
|
||||
input.readOnly = true;
|
||||
input.placeholder = '';
|
||||
var info = document.getElementById('hospital-info');
|
||||
document.getElementById('hospital-address').textContent = address || '';
|
||||
if(address) info.classList.add('show');
|
||||
} else {
|
||||
input.readOnly = false;
|
||||
input.placeholder = '请输入医院名称搜索';
|
||||
}
|
||||
}
|
||||
|
||||
function resetDrawerFields(){
|
||||
document.getElementById('search-input').value = '';
|
||||
document.getElementById('search-value').value = '';
|
||||
document.getElementById('hospital-info').classList.remove('show');
|
||||
@@ -407,6 +421,53 @@ function openDrawer(){
|
||||
document.getElementById('form-card-reg').value = '';
|
||||
}
|
||||
|
||||
function openDrawer(){
|
||||
editingRow = null;
|
||||
var isNormal = currentType === 'normal';
|
||||
document.getElementById('drawer-title').textContent = isNormal ? '新增常规体检医院' : '新增胃肠镜体检医院';
|
||||
document.getElementById('normal-fields').style.display = isNormal ? '' : 'none';
|
||||
document.getElementById('gastro-fields').style.display = isNormal ? 'none' : '';
|
||||
resetDrawerFields();
|
||||
setHospitalLocked(false);
|
||||
document.getElementById('hospital-drawer').classList.add('open');
|
||||
document.getElementById('drawer-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
/* 读取单元格文本 */
|
||||
function readTd(tr, i){
|
||||
var td = tr.children[i];
|
||||
return td ? td.textContent.trim() : '';
|
||||
}
|
||||
|
||||
/* 打开编辑抽屉:按行数据回填,医院锁定不可改 */
|
||||
function openEditDrawer(btn){
|
||||
editingRow = btn.closest('tr');
|
||||
var isNormal = currentType === 'normal';
|
||||
resetDrawerFields();
|
||||
if(isNormal){
|
||||
document.getElementById('drawer-title').textContent = '编辑常规体检医院';
|
||||
document.getElementById('normal-fields').style.display = '';
|
||||
document.getElementById('gastro-fields').style.display = 'none';
|
||||
setHospitalLocked(true, readTd(editingRow, 1), readTd(editingRow, 3));
|
||||
document.querySelectorAll('input[name="hos-type"]').forEach(function(r){ r.checked = (r.value === readTd(editingRow, 2)); });
|
||||
document.getElementById('switch-oc').classList.toggle('on', readTd(editingRow, 6) === '是');
|
||||
document.getElementById('form-sort-normal').value = readTd(editingRow, 7);
|
||||
} else {
|
||||
document.getElementById('drawer-title').textContent = '编辑胃肠镜体检医院';
|
||||
document.getElementById('normal-fields').style.display = 'none';
|
||||
document.getElementById('gastro-fields').style.display = '';
|
||||
setHospitalLocked(true, readTd(editingRow, 1), readTd(editingRow, 2));
|
||||
var needCard = readTd(editingRow, 5) === '是';
|
||||
document.getElementById('switch-card').classList.toggle('on', needCard);
|
||||
document.getElementById('card-reg-item').style.display = needCard ? '' : 'none';
|
||||
document.getElementById('form-sort-gastro').value = readTd(editingRow, 6);
|
||||
document.getElementById('form-gastro-notice').value = editingRow.dataset.notice || '';
|
||||
document.getElementById('form-card-reg').value = editingRow.dataset.cardreg || '';
|
||||
}
|
||||
document.getElementById('hospital-drawer').classList.add('open');
|
||||
document.getElementById('drawer-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
function closeDrawer(){
|
||||
document.getElementById('hospital-drawer').classList.remove('open');
|
||||
document.getElementById('drawer-overlay').classList.remove('open');
|
||||
@@ -466,6 +527,7 @@ function onHospitalChange(){
|
||||
}
|
||||
|
||||
input.addEventListener('focus', function(){
|
||||
if(this.readOnly) return;
|
||||
renderOptions(this.value);
|
||||
dropdown.classList.add('show');
|
||||
});
|
||||
@@ -482,49 +544,98 @@ function onHospitalChange(){
|
||||
});
|
||||
})();
|
||||
|
||||
/* 保存新增医院 */
|
||||
/* 单元格操作链接(新增与编辑行共用) */
|
||||
var ROW_ACTIONS = '<td><span class="link" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteRow(this)">删除</span></td>';
|
||||
var HOSPITAL_IMG = (document.querySelector('.hospital-img') || {}).getAttribute ? document.querySelector('.hospital-img').getAttribute('src') : '';
|
||||
|
||||
/* 刷新某个表格的序号列 */
|
||||
function refreshSeq(tbody){
|
||||
tbody.querySelectorAll('tr').forEach(function(tr, i){ tr.children[0].textContent = i + 1; });
|
||||
}
|
||||
|
||||
/* 生成常规体检行 HTML */
|
||||
function buildNormalRow(data, hosType, oc, sort){
|
||||
return '<td></td>'
|
||||
+ '<td>' + data.name + '</td>'
|
||||
+ '<td>' + hosType + '</td>'
|
||||
+ '<td>' + data.address + '</td>'
|
||||
+ '<td><img class="hospital-img" src="' + HOSPITAL_IMG + '" alt="医院图片"></td>'
|
||||
+ '<td>' + data.intro + '</td>'
|
||||
+ '<td>' + (oc ? '是' : '否') + '</td>'
|
||||
+ '<td>' + sort + '</td>'
|
||||
+ ROW_ACTIONS;
|
||||
}
|
||||
|
||||
/* 生成胃肠镜体检行 HTML */
|
||||
function buildGastroRow(data, needCard, sort){
|
||||
return '<td></td>'
|
||||
+ '<td>' + data.name + '</td>'
|
||||
+ '<td>' + data.address + '</td>'
|
||||
+ '<td><img class="hospital-img" src="' + HOSPITAL_IMG + '" alt="医院图片"></td>'
|
||||
+ '<td>' + data.intro + '</td>'
|
||||
+ '<td>' + (needCard ? '是' : '否') + '</td>'
|
||||
+ '<td>' + sort + '</td>'
|
||||
+ ROW_ACTIONS;
|
||||
}
|
||||
|
||||
/* 保存(新增或编辑) */
|
||||
function saveHospital(){
|
||||
var isNormal = currentType === 'normal';
|
||||
var tbody = document.getElementById(isNormal ? 'normal-tbody' : 'gastro-tbody');
|
||||
|
||||
if(editingRow){
|
||||
/* 编辑:医院不变,更新可变列 */
|
||||
if(isNormal){
|
||||
var hosTypeEl = document.querySelector('input[name="hos-type"]:checked');
|
||||
if(!hosTypeEl){ alert('请选择医院类型'); return; }
|
||||
var sort = document.getElementById('form-sort-normal').value.trim() || editingRow.children[7].textContent.trim();
|
||||
var oc = document.getElementById('switch-oc').classList.contains('on');
|
||||
editingRow.children[2].textContent = hosTypeEl.value;
|
||||
editingRow.children[6].textContent = oc ? '是' : '否';
|
||||
editingRow.children[7].textContent = sort;
|
||||
} else {
|
||||
var needCard = document.getElementById('switch-card').classList.contains('on');
|
||||
var sortG = document.getElementById('form-sort-gastro').value.trim() || editingRow.children[6].textContent.trim();
|
||||
editingRow.children[5].textContent = needCard ? '是' : '否';
|
||||
editingRow.children[6].textContent = sortG;
|
||||
editingRow.dataset.notice = document.getElementById('form-gastro-notice').value;
|
||||
editingRow.dataset.cardreg = document.getElementById('form-card-reg').value;
|
||||
}
|
||||
closeDrawer();
|
||||
return;
|
||||
}
|
||||
|
||||
/* 新增:需从医院库选择 */
|
||||
var value = document.getElementById('search-value').value;
|
||||
if(!value || !hospitalData[value]){ alert('请选择医院'); return; }
|
||||
var data = hospitalData[value];
|
||||
var isNormal = currentType === 'normal';
|
||||
var tbody = document.getElementById(isNormal ? 'normal-tbody' : 'gastro-tbody');
|
||||
var seq = tbody.querySelectorAll('tr').length + 1;
|
||||
var imgSrc = (document.querySelector('.hospital-img') || {}).getAttribute ? document.querySelector('.hospital-img').getAttribute('src') : '';
|
||||
|
||||
var tr = document.createElement('tr');
|
||||
if(isNormal){
|
||||
var hosTypeEl = document.querySelector('input[name="hos-type"]:checked');
|
||||
if(!hosTypeEl){ alert('请选择医院类型'); return; }
|
||||
var hosType = hosTypeEl.value;
|
||||
var sort = document.getElementById('form-sort-normal').value.trim() || String(seq);
|
||||
var oc = document.getElementById('switch-oc').classList.contains('on');
|
||||
var tr = document.createElement('tr');
|
||||
tr.innerHTML = '<td>' + seq + '</td>'
|
||||
+ '<td>' + data.name + '</td>'
|
||||
+ '<td>' + hosType + '</td>'
|
||||
+ '<td>' + data.address + '</td>'
|
||||
+ '<td><img class="hospital-img" src="' + imgSrc + '" alt="医院图片"></td>'
|
||||
+ '<td>' + data.intro + '</td>'
|
||||
+ '<td>' + (oc ? '是' : '否') + '</td>'
|
||||
+ '<td>' + sort + '</td>'
|
||||
+ '<td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td>';
|
||||
tbody.appendChild(tr);
|
||||
tr.innerHTML = buildNormalRow(data, hosTypeEl.value, document.getElementById('switch-oc').classList.contains('on'), sort);
|
||||
} else {
|
||||
var needCard = document.getElementById('switch-card').classList.contains('on');
|
||||
var sortG = document.getElementById('form-sort-gastro').value.trim() || String(seq);
|
||||
var tr2 = document.createElement('tr');
|
||||
tr2.innerHTML = '<td>' + seq + '</td>'
|
||||
+ '<td>' + data.name + '</td>'
|
||||
+ '<td>' + data.address + '</td>'
|
||||
+ '<td><img class="hospital-img" src="' + imgSrc + '" alt="医院图片"></td>'
|
||||
+ '<td>' + data.intro + '</td>'
|
||||
+ '<td>' + (needCard ? '是' : '否') + '</td>'
|
||||
+ '<td>' + sortG + '</td>'
|
||||
+ '<td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td>';
|
||||
tbody.appendChild(tr2);
|
||||
tr.innerHTML = buildGastroRow(data, needCard, sortG);
|
||||
tr.dataset.notice = document.getElementById('form-gastro-notice').value;
|
||||
tr.dataset.cardreg = document.getElementById('form-card-reg').value;
|
||||
}
|
||||
tbody.appendChild(tr);
|
||||
tr.children[0].textContent = seq;
|
||||
closeDrawer();
|
||||
}
|
||||
|
||||
/* 删除行 */
|
||||
function deleteRow(btn){
|
||||
if(!confirm('确认删除该医院?')) return;
|
||||
var tr = btn.closest('tr');
|
||||
var tbody = tr.parentElement;
|
||||
tr.remove();
|
||||
refreshSeq(tbody);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -124,6 +124,17 @@
|
||||
.rich-content li{margin:4px 0;}
|
||||
.rich-content h3{margin:10px 0 4px;font-size:15px;font-weight:600;}
|
||||
.rich-content img{max-width:100%;border-radius:4px;margin:6px 0;}
|
||||
/* 右侧抽屉 */
|
||||
.drawer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0);z-index:999;pointer-events:none;transition:background .3s;}
|
||||
.drawer-overlay.open{background:rgba(0,0,0,0.45);pointer-events:auto;}
|
||||
.drawer{position:fixed;top:0;right:-520px;bottom:0;width:520px;background:#fff;box-shadow:-2px 0 8px rgba(0,0,0,0.15);z-index:1000;transition:right .3s;display:flex;flex-direction:column;}
|
||||
.drawer.open{right:0;}
|
||||
.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
|
||||
.drawer__title{font-size:var(--font-lg);font-weight:600;}
|
||||
.drawer__close{width:32px;height:32px;border-radius:50%;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:18px;}
|
||||
.drawer__close:hover{background:#F5F5F5;}
|
||||
.drawer__body{flex:1;overflow-y:auto;padding:24px;}
|
||||
.drawer__footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--border);flex-shrink:0;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -259,20 +270,23 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 新增/编辑操作说明弹窗 -->
|
||||
<div class="modal-overlay" id="guide-modal" onclick="if(event.target===this)closeModal()">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title" id="guide-modal-title">新增操作说明</div>
|
||||
<button class="modal__close" onclick="closeModal()">✕</button>
|
||||
<!-- 新增/编辑操作说明抽屉 -->
|
||||
<div class="drawer-overlay" id="guide-modal-overlay" onclick="closeModal()"></div>
|
||||
<div class="drawer" id="guide-modal">
|
||||
<div class="drawer__header">
|
||||
<div class="drawer__title" id="guide-modal-title">新增操作说明</div>
|
||||
<button class="drawer__close" onclick="closeModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="drawer__body">
|
||||
<div class="form-item">
|
||||
<label class="form-item__label">讲解类型<span class="required">*</span></label>
|
||||
<div class="type-seg">
|
||||
<!-- 新增:类型切换 -->
|
||||
<div class="type-seg" id="type-seg">
|
||||
<div class="type-seg__item active" data-type="image" onclick="switchGuideType('image', this)">图文讲解</div>
|
||||
<div class="type-seg__item" data-type="video" onclick="switchGuideType('video', this)">视频讲解</div>
|
||||
</div>
|
||||
<!-- 编辑:纯展示当前类型 -->
|
||||
<div class="form-input" id="type-display" style="display:none;background:#F5F7FA;color:var(--text-secondary);"></div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label class="form-item__label">标题<span class="required">*</span></label>
|
||||
@@ -280,7 +294,7 @@
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label class="form-item__label">简介</label>
|
||||
<input class="form-input" id="form-desc" type="text" placeholder="请输入简介">
|
||||
<textarea class="form-textarea" id="form-desc" style="min-height:72px;" placeholder="请输入简介"></textarea>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<label class="form-item__label">排序</label>
|
||||
@@ -332,11 +346,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<div class="drawer__footer">
|
||||
<button class="btn btn-default" onclick="closeModal()">取消</button>
|
||||
<button class="btn btn-primary" onclick="saveGuide()">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 视频预览弹窗 -->
|
||||
@@ -384,9 +397,18 @@ function toggleSubgroup(header){
|
||||
/* 当前正在编辑的行(null 表示新增) */
|
||||
var editingRow = null;
|
||||
var formType = 'image';
|
||||
var typeLocked = false;
|
||||
|
||||
/* 编辑时纯展示类型、不允许更改;新增时显示切换控件 */
|
||||
function setTypeLock(locked){
|
||||
typeLocked = locked;
|
||||
document.getElementById('type-seg').style.display = locked ? 'none' : 'flex';
|
||||
document.getElementById('type-display').style.display = locked ? 'block' : 'none';
|
||||
}
|
||||
|
||||
/* 切换讲解类型 */
|
||||
function switchGuideType(type, el){
|
||||
if(typeLocked) return;
|
||||
formType = type;
|
||||
document.querySelectorAll('.type-seg__item').forEach(function(i){ i.classList.remove('active'); });
|
||||
el.classList.add('active');
|
||||
@@ -394,8 +416,11 @@ function switchGuideType(type, el){
|
||||
document.getElementById('video-fields').style.display = type === 'video' ? 'block' : 'none';
|
||||
}
|
||||
function setFormType(type){
|
||||
var el = document.querySelector('.type-seg__item[data-type="'+type+'"]');
|
||||
if(el) switchGuideType(type, el);
|
||||
formType = type;
|
||||
document.querySelectorAll('.type-seg__item').forEach(function(i){ i.classList.toggle('active', i.dataset.type === type); });
|
||||
document.getElementById('type-display').textContent = type === 'video' ? '视频讲解' : '图文讲解';
|
||||
document.getElementById('image-fields').style.display = type === 'image' ? 'block' : 'none';
|
||||
document.getElementById('video-fields').style.display = type === 'video' ? 'block' : 'none';
|
||||
}
|
||||
|
||||
/* 富文本编辑器命令 */
|
||||
@@ -409,7 +434,8 @@ function openAddModal(){
|
||||
editingRow = null;
|
||||
document.getElementById('guide-modal-title').textContent = '新增操作说明';
|
||||
resetForm();
|
||||
document.getElementById('guide-modal').classList.add('open');
|
||||
setTypeLock(false);
|
||||
openGuideDrawer();
|
||||
}
|
||||
|
||||
/* 打开编辑弹窗 */
|
||||
@@ -417,6 +443,7 @@ function editRow(btn){
|
||||
editingRow = btn.closest('tr');
|
||||
document.getElementById('guide-modal-title').textContent = '编辑操作说明';
|
||||
resetForm();
|
||||
setTypeLock(true);
|
||||
document.getElementById('form-title').value = editingRow.dataset.title || '';
|
||||
document.getElementById('form-desc').value = editingRow.dataset.desc || '';
|
||||
document.getElementById('form-sort').value = editingRow.dataset.sort || '';
|
||||
@@ -426,7 +453,7 @@ function editRow(btn){
|
||||
} else {
|
||||
setCoverPreview(editingRow.dataset.cover || '');
|
||||
}
|
||||
document.getElementById('guide-modal').classList.add('open');
|
||||
openGuideDrawer();
|
||||
}
|
||||
|
||||
/* 重置表单 */
|
||||
@@ -527,9 +554,14 @@ function saveGuide(){
|
||||
closeModal();
|
||||
}
|
||||
|
||||
/* 关闭弹窗 */
|
||||
/* 打开/关闭操作说明抽屉 */
|
||||
function openGuideDrawer(){
|
||||
document.getElementById('guide-modal-overlay').classList.add('open');
|
||||
document.getElementById('guide-modal').classList.add('open');
|
||||
}
|
||||
function closeModal(){
|
||||
document.getElementById('guide-modal').classList.remove('open');
|
||||
document.getElementById('guide-modal-overlay').classList.remove('open');
|
||||
}
|
||||
|
||||
/* 删除 */
|
||||
|
||||
@@ -137,6 +137,14 @@
|
||||
.base-table tbody tr:last-child td{border-bottom:none;}
|
||||
.base-input{height:32px;}
|
||||
.btn-sm{height:32px;padding:0 12px;font-size:var(--font-xs);}
|
||||
/* 只读字段(详情/查看态) */
|
||||
.form-input[readonly],.form-textarea[readonly]{background:#F5F7FA;color:var(--text-secondary);cursor:not-allowed;box-shadow:none;}
|
||||
.switch[aria-disabled="true"]{opacity:.5;cursor:not-allowed;}
|
||||
.ct-item input[type="checkbox"][disabled]{cursor:not-allowed;}
|
||||
.detail-item{display:flex;padding:8px 0;border-bottom:1px solid var(--border);font-size:var(--font-sm);}
|
||||
.detail-item:last-child{border-bottom:none;}
|
||||
.detail-label{width:88px;color:var(--text-secondary);flex-shrink:0;}
|
||||
.detail-value{color:var(--text-primary);}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -232,8 +240,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="report-tbody">
|
||||
<tr><td>常规体检报告模板</td><td>V1.2</td><td>适用于年度常规体检</td><td><span class="tag tag-green">有效</span></td><td>2025-12-01</td><td>2026-03-15</td><td><span class="link">模板下载</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;" onclick="openReportModal(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteReport(this)">删除</span></td></tr>
|
||||
<tr><td>胃肠镜检查报告模板</td><td>V1.0</td><td>适用于胃肠镜专项检查</td><td><span class="tag tag-green">有效</span></td><td>2026-01-10</td><td>2026-02-20</td><td><span class="link">模板下载</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;" onclick="openReportModal(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteReport(this)">删除</span></td></tr>
|
||||
<tr data-items="身高,体重,血压,视力,血常规,肝功能,肾功能,血脂四项,空腹血糖,腹部B超,甲状腺彩超,心电图,胸部X光" data-base="姓名:name:1|性别:gender:2|年龄:age:3|体检编号:examNo:4"><td>常规体检报告模板</td><td>V1.2</td><td>适用于年度常规体检</td><td><span class="tag tag-green">有效</span></td><td>2025-12-01</td><td>2026-03-15</td><td><span class="link">模板下载</span> <span class="link" style="margin-left:8px;" onclick="openDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openReportModal(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteReport(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -268,7 +275,7 @@
|
||||
<div class="form-item">
|
||||
<div class="form-label">是否有效</div>
|
||||
<div class="switch-row">
|
||||
<div class="switch on" id="switch-valid" onclick="this.classList.toggle('on')"></div>
|
||||
<div class="switch on" id="switch-valid" onclick="toggleValidSwitch()"></div>
|
||||
<span class="switch-label">开启后该模板可正常使用</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -304,7 +311,7 @@
|
||||
|
||||
<!-- 基础信息配置 -->
|
||||
<div class="tab-panel" id="tab-base" style="display:none;">
|
||||
<div class="base-toolbar">
|
||||
<div class="base-toolbar" id="base-toolbar">
|
||||
<button class="btn btn-default btn-sm" onclick="addBaseRow()">+ 新增</button>
|
||||
</div>
|
||||
<div class="base-table-wrap">
|
||||
@@ -316,8 +323,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeReportModal()">取消</button>
|
||||
<button class="btn btn-primary" onclick="saveReport()">保存</button>
|
||||
<button class="btn btn-default" id="report-cancel-btn" onclick="closeReportModal()">取消</button>
|
||||
<button class="btn btn-primary" id="report-save-btn" onclick="saveReport()">保存</button>
|
||||
<button class="btn btn-default" id="report-close-btn" style="display:none;" onclick="closeReportModal()">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -359,8 +367,38 @@ var expandedParents = new Set([0]);
|
||||
var activeLeaf = { p: 0, c: 0 };
|
||||
var editingReportRow = null;
|
||||
|
||||
/* 解析行上存储的配置:体检项 / 基础信息 */
|
||||
function parseRowItems(tr){
|
||||
return (tr.dataset.items || '').split(',').map(function(s){ return s.trim(); }).filter(Boolean);
|
||||
}
|
||||
function parseRowBase(tr){
|
||||
return (tr.dataset.base || '').split('|').map(function(s){ return s.trim(); }).filter(Boolean).map(function(row){
|
||||
var parts = row.split(':');
|
||||
return { name: parts[0] || '', code: parts[1] || '', order: parts[2] || '' };
|
||||
});
|
||||
}
|
||||
/* 采集当前基础信息配置表格的行 */
|
||||
function collectBase(){
|
||||
var rows = [];
|
||||
document.querySelectorAll('#base-tbody tr').forEach(function(tr){
|
||||
var cells = tr.children;
|
||||
if(cells.length < 3) return;
|
||||
rows.push({
|
||||
name: cellText(cells[0]),
|
||||
code: cellText(cells[1]),
|
||||
order: cellText(cells[2])
|
||||
});
|
||||
});
|
||||
return rows;
|
||||
}
|
||||
function cellText(td){
|
||||
var input = td.querySelector('input');
|
||||
return (input ? input.value : td.textContent).trim();
|
||||
}
|
||||
|
||||
function openReportModal(btn){
|
||||
editingReportRow = btn ? btn.closest('tr') : null;
|
||||
setFormMode(false);
|
||||
document.getElementById('report-modal-title').textContent = editingReportRow ? '编辑体检报告模板' : '新增体检报告模板';
|
||||
if(editingReportRow){
|
||||
var cells = editingReportRow.querySelectorAll('td');
|
||||
@@ -374,16 +412,17 @@ function openReportModal(btn){
|
||||
document.getElementById('report-remark').value = '';
|
||||
setValid(true);
|
||||
}
|
||||
selectedItems.clear();
|
||||
selectedItems = new Set(editingReportRow ? parseRowItems(editingReportRow) : []);
|
||||
expandedParents = new Set([0]);
|
||||
activeLeaf = { p: 0, c: 0 };
|
||||
resetBaseRows();
|
||||
if(editingReportRow){ renderEditableBase(parseRowBase(editingReportRow)); } else { resetBaseRows(); }
|
||||
switchTab('item', document.querySelector('.tab'));
|
||||
renderCategory();
|
||||
document.getElementById('report-modal').classList.add('open');
|
||||
}
|
||||
|
||||
function closeReportModal(){
|
||||
setFormMode(false);
|
||||
document.getElementById('report-modal').classList.remove('open');
|
||||
}
|
||||
|
||||
@@ -392,6 +431,52 @@ function setValid(on){
|
||||
if(on){ sw.classList.add('on'); } else { sw.classList.remove('on'); }
|
||||
}
|
||||
|
||||
/* 是否有效开关:详情只读态不响应 */
|
||||
function toggleValidSwitch(){
|
||||
if(formMode === 'detail') return;
|
||||
document.getElementById('switch-valid').classList.toggle('on');
|
||||
}
|
||||
|
||||
/* 表单只读模式(详情)与可编辑模式(新增/编辑)切换,复用同一弹窗 */
|
||||
var formMode = 'add';
|
||||
function setFormMode(mode){
|
||||
formMode = mode;
|
||||
var detail = mode === 'detail';
|
||||
document.getElementById('report-name').readOnly = detail;
|
||||
document.getElementById('report-version').readOnly = detail;
|
||||
document.getElementById('report-remark').readOnly = detail;
|
||||
var sw = document.getElementById('switch-valid');
|
||||
sw.setAttribute('aria-disabled', detail ? 'true' : 'false');
|
||||
document.getElementById('base-toolbar').style.display = detail ? 'none' : '';
|
||||
document.querySelectorAll('#ct-selected .ct-remove').forEach(function(el){ el.style.display = detail ? 'none' : ''; });
|
||||
document.querySelectorAll('#ct-items .ct-item input').forEach(function(cb){ cb.disabled = detail; });
|
||||
document.querySelectorAll('#base-tbody .link').forEach(function(el){ el.style.visibility = detail ? 'hidden' : ''; });
|
||||
document.getElementById('report-cancel-btn').style.display = detail ? 'none' : '';
|
||||
document.getElementById('report-save-btn').style.display = detail ? 'none' : '';
|
||||
document.getElementById('report-close-btn').style.display = detail ? '' : 'none';
|
||||
}
|
||||
|
||||
/* 详情:复用新增弹窗,填充数据并切为只读 */
|
||||
function openDetail(btn){
|
||||
var tr = btn.closest('tr');
|
||||
editingReportRow = null;
|
||||
setFormMode(false);
|
||||
document.getElementById('report-modal-title').textContent = '体检报告模板详情';
|
||||
var cells = tr.querySelectorAll('td');
|
||||
document.getElementById('report-name').value = cells[0].textContent.trim();
|
||||
document.getElementById('report-version').value = cells[1].textContent.trim();
|
||||
document.getElementById('report-remark').value = cells[2].textContent.trim();
|
||||
setValid(cells[3].textContent.trim() === '有效');
|
||||
selectedItems = new Set(parseRowItems(tr));
|
||||
expandedParents = new Set([0]);
|
||||
activeLeaf = { p: 0, c: 0 };
|
||||
renderReadonlyBase(parseRowBase(tr));
|
||||
switchTab('item', document.querySelector('.tab'));
|
||||
renderCategory();
|
||||
setFormMode('detail');
|
||||
document.getElementById('report-modal').classList.add('open');
|
||||
}
|
||||
|
||||
function switchTab(tab, el){
|
||||
document.querySelectorAll('.tab').forEach(function(t){ t.classList.remove('active'); });
|
||||
el.classList.add('active');
|
||||
@@ -431,10 +516,12 @@ function renderItems(){
|
||||
if(activeLeaf && reportCategoryTree[activeLeaf.p] && reportCategoryTree[activeLeaf.p].children[activeLeaf.c]){
|
||||
items = reportCategoryTree[activeLeaf.p].children[activeLeaf.c].items;
|
||||
}
|
||||
var detail = formMode === 'detail';
|
||||
document.getElementById('ct-items').innerHTML = items.length
|
||||
? items.map(function(it){
|
||||
var checked = selectedItems.has(it) ? ' checked' : '';
|
||||
return '<label class="ct-item"><input type="checkbox"' + checked + ' onchange="toggleItem(this)" value="' + it + '"><span>' + it + '</span></label>';
|
||||
var disabled = detail ? ' disabled' : '';
|
||||
return '<label class="ct-item"><input type="checkbox"' + checked + disabled + ' onchange="toggleItem(this)" value="' + it + '"><span>' + it + '</span></label>';
|
||||
}).join('')
|
||||
: '<div class="ct-empty">请选择分类</div>';
|
||||
renderSelected();
|
||||
@@ -445,9 +532,10 @@ function toggleItem(cb){
|
||||
}
|
||||
function renderSelected(){
|
||||
document.getElementById('ct-selected-count').textContent = selectedItems.size;
|
||||
var detail = formMode === 'detail';
|
||||
var arr = Array.from(selectedItems);
|
||||
document.getElementById('ct-selected').innerHTML = arr.length
|
||||
? arr.map(function(it){ return '<div class="ct-item ct-item--selected"><span>' + it + '</span><span class="ct-remove" onclick="removeSelectedItem(\'' + it + '\')">×</span></div>'; }).join('')
|
||||
? arr.map(function(it){ return '<div class="ct-item ct-item--selected"><span>' + it + '</span><span class="ct-remove" style="' + (detail ? 'display:none;' : '') + '" onclick="removeSelectedItem(\'' + it + '\')">×</span></div>'; }).join('')
|
||||
: '<div class="ct-empty">请选择项目</div>';
|
||||
}
|
||||
function removeSelectedItem(it){
|
||||
@@ -456,12 +544,35 @@ function removeSelectedItem(it){
|
||||
}
|
||||
|
||||
/* 基础信息配置:新增列表数据 */
|
||||
var DEFAULT_BASE_ROWS = [
|
||||
{ name: '姓名', code: 'name', order: '1' },
|
||||
{ name: '性别', code: 'gender', order: '2' }
|
||||
];
|
||||
function resetBaseRows(){
|
||||
document.getElementById('base-tbody').innerHTML =
|
||||
'<tr><td>姓名</td><td>name</td><td>1</td><td><span class="link" onclick="removeBaseRow(this)">删除</span></td></tr>'
|
||||
+ '<tr><td>性别</td><td>gender</td><td>2</td><td><span class="link" onclick="removeBaseRow(this)">删除</span></td></tr>';
|
||||
renderEditableBase(DEFAULT_BASE_ROWS);
|
||||
}
|
||||
/* 编辑态可编辑行(可输入、可删除) */
|
||||
function renderEditableBase(rows){
|
||||
var tbody = document.getElementById('base-tbody');
|
||||
tbody.innerHTML = rows.length ? rows.map(function(r){
|
||||
return '<tr>'
|
||||
+ '<td><input class="form-input base-input" placeholder="名称" value="' + r.name + '"></td>'
|
||||
+ '<td><input class="form-input base-input" placeholder="名称编码" value="' + r.code + '"></td>'
|
||||
+ '<td><input class="form-input base-input" type="number" placeholder="表头顺序" value="' + r.order + '"></td>'
|
||||
+ '<td><span class="link" onclick="removeBaseRow(this)">删除</span></td>'
|
||||
+ '</tr>';
|
||||
}).join('') : '<tr class="base-empty"><td colspan="4" style="text-align:center;color:var(--text-placeholder);">暂无数据,点击右上方“+ 新增”添加</td></tr>';
|
||||
}
|
||||
/* 详情态只读行 */
|
||||
function renderReadonlyBase(rows){
|
||||
var tbody = document.getElementById('base-tbody');
|
||||
tbody.innerHTML = rows.length ? rows.map(function(r){
|
||||
return '<tr><td>' + r.name + '</td><td>' + r.code + '</td><td>' + r.order + '</td><td>—</td></tr>';
|
||||
}).join('') : '<tr class="base-empty"><td colspan="4" style="text-align:center;color:var(--text-placeholder);">暂无数据</td></tr>';
|
||||
}
|
||||
function addBaseRow(){
|
||||
var empty = document.querySelector('#base-tbody .base-empty');
|
||||
if(empty) empty.remove();
|
||||
var tr = document.createElement('tr');
|
||||
tr.innerHTML = '<td><input class="form-input base-input" placeholder="名称"></td>'
|
||||
+ '<td><input class="form-input base-input" placeholder="名称编码"></td>'
|
||||
@@ -486,7 +597,9 @@ function saveReport(){
|
||||
tr.innerHTML = '<td>' + name + '</td><td>' + version + '</td><td>' + remark + '</td>'
|
||||
+ '<td><span class="tag ' + (valid ? 'tag-green' : 'tag-red') + '">' + (valid ? '有效' : '无效') + '</span></td>'
|
||||
+ '<td>' + today + '</td><td>' + today + '</td>'
|
||||
+ '<td><span class="link">模板下载</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;" onclick="openReportModal(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteReport(this)">删除</span></td>';
|
||||
+ '<td><span class="link">模板下载</span> <span class="link" style="margin-left:8px;" onclick="openDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openReportModal(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteReport(this)">删除</span></td>';
|
||||
tr.dataset.items = Array.from(selectedItems).join(',');
|
||||
tr.dataset.base = collectBase().map(function(r){ return r.name + ':' + r.code + ':' + r.order; }).join('|');
|
||||
if(!editingReportRow){
|
||||
document.getElementById('report-tbody').appendChild(tr);
|
||||
}
|
||||
|
||||
@@ -304,14 +304,12 @@
|
||||
<div class="form-label">是否重点指标</div>
|
||||
<div class="switch-row">
|
||||
<div class="switch on" id="switch-key" onclick="this.classList.toggle('on')"></div>
|
||||
<span class="switch-label">开启后作为重点指标</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label">是否有参考值</div>
|
||||
<div class="switch-row">
|
||||
<div class="switch on" id="switch-ref" onclick="this.classList.toggle('on')"></div>
|
||||
<span class="switch-label">开启后需配置参考值</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -202,9 +202,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="hospital-tbody">
|
||||
<tr><td>1</td><td>泾河医院</td><td>JH-XM001</td><td>身高测量</td><td>XM001(身高)</td><td>身高体重检测, 基础体检套餐</td><td>2026-03-10</td><td>2026-04-15</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>2</td><td>泾河医院</td><td>JH-XM002</td><td>体重测量</td><td>XM002(体重)</td><td>身高体重检测, 基础体检套餐</td><td>2026-03-10</td><td>2026-04-15</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>3</td><td>庆阳医院</td><td>QY-XM001</td><td>血压检测</td><td>XM004(血压)</td><td>内科常规, 深度体检套餐</td><td>2026-03-12</td><td>2026-04-20</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>1</td><td>泾河医院</td><td>JH-XM001</td><td>身高测量</td><td>XM001(身高)</td><td>身高体重检测, 基础体检套餐</td><td>2026-03-10</td><td>2026-04-15</td><td><span class="link" onclick="openEditHospitalItem(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteHospitalItem(this)">删除</span></td></tr>
|
||||
<tr><td>2</td><td>泾河医院</td><td>JH-XM002</td><td>体重测量</td><td>XM002(体重)</td><td>身高体重检测, 基础体检套餐</td><td>2026-03-10</td><td>2026-04-15</td><td><span class="link" onclick="openEditHospitalItem(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteHospitalItem(this)">删除</span></td></tr>
|
||||
<tr><td>3</td><td>庆阳医院</td><td>QY-XM001</td><td>血压检测</td><td>XM004(血压)</td><td>内科常规, 深度体检套餐</td><td>2026-03-12</td><td>2026-04-20</td><td><span class="link" onclick="openEditHospitalItem(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteHospitalItem(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -221,7 +221,7 @@
|
||||
<div class="modal-overlay" id="hospital-item-modal" onclick="if(event.target===this)closeHospitalItemModal()">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">新增医院体检项目</div>
|
||||
<div class="modal__title" id="hospital-item-modal-title">新增医院体检项目</div>
|
||||
<button class="modal__close" onclick="closeHospitalItemModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
@@ -285,13 +285,30 @@ function toggleSubgroup(header){
|
||||
if(sub)sub.classList.add('open');
|
||||
})();
|
||||
|
||||
/* ===== 医院体检项目新增 ===== */
|
||||
/* ===== 医院体检项目新增/编辑 ===== */
|
||||
var editingHospitalItemRow = null;
|
||||
var HOSPITAL_ITEM_ACTIONS = '<td><span class="link" onclick="openEditHospitalItem(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteHospitalItem(this)">删除</span></td>';
|
||||
|
||||
function openHospitalItemModal(){
|
||||
editingHospitalItemRow = null;
|
||||
document.getElementById('hospital-item-modal-title').textContent = '新增医院体检项目';
|
||||
document.getElementById('hospital-item-hospital').value = '';
|
||||
document.getElementById('hospital-item-name').value = '';
|
||||
document.getElementById('hospital-item-code').value = '';
|
||||
document.getElementById('hospital-item-modal').classList.add('open');
|
||||
}
|
||||
|
||||
/* 编辑:按行回填医院/编码/名称 */
|
||||
function openEditHospitalItem(btn){
|
||||
editingHospitalItemRow = btn.closest('tr');
|
||||
var c = editingHospitalItemRow.children;
|
||||
document.getElementById('hospital-item-modal-title').textContent = '编辑医院体检项目';
|
||||
document.getElementById('hospital-item-hospital').value = c[1].textContent.trim();
|
||||
document.getElementById('hospital-item-code').value = c[2].textContent.trim();
|
||||
document.getElementById('hospital-item-name').value = c[3].textContent.trim();
|
||||
document.getElementById('hospital-item-modal').classList.add('open');
|
||||
}
|
||||
|
||||
function closeHospitalItemModal(){
|
||||
document.getElementById('hospital-item-modal').classList.remove('open');
|
||||
}
|
||||
@@ -311,13 +328,31 @@ function saveHospitalItem(){
|
||||
if(!name){ alert('请输入体检项目名称'); return; }
|
||||
if(!code){ alert('请输入体检项目编码'); return; }
|
||||
var today = todayStr();
|
||||
var tr = document.createElement('tr');
|
||||
tr.innerHTML = '<td></td><td>' + hospital + '</td><td>' + code + '</td><td>' + name + '</td><td>-</td><td>-</td><td>' + today + '</td><td>' + today + '</td>'
|
||||
+ '<td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td>';
|
||||
document.getElementById('hospital-tbody').appendChild(tr);
|
||||
renumberHospitalRows();
|
||||
var tbody = document.getElementById('hospital-tbody');
|
||||
if(editingHospitalItemRow){
|
||||
var c = editingHospitalItemRow.children;
|
||||
c[1].textContent = hospital;
|
||||
c[2].textContent = code;
|
||||
c[3].textContent = name;
|
||||
c[7].textContent = today;
|
||||
} else {
|
||||
var tr = document.createElement('tr');
|
||||
tr.innerHTML = '<td></td><td>' + hospital + '</td><td>' + code + '</td><td>' + name + '</td><td>-</td><td>-</td><td>' + today + '</td><td>' + today + '</td>'
|
||||
+ HOSPITAL_ITEM_ACTIONS;
|
||||
tbody.appendChild(tr);
|
||||
renumberHospitalRows();
|
||||
}
|
||||
closeHospitalItemModal();
|
||||
}
|
||||
|
||||
/* 删除单行并重排序号 */
|
||||
function deleteHospitalItem(btn){
|
||||
if(!confirm('确认删除该医院体检项目?')) return;
|
||||
var tr = btn.closest('tr');
|
||||
var tbody = tr.parentElement;
|
||||
tr.remove();
|
||||
renumberHospitalRows();
|
||||
}
|
||||
function todayStr(){
|
||||
var d = new Date();
|
||||
return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
|
||||
|
||||
@@ -135,6 +135,14 @@
|
||||
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:94px;">
|
||||
<option selected>2026</option>
|
||||
<option>2025</option>
|
||||
<option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>业务模块:</label>
|
||||
<select class="filter-select">
|
||||
@@ -155,14 +163,6 @@
|
||||
<option>缺失字段</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年份选择:</label>
|
||||
<select class="filter-select" style="min-width:94px;">
|
||||
<option selected>2026</option>
|
||||
<option>2025</option>
|
||||
<option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
|
||||
@@ -143,21 +143,13 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>年份选择:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:94px;">
|
||||
<option selected>2026</option>
|
||||
<option>2025</option>
|
||||
<option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>异常等级:</label>
|
||||
<select class="filter-select">
|
||||
<option>全部</option>
|
||||
<option>危急值</option>
|
||||
<option>异常值</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
@@ -174,6 +166,14 @@
|
||||
<span style="color:var(--text-secondary);font-size:var(--font-sm);">至</span>
|
||||
<input class="filter-input" type="date" style="min-width:140px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>异常等级:</label>
|
||||
<select class="filter-select">
|
||||
<option>全部</option>
|
||||
<option>危急值</option>
|
||||
<option>异常值</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
|
||||
@@ -176,21 +176,45 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:130px;min-width:unset;">
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2026</option><option>2025</option><option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:180px;min-width:unset;">
|
||||
<label>单位部门:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择单位部门</option><option>公司机关</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</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>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:130px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>员工编号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:140px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位部门:</label>
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:180px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select">
|
||||
<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">
|
||||
<option>请选择年龄范围</option><option>年龄<35</option><option>35≤年龄<40</option><option>40≤年龄<45</option><option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -205,30 +229,12 @@
|
||||
<option>请选择</option><option>是</option><option>否</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择性别</option><option>男</option><option>女</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄区间:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择年龄区间</option><option>35岁以下</option><option>35至44岁</option><option>45岁及以上</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>防癌项:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择防癌项</option><option>Septin9</option><option>CA724</option><option>两项都有</option>
|
||||
</select>
|
||||
</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">
|
||||
@@ -236,15 +242,9 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<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 selected>2026</option><option>2025</option><option>2024</option>
|
||||
<option>请选择预约状态</option><option>未预约</option><option>已预约</option><option>已取消预约</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
@@ -279,7 +279,7 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="2" style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></th><th rowspan="2">姓名</th><th rowspan="2">性别</th><th rowspan="2">年龄</th><th rowspan="2">年龄区间</th><th rowspan="2">身份证号</th><th rowspan="2">单位</th><th rowspan="2">部门</th><th rowspan="2">机构分类</th><th rowspan="2">员工编号</th><th rowspan="2">体检编码</th><th rowspan="2">用工形式</th><th rowspan="2">婚姻状态</th><th rowspan="2">体检类型</th><th rowspan="2">防癌项</th><th rowspan="2">是否上市员工</th><th rowspan="2">体检医院</th><th rowspan="2">体检预约信息</th><th rowspan="2">体检总费用</th><th colspan="4" style="text-align:center;">体检实际费用</th><th rowspan="2">预约状态</th><th rowspan="2">预约日期</th><th rowspan="2">体检状态</th><th rowspan="2">体检日期</th><th rowspan="2">体检年度</th><th rowspan="2">体检计划</th><th rowspan="2">操作</th>
|
||||
<th rowspan="2" style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></th><th rowspan="2">姓名</th><th rowspan="2">性别</th><th rowspan="2">年龄</th><th rowspan="2">年龄范围</th><th rowspan="2">身份证号</th><th rowspan="2">单位</th><th rowspan="2">部门</th><th rowspan="2">机构分类</th><th rowspan="2">员工编号</th><th rowspan="2">体检编码</th><th rowspan="2">用工形式</th><th rowspan="2">婚姻状态</th><th rowspan="2">体检类型</th><th rowspan="2">防癌项</th><th rowspan="2">是否上市员工</th><th rowspan="2">体检医院</th><th rowspan="2">体检预约信息</th><th rowspan="2">体检总费用</th><th colspan="4" style="text-align:center;">体检实际费用</th><th rowspan="2">预约状态</th><th rowspan="2">预约日期</th><th rowspan="2">体检状态</th><th rowspan="2">体检日期</th><th rowspan="2">体检年份</th><th rowspan="2">体检计划</th><th rowspan="2">操作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>必检费用</th><th>选检费用</th><th>妇科费用</th><th>防癌筛查费用</th>
|
||||
@@ -287,27 +287,27 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>王旭</td><td>男</td><td>41</td><td>35至44岁</td><td>430626198502560029</td><td>公司机关</td><td>办公室</td><td>子公司</td><td>342423</td><td>80038237</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>-</td><td>否</td><td>延安医院</td><td>已成功预约并更新项目</td><td class="fee-total">¥2,380.00</td>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>王旭</td><td>男</td><td>41</td><td>40≤年龄<45</td><td>430626198502560029</td><td>公司机关</td><td>办公室</td><td>子公司</td><td>342423</td><td>80038237</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>-</td><td>否</td><td>延安医院</td><td>已成功预约并更新项目</td><td class="fee-total">¥2,380.00</td>
|
||||
<td class="fee-sub">¥1,200.00</td><td class="fee-sub">¥680.00</td><td class="fee-sub">-</td><td class="fee-sub">¥500.00</td>
|
||||
<td><span class="tag tag-green">已预约</span></td><td>2026-03-10</td><td><span class="tag tag-blue">已体检</span></td><td>2026-03-12</td><td>2026</td><td>2026年度胃肠镜专项体检</td><td><span class="link">详情</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>张武</td><td>男</td><td>38</td><td>35至44岁</td><td>430626198806120037</td><td>公司机关</td><td>办公室</td><td>子公司</td><td>324321</td><td>80037100</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>Septin9</td><td>否</td><td>延安医院</td><td>体检预约成功</td><td class="fee-total">¥1,860.00</td>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>张武</td><td>男</td><td>38</td><td>35≤年龄<40</td><td>430626198806120037</td><td>公司机关</td><td>办公室</td><td>子公司</td><td>324321</td><td>80037100</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>Septin9</td><td>否</td><td>延安医院</td><td>体检预约成功</td><td class="fee-total">¥1,860.00</td>
|
||||
<td class="fee-sub">¥1,100.00</td><td class="fee-sub">¥260.00</td><td class="fee-sub">-</td><td class="fee-sub">¥500.00</td>
|
||||
<td><span class="tag tag-green">已预约</span></td><td>2026-03-10</td><td><span class="tag tag-blue">已体检</span></td><td>2026-03-11</td><td>2026</td><td>2026年度职工常规体检</td><td><span class="link">详情</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>李明</td><td>男</td><td>36</td><td>35至44岁</td><td>610402199003150045</td><td>第一采油厂</td><td>生产一队</td><td>三产公司</td><td>456789</td><td>80036211</td><td>劳务派遣</td><td>未婚</td><td>未婚体检</td><td>-</td><td>否</td><td>泾河医院</td><td>体检预约成功</td><td class="fee-total">¥1,560.00</td>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>李明</td><td>男</td><td>36</td><td>35≤年龄<40</td><td>610402199003150045</td><td>第一采油厂</td><td>生产一队</td><td>三产公司</td><td>456789</td><td>80036211</td><td>劳务派遣</td><td>未婚</td><td>未婚体检</td><td>-</td><td>否</td><td>泾河医院</td><td>体检预约成功</td><td class="fee-total">¥1,560.00</td>
|
||||
<td class="fee-sub">¥1,100.00</td><td class="fee-sub">¥460.00</td><td class="fee-sub">-</td><td class="fee-sub">-</td>
|
||||
<td><span class="tag tag-green">已预约</span></td><td>2026-03-15</td><td><span class="tag tag-blue">体检中</span></td><td>2026-03-16</td><td>2026</td><td>2026年度职工常规体检</td><td><span class="link">详情</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>赵芳</td><td>女</td><td>45</td><td>45岁及以上</td><td>610402198109230028</td><td>第二采油厂</td><td>地质研究所</td><td>子公司</td><td>512336</td><td>80035102</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>两项都有</td><td>是</td><td>-</td><td>-</td><td class="fee-total">¥1,920.00</td>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>赵芳</td><td>女</td><td>45</td><td>年龄≥45</td><td>610402198109230028</td><td>第二采油厂</td><td>地质研究所</td><td>子公司</td><td>512336</td><td>80035102</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>两项都有</td><td>是</td><td>-</td><td>-</td><td class="fee-total">¥1,920.00</td>
|
||||
<td class="fee-sub">¥1,100.00</td><td class="fee-sub">¥320.00</td><td class="fee-sub">¥350.00</td><td class="fee-sub">¥150.00</td>
|
||||
<td><span class="tag tag-orange">未预约</span></td><td>-</td><td><span class="tag tag-orange">未体检</span></td><td>-</td><td>2026</td><td>2026年度职工常规体检</td><td><span class="link">详情</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>陈强</td><td>男</td><td>52</td><td>45岁及以上</td><td>610402197407080011</td><td>第三采油厂</td><td>集输大队</td><td>三产公司</td><td>601178</td><td>80034065</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>CA724</td><td>否</td><td>市中心医院</td><td>已取消预约</td><td class="fee-total">¥2,380.00</td>
|
||||
<td class="row-check"><input type="checkbox" class="row-checkbox"></td><td>陈强</td><td>男</td><td>52</td><td>年龄≥45</td><td>610402197407080011</td><td>第三采油厂</td><td>集输大队</td><td>三产公司</td><td>601178</td><td>80034065</td><td>正式合同工</td><td>已婚</td><td>已婚体检</td><td>CA724</td><td>否</td><td>市中心医院</td><td>已取消预约</td><td class="fee-total">¥2,380.00</td>
|
||||
<td class="fee-sub">¥1,200.00</td><td class="fee-sub">¥680.00</td><td class="fee-sub">-</td><td class="fee-sub">¥500.00</td>
|
||||
<td><span class="tag tag-red">已取消预约</span></td><td>2026-03-08</td><td><span class="tag tag-orange">未体检</span></td><td>-</td><td>2026</td><td>2026年度胃肠镜专项体检</td><td><span class="link">详情</span></td>
|
||||
</tr>
|
||||
@@ -343,7 +343,7 @@
|
||||
<div class="detail-item"><label>员工编号:</label><span data-f="empNo">342423</span></div>
|
||||
<div class="detail-item"><label>性别:</label><span data-f="gender">男</span></div>
|
||||
<div class="detail-item"><label>年龄:</label><span data-f="age">41</span></div>
|
||||
<div class="detail-item"><label>年龄区间:</label><span data-f="ageRange">35至44岁</span></div>
|
||||
<div class="detail-item"><label>年龄范围:</label><span data-f="ageRange">40≤年龄<45</span></div>
|
||||
<div class="detail-item detail-item--full"><label>身份证号:</label><span data-f="idNo">430626198502560029</span></div>
|
||||
<div class="detail-item"><label>单位:</label><span data-f="unit">公司机关</span></div>
|
||||
<div class="detail-item"><label>部门:</label><span data-f="dept">办公室</span></div>
|
||||
@@ -365,7 +365,7 @@
|
||||
<div class="detail-item"><label>体检状态:</label><span><span class="tag tag-blue" data-f="examTag">已体检</span></span></div>
|
||||
<div class="detail-item"><label>体检医院:</label><span data-f="hospital">延安医院</span></div>
|
||||
<div class="detail-item"><label>体检日期:</label><span data-f="examDate">2026-03-12</span></div>
|
||||
<div class="detail-item"><label>体检年度:</label><span data-f="year">2026</span></div>
|
||||
<div class="detail-item"><label>体检年份:</label><span data-f="year">2026</span></div>
|
||||
<div class="detail-item detail-item--full"><label>体检计划:</label><span data-f="plan">2026年度胃肠镜专项体检</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2026</option><option>2025</option><option>2024</option>
|
||||
</select>
|
||||
@@ -185,6 +185,12 @@
|
||||
<option>请选择</option><option>公司机关</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</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>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:130px;min-width:unset;">
|
||||
@@ -197,12 +203,6 @@
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:180px;min-width:unset;">
|
||||
</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">
|
||||
@@ -210,9 +210,9 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<label>预约状态:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>延安医院</option><option>泾河医院</option><option>市中心医院</option>
|
||||
<option>请选择</option><option>未预约</option><option>已预约</option><option>已取消预约</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
@@ -251,7 +251,7 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></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>
|
||||
<th style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></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>
|
||||
@@ -346,7 +346,7 @@
|
||||
<div class="detail-item"><label>体检状态:</label><span><span class="tag tag-green" data-f="examTag">已出报告</span></span></div>
|
||||
<div class="detail-item"><label>体检医院:</label><span data-f="hospital">延安医院</span></div>
|
||||
<div class="detail-item"><label>体检日期:</label><span data-f="examDate">2026-03-12</span></div>
|
||||
<div class="detail-item"><label>体检年度:</label><span data-f="year">2026</span></div>
|
||||
<div class="detail-item"><label>体检年份:</label><span data-f="year">2026</span></div>
|
||||
<div class="detail-item detail-item--full"><label>体检计划:</label><span data-f="plan">2026年度胃肠镜专项体检</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2026</option><option>2025</option><option>2024</option>
|
||||
</select>
|
||||
@@ -165,6 +165,12 @@
|
||||
<option>请选择</option><option>2026年度职工常规体检</option><option>2026年度胃肠镜专项体检</option>
|
||||
</select>
|
||||
</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>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:130px;min-width:unset;">
|
||||
@@ -183,12 +189,6 @@
|
||||
<option>请选择</option><option>未预约</option><option>已预约</option><option>已取消预约</option><option>已体检</option><option>已出报告</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>延安医院</option><option>泾河医院</option><option>市中心医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4" stroke="currentColor" stroke-width="1.4"/><path d="M10 10l2.5 2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
查询
|
||||
@@ -222,7 +222,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" class="checkbox" id="checkAll"></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><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>是否有哮喘</th><th>胸部是否检查</th><th>血液是否检查</th><th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:100px;">
|
||||
<option>2026</option><option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
@@ -177,6 +177,12 @@
|
||||
<option>请选择</option><option>公司机关</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</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>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="width:130px;min-width:unset;">
|
||||
@@ -207,12 +213,6 @@
|
||||
<span style="color:var(--text-secondary);">至</span>
|
||||
<input class="filter-input" type="date" style="width:150px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>延安医院</option><option>市中心医院</option><option>矿区总医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4" stroke="currentColor" stroke-width="1.4"/><path d="M10 10l2.5 2.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
查询
|
||||
@@ -243,7 +243,7 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></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 style="min-width:36px;"><input type="checkbox" id="checkAll" title="全选"></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>
|
||||
|
||||
@@ -166,37 +166,11 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:130px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>员工编号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入员工编号" style="width:140px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:180px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预约状态:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择预约状态</option><option>未预约</option><option>已预约</option><option>已取消预约</option>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:100px;">
|
||||
<option>2026</option><option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预约日期:</label>
|
||||
<input class="filter-input" type="date" style="width:150px;min-width:unset;">
|
||||
</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>
|
||||
<input class="filter-input" type="date" style="width:150px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
@@ -216,15 +190,41 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:100px;">
|
||||
<option>2026</option><option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:130px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>员工编号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入员工编号" style="width:140px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:180px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检编码:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入体检编码" style="width:150px;min-width:unset;">
|
||||
</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>未体检</option><option>体检中</option><option>已体检</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预约日期:</label>
|
||||
<input class="filter-input" type="date" style="width:150px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检日期:</label>
|
||||
<input class="filter-input" type="date" style="width:150px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>前置机构体检状态:</label>
|
||||
<select class="filter-select">
|
||||
|
||||
@@ -192,26 +192,10 @@
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" id="f-name" placeholder="请输入姓名">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" id="f-idcard" placeholder="请输入身份证号">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>勾选状态:</label>
|
||||
<select class="filter-select placeholder" id="f-status" onchange="this.classList.toggle('placeholder',!this.value)">
|
||||
<option value="">请选择勾选状态</option>
|
||||
<option value="部分勾选">部分勾选</option>
|
||||
<option value="全部勾选">全部勾选</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<span class="year-wrap">
|
||||
<input class="filter-input" type="text" id="f-year" placeholder="请选择年份" value="2025">
|
||||
<input class="filter-input" type="text" id="f-year" placeholder="请选择体检年份" value="2025">
|
||||
<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 1.2v2.2M9.5 1.2v2.2" stroke="#999" stroke-width="1.2" stroke-linecap="round"/></svg>
|
||||
</span>
|
||||
</div>
|
||||
@@ -233,6 +217,22 @@
|
||||
<option value="">请选择医院名称</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" id="f-name" placeholder="请输入姓名">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" id="f-idcard" placeholder="请输入身份证号">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>勾选状态:</label>
|
||||
<select class="filter-select placeholder" id="f-status" onchange="this.classList.toggle('placeholder',!this.value)">
|
||||
<option value="">请选择勾选状态</option>
|
||||
<option value="部分勾选">部分勾选</option>
|
||||
<option value="全部勾选">全部勾选</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="margin-left:auto;display:flex;gap:12px;">
|
||||
<button class="btn btn-primary" onclick="doQuery()">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4.5" stroke="#fff" stroke-width="1.4"/><path d="M9.5 9.5l3 3" stroke="#fff" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
|
||||
@@ -172,18 +172,18 @@
|
||||
<option>2024</option><option>2025</option><option selected>2026</option><option>2027</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>延安医院</option><option>宁夏宝石花</option><option>CQ总医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>延安医院</option><option>宁夏宝石花</option><option>CQ总医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
|
||||
@@ -202,6 +202,12 @@
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select placeholder" id="f-hospital" onchange="this.classList.toggle('placeholder',!this.value)">
|
||||
<option value="">请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>结论描述:</label>
|
||||
<input class="filter-input" type="text" id="f-desc" placeholder="请输入结论描述">
|
||||
@@ -214,12 +220,6 @@
|
||||
<option value="未审核">未审核</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select placeholder" id="f-hospital" onchange="this.classList.toggle('placeholder',!this.value)">
|
||||
<option value="">请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="margin-left:auto;display:flex;gap:12px;">
|
||||
<button class="btn btn-primary" onclick="doQuery()">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4.5" stroke="#fff" stroke-width="1.4"/><path d="M9.5 9.5l3 3" stroke="#fff" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
|
||||
@@ -173,18 +173,6 @@
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select" id="f-unit" onchange="onUnitChange()">
|
||||
<option value="">请选择单位</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>部门:</label>
|
||||
<select class="filter-select" id="f-dept" onchange="state.dept=this.value;state.page=1;renderTable();">
|
||||
<option value="">请选择部门</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<div class="year-picker">
|
||||
@@ -197,6 +185,18 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select" id="f-unit" onchange="onUnitChange()">
|
||||
<option value="">请选择单位</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>部门:</label>
|
||||
<select class="filter-select" id="f-dept" onchange="state.dept=this.value;state.page=1;renderTable();">
|
||||
<option value="">请选择部门</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="margin-left:auto;display:flex;gap:12px;">
|
||||
<button class="btn btn-primary" onclick="doQuery()">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4.5" stroke="#fff" stroke-width="1.4"/><path d="M9.5 9.5l3 3" stroke="#fff" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
|
||||
@@ -173,14 +173,6 @@
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:200px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:200px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位部门:</label>
|
||||
<select class="filter-select"><option>请选择单位部门</option></select>
|
||||
@@ -189,6 +181,14 @@
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select"><option>请选择医院</option></select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="width:200px;min-width:unset;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="width:200px;min-width:unset;">
|
||||
</div>
|
||||
<button class="btn btn-primary">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4.5" stroke="currentColor" stroke-width="1.4"/><path d="M9.5 9.5L12 12" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
查询
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<div class="year-picker">
|
||||
<input type="text" id="yearInput" value="" placeholder="请选择年份" readonly onclick="toggleYearPop(event)">
|
||||
<input type="text" id="yearInput" value="" placeholder="请选择体检年份" readonly onclick="toggleYearPop(event)">
|
||||
<span class="year-picker__icon"><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="currentColor" stroke-width="1.2"/><path d="M1.5 5.5h11M4.5 1v3M9.5 1v3" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/></svg></span>
|
||||
<div class="year-picker__dropdown" id="yearPop"></div>
|
||||
</div>
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>年份选择:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
<option>2026</option><option>2025</option><option>2024</option>
|
||||
</select>
|
||||
|
||||
@@ -282,6 +282,13 @@
|
||||
</optgroup>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<select class="filter-select filter-placeholder" id="f-hospital">
|
||||
<option value="">请选择体检医院</option>
|
||||
<option>唐都医院</option><option>延安医院</option><option>西京医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" id="f-name" type="text" placeholder="请输入姓名">
|
||||
@@ -294,13 +301,6 @@
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" id="f-idcard" type="text" placeholder="请输入身份证号" style="min-width:230px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<select class="filter-select filter-placeholder" id="f-hospital">
|
||||
<option value="">请选择体检医院</option>
|
||||
<option>唐都医院</option><option>延安医院</option><option>西京医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-actions">
|
||||
<button class="btn btn-primary" onclick="doQuery()">
|
||||
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><circle cx="6" cy="6" r="4.5" stroke="currentColor" stroke-width="1.4"/><path d="M9.5 9.5l3 3" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
|
||||
@@ -189,13 +189,20 @@
|
||||
<main class="main">
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:110px;">
|
||||
<option>2026</option>
|
||||
<option>2025</option>
|
||||
<option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预选计划名称:</label>
|
||||
<select class="filter-select" style="min-width:180px;">
|
||||
<option>请选择</option>
|
||||
<option>2026年度胃肠镜预选</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位部门:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
@@ -207,13 +214,6 @@
|
||||
<option>采油六厂-地质所</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预选计划名称:</label>
|
||||
<select class="filter-select" style="min-width:180px;">
|
||||
<option>请选择</option>
|
||||
<option>2026年度胃肠镜预选</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>预选医院:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -189,22 +189,13 @@
|
||||
<main class="main">
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:110px;">
|
||||
<option>2026</option>
|
||||
<option>2025</option>
|
||||
<option>2024</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择</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:180px;">
|
||||
@@ -217,6 +208,15 @@
|
||||
<option>无效</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择</option>
|
||||
<option>采油四厂</option>
|
||||
<option>采油五厂</option>
|
||||
<option>采油六厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
@@ -233,7 +233,7 @@
|
||||
<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><th>预选结束日期</th><th>创建日期</th><th>有效标志</th><th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -270,8 +270,8 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 体检年度</div>
|
||||
<input class="form-input" id="form-year" type="text" placeholder="请输入体检年度" value="2026">
|
||||
<div class="form-label"><span class="required">*</span> 体检年份</div>
|
||||
<input class="form-input" id="form-year" type="text" placeholder="请输入体检年份" value="2026">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 预选计划名称</div>
|
||||
@@ -347,7 +347,7 @@ function saveEditModal(){
|
||||
var end = document.getElementById('form-end').value;
|
||||
var valid = document.getElementById('form-valid').value;
|
||||
if(!unit.value){ alert('请选择单位'); unit.focus(); return; }
|
||||
if(!/^\d{4}$/.test(year)){ alert('请输入 4 位体检年度'); document.getElementById('form-year').focus(); return; }
|
||||
if(!/^\d{4}$/.test(year)){ alert('请输入 4 位体检年份'); document.getElementById('form-year').focus(); return; }
|
||||
if(!name){ alert('请输入预选计划名称'); document.getElementById('form-name').focus(); return; }
|
||||
if(!start){ alert('请选择预选开始日期'); return; }
|
||||
if(!end){ alert('请选择预选结束日期'); return; }
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
<div id="panel-dept">
|
||||
<div class="filter-bar" style="border-radius:0 0 var(--radius-md) var(--radius-md);margin-bottom:16px;">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:110px;">
|
||||
<option>2026</option>
|
||||
<option>2025</option>
|
||||
@@ -246,7 +246,7 @@
|
||||
<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>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -270,7 +270,7 @@
|
||||
<div id="panel-hospital" style="display:none;">
|
||||
<div class="filter-bar" style="border-radius:0 0 var(--radius-md) var(--radius-md);margin-bottom:16px;">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:110px;">
|
||||
<option>2026</option>
|
||||
<option>2025</option>
|
||||
@@ -312,7 +312,7 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>预选医院</th><th>体检年度</th><th>单位</th><th>预选人数</th>
|
||||
<th>预选医院</th><th>体检年份</th><th>单位</th><th>预选人数</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -139,6 +139,12 @@
|
||||
.form-input:disabled{background:#F5F5F5;color:var(--text-secondary);cursor:not-allowed;}
|
||||
.form-select:disabled{background:#F5F5F5;color:var(--text-secondary);cursor:not-allowed;}
|
||||
.copy-tip{margin-top:4px;font-size:var(--font-xs);color:var(--text-placeholder);line-height:1.6;background:#F5F7FA;border-radius:var(--radius-sm);padding:10px 12px;}
|
||||
/* 详情只读展示 */
|
||||
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px;}
|
||||
.detail-item{display:flex;flex-direction:column;gap:4px;}
|
||||
.detail-item__label{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.detail-item__value{font-size:var(--font-base);color:var(--text-primary);font-weight:500;}
|
||||
.detail-item--full{grid-column:1 / -1;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -244,21 +250,21 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2025</option><option>2024</option><option>2026</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>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>泾河医院</option><option>庆阳医院</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>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
@@ -268,7 +274,7 @@
|
||||
<div class="filter-item">
|
||||
<label>年龄区间:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>35岁以下</option><option>35-45岁</option><option>45岁及以上</option>
|
||||
<option>请选择</option><option>年龄<35</option><option>35≤年龄<40</option><option>40≤年龄<45</option><option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
@@ -290,13 +296,13 @@
|
||||
<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><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>2025</td><td>45岁以上男性标准套餐</td><td>男</td><td>45岁及以上</td><td>固定减免</td><td>200.00</td><td>—</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>庆阳医院</td><td>2025</td><td>35岁以下女性标准套餐</td><td>女</td><td>35岁以下</td><td>百分比折扣</td><td>—</td><td>85</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>延安医院</td><td>2025</td><td>35-45岁通用套餐</td><td>通用</td><td>35-45岁</td><td>固定减免</td><td>150.00</td><td>—</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>泾河医院</td><td>2025</td><td>45岁以上男性标准套餐</td><td>男</td><td>45岁及以上</td><td>数值</td><td>200.00</td><td>—</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>庆阳医院</td><td>2025</td><td>35岁以下女性标准套餐</td><td>女</td><td>35岁以下</td><td>百分比</td><td>—</td><td>85</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>延安医院</td><td>2025</td><td>35-45岁通用套餐</td><td>通用</td><td>35-45岁</td><td>数值</td><td>150.00</td><td>—</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -383,7 +389,7 @@
|
||||
|
||||
<div class="cancer-fee" id="cancer-fee-box" style="display:none;">
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 防癌筛查默认费用(元)</div>
|
||||
<div class="form-label">防癌筛查默认费用(元)</div>
|
||||
<input class="form-input" id="cancer-fee-input" type="number" min="0" step="0.01" placeholder="请输入防癌筛查默认费用">
|
||||
</div>
|
||||
</div>
|
||||
@@ -482,6 +488,35 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 组合模板详情弹窗 -->
|
||||
<div class="modal-overlay" id="detail-modal-overlay" onclick="if(event.target===this)closeDetailModal()">
|
||||
<div class="modal" style="width:720px;">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">组合模板详情</div>
|
||||
<button class="modal__close" onclick="closeDetailModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="detail-grid">
|
||||
<div class="detail-item"><span class="detail-item__label">医院名称</span><span class="detail-item__value" id="d-hospital">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">体检年份</span><span class="detail-item__value" id="d-year">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">组合模板名称</span><span class="detail-item__value" id="d-name">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">性别</span><span class="detail-item__value" id="d-gender">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">年龄范围</span><span class="detail-item__value" id="d-age">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">女性专项费用(元)</span><span class="detail-item__value" id="d-female-fee">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">折扣类型</span><span class="detail-item__value" id="d-discount-type">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">折扣金额</span><span class="detail-item__value" id="d-discount">—</span></div>
|
||||
</div>
|
||||
<div class="tab-box" style="margin-top:20px;">
|
||||
<div class="tab-nav" id="detail-tab-nav"></div>
|
||||
<div id="detail-tab-panels"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeDetailModal()">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 侧边栏展开/折叠交互 */
|
||||
function toggleSubgroup(header){
|
||||
@@ -581,6 +616,11 @@ function createSearchSelect(data, opts){
|
||||
return {
|
||||
container: container,
|
||||
getValue: function(){ return hidden.value; },
|
||||
setValue: function(label){
|
||||
var idx = data.findIndex(function(it){ return getLabel(it) === label; });
|
||||
if(idx !== -1){ hidden.value = idx; input.value = label; container.classList.add('has-value'); }
|
||||
else { this.clear(); }
|
||||
},
|
||||
clear: function(){ input.value=''; hidden.value=''; container.classList.remove('has-value'); dropdown.classList.remove('show'); }
|
||||
};
|
||||
}
|
||||
@@ -592,7 +632,41 @@ var hospitalSelect = createSearchSelect(hospitalData, {
|
||||
});
|
||||
document.getElementById('tpl-hospital-select').appendChild(hospitalSelect.container);
|
||||
|
||||
/* 抽屉状态:'add' 新增 / 'edit' 编辑;editTr 记录被编辑的行 */
|
||||
var drawerMode = 'add';
|
||||
var editTr = null;
|
||||
|
||||
/* 各模板的项目清单与专项费用(按行序号索引) */
|
||||
var comboProjectData = {
|
||||
'1': { femaleFee:'', cancerFee:{'cancer-septin9':'1200.00','cancer-ca724':'280.00'},
|
||||
projects:{
|
||||
required:[['血常规','BLD-003','重点项目'],['心电图','ECG-004','一般项目'],['胸部X光','XRY-005','一般项目'],['肝功能','LFT-006','一般项目'],['肾功能','RFT-007','一般项目']],
|
||||
optional:[['经颅多普勒','TCD-001','一般项目'],['腹部彩超','BUS-002','一般项目']],
|
||||
'gyn-unmarried':[], 'gyn-married':[], 'cancer-septin9':[], 'cancer-ca724':[] } },
|
||||
'2': { femaleFee:'300.00', cancerFee:{'cancer-septin9':'1200.00','cancer-ca724':'280.00'},
|
||||
projects:{
|
||||
required:[['血常规','BLD-003','一般项目'],['尿常规','URI-010','一般项目'],['心电图','ECG-004','一般项目']],
|
||||
optional:[['腹部彩超','BUS-002','一般项目'],['空腹血糖','GLU-008','一般项目']],
|
||||
'gyn-unmarried':[['白带常规','GYN-013','一般项目']],
|
||||
'gyn-married':[['宫颈TCT','GYN-014','重点项目'],['乳腺彩超','GYN-015','重点项目']],
|
||||
'cancer-septin9':[['Septin9甲基化','SEP-016','重点项目']],
|
||||
'cancer-ca724':[['CA724','CA7-017','一般项目']] } },
|
||||
'3': { femaleFee:'', cancerFee:{'cancer-septin9':'1200.00','cancer-ca724':'280.00'},
|
||||
projects:{
|
||||
required:[['血常规','BLD-003','一般项目'],['心电图','ECG-004','一般项目'],['血脂四项','LIP-009','重点项目'],['空腹血糖','GLU-008','一般项目']],
|
||||
optional:[['经颅多普勒','TCD-001','一般项目'],['胸部X光','XRY-005','一般项目'],['肝功能','LFT-006','一般项目']],
|
||||
'gyn-unmarried':[['白带常规','GYN-013','一般项目']],
|
||||
'gyn-married':[['宫颈TCT','GYN-014','一般项目']],
|
||||
'cancer-septin9':[], 'cancer-ca724':[] } }
|
||||
};
|
||||
function rowTemplateData(tr){
|
||||
return comboProjectData[tr.cells[0].textContent.trim()] || { femaleFee:'', cancerFee:{}, projects:{} };
|
||||
}
|
||||
|
||||
function openAddDrawer(){
|
||||
drawerMode = 'add';
|
||||
editTr = null;
|
||||
document.querySelector('#add-drawer .drawer__title').textContent = '新增组合模板';
|
||||
resetAddDrawer();
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
@@ -615,6 +689,33 @@ function resetAddDrawer(){
|
||||
onGenderChange();
|
||||
}
|
||||
|
||||
/* ===== 编辑(复用新增抽屉) ===== */
|
||||
function openEditDrawer(btn){
|
||||
var tr = editTr = btn.closest('tr');
|
||||
drawerMode = 'edit';
|
||||
document.querySelector('#add-drawer .drawer__title').textContent = '编辑组合模板';
|
||||
var cells = tr.cells;
|
||||
document.getElementById('tpl-name').value = cells[3].textContent.trim();
|
||||
hospitalSelect.setValue(cells[1].textContent.trim());
|
||||
document.getElementById('tpl-gender').value = cells[4].textContent.trim();
|
||||
document.getElementById('tpl-age').value = cells[5].textContent.trim();
|
||||
var dType = cells[6].textContent.trim();
|
||||
document.getElementById('tpl-discount-type').value = dType;
|
||||
document.getElementById('tpl-discount-amount').value = dType === '百分比' ? cells[8].textContent.trim() : cells[7].textContent.trim();
|
||||
var data = rowTemplateData(tr);
|
||||
document.getElementById('female-fee-input').value = data.femaleFee || '';
|
||||
document.getElementById('cancer-fee-input').value = '';
|
||||
onGenderChange();
|
||||
projectTabKeys.forEach(function(k){
|
||||
var tbody = document.getElementById('tbody-' + k);
|
||||
tbody.innerHTML = '';
|
||||
(data.projects[k] || []).forEach(function(p){ addStaticProjectRow(k, p); });
|
||||
});
|
||||
switchProjectTab(document.querySelector('#tpl-tab-nav .tab-nav__item[data-tab="required"]'));
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
/* 性别切换:男隐藏妇科 tab;女显示女性专项费用 */
|
||||
function onGenderChange(){
|
||||
var gender = document.getElementById('tpl-gender').value;
|
||||
@@ -632,6 +733,7 @@ function onGenderChange(){
|
||||
/* 项目 tab 切换 */
|
||||
function switchProjectTab(el){
|
||||
document.querySelectorAll('#tpl-tab-nav .tab-nav__item').forEach(function(t){ t.classList.remove('active'); });
|
||||
if(!el) return;
|
||||
el.classList.add('active');
|
||||
var key = el.dataset.tab;
|
||||
document.querySelectorAll('.tab-panel').forEach(function(p){ p.classList.remove('active'); });
|
||||
@@ -688,6 +790,8 @@ function addProjectRow(tabKey){
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
|
||||
function fmt2(v){ var n = Number(v); return isNaN(n) ? v : n.toFixed(2); }
|
||||
|
||||
function saveComboTemplate(){
|
||||
if(!document.getElementById('tpl-name').value.trim()){ alert('请输入组合模板名称'); return; }
|
||||
if(hospitalSelect.getValue() === ''){ alert('请选择体检医院'); return; }
|
||||
@@ -696,10 +800,144 @@ function saveComboTemplate(){
|
||||
if(!document.getElementById('tpl-discount-type').value){ alert('请选择折扣类型'); return; }
|
||||
if(!document.getElementById('tpl-discount-amount').value){ alert('请输入折扣金额'); return; }
|
||||
if(document.getElementById('tpl-gender').value === '女' && !document.getElementById('female-fee-input').value){ alert('请输入女性专项费用'); return; }
|
||||
alert('已保存(原型演示)');
|
||||
if(drawerMode === 'edit' && editTr){
|
||||
var cells = editTr.cells;
|
||||
cells[1].textContent = hospitalData[Number(hospitalSelect.getValue())];
|
||||
cells[3].textContent = document.getElementById('tpl-name').value.trim();
|
||||
cells[4].textContent = document.getElementById('tpl-gender').value;
|
||||
cells[5].textContent = document.getElementById('tpl-age').value;
|
||||
var dType = document.getElementById('tpl-discount-type').value;
|
||||
var amount = document.getElementById('tpl-discount-amount').value;
|
||||
cells[6].textContent = dType;
|
||||
if(dType === '数值'){ cells[7].textContent = fmt2(amount); cells[8].textContent = '—'; }
|
||||
else { cells[7].textContent = '—'; cells[8].textContent = amount; }
|
||||
var key = cells[0].textContent.trim();
|
||||
var entry = comboProjectData[key] || (comboProjectData[key] = { femaleFee:'', cancerFee:{'cancer-septin9':'1200.00','cancer-ca724':'280.00'}, projects:{} });
|
||||
entry.femaleFee = cells[4].textContent === '女' ? fmt2(document.getElementById('female-fee-input').value) : '';
|
||||
if(document.getElementById('cancer-fee-input').value){
|
||||
var cf = fmt2(document.getElementById('cancer-fee-input').value);
|
||||
entry.cancerFee['cancer-septin9'] = cf;
|
||||
entry.cancerFee['cancer-ca724'] = cf;
|
||||
}
|
||||
entry.projects = { 'required':[], 'optional':[], 'gyn-unmarried':[], 'gyn-married':[], 'cancer-septin9':[], 'cancer-ca724':[] };
|
||||
projectTabKeys.forEach(function(k){
|
||||
document.querySelectorAll('#tbody-' + k + ' tr').forEach(function(row){
|
||||
var sel = row.querySelector('.search-select__input');
|
||||
var label = sel ? sel.value : '';
|
||||
var nm = label.replace(/([^()]*)$/, '');
|
||||
entry.projects[k].push([nm, row.querySelector('.row-input').value, row.querySelector('.row-select').value]);
|
||||
});
|
||||
});
|
||||
alert('已保存(原型演示)');
|
||||
} else {
|
||||
alert('已保存(原型演示)');
|
||||
}
|
||||
closeAddDrawer();
|
||||
}
|
||||
|
||||
/* 以静态值添加项目行(编辑回填用) */
|
||||
function addStaticProjectRow(tabKey, p){
|
||||
var tbody = document.getElementById('tbody-' + tabKey);
|
||||
var tr = document.createElement('tr');
|
||||
var tdItem = document.createElement('td'); tdItem.className = 'row-static';
|
||||
var tdCode = document.createElement('td');
|
||||
var tdMark = document.createElement('td');
|
||||
var tdOp = document.createElement('td');
|
||||
tdItem.textContent = p[0];
|
||||
var codeInput = document.createElement('input');
|
||||
codeInput.className = 'row-input';
|
||||
codeInput.readOnly = true;
|
||||
codeInput.value = p[1];
|
||||
var markSelect = document.createElement('select');
|
||||
markSelect.className = 'row-select';
|
||||
['一般项目','重点项目'].forEach(function(m){
|
||||
var o = document.createElement('option');
|
||||
o.textContent = m;
|
||||
if(m === p[2]) o.selected = true;
|
||||
markSelect.appendChild(o);
|
||||
});
|
||||
var del = document.createElement('span');
|
||||
del.className = 'link';
|
||||
del.style.color = 'var(--danger)';
|
||||
del.textContent = '删除';
|
||||
del.onclick = function(){ tr.remove(); };
|
||||
tdCode.appendChild(codeInput);
|
||||
tdMark.appendChild(markSelect);
|
||||
tdOp.appendChild(del);
|
||||
tr.appendChild(tdItem);
|
||||
tr.appendChild(tdCode);
|
||||
tr.appendChild(tdMark);
|
||||
tr.appendChild(tdOp);
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
|
||||
/* ===== 组合模板详情弹窗 ===== */
|
||||
var detailTabKeys = projectTabKeys;
|
||||
var detailTabLabels = {
|
||||
'required':'必检项目', 'optional':'自选项目',
|
||||
'gyn-unmarried':'妇科未婚项目', 'gyn-married':'妇科已婚项目',
|
||||
'cancer-septin9':'防癌筛查项目(Septin9)', 'cancer-ca724':'防癌筛查项目(CA724)'
|
||||
};
|
||||
function switchDetailTab(key){
|
||||
document.querySelectorAll('#detail-tab-nav .tab-nav__item').forEach(function(t){ t.classList.toggle('active', t.dataset.tab === key); });
|
||||
detailTabKeys.forEach(function(k){
|
||||
var el = document.getElementById('dpanel-' + k);
|
||||
if(el) el.classList.toggle('active', k === key);
|
||||
});
|
||||
}
|
||||
function openDetailModal(btn){
|
||||
var tr = btn.closest('tr');
|
||||
var cells = tr.cells;
|
||||
var data = rowTemplateData(tr);
|
||||
var gender = cells[4].textContent.trim();
|
||||
document.getElementById('d-hospital').textContent = cells[1].textContent.trim();
|
||||
document.getElementById('d-year').textContent = cells[2].textContent.trim();
|
||||
document.getElementById('d-name').textContent = cells[3].textContent.trim();
|
||||
document.getElementById('d-gender').textContent = gender;
|
||||
document.getElementById('d-age').textContent = cells[5].textContent.trim();
|
||||
document.getElementById('d-female-fee').textContent = gender === '女' && data.femaleFee ? data.femaleFee : '—';
|
||||
var dType = cells[6].textContent.trim();
|
||||
document.getElementById('d-discount-type').textContent = dType;
|
||||
document.getElementById('d-discount').textContent = dType === '数值' ? cells[7].textContent.trim() + ' 元'
|
||||
: dType === '百分比' ? cells[8].textContent.trim() + '%' : '—';
|
||||
var nav = document.getElementById('detail-tab-nav');
|
||||
var panels = document.getElementById('detail-tab-panels');
|
||||
nav.innerHTML = ''; panels.innerHTML = '';
|
||||
var first = null;
|
||||
detailTabKeys.forEach(function(k){
|
||||
if(gender === '男' && (k === 'gyn-unmarried' || k === 'gyn-married')) return;
|
||||
var isCancer = k === 'cancer-septin9' || k === 'cancer-ca724';
|
||||
var item = document.createElement('div');
|
||||
item.className = 'tab-nav__item';
|
||||
item.dataset.tab = k;
|
||||
item.textContent = detailTabLabels[k];
|
||||
item.onclick = function(){ switchDetailTab(k); };
|
||||
nav.appendChild(item);
|
||||
var panel = document.createElement('div');
|
||||
panel.className = 'tab-panel';
|
||||
panel.id = 'dpanel-' + k;
|
||||
var inner = '<table><thead><tr><th>体检项目</th><th>项目编码</th><th>项目标记</th></tr></thead><tbody>';
|
||||
var rows = (data.projects[k] || []);
|
||||
if(rows.length){
|
||||
rows.forEach(function(p){ inner += '<tr><td>' + p[0] + '</td><td>' + p[1] + '</td><td>' + p[2] + '</td></tr>'; });
|
||||
} else {
|
||||
inner += '<tr><td colspan="3" style="text-align:center;color:var(--text-placeholder);">暂无项目</td></tr>';
|
||||
}
|
||||
inner += '</tbody></table>';
|
||||
if(isCancer){
|
||||
inner += '<div class="cancer-fee">防癌筛查默认费用:<b>' + ((data.cancerFee && data.cancerFee[k]) || '—') + '</b> 元</div>';
|
||||
}
|
||||
panel.innerHTML = inner;
|
||||
panels.appendChild(panel);
|
||||
if(!first) first = item;
|
||||
});
|
||||
if(first) switchDetailTab(first.dataset.tab);
|
||||
document.getElementById('detail-modal-overlay').classList.add('open');
|
||||
}
|
||||
function closeDetailModal(){
|
||||
document.getElementById('detail-modal-overlay').classList.remove('open');
|
||||
}
|
||||
|
||||
/* ===== 复制上一年度模板弹窗 ===== */
|
||||
var templateData = {
|
||||
'泾河医院': ['45岁以上男性标准套餐', '35岁以下女性标准套餐', '35-45岁通用套餐'],
|
||||
|
||||
@@ -130,6 +130,20 @@
|
||||
/* 表格内行内控件 */
|
||||
.row-input{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 8px;font-size:var(--font-sm);color:var(--text-primary);outline:none;background:#FAFAFA;}
|
||||
.row-select{width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 24px 0 8px;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 8px center;appearance:none;cursor:pointer;}
|
||||
/* 详情只读弹窗 */
|
||||
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.45);z-index:1100;display:none;align-items:center;justify-content:center;}
|
||||
.modal-overlay.open{display:flex;}
|
||||
.modal{background:#fff;border-radius:var(--radius-md);box-shadow:0 4px 16px rgba(0,0,0,0.15);width:720px;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;}
|
||||
.modal__header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
|
||||
.modal__title{font-size:var(--font-lg);font-weight:600;}
|
||||
.modal__close{width:32px;height:32px;border-radius:50%;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:18px;}
|
||||
.modal__close:hover{background:#F5F5F5;}
|
||||
.modal__body{padding:24px;overflow-y:auto;}
|
||||
.modal__footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border);flex-shrink:0;}
|
||||
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;margin-bottom:20px;}
|
||||
.detail-item{display:flex;flex-direction:column;gap:4px;}
|
||||
.detail-item__label{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.detail-item__value{font-size:var(--font-base);color:var(--text-primary);font-weight:500;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -234,6 +248,18 @@
|
||||
<main class="main">
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2025</option><option>2024</option><option>2026</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>是否有效:</label>
|
||||
<select class="filter-select" style="min-width:90px;">
|
||||
<option>请选择</option><option>有效</option><option>无效</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>项目组合模板:</label>
|
||||
<select class="filter-select" style="min-width:180px;">
|
||||
@@ -241,9 +267,9 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2025</option><option>2024</option><option>2026</option>
|
||||
<option>请选择</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -261,19 +287,7 @@
|
||||
<div class="filter-item">
|
||||
<label>年龄区间:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>35岁以下</option><option>35-45岁</option><option>45岁及以上</option>
|
||||
</select>
|
||||
</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" style="min-width:90px;">
|
||||
<option>请选择</option><option>有效</option><option>无效</option>
|
||||
<option>请选择</option><option>年龄<35</option><option>35≤年龄<40</option><option>40≤年龄<45</option><option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
@@ -295,13 +309,13 @@
|
||||
<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><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>45岁以上男性标准套餐</td><td>第一采油厂</td><td>泾河医院</td><td>2025</td><td>男</td><td>45岁及以上</td><td><span class="tag tag-green">有效</span></td><td>2025-03-01</td><td>2025-04-15</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>35岁以下女性标准套餐</td><td>第二采油厂</td><td>庆阳医院</td><td>2025</td><td>女</td><td>35岁以下</td><td><span class="tag tag-green">有效</span></td><td>2025-03-05</td><td>2025-04-20</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>35-45岁通用套餐</td><td>第三采油厂</td><td>延安医院</td><td>2025</td><td>通用</td><td>35-45岁</td><td><span class="tag tag-red">无效</span></td><td>2025-02-18</td><td>2025-03-10</td><td><span class="link">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>45岁以上男性标准套餐</td><td>第一采油厂</td><td>泾河医院</td><td>2025</td><td>男</td><td>45岁及以上</td><td><span class="tag tag-green">有效</span></td><td>2025-03-01</td><td>2025-04-15</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>35岁以下女性标准套餐</td><td>第二采油厂</td><td>庆阳医院</td><td>2025</td><td>女</td><td>35岁以下</td><td><span class="tag tag-green">有效</span></td><td>2025-03-05</td><td>2025-04-20</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>35-45岁通用套餐</td><td>第三采油厂</td><td>延安医院</td><td>2025</td><td>通用</td><td>35-45岁</td><td><span class="tag tag-red">无效</span></td><td>2025-02-18</td><td>2025-03-10</td><td><span class="link" onclick="openDetailModal(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -321,13 +335,13 @@
|
||||
<div class="drawer-overlay" id="add-overlay" onclick="closeAddDrawer()"></div>
|
||||
<div class="drawer" id="add-drawer">
|
||||
<div class="drawer__header">
|
||||
<div class="drawer__title">新增例外配置</div>
|
||||
<div class="drawer__title" id="add-drawer-title">新增例外配置</div>
|
||||
<button class="drawer__close" onclick="closeAddDrawer()">✕</button>
|
||||
</div>
|
||||
<div class="drawer__body">
|
||||
<div class="form-row">
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 体检年度</div>
|
||||
<div class="form-label"><span class="required">*</span> 体检年份</div>
|
||||
<select class="form-select" id="ex-year"></select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
@@ -428,6 +442,35 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 例外配置详情弹窗 -->
|
||||
<div class="modal-overlay" id="detail-modal-overlay" onclick="if(event.target===this)closeDetailModal()">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">例外配置详情</div>
|
||||
<button class="modal__close" onclick="closeDetailModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="detail-grid">
|
||||
<div class="detail-item"><span class="detail-item__label">项目组合模板</span><span class="detail-item__value" id="d-tpl">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">单位</span><span class="detail-item__value" id="d-unit">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">医院名称</span><span class="detail-item__value" id="d-hospital">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">体检年份</span><span class="detail-item__value" id="d-year">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">性别</span><span class="detail-item__value" id="d-gender">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">年龄范围</span><span class="detail-item__value" id="d-age">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">是否有效</span><span class="detail-item__value" id="d-valid">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">创建日期 / 更新日期</span><span class="detail-item__value" id="d-dates">—</span></div>
|
||||
</div>
|
||||
<div class="tab-box">
|
||||
<div class="tab-nav" id="detail-tab-nav"></div>
|
||||
<div id="detail-tab-panels"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeDetailModal()">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 侧边栏展开/折叠交互 */
|
||||
function toggleSubgroup(header){
|
||||
@@ -701,7 +744,7 @@ function addProjectRow(tabKey, presetName){
|
||||
tbody.appendChild(tr);
|
||||
}
|
||||
|
||||
/* 体检年度:默认当前年度 */
|
||||
/* 体检年份:默认当前年度 */
|
||||
function initYearSelect(){
|
||||
var year = new Date().getFullYear();
|
||||
var sel = document.getElementById('ex-year');
|
||||
@@ -716,7 +759,14 @@ function initYearSelect(){
|
||||
}
|
||||
initYearSelect();
|
||||
|
||||
/* 抽屉状态:'add' 新增 / 'edit' 编辑 */
|
||||
var drawerMode = 'add';
|
||||
var editTr = null;
|
||||
|
||||
function openAddDrawer(){
|
||||
drawerMode = 'add';
|
||||
editTr = null;
|
||||
document.getElementById('add-drawer-title').textContent = '新增例外配置';
|
||||
resetAddDrawer();
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
@@ -732,10 +782,72 @@ function resetAddDrawer(){
|
||||
document.getElementById('ex-unit').value = '';
|
||||
document.getElementById('ex-valid').value = '有效';
|
||||
updateTemplateOptions();
|
||||
projectTabKeys.forEach(function(k){ document.getElementById('tbody-' + k).innerHTML = ''; });
|
||||
switchProjectTab(document.querySelector('#ex-tab-nav .tab-nav__item[data-tab="required"]'));
|
||||
initYearSelect();
|
||||
}
|
||||
|
||||
/* ===== 编辑(复用新增抽屉) ===== */
|
||||
/* 各行例外项目数据(模板标准清单外的额外项),按行序号索引 */
|
||||
var exceptionProjectsData = {
|
||||
'1': { 'optional': [['腹部彩超','一般项目']], 'cancer-ca724': [['CA724','重点项目']] },
|
||||
'2': { 'gyn-married': [['TCT','一般项目']], 'optional': [['尿常规','一般项目']] },
|
||||
'3': { 'cancer-septin9': [['Septin9','重点项目']] }
|
||||
};
|
||||
function todayStr(){
|
||||
var d = new Date();
|
||||
return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
|
||||
}
|
||||
function openEditDrawer(btn){
|
||||
var tr = editTr = btn.closest('tr');
|
||||
drawerMode = 'edit';
|
||||
document.getElementById('add-drawer-title').textContent = '编辑例外配置';
|
||||
var cells = tr.cells;
|
||||
var year = cells[4].textContent.trim();
|
||||
var sel = document.getElementById('ex-year');
|
||||
if(!Array.prototype.some.call(sel.options, function(o){ return o.value === year; })){
|
||||
var o = document.createElement('option'); o.value = year; o.textContent = year; sel.appendChild(o);
|
||||
}
|
||||
sel.value = year;
|
||||
document.getElementById('ex-unit').value = cells[2].textContent.trim();
|
||||
selectedHospital = cells[3].textContent.trim();
|
||||
hospitalSelect.setValue(selectedHospital);
|
||||
updateTemplateOptions();
|
||||
var tpl = cells[1].textContent.trim();
|
||||
tplSelect.setValue(tpl);
|
||||
selectedTemplateName = tpl;
|
||||
fillTemplateInfo();
|
||||
document.getElementById('ex-valid').value = cells[7].textContent.trim();
|
||||
/* 模板标准项目以锁定状态带入 */
|
||||
var tp = templateProjects[tpl] || {};
|
||||
projectTabKeys.forEach(function(k){
|
||||
(tp[k] || []).forEach(function(nm){ addProjectRow(k, nm); });
|
||||
});
|
||||
/* 带入该行已有的例外项目(可删除/修改) */
|
||||
var ex = exceptionProjectsData[cells[0].textContent.trim()] || {};
|
||||
projectTabKeys.forEach(function(k){
|
||||
(ex[k] || []).forEach(function(p){
|
||||
addProjectRow(k);
|
||||
var tbody = document.getElementById('tbody-' + k);
|
||||
var row = tbody.lastElementChild;
|
||||
var found = projectData.filter(function(x){ return x.name === p[0]; })[0];
|
||||
if(found){
|
||||
var ssInput = row.querySelector('.search-select__input');
|
||||
var ssHidden = row.querySelector('.search-select input[type=hidden]');
|
||||
ssHidden.value = projectData.indexOf(found);
|
||||
ssInput.value = found.name + '(' + found.code + ')';
|
||||
row.querySelector('.search-select').classList.add('has-value');
|
||||
row.querySelector('.row-input').value = found.code;
|
||||
}
|
||||
var mark = row.querySelector('.row-select');
|
||||
Array.prototype.forEach.call(mark.options, function(mo){ if(mo.textContent === p[1]) mark.value = mo.value || mo.textContent; });
|
||||
});
|
||||
});
|
||||
switchProjectTab(document.querySelector('#ex-tab-nav .tab-nav__item[data-tab="required"]'));
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
/* 选择项目组合模板后,自动回填性别/年龄范围(不回填项目表格) */
|
||||
function fillTemplateInfo(){
|
||||
var info = templateInfo[selectedTemplateName];
|
||||
@@ -749,9 +861,104 @@ function saveExceptionConfig(){
|
||||
if(!document.getElementById('ex-unit').value){ alert('请选择单位'); return; }
|
||||
if(!selectedHospital){ alert('请选择医院'); return; }
|
||||
if(!selectedTemplateName){ alert('请选择项目组合模板'); return; }
|
||||
if(drawerMode === 'edit' && editTr){
|
||||
var cells = editTr.cells;
|
||||
cells[1].textContent = selectedTemplateName;
|
||||
cells[2].textContent = document.getElementById('ex-unit').value;
|
||||
cells[3].textContent = selectedHospital;
|
||||
cells[4].textContent = document.getElementById('ex-year').value;
|
||||
cells[5].textContent = document.getElementById('ex-gender').value;
|
||||
cells[6].textContent = document.getElementById('ex-age').value;
|
||||
var valid = document.getElementById('ex-valid').value;
|
||||
cells[7].innerHTML = '<span class="tag ' + (valid === '有效' ? 'tag-green">有效' : 'tag-red">无效') + '</span>';
|
||||
cells[9].textContent = todayStr();
|
||||
var key = cells[0].textContent.trim();
|
||||
var ex = exceptionProjectsData[key] = {};
|
||||
projectTabKeys.forEach(function(k){
|
||||
document.querySelectorAll('#tbody-' + k + ' tr').forEach(function(row){
|
||||
var hidden = row.querySelector('.search-select input[type=hidden]');
|
||||
var mark = row.querySelector('.row-select');
|
||||
if(hidden && hidden.value !== '' && !row.querySelector('.search-select__input').disabled){
|
||||
var item = projectData[Number(hidden.value)];
|
||||
(ex[k] = ex[k] || []).push([item.name, mark.value]);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
alert('已保存(原型演示)');
|
||||
closeAddDrawer();
|
||||
}
|
||||
|
||||
/* ===== 例外配置详情弹窗 ===== */
|
||||
var detailTabLabels = {
|
||||
'required':'必检项目', 'optional':'自选项目',
|
||||
'gyn-unmarried':'妇科未婚项目', 'gyn-married':'妇科已婚项目',
|
||||
'cancer-septin9':'防癌筛查项目(Septin9)', 'cancer-ca724':'防癌筛查项目(CA724)'
|
||||
};
|
||||
function switchDetailTab(key){
|
||||
document.querySelectorAll('#detail-tab-nav .tab-nav__item').forEach(function(t){ t.classList.toggle('active', t.dataset.tab === key); });
|
||||
projectTabKeys.forEach(function(k){
|
||||
var el = document.getElementById('dpanel-' + k);
|
||||
if(el) el.classList.toggle('active', k === key);
|
||||
});
|
||||
}
|
||||
function openDetailModal(btn){
|
||||
var cells = btn.closest('tr').cells;
|
||||
var tpl = cells[1].textContent.trim();
|
||||
var gender = cells[5].textContent.trim();
|
||||
document.getElementById('d-tpl').textContent = tpl;
|
||||
document.getElementById('d-unit').textContent = cells[2].textContent.trim();
|
||||
document.getElementById('d-hospital').textContent = cells[3].textContent.trim();
|
||||
document.getElementById('d-year').textContent = cells[4].textContent.trim();
|
||||
document.getElementById('d-gender').textContent = gender;
|
||||
document.getElementById('d-age').textContent = cells[6].textContent.trim();
|
||||
document.getElementById('d-valid').textContent = cells[7].textContent.trim();
|
||||
document.getElementById('d-dates').textContent = cells[8].textContent.trim() + ' / ' + cells[9].textContent.trim();
|
||||
/* 汇总:模板标准项目(锁定带入,标记默认一般项目)+ 该行例外项目 */
|
||||
var merged = {};
|
||||
var tp = templateProjects[tpl] || {};
|
||||
Object.keys(tp).forEach(function(k){ merged[k] = tp[k].map(function(nm){ return [nm, '一般项目']; }); });
|
||||
var ex = exceptionProjectsData[cells[0].textContent.trim()] || {};
|
||||
Object.keys(ex).forEach(function(k){
|
||||
merged[k] = (merged[k] || []).concat(ex[k].map(function(p){ return [p[0], p[1]]; }));
|
||||
});
|
||||
var nav = document.getElementById('detail-tab-nav');
|
||||
var panels = document.getElementById('detail-tab-panels');
|
||||
nav.innerHTML = ''; panels.innerHTML = '';
|
||||
var first = null;
|
||||
projectTabKeys.forEach(function(k){
|
||||
if(gender === '男' && (k === 'gyn-unmarried' || k === 'gyn-married')) return;
|
||||
var item = document.createElement('div');
|
||||
item.className = 'tab-nav__item';
|
||||
item.dataset.tab = k;
|
||||
item.textContent = detailTabLabels[k];
|
||||
item.onclick = function(){ switchDetailTab(k); };
|
||||
nav.appendChild(item);
|
||||
var panel = document.createElement('div');
|
||||
panel.className = 'tab-panel';
|
||||
panel.id = 'dpanel-' + k;
|
||||
var inner = '<table><thead><tr><th>体检项目</th><th>项目编码</th><th>项目标记</th></tr></thead><tbody>';
|
||||
var rows = merged[k] || [];
|
||||
if(rows.length){
|
||||
rows.forEach(function(p){
|
||||
var found = projectData.filter(function(x){ return x.name === p[0]; })[0];
|
||||
var code = found ? found.code : '—';
|
||||
inner += '<tr><td>' + p[0] + '</td><td>' + code + '</td><td>' + p[1] + '</td></tr>';
|
||||
});
|
||||
} else {
|
||||
inner += '<tr><td colspan="3" style="text-align:center;color:var(--text-placeholder);">暂无项目</td></tr>';
|
||||
}
|
||||
inner += '</tbody></table>';
|
||||
panel.innerHTML = inner;
|
||||
panels.appendChild(panel);
|
||||
if(!first) first = item;
|
||||
});
|
||||
if(first) switchDetailTab(first.dataset.tab);
|
||||
document.getElementById('detail-modal-overlay').classList.add('open');
|
||||
}
|
||||
function closeDetailModal(){
|
||||
document.getElementById('detail-modal-overlay').classList.remove('open');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -148,6 +148,13 @@
|
||||
.editor-body:empty:before{content:attr(data-placeholder);color:var(--text-placeholder);}
|
||||
.editor-footer{display:flex;align-items:center;justify-content:space-between;margin-top:8px;}
|
||||
.editor-footer__hint{font-size:var(--font-xs);color:#999;}
|
||||
/* 详情只读展示 */
|
||||
.detail-list{display:flex;flex-direction:column;gap:16px;}
|
||||
.detail-item{display:flex;flex-direction:column;gap:4px;}
|
||||
.detail-item__label{font-size:var(--font-sm);color:var(--text-secondary);}
|
||||
.detail-item__value{font-size:var(--font-base);color:var(--text-primary);font-weight:500;}
|
||||
.detail-thumb{display:flex;align-items:center;justify-content:center;width:96px;height:96px;border-radius:var(--radius-sm);background:#FAFAFA;color:var(--text-placeholder);}
|
||||
.detail-desc{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-size:var(--font-sm);line-height:1.8;color:var(--text-primary);min-height:40px;background:#FAFAFA;word-break:break-all;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -270,12 +277,18 @@
|
||||
<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>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -303,9 +316,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>影像检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>抽血及其它检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -329,12 +342,18 @@
|
||||
<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>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -362,9 +381,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>影像检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>抽血及其它检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -388,12 +407,18 @@
|
||||
<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>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -421,9 +446,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>影像检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>抽血及其它检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -447,12 +472,18 @@
|
||||
<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>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -480,9 +511,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>影像检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>抽血及其它检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -506,12 +537,18 @@
|
||||
<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>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -539,9 +576,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>影像检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link">更新已生成费用</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>1</td><td>经颅多普勒</td><td>TCD-001</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>260.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>2</td><td>腹部彩超</td><td>BUS-002</td><td>常规检查</td><td>功能检查项目</td><td><span class="media-icon media-icon--active" title="查看图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>180.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
<tr><td>3</td><td>血常规</td><td>BLD-003</td><td>常规检查</td><td>抽血及其它检验项目</td><td><span class="media-icon media-icon--empty" title="暂无图片"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="2" y="3" width="12" height="10" rx="1.5" stroke="currentColor" stroke-width="1.3"/><circle cx="5.5" cy="6.5" r="1.2" stroke="currentColor" stroke-width="1"/><path d="M2 11l3.5-3 2.5 2 3-2.5L14 11" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span></td><td>35.00</td><td><span class="link" onclick="openUpdateConfirm(this)">更新已生成费用</span> <span class="link" style="margin-left:8px;" onclick="openEditDrawer(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="openFeeDetail(this)">详情</span> <span class="link" style="margin-left:8px;color:var(--danger);">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -577,17 +614,17 @@
|
||||
<select class="form-select" id="item-category">
|
||||
<option>请选择</option>
|
||||
<option>常规检查</option>
|
||||
<option>特殊检查</option>
|
||||
<option>妇科检查</option>
|
||||
<option>防癌检查</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 项目类别</div>
|
||||
<select class="form-select" id="item-type">
|
||||
<option>请选择</option>
|
||||
<option>抽血及其它检验项目</option>
|
||||
<option>医生检查项目</option>
|
||||
<option>功能检查项目</option>
|
||||
<option>影像检查项目</option>
|
||||
<option>检验项目</option>
|
||||
<option>内镜检查项目</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
@@ -599,7 +636,7 @@
|
||||
<label class="upload-box">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M8 11V3M5 6l3-3 3 3" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"/><path d="M3 11v1a1 1 0 001 1h8a1 1 0 001-1v-1" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>
|
||||
上传图片
|
||||
<input type="file" class="upload-file">
|
||||
<input type="file" class="upload-file" id="item-upload-file" onchange="if(this.value) feeImgUploaded = true;">
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
@@ -766,6 +803,60 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 体检项目费用详情弹窗 -->
|
||||
<div class="modal-overlay" id="fee-detail-overlay" onclick="if(event.target===this)closeFeeDetail()">
|
||||
<div class="modal" style="width:560px;">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">体检项目费用详情</div>
|
||||
<button class="modal__close" onclick="closeFeeDetail()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="detail-list">
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;">
|
||||
<div class="detail-item"><span class="detail-item__label">医院名称</span><span class="detail-item__value" id="fd-hospital">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">项目名称</span><span class="detail-item__value" id="fd-name">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">项目编号</span><span class="detail-item__value" id="fd-code">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">检查分类</span><span class="detail-item__value" id="fd-category">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">项目类别</span><span class="detail-item__value" id="fd-type">—</span></div>
|
||||
<div class="detail-item"><span class="detail-item__label">默认费用(元)</span><span class="detail-item__value" id="fd-fee">—</span></div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-item__label">项目图片</span>
|
||||
<div id="fd-image"><div class="detail-thumb">暂无图片</div></div>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-item__label">描述</span>
|
||||
<div class="detail-desc" id="fd-desc">—</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeFeeDetail()">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 更新已生成费用二次确认弹窗 -->
|
||||
<div class="modal-overlay" id="update-confirm-overlay" onclick="if(event.target===this)closeUpdateConfirm()">
|
||||
<div class="modal" style="width:420px;">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">更新确认</div>
|
||||
<button class="modal__close" onclick="closeUpdateConfirm()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body" style="display:flex;gap:12px;align-items:flex-start;">
|
||||
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" style="flex-shrink:0;margin-top:2px;"><circle cx="11" cy="11" r="10" fill="#FAAD14"/><path d="M11 6.5v6" stroke="#fff" stroke-width="2" stroke-linecap="round"/><circle cx="11" cy="15.5" r="1.2" fill="#fff"/></svg>
|
||||
<div style="font-size:var(--font-sm);color:var(--text-primary);line-height:1.7;">
|
||||
确定要更新「<b id="uc-item"></b>」的已生成费用吗?<br>
|
||||
<span style="color:var(--text-secondary);">更新后将按该项目当前默认费用同步已生成的各相关单位体检项目费用,更新后立即生效。</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeUpdateConfirm()">取消</button>
|
||||
<button class="btn btn-primary" onclick="confirmUpdateFee()">确认更新</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 医院TAB切换 */
|
||||
function switchHospital(type, el){
|
||||
@@ -789,23 +880,54 @@ function toggleSubgroup(header){
|
||||
/* ===== 新增医院体检项目费用抽屉 ===== */
|
||||
var itemData = [
|
||||
{name:'经颅多普勒', code:'TCD-001', category:'常规检查', type:'功能检查项目', fee:'260.00'},
|
||||
{name:'腹部彩超', code:'BUS-002', category:'常规检查', type:'影像检查项目', fee:'180.00'},
|
||||
{name:'血常规', code:'BLD-003', category:'常规检查', type:'检验项目', fee:'35.00'},
|
||||
{name:'腹部彩超', code:'BUS-002', category:'常规检查', type:'功能检查项目', fee:'180.00'},
|
||||
{name:'血常规', code:'BLD-003', category:'常规检查', type:'抽血及其它检验项目', fee:'35.00'},
|
||||
{name:'心电图', code:'ECG-004', category:'常规检查', type:'功能检查项目', fee:'25.00'},
|
||||
{name:'胸部X光', code:'XRY-005', category:'常规检查', type:'影像检查项目', fee:'120.00'},
|
||||
{name:'肝功能', code:'LFT-006', category:'常规检查', type:'检验项目', fee:'80.00'},
|
||||
{name:'肾功能', code:'RFT-007', category:'常规检查', type:'检验项目', fee:'60.00'},
|
||||
{name:'空腹血糖', code:'GLU-008', category:'常规检查', type:'检验项目', fee:'10.00'},
|
||||
{name:'血脂四项', code:'LIP-009', category:'常规检查', type:'检验项目', fee:'90.00'},
|
||||
{name:'尿常规', code:'URI-010', category:'常规检查', type:'检验项目', fee:'15.00'},
|
||||
{name:'胃镜', code:'GAS-011', category:'特殊检查', type:'内镜检查项目', fee:'350.00'},
|
||||
{name:'肠镜', code:'COL-012', category:'特殊检查', type:'内镜检查项目', fee:'380.00'}
|
||||
{name:'胸部X光', code:'XRY-005', category:'常规检查', type:'功能检查项目', fee:'120.00'},
|
||||
{name:'肝功能', code:'LFT-006', category:'常规检查', type:'抽血及其它检验项目', fee:'80.00'},
|
||||
{name:'肾功能', code:'RFT-007', category:'常规检查', type:'抽血及其它检验项目', fee:'60.00'},
|
||||
{name:'空腹血糖', code:'GLU-008', category:'常规检查', type:'抽血及其它检验项目', fee:'10.00'},
|
||||
{name:'血脂四项', code:'LIP-009', category:'常规检查', type:'抽血及其它检验项目', fee:'90.00'},
|
||||
{name:'尿常规', code:'URI-010', category:'常规检查', type:'抽血及其它检验项目', fee:'15.00'},
|
||||
{name:'胃镜', code:'GAS-011', category:'防癌检查', type:'医生检查项目', fee:'350.00'},
|
||||
{name:'肠镜', code:'COL-012', category:'防癌检查', type:'医生检查项目', fee:'380.00'}
|
||||
];
|
||||
|
||||
function openAddDrawer(){
|
||||
/* 抽屉状态:'add' 新增 / 'edit' 编辑 */
|
||||
var drawerMode = 'add';
|
||||
var editTr = null;
|
||||
var feeImgUploaded = false;
|
||||
/* 项目描述示例数据(按编号索引),未配置的用默认文案 */
|
||||
var itemDescData = {
|
||||
'TCD-001': '通过多普勒超声原理检测脑动脉血流速度与方向,用于筛查脑动脉硬化、血管狭窄及畸形等病变。',
|
||||
'BUS-002': '对肝、胆、胰、脾、肾等腹部脏器进行超声成像,评估形态结构及占位性病变。',
|
||||
'BLD-003': '检测红细胞、白细胞、血小板等指标,辅助判断感染、贫血及血液系统疾病。'
|
||||
};
|
||||
function itemDescOf(code){
|
||||
return itemDescData[code] || (code + ' 项目的常规检查说明,包含检查目的、适用人群及注意事项。');
|
||||
}
|
||||
|
||||
function activeHospitalName(){
|
||||
var activeTab = document.querySelector('.hospital-tab.active');
|
||||
var hospitalName = activeTab ? activeTab.textContent.trim() : '医院';
|
||||
document.getElementById('add-drawer-title').textContent = hospitalName + ' - 新增体检项目费用';
|
||||
return activeTab ? activeTab.textContent.trim() : '医院';
|
||||
}
|
||||
function resetAddForm(){
|
||||
var input = document.getElementById('item-search-input');
|
||||
input.disabled = false;
|
||||
input.style.background = '#fff';
|
||||
clearItemSelection();
|
||||
document.getElementById('item-category').value = '请选择';
|
||||
document.getElementById('item-type').value = '请选择';
|
||||
document.getElementById('item-fee').value = '';
|
||||
document.getElementById('item-upload-file').value = '';
|
||||
feeImgUploaded = false;
|
||||
document.getElementById('desc-editor').innerHTML = '';
|
||||
}
|
||||
function openAddDrawer(){
|
||||
drawerMode = 'add';
|
||||
editTr = null;
|
||||
document.getElementById('add-drawer-title').textContent = activeHospitalName() + ' - 新增体检项目费用';
|
||||
resetAddForm();
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
}
|
||||
@@ -814,10 +936,105 @@ function closeAddDrawer(){
|
||||
document.getElementById('add-overlay').classList.remove('open');
|
||||
}
|
||||
function saveAddItem(){
|
||||
var selIdx = document.getElementById('item-search-value').value;
|
||||
if(selIdx === '' && drawerMode === 'add'){ alert('请选择体检项目'); return; }
|
||||
if(document.getElementById('item-category').value === '请选择'){ alert('请选择检查分类'); return; }
|
||||
if(document.getElementById('item-type').value === '请选择'){ alert('请选择项目类别'); return; }
|
||||
var fee = document.getElementById('item-fee').value.trim();
|
||||
if(!fee || Number(fee) < 0){ alert('请输入默认费用'); return; }
|
||||
var code = '', name = '';
|
||||
if(selIdx !== ''){
|
||||
var picked = itemData[Number(selIdx)];
|
||||
name = picked.name; code = picked.code;
|
||||
}
|
||||
if(drawerMode === 'edit' && editTr){
|
||||
var cells = editTr.cells;
|
||||
if(code){
|
||||
cells[1].textContent = name;
|
||||
cells[2].textContent = code;
|
||||
} else {
|
||||
name = cells[1].textContent.trim();
|
||||
code = cells[2].textContent.trim();
|
||||
}
|
||||
cells[3].textContent = document.getElementById('item-category').value;
|
||||
cells[4].textContent = document.getElementById('item-type').value;
|
||||
cells[6].textContent = Number(fee).toFixed(2);
|
||||
itemDescData[code] = document.getElementById('desc-editor').innerHTML.trim() || itemDescOf(code);
|
||||
var icon = cells[5].querySelector('.media-icon');
|
||||
if(icon){
|
||||
icon.classList.toggle('media-icon--active', feeImgUploaded);
|
||||
icon.classList.toggle('media-icon--empty', !feeImgUploaded);
|
||||
icon.title = feeImgUploaded ? '查看图片' : '暂无图片';
|
||||
}
|
||||
}
|
||||
alert('已保存(原型演示)');
|
||||
closeAddDrawer();
|
||||
}
|
||||
|
||||
/* ===== 编辑(复用新增抽屉) ===== */
|
||||
function openEditDrawer(btn){
|
||||
var tr = editTr = btn.closest('tr');
|
||||
drawerMode = 'edit';
|
||||
var hospital = tr.closest('.tab-pane').querySelector('.table-card__title').textContent.replace('体检项目费用', '');
|
||||
document.getElementById('add-drawer-title').textContent = hospital + ' - 编辑体检项目费用';
|
||||
var cells = tr.cells;
|
||||
var name = cells[1].textContent.trim(), code = cells[2].textContent.trim();
|
||||
var input = document.getElementById('item-search-input');
|
||||
var hidden = document.getElementById('item-search-value');
|
||||
var idx = itemData.findIndex(function(it){ return it.code === code; });
|
||||
hidden.value = idx !== -1 ? idx : '';
|
||||
input.value = name + '(' + code + ')';
|
||||
document.getElementById('item-search-select').classList.add('has-value');
|
||||
input.disabled = true;
|
||||
input.style.background = '#F5F5F5';
|
||||
document.getElementById('item-category').value = cells[3].textContent.trim();
|
||||
document.getElementById('item-type').value = cells[4].textContent.trim();
|
||||
document.getElementById('item-fee').value = cells[6].textContent.trim();
|
||||
document.getElementById('item-upload-file').value = '';
|
||||
feeImgUploaded = !!cells[5].querySelector('.media-icon--active');
|
||||
document.getElementById('desc-editor').innerHTML = itemDescData[code] || itemDescOf(code);
|
||||
document.getElementById('add-drawer').classList.add('open');
|
||||
document.getElementById('add-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
/* ===== 详情弹窗 ===== */
|
||||
function openFeeDetail(btn){
|
||||
var tr = btn.closest('tr');
|
||||
var cells = tr.cells;
|
||||
var hospital = tr.closest('.tab-pane').querySelector('.table-card__title').textContent.replace('体检项目费用', '');
|
||||
var code = cells[2].textContent.trim();
|
||||
document.getElementById('fd-hospital').textContent = hospital;
|
||||
document.getElementById('fd-name').textContent = cells[1].textContent.trim();
|
||||
document.getElementById('fd-code').textContent = code;
|
||||
document.getElementById('fd-category').textContent = cells[3].textContent.trim();
|
||||
document.getElementById('fd-type').textContent = cells[4].textContent.trim();
|
||||
document.getElementById('fd-fee').textContent = Number(cells[6].textContent.trim() || 0).toFixed(2);
|
||||
var hasImg = !!cells[5].querySelector('.media-icon--active');
|
||||
document.getElementById('fd-image').innerHTML = hasImg
|
||||
? '<div class="detail-thumb" style="background:var(--primary-light);color:var(--primary);">项目图片</div>'
|
||||
: '<div class="detail-thumb">暂无图片</div>';
|
||||
document.getElementById('fd-desc').innerHTML = itemDescData[code] || itemDescOf(code);
|
||||
document.getElementById('fee-detail-overlay').classList.add('open');
|
||||
}
|
||||
function closeFeeDetail(){
|
||||
document.getElementById('fee-detail-overlay').classList.remove('open');
|
||||
}
|
||||
|
||||
/* ===== 更新已生成费用二次确认 ===== */
|
||||
var updateFeeTr = null;
|
||||
function openUpdateConfirm(btn){
|
||||
updateFeeTr = btn.closest('tr');
|
||||
document.getElementById('uc-item').textContent = updateFeeTr.cells[1].textContent.trim();
|
||||
document.getElementById('update-confirm-overlay').classList.add('open');
|
||||
}
|
||||
function closeUpdateConfirm(){
|
||||
document.getElementById('update-confirm-overlay').classList.remove('open');
|
||||
}
|
||||
function confirmUpdateFee(){
|
||||
closeUpdateConfirm();
|
||||
alert('「' + (updateFeeTr ? updateFeeTr.cells[1].textContent.trim() : '') + '」已生成费用更新完成(原型演示)');
|
||||
}
|
||||
|
||||
/* 体检项目可搜索下拉 */
|
||||
(function(){
|
||||
var input = document.getElementById('item-search-input');
|
||||
@@ -838,6 +1055,7 @@ function saveAddItem(){
|
||||
opt.textContent = label;
|
||||
opt.dataset.index = idx;
|
||||
opt.onclick = function(){
|
||||
if(input.disabled) return;
|
||||
hidden.value = idx;
|
||||
input.value = label;
|
||||
document.getElementById('item-search-select').classList.add('has-value');
|
||||
@@ -872,6 +1090,7 @@ function saveAddItem(){
|
||||
|
||||
/* 清除已选体检项目 */
|
||||
function clearItemSelection(){
|
||||
if(document.getElementById('item-search-input').disabled) return;
|
||||
document.getElementById('item-search-input').value = '';
|
||||
document.getElementById('item-search-value').value = '';
|
||||
document.getElementById('item-search-select').classList.remove('has-value');
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>2025</option><option>2024</option><option>2023</option>
|
||||
</select>
|
||||
@@ -251,18 +251,6 @@
|
||||
<label>项目组合名称:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入">
|
||||
</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>35岁以下</option><option>35-45岁</option><option>45岁及以上</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select">
|
||||
@@ -275,6 +263,18 @@
|
||||
<option>请选择</option><option>泾河医院</option><option>庆阳医院</option><option>延安医院</option><option>兴隆园医院</option><option>宁夏宝石花医院</option>
|
||||
</select>
|
||||
</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>年龄<35</option><option>35≤年龄<40</option><option>40≤年龄<45</option><option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>费用审核状态:</label>
|
||||
<select class="filter-select">
|
||||
|
||||
@@ -207,8 +207,10 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检项目:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入项目名称" style="min-width:160px;">
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2025</option><option>2024</option><option>2026</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
@@ -216,25 +218,23 @@
|
||||
<option>请选择</option><option>第一采油厂</option><option>第二采油厂</option><option>第三采油厂</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option selected>2025</option><option>2024</option><option>2026</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>体检医院:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option><option>泾河医院</option><option>庆阳医院</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>
|
||||
<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">+ 生成单位本年度体检项目费用</button>
|
||||
<button class="btn btn-primary" onclick="openGenerateConfirm()">+ 生成单位本年度体检项目费用</button>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
@@ -246,7 +246,7 @@
|
||||
<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><th>体检项目</th><th>体检项目图片</th><th>项目费用(元)</th><th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -275,7 +275,7 @@
|
||||
<div class="modal__body">
|
||||
<div class="fee-info">
|
||||
<div class="fee-info__item"><label>单位:</label><span id="fee-unit"></span></div>
|
||||
<div class="fee-info__item"><label>体检年度:</label><span id="fee-year"></span></div>
|
||||
<div class="fee-info__item"><label>体检年份:</label><span id="fee-year"></span></div>
|
||||
<div class="fee-info__item"><label>医院名称:</label><span id="fee-hospital"></span></div>
|
||||
<div class="fee-info__item"><label>体检项目:</label><span id="fee-item"></span></div>
|
||||
</div>
|
||||
@@ -291,6 +291,27 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 生成费用二次确认弹窗 -->
|
||||
<div class="modal-overlay" id="generate-confirm-overlay" onclick="if(event.target===this)closeGenerateConfirm()">
|
||||
<div class="modal" style="width:420px;">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">生成确认</div>
|
||||
<button class="modal__close" onclick="closeGenerateConfirm()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body" style="display:flex;gap:12px;align-items:flex-start;">
|
||||
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" style="flex-shrink:0;margin-top:2px;"><circle cx="11" cy="11" r="10" fill="#FAAD14"/><path d="M11 6.5v6" stroke="#fff" stroke-width="2" stroke-linecap="round"/><circle cx="11" cy="15.5" r="1.2" fill="#fff"/></svg>
|
||||
<div style="font-size:var(--font-sm);color:var(--text-primary);line-height:1.7;">
|
||||
确定要生成单位本年度体检项目费用吗?<br>
|
||||
<span style="color:var(--text-secondary);">生成后将按医院项目费用基准初始化本年度各单位的体检项目费用。</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeGenerateConfirm()">取消</button>
|
||||
<button class="btn btn-primary" onclick="confirmGenerate()">确认生成</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 侧边栏展开/折叠交互 */
|
||||
function toggleSubgroup(header){
|
||||
@@ -327,6 +348,18 @@ function saveFee(){
|
||||
feeTr.cells[6].textContent = Number(amount).toFixed(2);
|
||||
closeFeeModal();
|
||||
}
|
||||
|
||||
/* ===== 生成费用二次确认 ===== */
|
||||
function openGenerateConfirm(){
|
||||
document.getElementById('generate-confirm-overlay').classList.add('open');
|
||||
}
|
||||
function closeGenerateConfirm(){
|
||||
document.getElementById('generate-confirm-overlay').classList.remove('open');
|
||||
}
|
||||
function confirmGenerate(){
|
||||
closeGenerateConfirm();
|
||||
alert('单位本年度体检项目费用生成任务已提交(原型演示)');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -204,6 +204,17 @@
|
||||
/* toast */
|
||||
.toast{position:fixed;top:80px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 24px;border-radius:var(--radius-sm);font-size:var(--font-sm);z-index:9999;opacity:0;transition:opacity .2s;pointer-events:none;}
|
||||
.toast.show{opacity:1;}
|
||||
/* 右侧抽屉 */
|
||||
.drawer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0);z-index:1001;pointer-events:none;transition:background .3s;}
|
||||
.drawer-overlay.open{background:rgba(0,0,0,0.45);pointer-events:auto;}
|
||||
.drawer{position:fixed;top:0;right:-560px;bottom:0;width:560px;max-width:calc(100vw - 48px);background:#fff;box-shadow:-2px 0 12px rgba(0,0,0,0.15);z-index:1002;transition:right .3s;display:flex;flex-direction:column;}
|
||||
.drawer.open{right:0;}
|
||||
.drawer__header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border);flex-shrink:0;}
|
||||
.drawer__title{font-size:var(--font-lg);font-weight:600;}
|
||||
.drawer__close{width:32px;height:32px;border-radius:50%;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:18px;}
|
||||
.drawer__close:hover{background:#F5F5F5;}
|
||||
.drawer__body{flex:1;overflow-y:auto;padding:20px 24px;}
|
||||
.drawer__footer{display:flex;justify-content:flex-end;gap:12px;padding:14px 24px;border-top:1px solid var(--border);flex-shrink:0;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -311,7 +322,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select plan-year"></select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -349,13 +360,13 @@
|
||||
<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>
|
||||
<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="plan-tbody">
|
||||
<tr data-rid="1"><td>1</td><td>新闻中心</td><td>2026</td><td>新闻中心2026年员工非职业健康体检</td><td>兴隆园医院</td><td>宝石花</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-18 09:20</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr data-rid="2"><td>2</td><td>公司机关</td><td>2026</td><td>公司机关2026年员工非职业健康体检</td><td>宝石花</td><td>宝石花</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-18 09:45</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr data-rid="3"><td>3</td><td>采油二厂</td><td>2026</td><td>采油二厂2026年员工职业健康体检</td><td>兴隆园医院</td><td>兴隆园医院</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-19 14:10</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr data-rid="1"><td>1</td><td>新闻中心</td><td>2026</td><td>新闻中心2026年员工非职业健康体检</td><td>兴隆园医院</td><td>宝石花</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-18 09:20</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openPlanEdit(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deletePlan(this)">删除</span></td></tr>
|
||||
<tr data-rid="2"><td>2</td><td>公司机关</td><td>2026</td><td>公司机关2026年员工非职业健康体检</td><td>宝石花</td><td>宝石花</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-18 09:45</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openPlanEdit(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deletePlan(this)">删除</span></td></tr>
|
||||
<tr data-rid="3"><td>3</td><td>采油二厂</td><td>2026</td><td>采油二厂2026年员工职业健康体检</td><td>兴隆园医院</td><td>兴隆园医院</td><td><span class="tag tag-green">有效</span></td><td>2025-06-23至2025-08-31</td><td>2025-06-23至2025-08-31</td><td>系统管理员</td><td>2025-06-19 14:10</td><td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openPlanEdit(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deletePlan(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -370,14 +381,14 @@
|
||||
|
||||
</main>
|
||||
|
||||
<!-- [弹窗] 新增单位体检计划 -->
|
||||
<div class="modal-overlay" id="plan-modal-overlay">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">新增单位体检计划</div>
|
||||
<button class="modal__close" onclick="closePlanModal()">✕</button>
|
||||
<!-- [抽屉] 新增/编辑单位体检计划 -->
|
||||
<div class="drawer-overlay" id="plan-modal-overlay"></div>
|
||||
<div class="drawer" id="plan-drawer">
|
||||
<div class="drawer__header">
|
||||
<div class="drawer__title" id="plan-modal-title">新增单位体检计划</div>
|
||||
<button class="drawer__close" onclick="closePlanModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="drawer__body">
|
||||
<div class="form-grid">
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="req">*</span> 单位</div>
|
||||
@@ -386,7 +397,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="req">*</span> 体检年度</div>
|
||||
<div class="form-label"><span class="req">*</span> 体检年份</div>
|
||||
<select class="form-input plan-year"></select>
|
||||
</div>
|
||||
<div class="form-item" style="grid-column:1/-1;">
|
||||
@@ -476,13 +487,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<div class="drawer__footer">
|
||||
<button class="btn btn-default" onclick="closePlanModal()">取消</button>
|
||||
<!-- [交互] 校验通过后新增计划并刷新列表 -->
|
||||
<button class="btn btn-primary" onclick="savePlan()">确认新增</button>
|
||||
<button class="btn btn-primary" id="plan-save-btn" onclick="savePlan()">确认新增</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- [弹窗] 单位体检计划详情 -->
|
||||
<div class="modal-overlay" id="detail-modal-overlay">
|
||||
@@ -494,7 +505,7 @@
|
||||
<div class="modal__body">
|
||||
<div class="detail-grid">
|
||||
<div class="detail-item"><div class="detail-label">单位</div><div class="detail-value" id="d-unit">—</div></div>
|
||||
<div class="detail-item"><div class="detail-label">体检年度</div><div class="detail-value" id="d-year">—</div></div>
|
||||
<div class="detail-item"><div class="detail-label">体检年份</div><div class="detail-value" id="d-year">—</div></div>
|
||||
<div class="detail-item" style="grid-column:1/-1;"><div class="detail-label">体检计划名称</div><div class="detail-value" id="d-name">—</div></div>
|
||||
<div class="detail-item"><div class="detail-label">承检医院</div><div class="detail-value" id="d-exam">—</div></div>
|
||||
<div class="detail-item"><div class="detail-label">签约医院</div><div class="detail-value" id="d-sign">—</div></div>
|
||||
@@ -587,7 +598,7 @@ function toggleSubgroup(header){
|
||||
while(sub){ sub.classList.add('open'); sub=sub.parentElement.closest('.sidebar-subgroup'); }
|
||||
})();
|
||||
|
||||
/* 体检年度默认当年 */
|
||||
/* 体检年份默认当年 */
|
||||
(function(){
|
||||
var year = new Date().getFullYear();
|
||||
document.querySelectorAll('.plan-year').forEach(function(sel){
|
||||
@@ -643,18 +654,72 @@ var mockPlanEmployees = [
|
||||
});
|
||||
})();
|
||||
|
||||
/* [交互] 打开弹窗并重置表单 */
|
||||
/* [交互] 打开抽屉并重置表单 */
|
||||
var editingPlanRid = null;
|
||||
function openPlanModal(){
|
||||
editingPlanRid = null;
|
||||
document.getElementById('plan-modal-title').textContent = '新增单位体检计划';
|
||||
document.getElementById('plan-save-btn').textContent = '确认新增';
|
||||
resetPlanForm();
|
||||
document.getElementById('plan-modal-overlay').classList.add('open');
|
||||
document.getElementById('plan-drawer').classList.add('open');
|
||||
}
|
||||
function closePlanModal(){
|
||||
document.getElementById('plan-modal-overlay').classList.remove('open');
|
||||
document.getElementById('plan-drawer').classList.remove('open');
|
||||
}
|
||||
|
||||
/* [交互] 编辑:复用新增抽屉,按已存计划回填全部字段 */
|
||||
function openPlanEdit(el){
|
||||
var tr = el.closest('tr');
|
||||
var rid = tr.getAttribute('data-rid');
|
||||
var d = planDetails[rid];
|
||||
if(!d){ showToast('暂无该计划的编辑数据'); return; }
|
||||
editingPlanRid = rid;
|
||||
document.getElementById('plan-modal-title').textContent = '编辑单位体检计划';
|
||||
document.getElementById('plan-save-btn').textContent = '保存';
|
||||
resetPlanForm();
|
||||
document.getElementById('planUnit').value = d.unit;
|
||||
var yearSel = document.querySelector('#plan-drawer .plan-year');
|
||||
for(var i=0;i<yearSel.options.length;i++){ if(yearSel.options[i].value === d.year){ yearSel.selectedIndex = i; break; } }
|
||||
document.getElementById('planNameInput').value = d.name;
|
||||
/* 承检/签约医院:由已存字符串还原多选 */
|
||||
selectedExamHospitals = (d.examHospitals || '').split('、').filter(Boolean);
|
||||
selectedSignHospitals = (d.signHospitals || '').split('、').filter(Boolean);
|
||||
renderHospitalPanel();
|
||||
updateHospitalTrigger();
|
||||
syncSignHospitalOptions();
|
||||
document.getElementById('planDateFrom').value = d.planFrom;
|
||||
document.getElementById('planDateTo').value = d.planTo;
|
||||
/* 参加人员范围 */
|
||||
var radio = document.querySelector('input[name="personType"][value="' + d.personType + '"]');
|
||||
if(radio) radio.checked = true;
|
||||
togglePersonPanel();
|
||||
selectedInstitutions = (d.institutions || []).slice();
|
||||
renderOrgTree();
|
||||
updateOrgTrigger();
|
||||
syncEmpFilterOrg();
|
||||
selectedEmployees = [];
|
||||
(d.employees || []).forEach(function(s){
|
||||
var m = mockPlanEmployees.find(function(e){ return e.name === s.name && e.dept === s.dept; });
|
||||
if(m){ selectedEmployees.push({name:m.name, id:m.id, org:m.org, dept:m.dept}); }
|
||||
else{ selectedEmployees.push({name:s.name, id:s.id || s.name, org:d.unit, dept:s.dept}); }
|
||||
});
|
||||
renderSelectedPersons();
|
||||
/* 预约开关与日期 */
|
||||
var sw = document.getElementById('switchAppt');
|
||||
sw.classList.toggle('on', !!d.appt);
|
||||
document.getElementById('switchApptLabel').textContent = d.appt ? '已开启' : '已关闭';
|
||||
document.getElementById('apptRangeItem').style.display = d.appt ? '' : 'none';
|
||||
document.getElementById('apptDateFrom').value = d.apptFrom || '';
|
||||
document.getElementById('apptDateTo').value = d.apptTo || '';
|
||||
document.getElementById('plan-modal-overlay').classList.add('open');
|
||||
document.getElementById('plan-drawer').classList.add('open');
|
||||
}
|
||||
|
||||
function resetPlanForm(){
|
||||
document.getElementById('planUnit').value = '';
|
||||
var yearSel = document.querySelector('#plan-modal-overlay .plan-year');
|
||||
var yearSel = document.querySelector('#plan-drawer .plan-year');
|
||||
yearSel.selectedIndex = 3; /* 默认当年(列表为 年-3 至 年+1) */
|
||||
selectedExamHospitals = [];
|
||||
selectedSignHospitals = [];
|
||||
@@ -1131,7 +1196,7 @@ function toggleAppointment(){
|
||||
function savePlan(){
|
||||
var unit = document.getElementById('planUnit').value;
|
||||
if(!unit){ showToast('请选择单位'); return; }
|
||||
var year = document.querySelector('#plan-modal-overlay .plan-year').value;
|
||||
var year = document.querySelector('#plan-drawer .plan-year').value;
|
||||
if(selectedExamHospitals.length === 0){ showToast('请选择承检医院'); return; }
|
||||
var examHospital = selectedExamHospitals.join('、');
|
||||
var signHospital = selectedSignHospitals.join('、');
|
||||
@@ -1153,27 +1218,58 @@ function savePlan(){
|
||||
if(apptFrom > apptTo){ showToast('预约开始日期不能晚于结束日期'); return; }
|
||||
}
|
||||
|
||||
/* 追加到计划列表 */
|
||||
var tbody = document.getElementById('plan-tbody');
|
||||
var tr = document.createElement('tr');
|
||||
var apptCell = apptOn ? (apptFrom + '至' + apptTo) : '<span style="color:var(--text-placeholder);">未开启</span>';
|
||||
var signCell = signHospital ? esc(signHospital) : '<span style="color:var(--text-placeholder);">—</span>';
|
||||
var empSnapshot = selectedEmployees.map(function(e){ return {name:e.name, dept:e.dept}; });
|
||||
var tbody = document.getElementById('plan-tbody');
|
||||
/* 操作列:新增/编辑生成的行均带详情/编辑/删除 */
|
||||
var ACTIONS = '<td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;" onclick="openPlanEdit(this)">编辑</span> <span class="link" style="margin-left:8px;" onclick="deletePlan(this)">删除</span></td>';
|
||||
|
||||
if(editingPlanRid){
|
||||
/* 编辑:更新既有行与详情记录(保留原创建人/创建时间) */
|
||||
var rid = editingPlanRid;
|
||||
var etr = tbody.querySelector('tr[data-rid="' + rid + '"]');
|
||||
if(etr){
|
||||
var old = planDetails[rid] || {};
|
||||
etr.cells[1].textContent = unit;
|
||||
etr.cells[2].textContent = year;
|
||||
etr.cells[3].textContent = name;
|
||||
etr.cells[4].textContent = examHospital;
|
||||
etr.cells[5].innerHTML = signCell;
|
||||
etr.cells[7].innerHTML = dateFrom + '至' + dateTo;
|
||||
etr.cells[8].innerHTML = apptCell;
|
||||
planDetails[rid] = {
|
||||
unit: unit, year: year, name: name,
|
||||
examHospitals: examHospital, signHospitals: signHospital,
|
||||
planFrom: dateFrom, planTo: dateTo,
|
||||
personType: personType,
|
||||
institutions: selectedInstitutions.slice(),
|
||||
employees: empSnapshot,
|
||||
appt: apptOn, apptFrom: apptOn ? apptFrom : '', apptTo: apptOn ? apptTo : '',
|
||||
creator: old.creator || '系统管理员', ctime: old.ctime || ''
|
||||
};
|
||||
}
|
||||
closePlanModal();
|
||||
showToast('保存成功');
|
||||
return;
|
||||
}
|
||||
|
||||
/* 新增:追加行 */
|
||||
var now = new Date();
|
||||
var pad = function(n){ return n < 10 ? '0' + n : '' + n; };
|
||||
var createTime = now.getFullYear() + '-' + pad(now.getMonth() + 1) + '-' + pad(now.getDate()) + ' ' + pad(now.getHours()) + ':' + pad(now.getMinutes());
|
||||
var signCell = signHospital ? esc(signHospital) : '<span style="color:var(--text-placeholder);">—</span>';
|
||||
var tr = document.createElement('tr');
|
||||
var rid = ++detailRid;
|
||||
tr.setAttribute('data-rid', rid);
|
||||
tr.innerHTML = '<td></td><td>' + esc(unit) + '</td><td>' + esc(year) + '</td><td>' + esc(name) + '</td><td>' + esc(examHospital) + '</td><td>' + signCell + '</td>' +
|
||||
'<td><span class="tag tag-green">有效</span></td><td>' + dateFrom + '至' + dateTo + '</td><td>' + apptCell + '</td><td>系统管理员</td><td>' + createTime + '</td>' +
|
||||
'<td><span class="link" onclick="openPlanDetail(this)">详情</span> <span class="link" style="margin-left:8px;">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td>';
|
||||
/* 同步写入详情记录,供详情弹窗查看 */
|
||||
'<td><span class="tag tag-green">有效</span></td><td>' + dateFrom + '至' + dateTo + '</td><td>' + apptCell + '</td><td>系统管理员</td><td>' + createTime + '</td>' + ACTIONS;
|
||||
planDetails[rid] = {
|
||||
unit: unit, year: year, name: name,
|
||||
examHospitals: examHospital, signHospitals: signHospital,
|
||||
planFrom: dateFrom, planTo: dateTo,
|
||||
personType: personType,
|
||||
institutions: selectedInstitutions.slice(),
|
||||
employees: selectedEmployees.map(function(e){ return {name:e.name, dept:e.dept}; }),
|
||||
employees: empSnapshot,
|
||||
appt: apptOn, apptFrom: apptOn ? apptFrom : '', apptTo: apptOn ? apptTo : '',
|
||||
creator: '系统管理员', ctime: createTime
|
||||
};
|
||||
@@ -1189,6 +1285,18 @@ function savePlan(){
|
||||
showToast('新增成功');
|
||||
}
|
||||
|
||||
/* 删除计划行 */
|
||||
function deletePlan(el){
|
||||
if(!confirm('确认删除该体检计划?')) return;
|
||||
var tr = el.closest('tr');
|
||||
var rid = tr.getAttribute('data-rid');
|
||||
if(rid && planDetails[rid]) delete planDetails[rid];
|
||||
var tbody = tr.parentElement;
|
||||
tr.remove();
|
||||
var rows = tbody.querySelectorAll('tr');
|
||||
rows.forEach(function(r, i){ r.cells[0].textContent = i + 1; });
|
||||
}
|
||||
|
||||
/* ===================== 计划详情弹窗 ===================== */
|
||||
/* 模拟存量计划的详情数据(与新增弹窗字段对应),新增保存时动态写入 */
|
||||
var planDetails = {
|
||||
|
||||
@@ -77,6 +77,30 @@
|
||||
.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);}
|
||||
/* 弹窗 */
|
||||
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.45);z-index:999;display:none;align-items:center;justify-content:center;}
|
||||
.modal-overlay.open{display:flex;}
|
||||
.modal{background:#fff;border-radius:var(--radius-md);box-shadow:0 4px 16px rgba(0,0,0,0.15);width:460px;max-width:92vw;}
|
||||
.modal__header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border);}
|
||||
.modal__title{font-size:var(--font-lg);font-weight:600;}
|
||||
.modal__close{width:32px;height:32px;border-radius:50%;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:18px;}
|
||||
.modal__close:hover{background:#F5F5F5;}
|
||||
.modal__body{padding:24px;}
|
||||
.modal__footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border);}
|
||||
/* 弹窗表单 */
|
||||
.form-item{margin-bottom:20px;}
|
||||
.form-item:last-child{margin-bottom:0;}
|
||||
.form-label{font-size:var(--font-sm);color:var(--text-secondary);margin-bottom:8px;font-weight:500;}
|
||||
.form-label .required{color:var(--danger);}
|
||||
.form-input{width:100%;height:40px;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;}
|
||||
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(24,144,255,0.2);}
|
||||
.form-select{width:100%;height:40px;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 12px center;appearance:none;cursor:pointer;}
|
||||
.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(24,144,255,0.2);}
|
||||
/* 群体信息(纯展示) */
|
||||
.group-info{background:#F5F7FA;border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:20px;display:flex;flex-wrap:wrap;gap:8px 28px;}
|
||||
.group-info__item{font-size:var(--font-sm);}
|
||||
.group-info__item label{color:var(--text-secondary);}
|
||||
.group-info__item span{color:var(--text-primary);font-weight:500;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -204,12 +228,12 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td>45岁及以上-女</td><td>45岁及以上</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>2</td><td>45岁及以上-男</td><td>45岁及以上</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>3</td><td>36~44岁-女</td><td>35岁至44岁</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>4</td><td>36~44岁-男</td><td>35岁至44岁</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>5</td><td>35岁及以下-女</td><td>35岁以下</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>6</td><td>35岁及以下-男</td><td>35岁以下</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>1</td><td>45岁及以上-女</td><td>45岁及以上</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>2</td><td>45岁及以上-男</td><td>45岁及以上</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>3</td><td>36~44岁-女</td><td>35岁至44岁</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>4</td><td>36~44岁-男</td><td>35岁至44岁</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>5</td><td>35岁及以下-女</td><td>35岁以下</td><td>女</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
<tr><td>6</td><td>35岁及以下-男</td><td>35岁以下</td><td>男</td><td>2500.00</td><td>全量</td><td><span class="tag tag-green">已生成</span></td><td><span class="link" onclick="openQuotaModal(this)">设置额度</span> <span class="link" style="margin-left:8px;">生成额度</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -222,6 +246,38 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- 设置群体额度弹窗 -->
|
||||
<div class="modal-overlay" id="quota-modal-overlay" onclick="if(event.target===this)closeQuotaModal()">
|
||||
<div class="modal">
|
||||
<div class="modal__header">
|
||||
<div class="modal__title">设置群体额度</div>
|
||||
<button class="modal__close" onclick="closeQuotaModal()">✕</button>
|
||||
</div>
|
||||
<div class="modal__body">
|
||||
<div class="group-info">
|
||||
<div class="group-info__item"><label>群体名称:</label><span id="quota-group-name"></span></div>
|
||||
<div class="group-info__item"><label>年龄区间:</label><span id="quota-age"></span></div>
|
||||
<div class="group-info__item"><label>性别:</label><span id="quota-gender"></span></div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 体检额度(元)</div>
|
||||
<input class="form-input" id="quota-amount" type="number" min="0" step="0.01" placeholder="请输入体检额度">
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<div class="form-label"><span class="required">*</span> 批量更新规则</div>
|
||||
<select class="form-select" id="quota-rule">
|
||||
<option value="全量">全量</option>
|
||||
<option value="增量">增量</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal__footer">
|
||||
<button class="btn btn-default" onclick="closeQuotaModal()">取消</button>
|
||||
<button class="btn btn-primary" onclick="saveQuota()">确认保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
/* 侧边栏展开/折叠交互 */
|
||||
function toggleSubgroup(header){
|
||||
@@ -234,6 +290,33 @@ function toggleSubgroup(header){
|
||||
var sub=active.closest('.sidebar-subgroup');
|
||||
while(sub){ sub.classList.add('open'); sub=sub.parentElement.closest('.sidebar-subgroup'); }
|
||||
})();
|
||||
|
||||
/* ===== 设置群体额度弹窗 ===== */
|
||||
var quotaTr = null;
|
||||
|
||||
function openQuotaModal(btn){
|
||||
quotaTr = btn.closest('tr');
|
||||
var cells = quotaTr.cells;
|
||||
document.getElementById('quota-group-name').textContent = cells[1].textContent.trim();
|
||||
document.getElementById('quota-age').textContent = cells[2].textContent.trim();
|
||||
document.getElementById('quota-gender').textContent = cells[3].textContent.trim();
|
||||
document.getElementById('quota-amount').value = cells[4].textContent.trim();
|
||||
document.getElementById('quota-rule').value = cells[5].textContent.trim() || '全量';
|
||||
document.getElementById('quota-modal-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
function closeQuotaModal(){
|
||||
document.getElementById('quota-modal-overlay').classList.remove('open');
|
||||
}
|
||||
|
||||
function saveQuota(){
|
||||
if(!quotaTr) return;
|
||||
var amount = document.getElementById('quota-amount').value.trim();
|
||||
if(!amount || Number(amount) < 0){ alert('请输入正确的体检额度'); return; }
|
||||
quotaTr.cells[4].textContent = Number(amount).toFixed(2);
|
||||
quotaTr.cells[5].textContent = document.getElementById('quota-rule').value;
|
||||
closeQuotaModal();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:100px;">
|
||||
<option value="2026" selected>2026</option>
|
||||
<option value="2025">2025</option>
|
||||
@@ -284,21 +284,22 @@
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="min-width:160px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄范围:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
<option>40-50</option>
|
||||
<option>50-60</option>
|
||||
<option>60以上</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select" style="min-width:120px;">
|
||||
<option>请选择性别</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄范围:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
<option>年龄<35</option>
|
||||
<option>35≤年龄<40</option>
|
||||
<option>40≤年龄<45</option>
|
||||
<option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>防癌类型:</label>
|
||||
<select class="filter-select">
|
||||
@@ -331,16 +332,16 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="2">序号</th><th rowspan="2" class="col-1">姓名</th><th rowspan="2" class="col-2">员工编号</th><th rowspan="2">性别</th><th rowspan="2">年龄</th><th rowspan="2">身份证号</th><th rowspan="2">手机号</th><th rowspan="2">单位</th><th rowspan="2">部门</th><th rowspan="2">体检年度</th><th rowspan="2">体检计划</th><th rowspan="2">体检计划单位</th><th rowspan="2">防癌筛查类型</th><th colspan="7">上一次检查情况</th><th rowspan="2" class="op-col">操作</th>
|
||||
<th rowspan="2">序号</th><th rowspan="2" class="col-1">姓名</th><th rowspan="2" class="col-2">员工编号</th><th rowspan="2">性别</th><th rowspan="2">年龄</th><th rowspan="2">年龄范围</th><th rowspan="2">身份证号</th><th rowspan="2">手机号</th><th rowspan="2">单位</th><th rowspan="2">部门</th><th rowspan="2">体检年份</th><th rowspan="2">体检计划</th><th rowspan="2">体检计划单位</th><th rowspan="2">防癌筛查类型</th><th colspan="7">上一次检查情况</th><th rowspan="2" class="op-col">操作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>防癌检查年份</th><th>Septin9是否已检</th><th>Septin9检查异常</th><th>Septin9项目值</th><th>CA724是否已检</th><th>CA724检查异常</th><th>CA724项目值</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>1</td><td class="col-1">刘静</td><td class="col-2">40089234</td><td>女</td><td>41</td><td>610402198506150028</td><td>138****5678</td><td>采油三厂</td><td>地质研究所</td><td>2026</td><td>2026年度常规体检</td><td>采油三厂</td><td>两项都有</td><td>2025</td><td>是</td><td>否</td><td>阴性</td><td>是</td><td>否</td><td>3.2 U/mL</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>2</td><td class="col-1">王磊</td><td class="col-2">40056781</td><td>男</td><td>48</td><td>610402197803220015</td><td>139****1234</td><td>采油一厂</td><td>作业区</td><td>2026</td><td>2026年度常规体检</td><td>采油一厂</td><td>Septin9</td><td>2025</td><td>是</td><td>是</td><td>阳性</td><td>—</td><td>—</td><td>—</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>3</td><td class="col-1">张丽华</td><td class="col-2">40023456</td><td>女</td><td>44</td><td>610402198201080046</td><td>137****9012</td><td>采油二厂</td><td>综合办</td><td>2026</td><td>2026年度常规体检</td><td>采油二厂</td><td>CA724</td><td>2025</td><td>—</td><td>—</td><td>—</td><td>是</td><td>否</td><td>4.1 U/mL</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>1</td><td class="col-1">刘静</td><td class="col-2">40089234</td><td>女</td><td>41</td><td>40≤年龄<45</td><td>610402198506150028</td><td>13851375678</td><td>采油三厂</td><td>地质研究所</td><td>2026</td><td>2026年度常规体检</td><td>采油三厂</td><td>两项都有</td><td>2025</td><td>是</td><td>否</td><td>阴性</td><td>是</td><td>否</td><td>3.2 U/mL</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>2</td><td class="col-1">王磊</td><td class="col-2">40056781</td><td>男</td><td>48</td><td>年龄≥45</td><td>610402197803220015</td><td>13952741234</td><td>采油一厂</td><td>作业区</td><td>2026</td><td>2026年度常规体检</td><td>采油一厂</td><td>Septin9</td><td>2025</td><td>是</td><td>是</td><td>阳性</td><td>—</td><td>—</td><td>—</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td>3</td><td class="col-1">张丽华</td><td class="col-2">40023456</td><td>女</td><td>44</td><td>40≤年龄<45</td><td>610402198201080046</td><td>13754119012</td><td>采油二厂</td><td>综合办</td><td>2026</td><td>2026年度常规体检</td><td>采油二厂</td><td>CA724</td><td>2025</td><td>—</td><td>—</td><td>—</td><td>是</td><td>否</td><td>4.1 U/mL</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span><span class="link-danger" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -556,14 +557,14 @@ function deleteRow(el){
|
||||
|
||||
/* ===== 添加本次防癌筛查人员弹窗 ===== */
|
||||
var candidateData = [
|
||||
{code:'40072341', name:'赵敏', idcard:'610402199203140027', gender:'女', phone:'136****7788', unit:'采油一厂', dept:'作业区', age:'42', ageRange:'40-50', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'},
|
||||
{code:'40084512', name:'孙强', idcard:'610402197805120034', gender:'男', phone:'135****5566', unit:'采油一厂', dept:'作业区', age:'52', ageRange:'50-60', cancerType:'两项都有', s9Checked:'已检', s9Result:'异常', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40091234', name:'李娜', idcard:'610402198703080024', gender:'女', phone:'139****7788', unit:'采油二厂', dept:'综合办', age:'45', ageRange:'40-50', cancerType:'CA724', s9Checked:'未检', s9Result:'—', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40035678', name:'周建国', idcard:'610402197109220011', gender:'男', phone:'137****6677', unit:'采油二厂', dept:'采油队', age:'55', ageRange:'50-60', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'},
|
||||
{code:'40046789', name:'吴婷', idcard:'610402198511090026', gender:'女', phone:'138****8899', unit:'采油三厂', dept:'地质研究所', age:'41', ageRange:'40-50', cancerType:'两项都有', s9Checked:'已检', s9Result:'异常', caChecked:'已检', caResult:'异常'},
|
||||
{code:'40058901', name:'郑军', idcard:'610402196403150019', gender:'男', phone:'136****0011', unit:'采油三厂', dept:'地质研究所', age:'62', ageRange:'60以上', cancerType:'CA724', s9Checked:'未检', s9Result:'—', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40067812', name:'陈晓', idcard:'610402197904210025', gender:'女', phone:'135****2233', unit:'采油一厂', dept:'综合办', age:'47', ageRange:'40-50', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40079023', name:'王芳', idcard:'610402196807260046', gender:'女', phone:'139****3344', unit:'采油二厂', dept:'地质研究所', age:'58', ageRange:'50-60', cancerType:'两项都有', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'}
|
||||
{code:'40072341', name:'赵敏', idcard:'610402199203140027', gender:'女', phone:'13655487788', unit:'采油一厂', dept:'作业区', age:'42', ageRange:'40-50', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'},
|
||||
{code:'40084512', name:'孙强', idcard:'610402197805120034', gender:'男', phone:'13556855566', unit:'采油一厂', dept:'作业区', age:'52', ageRange:'50-60', cancerType:'两项都有', s9Checked:'已检', s9Result:'异常', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40091234', name:'李娜', idcard:'610402198703080024', gender:'女', phone:'13958227788', unit:'采油二厂', dept:'综合办', age:'45', ageRange:'40-50', cancerType:'CA724', s9Checked:'未检', s9Result:'—', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40035678', name:'周建国', idcard:'610402197109220011', gender:'男', phone:'13759596677', unit:'采油二厂', dept:'采油队', age:'55', ageRange:'50-60', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'},
|
||||
{code:'40046789', name:'吴婷', idcard:'610402198511090026', gender:'女', phone:'13860968899', unit:'采油三厂', dept:'地质研究所', age:'41', ageRange:'40-50', cancerType:'两项都有', s9Checked:'已检', s9Result:'异常', caChecked:'已检', caResult:'异常'},
|
||||
{code:'40058901', name:'郑军', idcard:'610402196403150019', gender:'男', phone:'13662330011', unit:'采油三厂', dept:'地质研究所', age:'62', ageRange:'60以上', cancerType:'CA724', s9Checked:'未检', s9Result:'—', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40067812', name:'陈晓', idcard:'610402197904210025', gender:'女', phone:'13563702233', unit:'采油一厂', dept:'综合办', age:'47', ageRange:'40-50', cancerType:'Septin9', s9Checked:'已检', s9Result:'正常', caChecked:'已检', caResult:'正常'},
|
||||
{code:'40079023', name:'王芳', idcard:'610402196807260046', gender:'女', phone:'13965073344', unit:'采油二厂', dept:'地质研究所', age:'58', ageRange:'50-60', cancerType:'两项都有', s9Checked:'已检', s9Result:'正常', caChecked:'未检', caResult:'—'}
|
||||
];
|
||||
var selectedMap = {};
|
||||
|
||||
@@ -773,10 +774,10 @@ function openEditModal(el){
|
||||
var cells = tr.cells;
|
||||
document.getElementById('edit-name').value = cells[1].textContent;
|
||||
document.getElementById('edit-code').value = cells[2].textContent;
|
||||
document.getElementById('edit-idcard').value = cells[5].textContent;
|
||||
document.getElementById('edit-unit').value = cells[7].textContent;
|
||||
document.getElementById('edit-dept').value = cells[8].textContent;
|
||||
document.getElementById('edit-cancer-type').value = cells[12].textContent;
|
||||
document.getElementById('edit-idcard').value = cells[6].textContent;
|
||||
document.getElementById('edit-unit').value = cells[8].textContent;
|
||||
document.getElementById('edit-dept').value = cells[9].textContent;
|
||||
document.getElementById('edit-cancer-type').value = cells[13].textContent;
|
||||
document.getElementById('edit-modal-overlay').classList.add('open');
|
||||
}
|
||||
|
||||
@@ -788,7 +789,7 @@ function saveEditModal(){
|
||||
if(!editingRow) return;
|
||||
var type = document.getElementById('edit-cancer-type').value;
|
||||
if(!type){ alert('请选择筛查类型'); return; }
|
||||
editingRow.cells[12].textContent = type;
|
||||
editingRow.cells[13].textContent = type;
|
||||
closeEditModal();
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<input class="filter-input" type="text" placeholder="2026" style="min-width:100px;" value="2026">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -251,6 +251,12 @@
|
||||
<option>请选择体检计划</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="min-width:120px;">
|
||||
@@ -263,28 +269,22 @@
|
||||
<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:120px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select" style="min-width:120px;">
|
||||
<option>请选择性别</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入年龄" style="min-width:120px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>系统体检状态:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择系统体检状态</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
@@ -308,7 +308,7 @@
|
||||
<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><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>
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<input class="filter-input" type="text" placeholder="2026" style="min-width:100px;" value="2026">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
@@ -267,6 +267,12 @@
|
||||
<option>请选择体检计划</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入" style="min-width:120px;">
|
||||
@@ -279,10 +285,6 @@
|
||||
<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:120px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select" style="min-width:120px;">
|
||||
@@ -290,15 +292,19 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>系统体检状态:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择系统体检状态</option>
|
||||
<label>年龄范围:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
<option>年龄<35</option>
|
||||
<option>35≤年龄<40</option>
|
||||
<option>40≤年龄<45</option>
|
||||
<option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<label>系统体检状态:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
<option>请选择系统体检状态</option>
|
||||
</select>
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
@@ -324,11 +330,11 @@
|
||||
<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><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>30078912</td><td>男</td><td>48</td><td>610103197809220015</td><td>13809123456</td><td>采油四厂</td><td>工程技术科</td><td>2026</td><td>—</td><td>胃镜,肠镜</td><td>未体检</td><td>宁夏宝石花医院</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
<tr><td>1</td><td>陈伟</td><td>30078912</td><td>男</td><td>48</td><td>610103197809220015</td><td>13809123456</td><td>采油四厂</td><td>工程技术科</td><td>2026</td><td>2026年度胃肠镜专项体检</td><td>未体检</td><td>—</td><td><span class="link">编辑</span> <span class="link" style="margin-left:8px;">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -371,9 +377,10 @@
|
||||
<label>年龄范围</label>
|
||||
<select class="form-select" id="pick-age-range" onchange="renderCandidateList()">
|
||||
<option value="">全部</option>
|
||||
<option value="40-50">40-50</option>
|
||||
<option value="50-60">50-60</option>
|
||||
<option value="60以上">60以上</option>
|
||||
<option value="年龄<35">年龄<35</option>
|
||||
<option value="35≤年龄<40">35≤年龄<40</option>
|
||||
<option value="40≤年龄<45">40≤年龄<45</option>
|
||||
<option value="年龄≥45">年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -505,6 +512,15 @@ function findCandidate(code){
|
||||
return null;
|
||||
}
|
||||
|
||||
/* 依据年龄计算所属年龄段,与筛选下拉保持一致 */
|
||||
function getAgeRange(age){
|
||||
var a = Number(age);
|
||||
if(a < 35) return '年龄<35';
|
||||
if(a < 40) return '35≤年龄<40';
|
||||
if(a < 45) return '40≤年龄<45';
|
||||
return '年龄≥45';
|
||||
}
|
||||
|
||||
function getFilteredCandidates(){
|
||||
var unit = document.getElementById('pick-unit').value;
|
||||
if(!unit) return [];
|
||||
@@ -513,7 +529,7 @@ function getFilteredCandidates(){
|
||||
return candidateData.filter(function(c){
|
||||
if(c.unit !== unit) return false;
|
||||
if(name && c.name.toLowerCase().indexOf(name) < 0 && c.code.indexOf(name) < 0 && c.idcard.indexOf(name) < 0) return false;
|
||||
if(ageRange && c.ageRange !== ageRange) return false;
|
||||
if(ageRange && getAgeRange(c.age) !== ageRange) return false;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
@@ -675,10 +691,9 @@ function saveAddModal(){
|
||||
'<td>' + c.unit + '</td>' +
|
||||
'<td>' + c.dept + '</td>' +
|
||||
'<td>2026</td>' +
|
||||
'<td>—</td>' +
|
||||
'<td>' + c.gastroItem + '</td>' +
|
||||
'<td>2026年度胃肠镜专项体检</td>' +
|
||||
'<td>' + c.sysStatus + '</td>' +
|
||||
'<td>' + hospitals.join(',') + '</td>' +
|
||||
'<td>' + (c.sysStatus === '未体检' ? '—' : hospitals.join(',')) + '</td>' +
|
||||
'<td><span class="link">编辑</span> <span class="link" style="margin-left:8px;" onclick="deleteRow(this)">删除</span></td>';
|
||||
tbody.insertBefore(tr, tbody.firstChild);
|
||||
});
|
||||
|
||||
@@ -239,20 +239,6 @@
|
||||
<label>体检年份:</label>
|
||||
<input class="filter-input" type="text" placeholder="2026" style="min-width:100px;" value="2026">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="min-width:120px;">
|
||||
</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>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择指定体检医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>单位:</label>
|
||||
<select class="filter-select" style="min-width:140px;">
|
||||
@@ -265,6 +251,20 @@
|
||||
<option>请选择部门</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>指定体检医院:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择指定体检医院</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="min-width:120px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>员工编号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入员工编号" style="min-width:160px;">
|
||||
</div>
|
||||
<button class="btn btn-primary">查询</button>
|
||||
<button class="btn btn-default">重置</button>
|
||||
</div>
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
<!-- 筛选栏 -->
|
||||
<div class="filter-bar">
|
||||
<div class="filter-item">
|
||||
<label>体检年度:</label>
|
||||
<label>体检年份:</label>
|
||||
<select class="filter-select" style="min-width:100px;">
|
||||
<option value="2026" selected>2026</option>
|
||||
<option value="2025">2025</option>
|
||||
@@ -271,6 +271,12 @@
|
||||
<option>请选择体检计划</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>姓名:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入姓名" style="min-width:160px;">
|
||||
@@ -283,21 +289,22 @@
|
||||
<label>身份证号:</label>
|
||||
<input class="filter-input" type="text" placeholder="请输入身份证号" style="min-width:160px;">
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄范围:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
<option>40-50</option>
|
||||
<option>50-60</option>
|
||||
<option>60以上</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>性别:</label>
|
||||
<select class="filter-select" style="min-width:120px;">
|
||||
<option>请选择性别</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>年龄范围:</label>
|
||||
<select class="filter-select">
|
||||
<option>请选择</option>
|
||||
<option>年龄<35</option>
|
||||
<option>35≤年龄<40</option>
|
||||
<option>40≤年龄<45</option>
|
||||
<option>年龄≥45</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>用工形式:</label>
|
||||
<select class="filter-select" style="min-width:140px;">
|
||||
@@ -308,12 +315,9 @@
|
||||
<label>系统体检状态:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择系统体检状态</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="filter-item">
|
||||
<label>医院选择:</label>
|
||||
<select class="filter-select" style="min-width:160px;">
|
||||
<option>请选择医院选择</option>
|
||||
<option value="未体检">未体检</option>
|
||||
<option value="体检中">体检中</option>
|
||||
<option value="已体检">已体检</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="display:flex;gap:8px;margin-top:4px;">
|
||||
@@ -338,11 +342,11 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-1">序号</th><th class="col-2">姓名</th><th class="col-3">员工编号</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 class="op-col">操作</th>
|
||||
<th class="col-1">序号</th><th class="col-2">姓名</th><th class="col-3">员工编号</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 class="op-col">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td class="col-1">1</td><td class="col-2">贾彬</td><td class="col-3">50500790</td><td>女</td><td>36</td><td>411330199001260043</td><td>13912345678</td><td>CQ工程设计有限公司</td><td>建筑设计部</td><td>热力司炉工</td><td>合同制B</td><td>1994-09-01</td><td>2000-05-01</td><td>在岗期间</td><td>噪声,一氧化碳</td><td>未体检</td><td>宁夏宝石花医院</td><td>2026</td><td>第二采气厂2026年员...</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span> <span class="link" style="color:var(--danger);margin-left:8px;" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
<tr><td class="col-1">1</td><td class="col-2">贾彬</td><td class="col-3">50500790</td><td>女</td><td>36</td><td>35≤年龄<40</td><td>411330199001260043</td><td>13912345678</td><td>CQ工程设计有限公司</td><td>建筑设计部</td><td>热力司炉工</td><td>合同制B</td><td>1994-09-01</td><td>2000-05-01</td><td>在岗期间</td><td>噪声,一氧化碳</td><td>未体检</td><td>宁夏宝石花医院</td><td>2026</td><td>第二采气厂2026年员...</td><td class="op-col"><span class="link" onclick="openEditModal(this)">编辑</span> <span class="link" style="color:var(--danger);margin-left:8px;" onclick="deleteRow(this)">删除</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -513,7 +517,7 @@ var examFormOptions = ['在岗期间','上岗前','离岗后','离岗时','应
|
||||
var jobTypeOptions = ['热力司炉工','采气工','化验工','行政专员','机修工','结构工程师'];
|
||||
var hazardFactorOptions = ['噪声','一氧化碳','硫化氢','苯','电焊烟尘','粉尘','高温'];
|
||||
/* 列表列索引 */
|
||||
var COL = { name:1, idcard:5, unit:7, dept:8, jobType:9, entryDate:11, hazardDate:12, examForm:13, hazardFactor:14 };
|
||||
var COL = { name:1, idcard:6, unit:8, dept:9, jobType:10, entryDate:12, hazardDate:13, examForm:14, hazardFactor:15 };
|
||||
var editTr = null;
|
||||
|
||||
function fillSelect(sel, options, current){
|
||||
|
||||
Reference in New Issue
Block a user