You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
hy-screen-2.0/docs/assets/index-30f157a6-178572677844...

1 lines
44 KiB

var It=Object.defineProperty,Bt=Object.defineProperties;var Yt=Object.getOwnPropertyDescriptors;var jt=Object.getOwnPropertySymbols;var qt=Object.prototype.hasOwnProperty,Ut=Object.prototype.propertyIsEnumerable;var kt=(h,g,y)=>g in h?It(h,g,{enumerable:!0,configurable:!0,writable:!0,value:y}):h[g]=y,le=(h,g)=>{for(var y in g||(g={}))qt.call(g,y)&&kt(h,y,g[y]);if(jt)for(var y of jt(g))Ut.call(g,y)&&kt(h,y,g[y]);return h},_e=(h,g)=>Bt(h,Yt(g));var B=(h,g,y)=>new Promise((k,x)=>{var u=R=>{try{M(y.next(R))}catch(T){x(T)}},q=R=>{try{M(y.throw(R))}catch(T){x(T)}},M=R=>R.done?k(R.value):Promise.resolve(R.value).then(u,q);M((y=y.apply(h,g)).next())});import{g as At}from"./index-e9f36657-1785726778446.js";/* empty css */import{_ as Lt}from"./index-7b46d381-1785726778446.js";import{d as Wt,i as Ye,g as zt,b as Et}from"./townshipBoundaries-8867fad4-1785726778446.js";import{r as Ft,n as Pt}from"./index-e33f4373-1785726778446.js";import{c as Ht,F as Gt,b as Jt}from"./featurePanelLayout-b5234356-1785726778446.js";import{A as Qt}from"./assets-5661f996-1785726778446.js";import{q as Zt,r as Xt,s as Kt}from"./screen2Standard-f38b9a2d-1785726778446.js";import{M as en}from"./index-7b548b42-1785726778446.js";import{_ as tn}from"./LayerPanel-921f9e3d-1785726778446.js";import{a as $t,_ as nn}from"./FeatureInfoPanel-e0a0d741-1785726778446.js";import{_ as an}from"./TopicSwitcher-0aae51d1-1785726778446.js";import{_ as xt,g as v,w as Ne,q as Tt,h as Dt,o as c,c as m,a as r,t as f,F as he,y as be,n as je,K as Me,s as mt,O as yt,u as We,j as X,d as C,N as _t,A as qe,b as $e,C as rt,x as Nt,z as sn}from"./index-1785726778446.js";import{b as it,e as ht,r as rn,a as ln,p as on,g as un,c as bt,d as cn}from"./data-aa09e6f1-1785726778446.js";import"./data-56996d99-1785726778446.js";const dn="/openApi";function vn(h){return B(this,null,function*(){const g=yield Ft(`${dn}/ecologicalProtection/rangeStats`,{method:"POST",timeout:3e4,params:{scopeKey:h},headers:{"Content-Type":"application/json"},body:JSON.stringify({scopeKey:h})}),y=Pt(g);return pn(Array.isArray(y)?y[0]||{}:y||{})})}const gn={scope_key:"scopeKey",scope_name:"scopeName",scope_area_wan_mu:"scopeAreaWanMu",source_feature_count:"sourceFeatureCount",grassland_area_wan_mu:"grasslandAreaWanMu",wetland_area_wan_mu:"wetlandAreaWanMu",woodland_area_wan_mu:"woodlandAreaWanMu",grassland_fresh_yield_wan_ton:"grasslandFreshYieldWanTon",wetland_fresh_yield_wan_ton:"wetlandFreshYieldWanTon",grassland_mu_yield_jin:"grasslandMuYieldJin",wetland_mu_yield_jin:"wetlandMuYieldJin",grassland_vegetation_cover_percent:"grasslandVegetationCoverPercent",grassland_patch_count:"grasslandPatchCount",wetland_patch_count:"wetlandPatchCount",woodland_patch_count:"woodlandPatchCount",grassland_distribution:"grasslandDistribution",wetland_distribution:"wetlandDistribution",woodland_distribution:"woodlandDistribution",grassland_productivity:"grasslandProductivity",grassland_types:"grasslandTypes",zoning_structure:"zoningStructure",grassland_levels:"grasslandLevels",vegetation_cover_bands:"vegetationCoverBands",woodland_types:"woodlandTypes",woodland_quality:"woodlandQuality",area_method:"areaMethod",area_unit:"areaUnit",productivity_method:"productivityMethod"};function pn(h={}){return!h||typeof h!="object"?{}:Object.entries(h).reduce((g,[y,k])=>{g[y]=k;const x=gn[y];return x&&g[x]===void 0&&(g[x]=k),g},{})}const fn={class:"engineering-analysis-panel"},mn={class:"analysis-card-head"},yn={class:"analysis-type-list",role:"radiogroup","aria-label":"工程类型"},_n=["disabled","aria-checked","onClick"],hn={class:"analysis-type-main"},bn={class:"analysis-filter-grid","aria-label":"动态筛选条件"},wn={class:"is-wide"},Sn=["disabled"],Cn=["value"],jn=["disabled"],kn=["disabled"],An={class:"analysis-filter-note"},Ln={key:0},En={key:1},$n={key:2},Nn={key:3},Mn=["disabled","aria-busy"],Fn={key:0,class:"analysis-submit-spinner"},Pn={key:1},xn={key:2},Tn={key:0,class:"analysis-progress","aria-live":"polite"},Dn=["aria-valuenow","aria-busy"],Rn={key:1,class:"analysis-step-list","aria-label":"空间分析步骤"},On={key:2,class:"analysis-error"},Vn={key:0,class:"analysis-card analysis-result-card"},In={class:"analysis-card-head is-result"},Bn={key:0,class:"analysis-result-summary is-loading"},Yn={class:"is-final"},qn={key:1,class:"analysis-result-summary"},Un={class:"is-excluded"},Wn={class:"is-final"},zn={class:"analysis-result-list"},Hn=["aria-pressed","onClick"],Gn={key:0},Jn={key:1},Qn={key:2},Zn={key:0},Xn={key:1},Kn={key:2,class:"analysis-excluded-projects"},ea={class:"analysis-excluded-project-list"},ta=["title"],na=["disabled"],aa={class:"analysis-result-foot"},Ue="/geoserver/ne/ows",wt="ne:t_ecological_engineering_suitability_layer",sa="ne:t_ecological_engineering_suitability_export_layer",ra="ne:t_ecological_restoration_project_layer",ia=750,Mt=5e3,la=18,oa=420,ua=18e3,St="#FFD43B",ca={__name:"EngineeringAnalysisPanel",emits:["analysis-reset","analysis-batch","analysis-complete","analysis-state","result-visibility"],setup(h,{emit:g}){const y=g,k=[{key:"prepare",label:"初始化分析环境",description:"正在准备空间索引与工程参数",minimumDuration:1400},{key:"validate",label:"校验业务条件",description:"正在校验乡镇、工程类型与时间范围",minimumDuration:1500},{key:"count",label:"计算基础候选区",description:"正在统计满足基础条件的候选图斑",minimumDuration:2e3},{key:"exclude",label:"排除历史项目",description:"正在比对既有工程与重复实施范围",minimumDuration:2200},{key:"overlay",label:"执行空间叠加",description:"正在叠加生态约束与工程适宜条件",minimumDuration:1400},{key:"generate",label:"生成适宜图斑",description:"正在分批生成并渲染适宜实施区域",minimumDuration:0},{key:"verify",label:"汇总校验结果",description:"正在汇总面积、数量与空间完整性",minimumDuration:2200}],x=[{key:"forest-conservation",name:"封山育林",color:St},{key:"grassland-improvement",name:"草原改良",color:St},{key:"artificial-grass",name:"人工种草",color:St}],u=C([x[0].key]),q=C(""),M=C("same"),R=C(3),T=C(null),O=C("idle"),U=C(""),_=C(""),F=C(null),S=C("loading"),H=C(-1),K=_t({}),ie=_t({}),ve=_t({});let E=null,oe=0;const pe=Wt,L=v(()=>O.value==="running"),V=v(()=>O.value==="done"),ne=v(()=>u.value.length>0&&!L.value&&(M.value==="none"||S.value==="ready")),Fe=v(()=>x),ue=v(()=>{var t;return((t=x.find(a=>a.key===u.value[0]))==null?void 0:t.name)||"请选择工程"}),ce=v(()=>x.filter(t=>u.value.includes(t.key)).map(t=>K[t.key]||Re(t))),Pe=v(()=>{const t=Number(T.value);return Number.isFinite(t)?t-Number(R.value)+1:null}),D=v(()=>{const t=`${Pe.value}${T.value}`,a=F.value?`项目库更新至 ${F.value} 年 · `:"",o=M.value==="all"?`排除 ${t} 内实施过任一工程的相交地块`:`排除 ${t} 内实施过同类工程的相交地块`;return`${a}${o}`}),W=v(()=>k[H.value]||null),ze=v(()=>k.map((t,a)=>_e(le({},t),{index:a,status:V.value||a<H.value?"done":a===H.value?"active":"pending"}))),lt=v(()=>L.value?`${H.value+1}/${k.length}`:V.value?"分析完成":"等待分析"),ee=v(()=>ce.value.reduce((t,a)=>t+Number(a.baseCount||0),0)),fe=v(()=>ce.value.reduce((t,a)=>t+Number(a.targetCount||0),0)),ae=v(()=>ce.value.reduce((t,a)=>t+Number(a.loadedCount||0),0)),xe=v(()=>Math.max(0,ee.value-fe.value)),we=v(()=>ce.value.reduce((t,a)=>t+Number(a.loadedAreaMu||0),0)/1e4),Te=v(()=>Math.max(0,...ce.value.map(t=>Number(t.loadedPage||0)))),se=v(()=>Object.values(ve).map(t=>_e(le({},t),{areaMu:Number(Number(t.areaMu||0).toFixed(2))})).sort((t,a)=>a.areaMu-t.areaMu)),He=v(()=>se.value.reduce((t,a)=>t+Number(a.areaMu||0),0)/1e4),De=v(()=>{var p;if(V.value)return 100;if(!L.value)return 0;const t=100/k.length,a=Math.max(0,H.value)*t,i=((p=W.value)==null?void 0:p.key)==="generate"&&fe.value?Math.min(.96,ae.value/fe.value):.42;return Math.min(99,Math.max(1,Math.round(a+i*t)))}),ot=v(()=>{var t;return L.value&&((t=W.value)==null?void 0:t.key)==="generate"?`正在分批渲染${ue.value}图斑,已生成 ${re(ae.value)}`:L.value&&W.value?W.value.description:V.value?`分析完成,共形成 ${re(ae.value)} 个可实施候选图斑`:"正在准备空间分析"}),Ge=v(()=>{const t=q.value||"红原县全域";return M.value==="none"?`${t} · 未排除历史项目`:`${t} · ${Pe.value}${T.value} 年未实施条件`});Ne([u,q,M,R,T],()=>{!V.value&&O.value!=="error"||(O.value="idle",H.value=-1,U.value="",_.value="",Object.keys(K).forEach(t=>delete K[t]),y("analysis-reset"))}),Tt(()=>gt()),Dt(()=>Ae());function Re(t){return _e(le({},t),{status:"idle",baseCount:0,targetCount:0,loadedCount:0,loadedAreaMu:0,loadedPage:0,visible:!0})}function Je(t){L.value||u.value[0]!==t&&(u.value=[t])}function ut(){return B(this,null,function*(){var i,p,A,j;if(!ne.value)return;Ae();const t=++oe,a=((p=(i=window.performance)==null?void 0:i.now)==null?void 0:p.call(i))||Date.now();E=new AbortController,O.value="running",U.value="",_.value="";const o=nt();Object.keys(K).forEach($=>delete K[$]),Object.keys(ie).forEach($=>delete ie[$]),Object.keys(ve).forEach($=>delete ve[$]),u.value.forEach($=>{const P=x.find(I=>I.key===$);K[$]=Re(P),K[$].status="counting"}),y("analysis-reset");try{yield ge(0,t,E.signal),yield ge(1,t,E.signal),yield ge(2,t,E.signal,()=>B(this,null,function*(){yield Promise.all(u.value.map(P=>B(this,null,function*(){const I=K[P],[J,Q]=yield Promise.all([Xe(Oe(P,!1,o),E.signal),Xe(Oe(P,!0,o),E.signal)]);G(t),I.baseCount=J,I.targetCount=Q,I.status="queued"})))})),yield ge(3,t,E.signal,()=>B(this,null,function*(){yield Promise.all(u.value.map(P=>Ve(P,o,t,E.signal)))})),yield ge(4,t,E.signal),yield ge(5,t,E.signal,()=>B(this,null,function*(){for(const P of u.value)G(t),yield Qe(K[P],o,t,E.signal)})),yield ge(6,t,E.signal),G(t);const $=(((j=(A=window.performance)==null?void 0:A.now)==null?void 0:j.call(A))||Date.now())-a;yield Ee(Math.max(0,ua-$),E.signal),G(t),O.value="done",H.value=k.length,y("analysis-state",{state:"done",stepNumber:k.length,stepTotal:k.length,progress:100}),_.value=Ze(o),y("analysis-complete",{rows:ce.value,filters:o,statistics:Ie(o)})}catch($){if(($==null?void 0:$.name)==="AbortError"||t!==oe)return;O.value="error",H.value=-1,y("analysis-state",{state:"error"}),U.value="工程适宜区服务暂时无法连接,请稍后重试。",_.value="",y("analysis-reset")}finally{t===oe&&(E=null)}})}function Qe(t,a,o,i){return B(this,null,function*(){if(t.status="loading",!t.targetCount){t.status="done";return}let p=0;for(;p<t.targetCount;){G(o);const A=yield Ke(Oe(t.key,!0,a),p,i);G(o);const j=Array.isArray(A.features)?A.features:[];if(!j.length)break;t.loadedPage+=1;const $=Math.max(40,Math.ceil(t.targetCount/la));for(let P=0;P<j.length;P+=$){G(o);const I=j.slice(P,P+$);t.loadedCount+=I.length,t.loadedAreaMu+=I.reduce((J,Q)=>{var ye;return J+Number(((ye=Q==null?void 0:Q.properties)==null?void 0:ye.source_area_mu)||0)},0),pt(I,a),y("analysis-batch",{key:t.key,name:t.name,color:t.color,features:I,loadedCount:t.loadedCount,targetCount:t.targetCount}),ke(),yield Le(i)}p+=j.length}t.status="done"})}function Oe(t,a,o=nt()){const i=[`engineering_type='${me(t)}'`];return i.push(...ct(o,a)),i.join(" AND ")}function Ze(t){const o=[`eng_type IN (${t.engineeringTypes.map(i=>`'${me(i)}'`).join(",")})`];if(t.township&&o.push(`town_name='${me(t.township)}'`),t.projectFilterMode!=="none"){const i=t.projectFilterMode==="all"?"last_year":"same_year";o.push(`(${i} IS NULL OR ${i}<${Number(t.startYear)})`)}return o.join(" AND ")}function ct(t,a){const o=[];if(t.township&&o.push(`township_name='${me(t.township)}'`),a&&t.projectFilterMode!=="none"){const i=t.projectFilterMode==="all"?"latest_project_year":"latest_same_type_project_year";o.push(`(${i} IS NULL OR ${i}<${Number(t.startYear)})`)}return o}function dt(t,a){const o=[`engineering_type='${me(t)}'`];if(a.township&&o.push(`township_name='${me(a.township)}'`),a.projectFilterMode==="none")return"EXCLUDE";const i=a.projectFilterMode==="all"?"latest_project_year":"latest_same_type_project_year";return o.push(`${i}>=${Number(a.startYear)}`),o.join(" AND ")}function Xe(t,a){return B(this,null,function*(){const o=new URLSearchParams({service:"WFS",version:"2.0.0",request:"GetFeature",typeNames:wt,resultType:"hits",CQL_FILTER:t}),i=yield fetch(`${Ue}?${o}`,{credentials:"same-origin",signal:a});if(!i.ok)throw new Error(`HTTP ${i.status}`);const p=yield i.text(),A=p.match(/numberMatched="(\d+)"/i)||p.match(/numberOfFeatures="(\d+)"/i);return Number((A==null?void 0:A[1])||0)})}function Ke(t,a,o){return B(this,null,function*(){const i=new URLSearchParams({service:"WFS",version:"2.0.0",request:"GetFeature",typeNames:wt,outputFormat:"application/json",srsName:"EPSG:4326",count:String(ia),startIndex:String(a),sortBy:"id",CQL_FILTER:t}),p=yield fetch(`${Ue}?${i}`,{credentials:"same-origin",signal:o});if(!p.ok)throw new Error(`HTTP ${p.status}`);return p.json()})}function Ve(t,a,o,i){return B(this,null,function*(){if(a.projectFilterMode==="none")return;const p=a.projectFilterMode==="all"?"latest_project_year":"latest_same_type_project_year",A=a.projectFilterMode==="all"?"latest_project_name":"latest_same_type_project_name",j=dt(t,a);let $=0;for(;;){G(o);const P=yield vt(j,p,A,$,i);G(o);const I=Array.isArray(P.features)?P.features:[];if(I.forEach(J=>{const Q=(J==null?void 0:J.properties)||{},ye=String(Q[A]||"未标注项目").trim()||"未标注项目",st=Number(Q[p])||null,Ce=ve[ye]||{name:ye,latestYear:st,featureCount:0,areaMu:0};Ce.latestYear=Math.max(Number(Ce.latestYear||0),Number(st||0))||null,Ce.featureCount+=1,Ce.areaMu+=Number(Q.source_area_mu||0),ve[ye]=Ce}),I.length<Mt)break;$+=I.length}})}function vt(t,a,o,i,p){return B(this,null,function*(){const A=new URLSearchParams({service:"WFS",version:"2.0.0",request:"GetFeature",typeNames:wt,outputFormat:"application/json",count:String(Mt),startIndex:String(i),sortBy:"id",propertyName:`id,source_area_mu,${a},${o}`,CQL_FILTER:t}),j=yield fetch(`${Ue}?${A}`,{credentials:"same-origin",signal:p});if(!j.ok)throw new Error(`HTTP ${j.status}`);return j.json()})}function gt(){return B(this,null,function*(){var t,a,o;S.value="loading";try{const i=new URLSearchParams({service:"WFS",version:"2.0.0",request:"GetFeature",typeNames:ra,outputFormat:"application/json",propertyName:"year",sortBy:"year D",count:"1",CQL_FILTER:"year IS NOT NULL"}),p=yield fetch(`${Ue}?${i}`,{credentials:"same-origin"});if(!p.ok)throw new Error(`HTTP ${p.status}`);const A=yield p.json(),j=Number((o=(a=(t=A.features)==null?void 0:t[0])==null?void 0:a.properties)==null?void 0:o.year);if(!Number.isFinite(j))throw new Error("项目库缺少有效实施年份");F.value=j,O.value==="idle"&&(T.value=j),S.value="ready"}catch(i){S.value="error",console.warn("[engineering-analysis] project data coverage unavailable",i)}})}function pt(t,a){const o=a.township?"location_unit_name":"township_name";t.forEach(i=>{const p=(i==null?void 0:i.properties)||{},A=String(p[o]||"未标注").trim()||"未标注",j=ie[A]||{name:A,featureCount:0,areaMu:0};j.featureCount+=1,j.areaMu+=Number(p.source_area_mu||0),ie[A]=j})}function Ie(t){return{engineeringType:t.engineeringTypes[0],engineeringName:ue.value,scopeName:t.township||"红原县全域",dimensionLabel:t.township?"村":"乡镇",baseCount:ee.value,excludedCount:xe.value,finalCount:ae.value,finalAreaMu:we.value*1e4,projectDataLatestYear:F.value,filters:t,excludedProjects:se.value.map(a=>le({},a)),distribution:Object.values(ie).map(a=>_e(le({},a),{areaMu:Number(a.areaMu.toFixed(2))})).sort((a,o)=>o.areaMu-a.areaMu)}}function et(t){!t||t.status==="idle"||(t.visible=t.visible===!1,y("result-visibility",{key:t.key,visible:t.visible}))}function ft(){if(!V.value||!_.value||!ae.value)return;const t=new Date,o=`ecological_engineering_suitability_${[t.getFullYear(),String(t.getMonth()+1).padStart(2,"0"),String(t.getDate()).padStart(2,"0")].join("")}.zip`,i=new URLSearchParams({service:"WFS",version:"2.0.0",request:"GetFeature",typeNames:sa,outputFormat:"shape-zip",srsName:"EPSG:4326",CQL_FILTER:_.value,format_options:`charset:UTF-8;filename:${o}`}),p=document.createElement("a");p.href=`${Ue}?${i}`,p.download=o,document.body.appendChild(p),p.click(),p.remove()}function tt(t){return t.status==="counting"?"核对中":t.status==="queued"?"等待加载":t.status==="loading"?"加载中":t.status==="error"?"异常":t.visible===!1?"已隐藏":"地图显示"}function nt(){return{engineeringTypes:[...u.value],township:q.value,projectFilterMode:M.value,recentYears:R.value,startYear:Pe.value,endYear:T.value}}function ge(t,a,o,i=null){return B(this,null,function*(){var P,I,J,Q;G(a),H.value=t,ke();const p=k[t],A=((I=(P=window.performance)==null?void 0:P.now)==null?void 0:I.call(P))||Date.now(),j=i?yield i():void 0;G(a);const $=(((Q=(J=window.performance)==null?void 0:J.now)==null?void 0:Q.call(J))||Date.now())-A;return yield Ee(Math.max(0,Number((p==null?void 0:p.minimumDuration)||0)-$),o),G(a),j})}function ke(){const t=W.value;y("analysis-state",{state:"running",stepKey:(t==null?void 0:t.key)||"prepare",stepLabel:(t==null?void 0:t.label)||"准备空间分析",stepDescription:(t==null?void 0:t.description)||"正在准备空间分析",stepNumber:Math.max(1,H.value+1),stepTotal:k.length,progress:De.value})}function at(t){return t==="done"?"完成":t==="active"?"进行中":"等待"}function Ae(){E&&E.abort(),E=null}function G(t){if(t!==oe)throw new DOMException("Analysis superseded","AbortError")}function Le(t){return Ee(oa,t)}function Ee(t,a){return t?a!=null&&a.aborted?Promise.reject(new DOMException("Analysis aborted","AbortError")):new Promise((o,i)=>{const p=window.setTimeout(A,t);a==null||a.addEventListener("abort",j,{once:!0});function A(){a==null||a.removeEventListener("abort",j),o()}function j(){window.clearTimeout(p),i(new DOMException("Analysis aborted","AbortError"))}}):Promise.resolve()}function me(t){return String(t!=null?t:"").replace(/'/g,"''")}function re(t){const a=Number(t);return Number.isFinite(a)?Math.round(a).toLocaleString("zh-CN"):"0"}function Se(t){const a=Number(t);return Number.isFinite(a)?a>=100?a.toFixed(1):a>=10?a.toFixed(2):a.toFixed(3):"0"}return(t,a)=>{var o;return c(),m("div",fn,[r("section",{class:je(["analysis-card analysis-workbench",{"is-running":L.value}])},[r("header",mn,[a[3]||(a[3]=r("div",null,[r("span",null,"生态工程实施分析"),r("small",null,"基础候选区 + 动态业务条件")],-1)),r("strong",null,f(lt.value),1)]),a[11]||(a[11]=r("div",{class:"analysis-section-title"},[r("span",null,"01"),r("strong",null,"工程类型"),r("em",null,"单选")],-1)),r("div",yn,[(c(!0),m(he,null,be(Fe.value,i=>(c(),m("button",{key:i.key,type:"button",class:je(["analysis-type-row",{"is-selected":u.value.includes(i.key)}]),disabled:L.value,role:"radio","aria-checked":u.value.includes(i.key),onClick:p=>Je(i.key)},[r("i",{class:"analysis-type-check",style:Me({"--type-color":i.color})},null,4),r("div",hn,[r("strong",null,f(i.name),1)])],10,_n))),128))]),a[12]||(a[12]=r("div",{class:"analysis-section-title is-filter"},[r("span",null,"02"),r("strong",null,"动态筛选条件"),r("em",null,"3 项条件")],-1)),r("div",bn,[r("label",wn,[a[5]||(a[5]=r("span",null,"所属乡镇",-1)),mt(r("select",{"onUpdate:modelValue":a[0]||(a[0]=i=>q.value=i),"data-testid":"analysis-town",disabled:L.value},[a[4]||(a[4]=r("option",{value:""},"全县",-1)),(c(!0),m(he,null,be(We(pe),i=>(c(),m("option",{key:i,value:i},f(i),9,Cn))),128))],8,Sn),[[yt,q.value]])]),r("label",null,[a[7]||(a[7]=r("span",null,"已有项目",-1)),mt(r("select",{"onUpdate:modelValue":a[1]||(a[1]=i=>M.value=i),"data-testid":"analysis-project-filter",disabled:L.value},[...a[6]||(a[6]=[r("option",{value:"same"},"排除同类工程",-1),r("option",{value:"all"},"排除全部工程",-1),r("option",{value:"none"},"不排除",-1)])],8,jn),[[yt,M.value]])]),r("label",null,[a[9]||(a[9]=r("span",null,"未实施年限",-1)),mt(r("select",{"onUpdate:modelValue":a[2]||(a[2]=i=>R.value=i),"data-testid":"analysis-recent-years",disabled:L.value||M.value==="none"},[...a[8]||(a[8]=[r("option",{value:1},"最近 1 年",-1),r("option",{value:3},"最近 3 年",-1),r("option",{value:5},"最近 5 年",-1)])],8,kn),[[yt,R.value,void 0,{number:!0}]])])]),r("div",An,[a[10]||(a[10]=r("i",null,null,-1)),M.value==="none"?(c(),m("span",Ln,"保留与已有工程相交的候选地块")):S.value==="loading"?(c(),m("span",En,"正在读取项目库最新实施年份…")):S.value==="error"?(c(),m("span",$n,"项目库年份读取失败,暂不能执行历史项目排除")):(c(),m("span",Nn,f(D.value),1))]),r("button",{type:"button",class:"analysis-submit","data-testid":"analysis-submit",disabled:!ne.value,"aria-busy":L.value,onClick:ut},[L.value?(c(),m("span",Fn)):X("",!0),r("span",null,f(L.value?"空间分析进行中":V.value?"重新分析":"开始分析"),1),L.value?(c(),m("strong",Pn,f(((o=W.value)==null?void 0:o.label)||"准备中"),1)):(c(),m("strong",xn,f(ue.value),1))],8,Mn),L.value||V.value?(c(),m("div",Tn,[r("div",{role:"progressbar","aria-label":"分析进度","aria-valuenow":De.value,"aria-busy":L.value,"aria-valuemin":"0","aria-valuemax":"100"},[r("i",{style:Me({width:`${De.value}%`})},null,4)],8,Dn),r("span",null,f(ot.value),1)])):X("",!0),L.value||V.value?(c(),m("div",Rn,[(c(!0),m(he,null,be(ze.value,i=>(c(),m("div",{key:i.key,class:je(["analysis-step-item",`is-${i.status}`])},[r("i",null,f(String(i.index+1).padStart(2,"0")),1),r("span",null,f(i.label),1),r("em",null,f(at(i.status)),1)],2))),128))])):X("",!0),U.value?(c(),m("p",On,f(U.value),1)):X("",!0)],2),L.value||V.value?(c(),m("section",Vn,[r("header",In,[r("div",null,[a[13]||(a[13]=r("span",null,"可实施区域",-1)),r("small",null,f(Ge.value),1)]),r("strong",null,f(re(ae.value))+" 个"+f(L.value?"已加载":""),1)]),L.value?(c(),m("div",Bn,[r("div",null,[a[14]||(a[14]=r("span",null,"已加载图斑",-1)),r("strong",null,f(re(ae.value)),1),a[15]||(a[15]=r("small",null,"个",-1))]),r("div",null,[a[16]||(a[16]=r("span",null,"已加载面积",-1)),r("strong",null,f(Se(we.value)),1),a[17]||(a[17]=r("small",null,"万亩",-1))]),r("div",Yn,[a[18]||(a[18]=r("span",null,"当前批次",-1)),r("strong",null,f(Te.value||"—"),1),r("small",null,f(Te.value?"页":"准备中"),1)])])):(c(),m("div",qn,[r("div",null,[a[19]||(a[19]=r("span",null,"基础候选",-1)),r("strong",null,f(re(ee.value)),1),a[20]||(a[20]=r("small",null,"个图斑",-1))]),r("div",Un,[a[21]||(a[21]=r("span",null,"项目排除",-1)),r("strong",null,f(re(xe.value)),1),a[22]||(a[22]=r("small",null,"个图斑",-1))]),r("div",Wn,[a[23]||(a[23]=r("span",null,"最终可实施",-1)),r("strong",null,f(Se(we.value)),1),a[24]||(a[24]=r("small",null,"万亩",-1))])])),r("div",zn,[(c(!0),m(he,null,be(ce.value,i=>(c(),m("button",{key:i.key,type:"button",class:je(["analysis-result-row",[`is-${i.status}`,{"is-hidden":i.visible===!1}]]),"aria-pressed":i.visible!==!1,onClick:p=>et(i)},[r("i",{style:Me({"--type-color":i.color})},null,4),r("div",null,[r("strong",null,f(i.name),1),i.status==="loading"?(c(),m("span",Gn,"正在读取第 "+f(i.loadedPage)+" 页",1)):i.status==="error"?(c(),m("span",Jn,"加载失败")):(c(),m("span",Qn,f(Se(i.loadedAreaMu/1e4))+" 万亩",1))]),i.status==="loading"?(c(),m("b",Zn,"已加载 "+f(re(i.loadedCount))+" 个",1)):(c(),m("b",Xn,f(re(i.loadedCount))+" 个图斑",1)),r("em",null,f(i.visible===!1?"已隐藏":tt(i)),1)],10,Hn))),128))]),V.value&&se.value.length?(c(),m("section",Kn,[r("header",null,[a[25]||(a[25]=r("strong",null,"排除项目与候选面积",-1)),r("em",null,"合计 "+f(Se(He.value))+" 万亩",1)]),r("div",ea,[(c(!0),m(he,null,be(se.value,(i,p)=>(c(),m("div",{key:i.name,class:"analysis-excluded-project-row"},[r("span",null,f(p+1),1),r("div",null,[r("strong",{title:i.name},f(i.name),9,ta),r("small",null,f(i.latestYear?`${i.latestYear} 年 · `:"")+"排除 "+f(re(i.featureCount))+" 个相交图斑",1)]),r("b",null,f(Se(i.areaMu/1e4))+" 万亩",1)]))),128))])])):X("",!0),V.value?(c(),m("button",{key:3,type:"button",class:"analysis-export","data-testid":"analysis-export-shp",disabled:!_.value||!ae.value,onClick:ft},[...a[26]||(a[26]=[r("span",null,"导出本次分析结果",-1),r("strong",null,"SHP",-1)])],8,na)):X("",!0),r("footer",aa,f(L.value?"正在逐批叠加候选图斑,最终统计将在加载完成后生成。":"结果已排除初筛禁入范围;工程立项前仍需结合连片度、权属和现场踏勘复核。"),1)])):X("",!0)])}}},da=xt(ca,[["__scopeId","data-v-84da35a2"]]),va="/openApi";function ga(){return B(this,arguments,function*(h={}){const g=yield Ft(`${va}/ai/ecological-engineering/advice`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dataJson:JSON.stringify({engineeringName:h.engineeringName,scopeName:h.scopeName,dimensionLabel:h.dimensionLabel,baseCount:h.baseCount,excludedCount:h.excludedCount,finalCount:h.finalCount,finalAreaMu:h.finalAreaMu,projectDataLatestYear:h.projectDataLatestYear,filters:h.filters,distribution:(h.distribution||[]).slice(0,30),excludedProjects:(h.excludedProjects||[]).slice(0,30)})}),timeout:7e4});if((g==null?void 0:g.success)===!1||(g==null?void 0:g.code)!==void 0&&![0,200,"0","200"].includes(g.code))throw new Error((g==null?void 0:g.message)||(g==null?void 0:g.msg)||"DeepSeek分析建议生成失败");return Pt(g)})}const pa={class:"engineering-statistics-panel","data-testid":"engineering-statistics-panel","aria-label":"生态工程分析统计","aria-live":"polite"},fa={class:"statistics-head"},ma={class:"advice-section"},ya={key:0,class:"advice-loading","data-testid":"engineering-advice-status"},_a={key:1,class:"advice-list"},ha={key:2,class:"advice-error"},ba={__name:"EngineeringStatisticsPanel",props:{statistics:{type:Object,required:!0}},setup(h){const g=h,y=C(!1),k=C(""),x=C("");let u=0;const q=v(()=>{var _;return Array.isArray((_=g.statistics)==null?void 0:_.distribution)?g.statistics.distribution:[]}),M=v(()=>{var S;const _=[],F=q.value[0];return F&&_.push(`优先核查${F.name}等候选面积较集中的区域,进一步评价地块连片度和施工可达性。`),Number(((S=g.statistics)==null?void 0:S.excludedCount)||0)>0?_.push(`对已排除的 ${U(g.statistics.excludedCount)} 个历史项目相交图斑复核项目边界、实施年份和工程类型,避免重复建设。`):_.push("本次年份条件未排除历史项目相交图斑,建议结合项目库更新时间确认筛选时段是否完整。"),_.push("候选结果用于工程初筛,立项前仍需完成权属核验、现场踏勘和实施方案论证。"),_}),R=v(()=>{const _=String(k.value||"").split(/\n+/).map(F=>F.replace(/^\s*(?:[-•]|\d+[.、)])\s*/,"").trim()).filter(Boolean);return _.length?_.slice(0,5):M.value}),T=v(()=>y.value?"DeepSeek自动研判中":k.value?"DeepSeek研判":"系统初步建议");Ne(()=>g.statistics,_=>{const F=++u;k.value="",x.value="",y.value=!1,_&&O(F,_)},{immediate:!0});function O(_,F){return B(this,null,function*(){y.value=!0,x.value="";try{const S=yield ga(F);if(_!==u)return;if(k.value=String((S==null?void 0:S.advice)||(S==null?void 0:S.content)||"").trim(),!k.value)throw new Error("DeepSeek未返回有效建议")}catch(S){if(_!==u)return;x.value=/404/.test(String((S==null?void 0:S.message)||""))?"DeepSeek建议接口尚未部署,已保留系统初步建议。":(S==null?void 0:S.message)||"DeepSeek暂时不可用,已保留系统初步建议。"}finally{_===u&&(y.value=!1)}})}function U(_){const F=Number(_);return Number.isFinite(F)?Math.round(F).toLocaleString("zh-CN"):"0"}return(_,F)=>(c(),m("aside",pa,[r("header",fa,[r("div",null,[F[0]||(F[0]=r("span",null,"分析建议",-1)),r("small",null,f(h.statistics.engineeringName)+" · "+f(h.statistics.scopeName),1)]),r("strong",null,f(T.value),1)]),r("section",ma,[y.value?(c(),m("div",ya,[...F[1]||(F[1]=[r("span",{class:"advice-spinner"},null,-1),r("span",null,"DeepSeek 正在自动生成分析建议…",-1)])])):(c(),m("ol",_a,[(c(!0),m(he,null,be(R.value,(S,H)=>(c(),m("li",{key:`${H}-${S}`},f(S),1))),128))])),x.value?(c(),m("p",ha,f(x.value),1)):X("",!0)])]))}},wa=xt(ba,[["__scopeId","data-v-fb17a135"]]);const Sa={class:"forest-grass-wet ecological-protection"},Ca={class:"forest-grass-wet-ui ecological-protection-ui"},ja={key:0,class:"fgw-left"},ka={class:"fgw-side-stack is-left"},Aa={key:1,class:"fgw-right"},La={class:"fgw-side-stack is-right"},Ea={key:3,class:"engineering-map-loading",role:"status","aria-live":"polite"},$a={class:"engineering-map-loading__description"},Na={class:"engineering-map-loading__progress","aria-hidden":"true"},Ma={class:"fgw-bottom-topic ecological-bottom-topic"},Fa={key:0,class:"loading"},Pa={class:"loading-progress"},xa={class:"value"},Za={__name:"index",props:{activeView:{type:String,default:"ecological-redline"},showLoading:{type:Boolean,default:!0},active:{type:Boolean,default:!0}},emits:["module-stats","view-change"],setup(h,{expose:g,emit:y}){const k=h,x=y,u=C(null),q=C(""),M=C(""),R=C(it({},"ecological-redline")),T=C(null),O=C(!1),U=C(!1),_=C(null),F=C(0),S=C(k.showLoading),H=C(null),K=C({type:"idle",text:"等待生态保护图层加载"}),ie=C(null),ve=C(!1),E=C({});let oe=null,pe=!1,L=!1,V=!1,ne=null,Fe=0,ue=0;const ce=new Map,Pe=new Set(["code","msg","message","success","data","result","project","progress","dycolumn","geom","wkt","geometry","the_geom","raw_properties","gid","id","objectid","object_id","fid","key_uid","bsm","ysdm"]),D=v(()=>Ye.some(e=>e.key===k.activeView)?k.activeView:"ecological-redline"),W=v(()=>D.value==="engineering-analysis"),ze=v(()=>["restoration","engineering-analysis"].includes(D.value)),lt=v(()=>ht.includes(D.value)),ee=v(()=>q.value?zt(D.value,q.value):null),fe=v(()=>{var e;return(((e=ee.value)==null?void 0:e.legends)||[]).find(n=>n.key===M.value)||null}),ae=v(()=>{var e;return((e=ee.value)==null?void 0:e.legends)||[]}),xe=v(()=>Et(D.value)),we=v(()=>xe.value.length<=2&&ae.value.length<=6),Te=v(()=>{if(W.value)return 112;if(!we.value)return 430;const e=Math.max(1,xe.value.length),n=Math.max(1,Math.ceil(ae.value.length/2)),s=e*34+Math.max(0,e-1)*5,l=30+n*28;return Math.max(196,Math.min(340,72+s+l))}),se=v(()=>{const e=ee.value;return e?fe.value?_e(le({},e),{cqlFilter:fe.value.cqlFilter||e.cqlFilter,activeLegend:fe.value,name:fe.value.name||e.name}):e:null}),He=v(()=>lt.value?R.value:D.value==="restoration"?rn:D.value==="engineering-analysis"?ln:on),De=v(()=>He.value.left||[]),ot=v(()=>He.value.right||[]),Ge=C(typeof window=="undefined"?1080:window.innerHeight),Re=Zt.sideCardWidth,Je=v(()=>Xt(Ge.value)),ut=v(()=>Kt(Je.value,2)),Qe=v(()=>!!_.value),Oe=Gt,Ze=v(()=>Ht({point:_.value?ge(_.value):null,rowCount:T.value?Le(T.value):0,loading:U.value,empty:O.value||!T.value})),ct=v(()=>Ze.value.height),dt=v(()=>Ze.value.style),Xe=v(()=>{var n;return{"ecological-redline":"生态保护红线详情","natural-protected-area":"自然保护地详情","national-park":"国家公园详情",restoration:"生态修复详情","engineering-analysis":"生态工程详情"}[D.value]||`${((n=ee.value)==null?void 0:n.name)||"生态图斑"}详情`});Tt(()=>{ke(),window.addEventListener("resize",ke),document.addEventListener("pointerdown",Ct,!0),pt(),Ke(D.value)}),Dt(()=>{pe=!0,ne&&window.clearTimeout(ne),window.removeEventListener("resize",ke),document.removeEventListener("pointerdown",Ct,!0)}),Ne(D,e=>{Ke(e)}),Ne(q,()=>{M.value="",Z()}),Ne(M,()=>{Z()}),Ne(()=>k.active,e=>{var n,s,l,d;u.value&&(e?(Ie(),(s=(n=u.value).resume)==null||s.call(n)):(d=(l=u.value).pause)==null||d.call(l))});function Ke(e){var l,d,b,w,N,Y,z;const n=Ye.find(te=>te.key===e)||Ye[0],s=Et(e);ie.value=null,ve.value=!1,E.value={},M.value="",q.value=n.defaultLayerKey||((l=s[0])==null?void 0:l.key)||"",H.value=un(e),(b=(d=u.value)==null?void 0:d.setBoundaryDrawing)==null||b.call(d,!1),(N=(w=u.value)==null?void 0:w.clearAnalysisBoundary)==null||N.call(w),e!=="engineering-analysis"&&((z=(Y=u.value)==null?void 0:Y.clearEngineeringSuitability)==null||z.call(Y)),Z(),ht.includes(e)&&(R.value=it({},e),gt(e)),x("module-stats",{moduleKey:"ecological-protection",viewKey:e,items:ht.includes(e)?bt({},e):cn(e)}),Ve()}function Ve(e=0){const n=se.value||ee.value;!(n!=null&&n.mapView)&&!(n!=null&&n.cameraPosition)||qe(()=>{var l,d;!((d=(l=u.value)==null?void 0:l.focusLayerMapView)==null?void 0:d.call(l,n))&&e<12&&window.setTimeout(()=>Ve(e+1),120)})}function vt(e){const n=Ye.some(s=>s.key===e)?e:"ecological-redline";n!==D.value&&x("view-change",n)}function gt(e){return B(this,null,function*(){const n=++Fe;try{const l=ce.get(e)||(yield vn(e));if(n!==Fe||D.value!==e)return;ce.set(e,l),R.value=it(l,e),x("module-stats",{moduleKey:"ecological-protection",viewKey:e,items:bt(l,e)})}catch(s){if(n!==Fe||D.value!==e)return;R.value=it({},e),x("module-stats",{moduleKey:"ecological-protection",viewKey:e,items:bt({},e)}),K.value={type:"error",text:"保护范围统计加载失败"},console.warn("Failed to load ecological scope statistics",s)}})}function pt(){var s;oe=new Qt;const e={progress:0};oe.instance.on("onProgress",(l,d,b)=>{const w=Math.floor(d/b*100);At.to(e,{progress:w,onUpdate:()=>{F.value=Math.floor(e.progress)}})});const n=()=>{pe||L||(L=!0,Ie())};oe.instance.on("onLoad",n),(s=oe.ready)==null||s.then(n).catch(()=>{pe||(K.value={type:"error",text:"地图资源加载失败"})})}function Ie(){pe||!k.active||!L||V||(V=!0,ne&&window.clearTimeout(ne),ne=window.setTimeout(()=>{ne=null,et()},600))}function et(e=0){return B(this,null,function*(){var s,l,d,b,w;if(pe)return;if(!k.active){V=!1;return}if(yield qe(),!k.active){V=!1;return}if(!!((l=(s=u.value)==null?void 0:s.loadMap)!=null&&l.call(s,oe)||(b=(d=u.value)==null?void 0:d.hasMap)!=null&&b.call(d))){yield Vt(),yield qe(),(w=u.value)==null||w.play(),Ve();return}if(e<24){window.setTimeout(()=>et(e+1),120);return}V=!1})}function ft(){ne&&(window.clearTimeout(ne),ne=null)}function tt(){var e,n,s,l;(n=(e=u.value)==null?void 0:e.resume)==null||n.call(e),(l=(s=u.value)==null?void 0:s.refreshView)==null||l.call(s)}function nt(){var e,n,s,l,d,b;if(Z(),(n=(e=u.value)==null?void 0:e.setBoundaryDrawing)==null||n.call(e,!1),(l=(s=u.value)==null?void 0:s.clearAnalysisBoundary)==null||l.call(s),(b=(d=u.value)==null?void 0:d.hasMap)!=null&&b.call(d)){tt();return}ft(),V=!1,qe(()=>{Ie()})}g({refreshMapView:tt,resetMap:nt});function ge(e){const n=document.querySelector(".ecological-protection"),s=n==null?void 0:n.getBoundingClientRect();return!(s!=null&&s.width)||!(s!=null&&s.height)?e:{x:(e.x-s.left)/s.width*1920,y:(e.y-s.top)/s.height*1080}}function ke(){Ge.value=typeof window=="undefined"?1080:window.innerHeight}function at(e,n){return`${D.value}-${n}-${(e==null?void 0:e.key)||(e==null?void 0:e.title)||"panel"}`}function Ae(e){return(e==null?void 0:e.span)===2}function G(e){return Ae(e)?ut.value:Je.value}function Le(e){const n=(e==null?void 0:e.properties)||{};return Object.keys(n).filter(s=>Ee(s,n[s])).length}function Ee(e,n){return n==null||n===""||Array.isArray(n)||typeof n=="object"?!1:!Pe.has(String(e||"").toLowerCase())}function me(e={}){const n=re(e.lng),s=re(e.lat);return n===""||s===""?"":`POINT(${n} ${s})`}function re(e){const n=Number(e);return Number.isFinite(n)?n.toFixed(8).replace(/\.?0+$/,""):""}function Se(){return B(this,arguments,function*(e={}){var b,w,N,Y,z,te;if(!ze.value||W.value)return;if(t(e.overlayLayer||se.value||ee.value)){Z();return}const n=Number((b=e==null?void 0:e.lngLat)==null?void 0:b.lng),s=Number((w=e==null?void 0:e.lngLat)==null?void 0:w.lat);if(!Number.isFinite(n)||!Number.isFinite(s)){Z();return}const l=++ue,d=e.screen||{x:960,y:540};_.value=null,T.value=null,O.value=!1,U.value=!0;try{const de=yield Jt(me({lng:n,lat:s}));if(l!==ue||pe)return;const Be=a(de,e);if(!Be||Le(Be)<=0){Z();return}T.value=Be,_.value=((Y=(N=u.value)==null?void 0:N.getVectorFeatureAnchorScreen)==null?void 0:Y.call(N,Be))||d,O.value=!1,(te=(z=u.value)==null?void 0:z.highlightFeature)==null||te.call(z,Be,{highlightTone:"v21"})}catch(de){if(l!==ue)return;Z()}finally{l===ue&&(U.value=!1)}})}function t(e=se.value){const n=String((e==null?void 0:e.sourceType)||"").toLowerCase();return["geojson","wkt-api","wfs"].includes(n)||String((e==null?void 0:e.dataPath)||"").includes("ecological_restoration_projects")}function a(e,n={}){var b,w,N;const s=i((e==null?void 0:e.project)||((b=e==null?void 0:e.data)==null?void 0:b.project)||(e==null?void 0:e.data)||e);if(!p(s))return null;const l=j(s,e),d=s.geom||s.geometry||s.wkt||null;return{id:s.id||l.id||l.project_name||`project-${(w=n==null?void 0:n.lngLat)==null?void 0:w.lng}-${(N=n==null?void 0:n.lngLat)==null?void 0:N.lat}`,properties:l,feature:{type:"Feature",properties:l,geometry:d},geometry:d,layer:n.overlayLayer||se.value||ee.value,lngLat:n.lngLat}}function o(e,n={}){var Y,z,te;const s=e!=null&&e.feature&&e.feature.type==="Feature"?_e(le({},e.feature),{id:e.id||e.feature.id,layer:e.layer,lngLat:e.lngLat}):e,l=(s==null?void 0:s.type)==="Feature"?s:((Y=s==null?void 0:s.feature)==null?void 0:Y.type)==="Feature"?s.feature:null,d=(s==null?void 0:s.properties)||(l==null?void 0:l.properties)||{},b=(s==null?void 0:s.geometry)||(l==null?void 0:l.geometry)||d.geometry||d.geom||d.wkt||null,w=j(d,n),N=(s==null?void 0:s.id)||(l==null?void 0:l.id)||w.id||w.gid||w.project_id||w.project_name||`project-${((z=n==null?void 0:n.lngLat)==null?void 0:z.lng)||""}-${((te=n==null?void 0:n.lngLat)==null?void 0:te.lat)||""}`;return{id:N,properties:w,feature:{type:"Feature",id:N,properties:w,geometry:b},geometry:b,layer:(s==null?void 0:s.layer)||n.overlayLayer||se.value||ee.value,lngLat:(s==null?void 0:s.lngLat)||n.lngLat}}function i(e){return Array.isArray(e)?e.find(n=>n&&typeof n=="object")||null:e&&typeof e=="object"?e:null}function p(e){return!e||typeof e!="object"?!1:Array.isArray(e.dyColumn)&&e.dyColumn.some(A)?!0:Object.keys(e).some(n=>Ee(n,e[n]))}function A(e={}){const n=e==null?void 0:e.value;return n==null||n===""?!1:!!String((e==null?void 0:e.field)||(e==null?void 0:e.title)||"").trim()}function j(e={},n={}){const s=le({},e);(Array.isArray(e.dyColumn)?e.dyColumn:[]).forEach(N=>{const Y=N==null?void 0:N.value;if(Y==null||Y==="")return;const z=String((N==null?void 0:N.field)||"").trim();[z,$(z)].filter(Boolean).forEach(de=>{(s[de]===void 0||s[de]===null||s[de]==="")&&(s[de]=Y)})});const d=s.project_name||s.projectName||s.name,b=s.area_mu||s.areaMu||s.acreage,w=s.project_status||s.projectStatus;return _e(le({},s),{project_name:d,name:d||s.name,area_mu:b,project_status:w,progress_count:Array.isArray(n==null?void 0:n.progress)?n.progress.length:void 0})}function $(e){return String(e||"").replace(/[A-Z]/g,n=>`_${n.toLowerCase()}`)}function P(e){var s,l,d,b;const n=(l=(s=e==null?void 0:e.feature)!=null?s:e)!=null?l:null;if(!n||Le(n)<=0){Z();return}if(ze.value){ue+=1;const w=o(n,e);if(!w||Le(w)<=0){Z();return}T.value=w,O.value=!1,U.value=!1,_.value=((b=(d=u.value)==null?void 0:d.getVectorFeatureAnchorScreen)==null?void 0:b.call(d,w))||(e==null?void 0:e.screen)||null;return}T.value=n,O.value=!1,e!=null&&e.screen&&(_.value=e.screen)}function I(e){K.value=e}function J(e,n){var d,b;if(D.value==="national-park"&&(n!=null&&n.name)){Z(),(b=(d=u.value)==null?void 0:d.focusTown)==null||b.call(d,n.name,{distanceScale:.66,targetLocalZ:.84,cameraOffset:{x:0,y:1.05,z:0},select:!0});return}if(D.value!=="restoration"||(e==null?void 0:e.key)!=="restoration-projects"||!((n==null?void 0:n.projectName)||(n==null?void 0:n.name)))return;Z();const l=()=>Q(n);if(M.value){M.value="",qe(()=>window.setTimeout(l,80));return}l()}function Q(e,n=0){var b,w,N,Y,z,te,de;if(D.value!=="restoration")return;const s=(e==null?void 0:e.projectName)||(e==null?void 0:e.name);if(!s)return;const l=(w=(b=u.value)==null?void 0:b.focusProject)==null?void 0:w.call(b,{id:e==null?void 0:e.id,key:e==null?void 0:e.key,name:s,projectName:s,project_name:s,highlightTone:"white"});if(!(l!=null&&l.feature)){if(n<10){window.setTimeout(()=>Q(e,n+1),120);return}K.value={type:"warning",text:"当前项目图斑尚未加载"};return}const d=o({id:l.feature.id,properties:l.feature.properties||{},geometry:l.feature.geometry,feature:l.feature,layer:se.value||ee.value},{});T.value=d,O.value=!1,U.value=!1,_.value=l.screen||((z=(N=u.value)==null?void 0:N.getVectorFeaturesAnchorScreen)==null?void 0:z.call(N,(Y=l.highlightFeatures)!=null&&Y.length?l.highlightFeatures:l.features))||((de=(te=u.value)==null?void 0:te.getVectorFeatureAnchorScreen)==null?void 0:de.call(te,d))}function ye(){var e,n;Z(),ie.value=null,(n=(e=u.value)==null?void 0:e.clearEngineeringSuitability)==null||n.call(e)}function st(e={}){ve.value=e.state==="running",E.value=e.state==="running"?le({},e):{}}function Ce(e={}){var n,s;(s=(n=u.value)==null?void 0:n.addEngineeringSuitabilityBatch)==null||s.call(n,e)}function Rt(e={}){var n,s;ie.value=e.statistics||null,(s=(n=u.value)==null?void 0:n.completeEngineeringSuitability)==null||s.call(n,e)}function Ot(e={}){var n,s;(s=(n=u.value)==null?void 0:n.setEngineeringSuitabilityVisibility)==null||s.call(n,e.key,e.visible)}function Z(){var e,n;ue+=1,T.value=null,O.value=!1,U.value=!1,_.value=null,(n=(e=u.value)==null?void 0:e.clearSelectedFeature)==null||n.call(e)}function Ct(e){if(!Qe.value)return;const n=document.querySelector(".fgw-map-feature-info"),s=e.target;n&&s instanceof Node&&n.contains(s)||Z()}function Vt(){return S.value?new Promise(e=>{At.to(".ecological-protection .loading",{opacity:0,duration:.8,delay:.2,onComplete:()=>{S.value=!1,e()}})}):Promise.resolve()}return(e,n)=>(c(),m("div",Sa,[$e(en,{ref_key:"mapSceneRef",ref:u,"active-layer":se.value,"map-ranking":H.value,"admin-boundary-line-scale":1.65,"auto-apply-layer-map-view":!1,"max-zoom":21,onFeatureLoading:n[0]||(n[0]=s=>U.value=s),onFeatureInfo:P,onMapClick:Se,onLayerStatus:I},null,8,["active-layer","map-ranking"]),r("div",Ca,[W.value?X("",!0):(c(),m("div",ja,[r("div",ka,[(c(!0),m(he,null,be(De.value,s=>(c(),rt(Lt,{key:at(s,"left"),class:je(["fgw-side-card left-card",[{"is-double":Ae(s)},`ecological-side-card--${s.key}`]]),title:s.title,width:We(Re),height:G(s)},{default:Nt(()=>[$e($t,{panel:s,compact:"","column-label-standard":"","visual-version":"v21",onRowSelect:l=>J(s,l)},null,8,["panel","onRowSelect"])]),_:2},1032,["class","title","width","height"]))),128))])])),W.value?X("",!0):(c(),m("div",Aa,[r("div",La,[(c(!0),m(he,null,be(ot.value,s=>(c(),rt(Lt,{key:at(s,"right"),class:je(["fgw-side-card right-card",[{"is-double":Ae(s)},`ecological-side-card--${s.key}`]]),title:s.title,width:We(Re),height:G(s)},{default:Nt(()=>[$e($t,{panel:s,compact:"","column-label-standard":"","visual-version":"v21",onRowSelect:l=>J(s,l)},null,8,["panel","onRowSelect"])]),_:2},1032,["class","title","width","height"]))),128))])])),W.value?(c(),rt(da,{key:2,onAnalysisReset:ye,onAnalysisBatch:Ce,onAnalysisComplete:Rt,onAnalysisState:st,onResultVisibility:Ot})):X("",!0),W.value&&ve.value?(c(),m("div",Ea,[n[3]||(n[3]=r("span",{class:"engineering-map-loading__radar","aria-hidden":"true"},null,-1)),n[4]||(n[4]=r("strong",null,"空间分析中",-1)),r("small",null,f(E.value.stepLabel||"初始化分析环境"),1),r("span",$a,f(E.value.stepDescription||"正在准备空间索引与工程参数"),1),r("div",Na,[r("i",{style:Me({width:`${E.value.progress||1}%`})},null,4),r("em",null,f(E.value.stepNumber||1)+"/"+f(E.value.stepTotal||7),1)])])):X("",!0),W.value&&ie.value?(c(),rt(wa,{key:4,statistics:ie.value},null,8,["statistics"])):X("",!0),r("div",{class:je(["fgw-map-layer-tools",{"is-analysis":W.value,"is-compact":we.value}]),style:Me({height:`${Te.value}px`})},[$e(tn,{modelValue:q.value,"onUpdate:modelValue":n[1]||(n[1]=s=>q.value=s),"selected-legend-key":M.value,"onUpdate:selectedLegendKey":n[2]||(n[2]=s=>M.value=s),"topic-key":D.value,legends:ae.value,width:248,height:Te.value,compact:we.value,"show-legend":!W.value},null,8,["modelValue","selected-legend-key","topic-key","legends","height","compact","show-legend"])],6),Qe.value?(c(),m("div",{key:5,class:"fgw-map-feature-info",style:Me(dt.value)},[$e(nn,{title:Xe.value,feature:T.value,empty:O.value,loading:U.value,width:We(Oe),height:ct.value,closable:"",onClose:Z},null,8,["title","feature","empty","loading","width","height"])],4)):X("",!0),r("div",Ma,[$e(an,{"model-value":D.value,topics:We(Ye),"onUpdate:modelValue":vt},null,8,["model-value","topics"])])]),S.value?(c(),m("div",Fa,[n[6]||(n[6]=sn('<div class="loading-text"><span style="--index:1;">L</span><span style="--index:2;">O</span><span style="--index:3;">A</span><span style="--index:4;">D</span><span style="--index:5;">I</span><span style="--index:6;">N</span><span style="--index:7;">G</span></div>',1)),r("div",Pa,[r("span",xa,f(F.value),1),n[5]||(n[5]=r("span",{class:"unit"},"%",-1))])])):X("",!0)]))}};export{Za as default};