diff --git a/index.html b/index.html index 23f0fb3..33498b4 100644 --- a/index.html +++ b/index.html @@ -238,10 +238,10 @@ const SITE_MAP = [ { file:'pre-cta-plan-mgmt.html', label:'冠脉CTA单位体检计划管理' }, { file:'pre-special-cta.html', label:'冠脉CTA体检人员' }, { file:'pre-special-hospital.html', label:'指定员工体检医院' }, - { file:'mid-appointment-track.html', label:'体检预约' }, + // { file:'mid-appointment-track.html', label:'体检预约' }, { file:'mid-appointment-track2.html', label:'体检预约跟踪' }, - { file:'mid-selected-items.html', label:'已选项目' }, - { file:'mid-participation.html', label:'已检员工' }, + // { file:'mid-selected-items.html', label:'已选项目' }, + // { file:'mid-participation.html', label:'已检员工' }, { file:'mid-unit-appointment.html', label:'单位预约人数统计' }, { file:'mid-hospital-realtime.html', label:'医院实时预约人数' }, { file:'mid-doctor-realtime.html', label:'医生实时检查情况' }, @@ -255,7 +255,7 @@ const SITE_MAP = [ { file:'post-unit-count.html', label:'单位体检人数统计' }, { file:'post-unit-cost-stat.html', label:'单位体检费用统计' }, { file:'post-unit-item-stat.html', label:'单位体检项目统计' }, - { file:'post-result-comprehensive-stat.html', label:'结果动态综合统计' }, + { file:'post-result-comprehensive-stat.html', label:'项目结果综合统计' }, { file:'post-hospital-count.html', label:'医院体检人数统计' }, { file:'post-doctor-count.html', label:'医生检查人数统计' }, { file:'post-item-stat.html', label:'医院体检项目统计' }, diff --git a/web-admin/frontline-medical/bed-building.html b/web-admin/frontline-medical/bed-building.html index d72bcb9..d47c1d0 100644 --- a/web-admin/frontline-medical/bed-building.html +++ b/web-admin/frontline-medical/bed-building.html @@ -45,6 +45,32 @@ body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei .filter-select{height:36px;min-width:140px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:var(--font-sm);color:var(--text-primary);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;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;} .filter-input{height:36px;min-width:140px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:var(--font-sm);color:var(--text-primary);outline:none;} .filter-input:focus{border-color:var(--primary);} +/* 单位部门级联筛选 + 站点搜索下拉 */ +.org-wrap{position:relative;display:inline-block;} +.org-trigger{height:36px;min-width:130px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 28px 0 12px;font-size:var(--font-sm);color:var(--text-primary);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;cursor:pointer;display:flex;align-items:center;user-select:none;white-space:nowrap;} +.org-trigger.open,.org-trigger:hover{border-color:var(--primary);} +.org-panel{display:none;position:absolute;top:36px;left:0;z-index:310;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);width:380px;} +.org-panel.open{display:flex;} +.org-col{flex:1;overflow-y:auto;max-height:200px;border-right:1px solid var(--border);} +.org-col:last-child{border-right:none;} +.org-col__title{padding:6px 12px;font-size:var(--font-sm);color:var(--text-placeholder);background:#FAFAFA;border-bottom:1px solid var(--border);font-weight:500;} +.org-item{padding:8px 12px;font-size:var(--font-sm);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:4px;} +.org-item:hover{background:#F0F8FF;color:var(--primary);} +.org-item.active{background:var(--primary-light);color:var(--primary);font-weight:500;} +.station-search{position:relative;} +.station-search__panel{display:none;position:absolute;top:34px;left:0;right:0;z-index:320;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);max-height:240px;overflow-y:auto;} +.station-search__panel.open{display:block;} +.station-search__item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;} +.station-search__item:hover{background:#F0F8FF;} +.station-search__item .ss-name{color:var(--text-primary);font-weight:500;} +.station-search__item .ss-org{color:var(--text-placeholder);font-size:var(--font-xs);} +.station-search__empty{padding:16px 12px;text-align:center;color:var(--text-placeholder);font-size:var(--font-sm);} +.map-picker{width:100%;height:200px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#e6f7ff;display:flex;align-items:center;justify-content:center;color:var(--primary);font-size:var(--font-sm);gap:6px;cursor:pointer;position:relative;overflow:hidden;transition:border-color .2s;} +.map-picker:hover{border-color:var(--primary);} +.map-picker__bg{position:absolute;inset:0;opacity:.15;background:repeating-linear-gradient(0deg,transparent,transparent 19px,#91d5ff 19px,#91d5ff 20px),repeating-linear-gradient(90deg,transparent,transparent 19px,#91d5ff 19px,#91d5ff 20px);} +.map-picker__pin{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%);z-index:2;display:none;} +.map-picker__label{position:relative;z-index:2;display:flex;align-items:center;gap:6px;} +.map-picker__coord{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);background:rgba(255,255,255,0.92);padding:4px 14px;border-radius:12px;font-size:var(--font-xs);box-shadow:0 1px 4px rgba(0,0,0,0.1);z-index:3;display:none;white-space:nowrap;color:var(--text-primary);max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;} .btn{height:36px;padding:0 16px;border-radius:var(--radius-sm);font-size:var(--font-sm);cursor:pointer;border:none;transition:all .2s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;} .btn-primary{background:var(--primary);color:#fff;}.btn-primary:hover{background:#40a9ff;} .btn-default{background:#fff;color:var(--text-primary);border:1px solid var(--border);}.btn-default:hover{color:var(--primary);border-color:var(--primary);} @@ -155,16 +181,20 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/
- - -
-
- - + +
+
全部单位/部门
+
+
+
单位
+
全部单位/部门
+
+
+
部门
+
全部部门
+
+
+
@@ -200,7 +230,7 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ - 序号所属单位所属部门所属站点楼栋名称 + 序号楼栋名称所属站点所属单位部门 详细地址宿舍数量负责人负责人电话操作 @@ -215,28 +245,25 @@ select.form-control{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http:/ diff --git a/web-admin/health-checkup/post-illness-personnel.html b/web-admin/health-checkup/post-illness-personnel.html index bb77f94..05e4464 100644 --- a/web-admin/health-checkup/post-illness-personnel.html +++ b/web-admin/health-checkup/post-illness-personnel.html @@ -153,7 +153,7 @@ 常规体检
@@ -207,7 +207,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-imc-class.html b/web-admin/health-checkup/post-imc-class.html index 4375594..eaaa16a 100644 --- a/web-admin/health-checkup/post-imc-class.html +++ b/web-admin/health-checkup/post-imc-class.html @@ -145,6 +145,7 @@ @@ -171,7 +171,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-key-indicator-stat.html b/web-admin/health-checkup/post-key-indicator-stat.html index 48a1955..73460ae 100644 --- a/web-admin/health-checkup/post-key-indicator-stat.html +++ b/web-admin/health-checkup/post-key-indicator-stat.html @@ -150,7 +150,7 @@ 常规体检 @@ -204,7 +204,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-report-employee.html b/web-admin/health-checkup/post-report-employee.html index 3a7894e..c348de6 100644 --- a/web-admin/health-checkup/post-report-employee.html +++ b/web-admin/health-checkup/post-report-employee.html @@ -152,7 +152,7 @@ 常规体检 @@ -207,7 +207,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-report-gastro.html b/web-admin/health-checkup/post-report-gastro.html index edab211..aa9d2c8 100644 --- a/web-admin/health-checkup/post-report-gastro.html +++ b/web-admin/health-checkup/post-report-gastro.html @@ -203,7 +203,7 @@ 常规体检 @@ -257,7 +257,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-report-unmatched.html b/web-admin/health-checkup/post-report-unmatched.html index 3636ed3..7fd3731 100644 --- a/web-admin/health-checkup/post-report-unmatched.html +++ b/web-admin/health-checkup/post-report-unmatched.html @@ -136,7 +136,7 @@ 常规体检 @@ -190,7 +190,7 @@ 冠脉CTA体检 diff --git a/web-admin/health-checkup/post-result-comprehensive-stat.html b/web-admin/health-checkup/post-result-comprehensive-stat.html index 1f53811..2f7d0a6 100644 --- a/web-admin/health-checkup/post-result-comprehensive-stat.html +++ b/web-admin/health-checkup/post-result-comprehensive-stat.html @@ -3,7 +3,7 @@ -健康体检 - 结果动态综合统计 | 健康CQ原型 +健康体检 - 项目结果综合统计 | 健康CQ原型 @@ -121,7 +222,7 @@ 常规体检 @@ -175,47 +276,211 @@ 冠脉CTA体检 +
- -
-
-
- -
- - -
-
2026
-
2025
-
2024
+ +
+
图表
+
列表
+
+ + +
+ +
+
+
+ +
+ + +
+
2026
+
2025
+
2024
+
+
+ + +
-
- - +
+ + +
+
+ + + - - -
+ +
+ + +
+ + + + + +
+ + +
diff --git a/web-admin/health-checkup/pre-item-required.html b/web-admin/health-checkup/pre-item-required.html index 6c44eed..742844b 100644 --- a/web-admin/health-checkup/pre-item-required.html +++ b/web-admin/health-checkup/pre-item-required.html @@ -146,6 +146,25 @@ .year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;} .year-picker__dropdown div:hover{background:var(--primary-light);} .year-picker__dropdown div.selected{color:var(--primary);font-weight:600;} +/* 高级查询 */ +.adv-panel{background:#fff;border-radius:var(--radius-md);padding:16px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:none;} +.adv-panel.open{display:block;} +.adv-panel__head{font-size:var(--font-base);font-weight:600;margin-bottom:12px;} +#advConditions{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;} +.adv-cond-row{display:flex;align-items:center;gap:8px;margin-bottom:0;min-width:0;} +.adv-field{min-width:140px;flex:1;} +.adv-op{min-width:72px;flex:none;} +.adv-value-wrap{display:flex;align-items:center;gap:8px;flex:1;min-width:0;max-width:none;} +.adv-value{flex:1;min-width:0;} +.adv-range-sep{color:var(--text-secondary);flex-shrink:0;} +.adv-del{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--text-secondary);cursor:pointer;flex-shrink:0;font-size:var(--font-sm);line-height:1;} +.adv-del:hover{color:var(--danger);border-color:var(--danger);} +.adv-actions{display:flex;gap:12px;margin-top:2px;} +.adv-arrow{font-size:10px;} +/* 轻提示 */ +.toast{position:fixed;top:76px;left:50%;transform:translateX(-50%) translateY(-16px);background:#fff;box-shadow:var(--shadow-md);border-radius:var(--radius-sm);padding:10px 20px;font-size:var(--font-sm);color:var(--text-primary);opacity:0;pointer-events:none;transition:all .25s;z-index:1000;display:flex;align-items:center;gap:8px;} +.toast.show{opacity:1;transform:translateX(-50%) translateY(0);} +.toast svg{flex-shrink:0;} @@ -282,32 +301,20 @@ -
- - -
-
- - -
-
- - -
-
- - -
+ + + + +
+
高级查询
+
+
+ + + +
@@ -992,6 +999,111 @@ document.querySelectorAll('.year-picker>input').forEach(function(inp){ document.addEventListener('click',function(){ document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');}); }); +/* ============ 高级查询 ============ */ +var ADV_OPS=['包含','=','!=','>','>=','<','<=','范围']; +var ADV_ROW_SELECTOR='.table-card__content tbody tr'; +var ADV_FIELDS=[ + {key:'comboName',label:'项目组合名称',idx:2},{key:'hospital',label:'承检医院',idx:3},{key:'unit',label:'单位',idx:4}, + {key:'year',label:'体检年份',idx:5},{key:'gender',label:'性别',idx:6},{key:'ageRange',label:'年龄范围',idx:7}, + {key:'declaredFee',label:'本次提交费用(元)',idx:8},{key:'auditStatus',label:'费用审核状态',idx:9}, + {key:'effectiveFee',label:'必检项目费用(已生效)',idx:10},{key:'genStatus',label:'生成状态',idx:11},{key:'genTime',label:'生成时间',idx:12} +]; +var ADV_FIELD_OPTS=ADV_FIELDS.map(function(f){return '';}).join(''); +function advConditionRowHTML(){ + return '
' + +'' + +'' + +'' + +'' + +'
'; +} +function onAdvOpChange(sel){ + var wrap=sel.parentElement.querySelector('.adv-value-wrap'); + var isRange=sel.value==='范围'; + var alreadyRange=!!wrap.querySelector('.adv-range-from'); + if(isRange&&!alreadyRange){ + wrap.innerHTML='' + +'~' + +''; + }else if(!isRange&&alreadyRange){ + wrap.innerHTML=''; + } +} +function addAdvCondition(){document.getElementById('advConditions').insertAdjacentHTML('beforeend',advConditionRowHTML());} +function removeAdvCondition(el){el.parentElement.remove();} +function toggleAdvanced(){ + var p=document.getElementById('advPanel'); + var open=p.classList.toggle('open'); + var arr=document.getElementById('advToggle').querySelector('.adv-arrow'); + if(arr)arr.textContent=open?'▴':'▾'; + if(open&&!p.querySelector('.adv-cond-row'))addAdvCondition(); +} +function readAdvancedConditions(){ + var conds=[]; + document.querySelectorAll('#advConditions .adv-cond-row').forEach(function(row){ + var field=row.querySelector('.adv-field').value; + var op=row.querySelector('.adv-op').value; + if(op==='范围'){ + var from=row.querySelector('.adv-range-from').value.trim(); + var to=row.querySelector('.adv-range-to').value.trim(); + if(from!==''||to!=='')conds.push({field:field,op:op,from:from,to:to}); + }else{ + var value=row.querySelector('.adv-value').value.trim(); + if(value!=='')conds.push({field:field,op:op,value:value}); + } + }); + return conds; +} +function fieldByKey(key){for(var i=0;i=0; + if(cond.op==='=')return str===cond.value; + if(cond.op==='!=')return str!==cond.value; + var n=numericOf(str); + if(n===null)return false; + if(cond.op==='范围'){ + if(cond.from!==''){var lo=parseFloat(cond.from);if(!isNaN(lo)&&nhi)return false;} + return true; + } + var c=parseFloat(cond.value);if(isNaN(c))return false; + if(cond.op==='>')return n>c; + if(cond.op==='>=')return n>=c; + if(cond.op==='<')return n + +
+ + +
diff --git a/web-admin/health-checkup/pre-special-cancer.html b/web-admin/health-checkup/pre-special-cancer.html index aa065a9..f21eed0 100644 --- a/web-admin/health-checkup/pre-special-cancer.html +++ b/web-admin/health-checkup/pre-special-cancer.html @@ -153,6 +153,25 @@ .year-picker__dropdown div{padding:8px 14px;font-size:var(--font-sm);cursor:pointer;} .year-picker__dropdown div:hover{background:var(--primary-light);} .year-picker__dropdown div.selected{color:var(--primary);font-weight:600;} +/* 高级查询 */ +.adv-panel{background:#fff;border-radius:var(--radius-md);padding:16px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm);display:none;} +.adv-panel.open{display:block;} +.adv-panel__head{font-size:var(--font-base);font-weight:600;margin-bottom:12px;} +#advConditions{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;} +.adv-cond-row{display:flex;align-items:center;gap:8px;margin-bottom:0;min-width:0;} +.adv-field{min-width:140px;flex:1;} +.adv-op{min-width:72px;flex:none;} +.adv-value-wrap{display:flex;align-items:center;gap:8px;flex:1;min-width:0;max-width:none;} +.adv-value{flex:1;min-width:0;} +.adv-range-sep{color:var(--text-secondary);flex-shrink:0;} +.adv-del{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--text-secondary);cursor:pointer;flex-shrink:0;font-size:var(--font-sm);line-height:1;} +.adv-del:hover{color:var(--danger);border-color:var(--danger);} +.adv-actions{display:flex;gap:12px;margin-top:2px;} +.adv-arrow{font-size:10px;} +/* 轻提示 */ +.toast{position:fixed;top:76px;left:50%;transform:translateX(-50%) translateY(-16px);background:#fff;box-shadow:var(--shadow-md);border-radius:var(--radius-sm);padding:10px 20px;font-size:var(--font-sm);color:var(--text-primary);opacity:0;pointer-events:none;transition:all .25s;z-index:1000;display:flex;align-items:center;gap:8px;} +.toast.show{opacity:1;transform:translateX(-50%) translateY(0);} +.toast svg{flex-shrink:0;} @@ -300,33 +319,20 @@ -
- - -
-
- - -
-
- - -
+ + + + +
+
高级查询
+
+
+ + + +
@@ -827,6 +833,114 @@ document.querySelectorAll('.year-picker>input').forEach(function(inp){ document.addEventListener('click',function(){ document.querySelectorAll('.year-picker__dropdown.open').forEach(function(d){d.classList.remove('open');}); }); +/* ============ 高级查询 ============ */ +var ADV_OPS=['包含','=','!=','>','>=','<','<=','范围']; +var ADV_ROW_SELECTOR='.table-card__content tbody tr'; +var ADV_FIELDS=[ + {key:'name',label:'姓名',idx:1},{key:'empNo',label:'员工编号',idx:2},{key:'gender',label:'性别',idx:3}, + {key:'age',label:'年龄',idx:4},{key:'ageRange',label:'年龄范围',idx:5},{key:'idCard',label:'身份证号',idx:6}, + {key:'phone',label:'手机号',idx:7},{key:'unit',label:'单位',idx:8},{key:'dept',label:'部门',idx:9}, + {key:'year',label:'体检年份',idx:10},{key:'plan',label:'体检计划',idx:11},{key:'planUnit',label:'体检计划单位',idx:12}, + {key:'cancerType',label:'防癌筛查类型',idx:13},{key:'cancerYear',label:'防癌检查年份',idx:14}, + {key:'s9Checked',label:'Septin9是否已检',idx:15},{key:'s9Abn',label:'Septin9检查异常',idx:16},{key:'s9Value',label:'Septin9项目值',idx:17}, + {key:'caChecked',label:'CA724是否已检',idx:18},{key:'caAbn',label:'CA724检查异常',idx:19},{key:'caValue',label:'CA724项目值',idx:20} +]; +var ADV_FIELD_OPTS=ADV_FIELDS.map(function(f){return '';}).join(''); +function advConditionRowHTML(){ + return '
' + +'' + +'' + +'' + +'' + +'
'; +} +function onAdvOpChange(sel){ + var wrap=sel.parentElement.querySelector('.adv-value-wrap'); + var isRange=sel.value==='范围'; + var alreadyRange=!!wrap.querySelector('.adv-range-from'); + if(isRange&&!alreadyRange){ + wrap.innerHTML='' + +'~' + +''; + }else if(!isRange&&alreadyRange){ + wrap.innerHTML=''; + } +} +function addAdvCondition(){document.getElementById('advConditions').insertAdjacentHTML('beforeend',advConditionRowHTML());} +function removeAdvCondition(el){el.parentElement.remove();} +function toggleAdvanced(){ + var p=document.getElementById('advPanel'); + var open=p.classList.toggle('open'); + var arr=document.getElementById('advToggle').querySelector('.adv-arrow'); + if(arr)arr.textContent=open?'▴':'▾'; + if(open&&!p.querySelector('.adv-cond-row'))addAdvCondition(); +} +function readAdvancedConditions(){ + var conds=[]; + document.querySelectorAll('#advConditions .adv-cond-row').forEach(function(row){ + var field=row.querySelector('.adv-field').value; + var op=row.querySelector('.adv-op').value; + if(op==='范围'){ + var from=row.querySelector('.adv-range-from').value.trim(); + var to=row.querySelector('.adv-range-to').value.trim(); + if(from!==''||to!=='')conds.push({field:field,op:op,from:from,to:to}); + }else{ + var value=row.querySelector('.adv-value').value.trim(); + if(value!=='')conds.push({field:field,op:op,value:value}); + } + }); + return conds; +} +function fieldByKey(key){for(var i=0;i=0; + if(cond.op==='=')return str===cond.value; + if(cond.op==='!=')return str!==cond.value; + var n=numericOf(str); + if(n===null)return false; + if(cond.op==='范围'){ + if(cond.from!==''){var lo=parseFloat(cond.from);if(!isNaN(lo)&&nhi)return false;} + return true; + } + var c=parseFloat(cond.value);if(isNaN(c))return false; + if(cond.op==='>')return n>c; + if(cond.op==='>=')return n>=c; + if(cond.op==='<')return n + +
+ + +