';
+}
function renderTable(){
- var u=document.getElementById('filterUnit').value,d=document.getElementById('filterDepart').value,s=document.getElementById('filterStation').value,k=document.getElementById('filterName').value.trim();
- var list=buildings.filter(function(b){return (!u||b.unit===u)&&(!d||b.depart===d)&&(!s||b.station===s)&&(!k||b.name.indexOf(k)>=0);});
+ var s=document.getElementById('filterStation').value,k=document.getElementById('filterName').value.trim();
+ var list=buildings.filter(function(b){return (!selUnit||b.unit===selUnit)&&(!selDept||b.depart===selDept)&&(!s||b.station===s)&&(!k||b.name.indexOf(k)>=0);});
document.getElementById('tbody').innerHTML=list.map(function(b){
var i=buildings.indexOf(b);
return '
'
- +'
'+(i+1)+'
'+b.unit+'
'+b.depart+'
'+b.station+'
'+b.name+'
'
+ +'
'+(i+1)+'
'+b.name+'
'+b.station+'
'+b.unit+' / '+b.depart+'
'
+'
'+b.addr+'
'+b.dorms+'
'+b.manager+'
'+b.mobile+'
'
+'
';
- }).join('')||'
没有符合条件的楼栋
';
+ }).join('')||'
没有符合条件的楼栋
';
document.getElementById('totalTip').textContent='共 '+list.length+' 栋';
document.getElementById('ckAll').checked=false;
}
-function resetFilter(){['filterUnit','filterDepart','filterStation'].forEach(function(id){document.getElementById(id).value='';});document.getElementById('filterName').value='';onFilterUnit();}
+function resetFilter(){resetOrg();document.getElementById('filterStation').value='';document.getElementById('filterName').value='';renderTable();}
/* [交互] 复选框与批量删除 */
function toggleAll(ck){document.querySelectorAll('.rowCk').forEach(function(c){c.checked=ck.checked;});}
function syncAllCk(){
@@ -416,51 +470,101 @@ function batchDelete(){
document.getElementById('confirmMask').classList.add('open');
}
/* [交互] 新增/编辑 */
-var editIdx=-1;
-function onEditUnit(){
- var u=document.getElementById('eUnit').value;
- var depSel=document.getElementById('eDepart'),staSel=document.getElementById('eStation');
- depSel.innerHTML=''+(u?unitDeparts[u]:[]).map(function(d){return '';}).join('');
- staSel.innerHTML='';
+var editIdx=-1,selStation='';
+function onStationInput(){selStation='';renderStationPanel();}
+function onStationFocus(){renderStationPanel();}
+function renderStationPanel(){
+ var q=document.getElementById('eStation').value.trim();
+ var list=stationList.filter(function(st){return !q||st.name.indexOf(q)>=0;});
+ document.getElementById('stationPanel').innerHTML=list.map(function(st){
+ return '
'+st.name+''+st.unit+' / '+st.depart+'
';
+ }).join('')||'
未查询到站点
';
+ document.getElementById('stationPanel').classList.add('open');
}
-function onEditDepart(){
- var d=document.getElementById('eDepart').value;
- document.getElementById('eStation').innerHTML=''+(d?depStations[d]:[]).map(function(s){return '';}).join('');
+function pickStation(name){
+ selStation=name;
+ document.getElementById('eStation').value=name;
+ document.getElementById('stationPanel').classList.remove('open');
+}
+/* [交互] 地图选点:点击地图生成坐标并回填详细地址 */
+function pickLocation(e){
+ var picker=document.getElementById('mapPicker');
+ var rect=picker.getBoundingClientRect();
+ var x=e.clientX-rect.left;
+ var y=e.clientY-rect.top;
+ var pin=document.getElementById('mapPin');
+ pin.style.display='block';
+ pin.style.left=x+'px';
+ pin.style.top=y+'px';
+ document.getElementById('mapLabel').style.display='none';
+ var addresses=['樊学作业区基地营地东侧','麻子山作业区站点北门','桐园作业区生活区西区','西峰基地食堂南侧','靖边气田综合管理营地北侧'];
+ var idx=Math.floor(Math.random()*addresses.length);
+ var coord=document.getElementById('mapCoord');
+ coord.innerHTML=''+addresses[idx];
+ coord.style.display='block';
+ document.getElementById('eAddr').value=addresses[idx];
+}
+function resetMapPicker(){
+ document.getElementById('mapPin').style.display='none';
+ document.getElementById('mapLabel').style.display='flex';
+ document.getElementById('mapCoord').style.display='none';
+ document.getElementById('mapCoord').innerHTML='';
}
function openEdit(i){
editIdx=i;
+ resetMapPicker();
document.getElementById('editTitle').textContent=i<0?'新增楼栋信息':'编辑楼栋信息';
- onEditUnit();
if(i>=0){
var b=buildings[i];
- document.getElementById('eUnit').value=b.unit;onEditUnit();
- document.getElementById('eDepart').innerHTML=''+unitDeparts[b.unit].map(function(d){return '';}).join('');
- onEditDepart();
- document.getElementById('eStation').innerHTML=''+depStations[b.depart].map(function(s){return '';}).join('');
+ selStation=b.station;
+ document.getElementById('eStation').value=b.station;
document.getElementById('eName').value=b.name;document.getElementById('eAddr').value=b.addr;
document.getElementById('eManager').value=b.manager;document.getElementById('eMobile').value=b.mobile;
}else{
- ['eName','eAddr','eManager','eMobile'].forEach(function(id){document.getElementById(id).value='';});
- document.getElementById('eUnit').value='';onEditUnit();
+ selStation='';
+ ['eStation','eName','eAddr','eManager','eMobile'].forEach(function(id){document.getElementById(id).value='';});
}
+ document.getElementById('stationPanel').classList.remove('open');
document.getElementById('editMask').classList.add('open');
}
function closeEdit(){document.getElementById('editMask').classList.remove('open');}
function saveEdit(){
- var u=document.getElementById('eUnit').value,d=document.getElementById('eDepart').value,s=document.getElementById('eStation').value;
+ var s=selStation||document.getElementById('eStation').value.trim();
var n=document.getElementById('eName').value.trim(),a=document.getElementById('eAddr').value.trim();
- if(!u||!d||!s||!n||!a){showToast('请完整填写带 * 的必填项');return;}
+ var meta=stationMeta[s];
+ if(!s||!meta||!n||!a){showToast('请完整填写带 * 的必填项');return;}
var dup=buildings.some(function(b,i){return i!==editIdx&&b.station===s&&b.name===n;});
if(dup){showToast('该站点下已存在同名楼栋');return;}
- var obj={unit:u,depart:d,station:s,name:n,addr:a,dorms:editIdx>=0?buildings[editIdx].dorms:0,manager:document.getElementById('eManager').value.trim()||'—',mobile:document.getElementById('eMobile').value.trim()||'—'};
+ var obj={unit:meta.unit,depart:meta.depart,station:s,name:n,addr:a,dorms:editIdx>=0?buildings[editIdx].dorms:0,manager:document.getElementById('eManager').value.trim()||'—',mobile:document.getElementById('eMobile').value.trim()||'—'};
if(editIdx<0)buildings.push(obj);else buildings[editIdx]=obj;
closeEdit();renderTable();showToast(editIdx<0?'楼栋已新增':'楼栋已更新');
}
/* [交互] 导入 */
-function openImport(){document.getElementById('importMask').classList.add('open');}
+var selImportStation='';
+function onImportStationInput(){selImportStation='';renderImportStationPanel();}
+function onImportStationFocus(){renderImportStationPanel();}
+function renderImportStationPanel(){
+ var q=document.getElementById('iStation').value.trim();
+ var list=stationList.filter(function(st){return !q||st.name.indexOf(q)>=0;});
+ document.getElementById('importStationPanel').innerHTML=list.map(function(st){
+ return '