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