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-a70f7349-178680784825...

1 lines
30 KiB

var Xe=Object.defineProperty,Ze=Object.defineProperties;var ea=Object.getOwnPropertyDescriptors;var $e=Object.getOwnPropertySymbols;var aa=Object.prototype.hasOwnProperty,ta=Object.prototype.propertyIsEnumerable;var Ce=Math.pow,Re=(r,s,v)=>s in r?Xe(r,s,{enumerable:!0,configurable:!0,writable:!0,value:v}):r[s]=v,X=(r,s)=>{for(var v in s||(s={}))aa.call(s,v)&&Re(r,v,s[v]);if($e)for(var v of $e(s))ta.call(s,v)&&Re(r,v,s[v]);return r},Z=(r,s)=>Ze(r,ea(s));var ce=(r,s,v)=>new Promise((F,x)=>{var D=k=>{try{V(v.next(k))}catch(N){x(N)}},ne=k=>{try{V(v.throw(k))}catch(N){x(N)}},V=k=>k.done?F(k.value):Promise.resolve(k.value).then(D,ne);V((v=v.apply(r,s)).next())});import{k as na,a8 as la,g as u,o as f,c as h,a as e,t as c,n as S,B as xe,K as ee,F as T,y as ie,q as sa,h as ra,w as Be,A as ia,b as Ne,x as De,j as oa,d as w}from"./index-1786807848259.js";import{_ as Ae}from"./index-0eddac6c-1786807848259.js";import{_ as ua}from"./_plugin-vue_export-helper-c27b6911-1786807848259.js";const ca="/openApi/screen2/grass-livestock-balance";function da(r){if((r==null?void 0:r.success)===!1||(r==null?void 0:r.code)!==void 0&&![0,1,200,"0","1","200"].includes(r.code)){const v=new Error((r==null?void 0:r.msg)||(r==null?void 0:r.message)||"草畜平衡接口请求失败");throw v.code=r==null?void 0:r.code,v}return la(r)}function Me(r,s,v={}){return na(`${ca}${r}`,{params:s,timeout:v.timeout||16e3}).then(da)}function va(r={}){return Me("/areas",r)}function ga({year:r,scenarioVersion:s,areaCode:v}={}){return Me("/result",{year:r,scenarioVersion:s,areaCode:v})}function ma(r){if(r==null||r==="")return null;const s=typeof r=="string"?r.replace(/,/g,"").replace(/%/g,"").trim():r,v=Number(s);return Number.isFinite(v)?v:null}function ya(r,s={}){var F;const v=ma(r);return v===null?"--":v.toLocaleString("zh-CN",{maximumFractionDigits:(F=s.maximumFractionDigits)!=null?F:Number.isInteger(v)?0:2})}const pa={class:"analysis-toolbar"},ba={class:"analysis-title"},fa={class:"object-banner"},ha={class:"object-main"},ka={class:"analysis-steps"},Ba={class:"object-status"},Na={class:"analysis-chain"},Sa={class:"stage-heading"},_a={class:"resource-total-grid"},wa={class:"wetland-total"},Va={class:"type-section grass-types"},$a={class:"type-section wetland-types"},Ra=["title"],Ca={key:1,class:"detail-unavailable"},xa={key:1,class:"stage-loading"},Da={class:"stage-heading"},Aa={class:"primary-metric"},Ma={class:"secondary-metric"},Pa={key:1,class:"detail-unavailable productivity-empty"},La={key:2,class:"stage-loading"},Ta={class:"stage-heading"},Fa={key:0,class:"grass-production"},za={key:1,class:"grass-production is-empty"},Ea={class:"capacity-bars"},Ia={class:"livestock-bar"},Ha={class:"capacity-summary"},Oa={key:1,class:"stage-loading"},Wa={class:"stage-heading"},ja={key:1,class:"stage-loading"},qa={__name:"BalanceAnalysisWorkbench",props:{balance:{type:Object,default:null},analysisState:{type:String,default:"idle"},progress:{type:Number,default:0},scopeLabel:{type:String,default:"县"}},setup(r){const s=r,v=["数据汇入","资源汇总","生产力加权","承载力折算","总体结论"],F=["#58e4c2","#55aebe","#e8be4d","#7f8ee8"],x=u(()=>{var l;return((l=s.balance)==null?void 0:l.analysis)||{}}),D=u(()=>!!x.value.detailAvailable),ne=u(()=>{var l,t;return x.value.resourceSummary||{grassAreaMu:(l=s.balance)==null?void 0:l.areaRange,wetlandAreaMu:(t=s.balance)==null?void 0:t.wetlandArea}}),V=u(()=>x.value.productivity||{}),k=u(()=>{var l,t,g,m,$,R;return x.value.capacity||{bearingCapacity:(l=s.balance)==null?void 0:l.bearingCapacity,livestockCapacity:(t=s.balance)==null?void 0:t.livestockCapacity,overloadCount:(g=s.balance)==null?void 0:g.overloadCount,usageRate:(m=s.balance)==null?void 0:m.usageRate,overloadRate:($=s.balance)==null?void 0:$.overloadRate,level:(R=s.balance)==null?void 0:R.level}}),N=u(()=>(x.value.grassTypes||[]).map((l,t)=>Z(X({},l),{displayName:I(l.typeName),color:F[t%F.length]}))),q=u(()=>ue(x.value.wetlandVegetationTypes||[],5)),M=u(()=>{var l;return Number((l=N.value[0])==null?void 0:l.productionSharePct)||0}),U=u(()=>{var t;const l=String(k.value.level||((t=s.balance)==null?void 0:t.level)||"--");return l==="基本实现草畜平衡"?"基本平衡":l}),z=u(()=>{var l,t,g;return((t=(l=s.balance)==null?void 0:l.adviceRows)==null?void 0:t[0])||((g=s.balance)==null?void 0:g.advice)||"保持动态监测,结合牧草产量及时调整载畜规模。"}),G=u(()=>{var l;return((l=s.balance)==null?void 0:l.areaLevel)==="village"?"空间明细":"下级区域"}),ve=u(()=>{if(!s.balance)return"--";if(s.balance.areaLevel==="village")return s.analysisState==="idle"?"待分析":s.analysisState==="running"&&s.progress<40?"核验中":D.value?"图斑已归属":"待归属";const l=s.balance.areaLevel==="county"?"个乡镇":"个村";return`${Number(s.balance.childCount)||0}${l}`}),ae=u(()=>s.balance?s.analysisState==="idle"?"等待开始分析":s.analysisState==="done"?"总体结论已生成":s.progress<18?"正在读取区域数据":s.progress<40?"正在汇总资源结构":s.progress<62?"正在按草地类型计算生产力":s.progress<82?"正在核对产草量与承载力":"正在生成总体结论":"等待选择核算对象"),C=u(()=>{if(!N.value.length)return{background:"rgba(65, 158, 171, .16)"};let l=0;return{background:`conic-gradient(${N.value.map(g=>{const m=l;return l+=Number(g.productionSharePct)||0,`${g.color} ${m}% ${l}%`}).join(",")})`}}),E=u(()=>Math.max(Number(k.value.bearingCapacity)||0,Number(k.value.livestockCapacity)||0,1)),oe=u(()=>Math.max(8,Number(k.value.bearingCapacity||0)*100/E.value)),le=u(()=>Math.max(8,Number(k.value.livestockCapacity||0)*100/E.value));function ue(l,t){if(l.length<=t)return l;const g=l.slice(0,t-1),m=l.slice(t-1),$=m.reduce((W,p)=>W+Number(p.areaMu||0),0),R=m.reduce((W,p)=>W+Number(p.areaSharePct||0),0);return[...g,{typeName:"其他植被型",areaMu:$,areaSharePct:R}]}function I(l){const t=String(l||"未分类");return t==="未分类"||t.endsWith("类")?t:`${t}类`}function se(l){const t=[0,18,40,62,82,100];return s.analysisState==="idle"?"pending":s.progress>=t[l+1]?"done":s.progress>=t[l]?"active":"pending"}function K(l){const t={1:[18,40],2:[40,62],3:[62,82],4:[82,100]},[g,m]=t[l];return s.analysisState==="idle"||s.progress<g?"is-future":s.progress>=m?"is-done":"is-active"}function H(l,t,g){const m={1:[18,40],2:[40,62],3:[62,82],4:[82,100]},[$,R]=m[l];return s.progress>=R?t:s.analysisState==="running"&&s.progress>=$?g:"待加载"}function O(l){return s.progress>={1:18,2:40,3:62,4:82}[l]}function _(l){return s.progress>=l}function P(l,t,g,m=0){const $=Number(l);if(!Number.isFinite($))return"--";const R=Math.max(0,Math.min(1,(s.progress-t)/Math.max(1,g-t))),W=s.analysisState==="done"?1:1-Ce(1-R,3);return($*W).toLocaleString("zh-CN",{minimumFractionDigits:m,maximumFractionDigits:m})}function ge(l){const t=Number(l)||0;return t>=1e4?`${(t/1e4).toFixed(2)}万亩`:`${t.toLocaleString("zh-CN",{maximumFractionDigits:1})}亩`}function re(l,t=1){const g=Number(l);return Number.isFinite(g)?g.toFixed(t):"--"}function fe(l){const t=Number(l);return Number.isFinite(t)?Math.round(t).toLocaleString("zh-CN"):"--"}function y(l){const t=Number(l);return Number.isFinite(t)?`${t>0?"+":""}${Math.round(t).toLocaleString("zh-CN")}`:"--"}function Se(l){const t=Number(l);return Number.isFinite(t)?`${t>0?"+":""}${t.toFixed(1)}%`:"--"}return(l,t)=>{var g,m,$,R,W;return f(),h("section",{class:S(["analysis-workbench",`is-${r.analysisState}`])},[e("header",pa,[e("div",ba,[t[0]||(t[0]=e("span",null,"草畜平衡 / 区域推导分析",-1)),e("strong",null,c(r.balance?`${r.balance.name}总体草畜平衡推导`:"请选择核算对象"),1)]),e("div",{class:S(["analysis-progress",`is-${r.analysisState}`])},[e("div",null,[e("span",null,[t[1]||(t[1]=e("i",null,null,-1)),xe(c(ae.value),1)]),e("strong",null,c(r.progress)+"%",1)]),e("p",null,[e("i",{style:ee({width:`${r.progress}%`})},null,4)])],2)]),e("section",fa,[e("div",ha,[e("span",null,c(r.scopeLabel)+"级核算对象",1),e("strong",null,c(((g=r.balance)==null?void 0:g.name)||"未选择"),1),e("small",null,c((m=r.balance)!=null&&m.areaCode?`行政区划 ${r.balance.areaCode}`:"等待选择区域"),1)]),e("div",ka,[(f(),h(T,null,ie(v,(p,A)=>e("div",{key:p,class:S(se(A))},[e("span",null,c(A+1),1),e("strong",null,c(p),1)],2)),64))]),e("div",Ba,[e("span",null,c(G.value),1),e("strong",null,c(ve.value),1)])]),e("section",Na,[e("article",{class:S(["stage-card resource-stage",K(1)])},[e("header",Sa,[t[2]||(t[2]=e("span",null,"01",-1)),t[3]||(t[3]=e("div",null,[e("h2",null,"资源结构汇总"),e("p",null,"资源总量与类型")],-1)),e("small",null,c(H(1,"已完成","汇总中")),1)]),O(1)?(f(),h(T,{key:0},[e("div",_a,[e("div",null,[t[4]||(t[4]=e("span",null,"草地总面积",-1)),e("strong",null,c(P(ne.value.grassAreaMu,18,34,1)),1),t[5]||(t[5]=e("small",null,"亩",-1))]),e("div",wa,[t[6]||(t[6]=e("span",null,"湿地总面积",-1)),e("strong",null,c(P(ne.value.wetlandAreaMu,18,34,1)),1),t[7]||(t[7]=e("small",null,"亩",-1))])]),D.value?(f(),h(T,{key:0},[e("section",Va,[t[8]||(t[8]=e("div",{class:"type-title"},[e("strong",null,"草地类型"),e("span",null,"面积 / 占比")],-1)),(f(!0),h(T,null,ie(N.value,(p,A)=>(f(),h("div",{key:p.typeName,class:"type-row"},[e("span",null,c(p.displayName),1),e("div",null,[e("i",{style:ee({width:_(22+A*2)?`${p.areaSharePct}%`:"0%",background:p.color})},null,4)]),e("strong",null,c(_(22+A*2)?ge(p.areaMu):"--"),1),e("em",null,c(_(22+A*2)?`${re(p.areaSharePct,1)}%`:"--"),1)]))),128))]),e("section",$a,[t[9]||(t[9]=e("div",{class:"type-title"},[e("strong",null,"湿地植被型"),e("span",null,"面积 / 占比")],-1)),(f(!0),h(T,null,ie(q.value,(p,A)=>(f(),h("div",{key:p.typeName,class:"type-row"},[e("span",{title:p.typeName},c(p.typeName),9,Ra),e("div",null,[e("i",{style:ee({width:_(29+A)?`${p.areaSharePct}%`:"0%"})},null,4)]),e("strong",null,c(_(29+A)?ge(p.areaMu):"--"),1),e("em",null,c(_(29+A)?`${re(p.areaSharePct,1)}%`:"--"),1)]))),128))])],64)):(f(),h("div",Ca,[...t[10]||(t[10]=[e("i",null,null,-1),e("strong",null,"村级类型数据待空间归属",-1)])]))],64)):(f(),h("div",xa,[...t[11]||(t[11]=[e("i",null,null,-1),e("strong",null,"待加载",-1)])]))],2),e("div",{class:S(["stage-connector",{active:r.progress>=38}])},[...t[12]||(t[12]=[e("i",null,null,-1),e("span",null,null,-1)])],2),e("article",{class:S(["stage-card productivity-stage",K(2)])},[e("header",Da,[t[13]||(t[13]=e("span",null,"02",-1)),t[14]||(t[14]=e("div",null,[e("h2",null,"类型加权生产力"),e("p",null,"按草地图斑计算")],-1)),e("small",null,c(H(2,D.value?"已计算":"暂无明细",D.value?"计算中":"核验中")),1)]),O(2)&&D.value?(f(),h(T,{key:0},[e("div",Aa,[t[15]||(t[15]=e("span",null,"加权鲜草亩产",-1)),e("strong",null,c(P(V.value.weightedFreshYieldJinPerMu,40,57,0)),1),t[16]||(t[16]=e("small",null,"斤/亩",-1))]),e("div",Ma,[t[17]||(t[17]=e("span",null,"加权干草亩产",-1)),e("strong",null,c(P(V.value.weightedDryYieldJinPerMu,42,58,0)),1),t[18]||(t[18]=e("small",null,"斤/亩",-1))]),e("div",{class:S(["productivity-donut reveal-block",{"is-revealed":_(50)}]),style:ee(C.value)},[e("div",null,[e("strong",null,c(re(M.value,1))+"%",1),t[19]||(t[19]=e("span",null,"主要类型贡献",-1))])],6),e("div",{class:S(["contribution-legend reveal-block",{"is-revealed":_(53)}])},[(f(!0),h(T,null,ie(N.value,p=>(f(),h("div",{key:`yield-${p.typeName}`},[e("i",{style:ee({background:p.color})},null,4),e("span",null,[xe(c(p.displayName),1),e("small",null,c(fe(p.freshYieldJinPerMu))+"斤/亩",1)]),e("strong",null,c(re(p.productionSharePct,1))+"%",1)]))),128))],2)],64)):O(2)?(f(),h("div",Pa,[...t[20]||(t[20]=[e("i",null,null,-1),e("strong",null,"暂无村级生产力明细",-1)])])):(f(),h("div",La,[...t[21]||(t[21]=[e("i",null,null,-1),e("strong",null,"待加载",-1)])]))],2),e("div",{class:S(["stage-connector",{active:r.progress>=60}])},[...t[22]||(t[22]=[e("i",null,null,-1),e("span",null,null,-1)])],2),e("article",{class:S(["stage-card capacity-stage",K(3)])},[e("header",Ta,[t[23]||(t[23]=e("span",null,"03",-1)),t[24]||(t[24]=e("div",null,[e("h2",null,"产草量与承载力"),e("p",null,"产量与载畜比较")],-1)),e("small",null,c(H(3,"已折算","折算中")),1)]),O(3)?(f(),h(T,{key:0},[D.value?(f(),h("div",Fa,[e("div",null,[t[25]||(t[25]=e("span",null,"年产鲜草",-1)),e("strong",null,c(P(V.value.annualFreshGrassWanTon,62,72,1)),1),t[26]||(t[26]=e("small",null,"万吨",-1))]),t[29]||(t[29]=e("i",null,null,-1)),e("div",null,[t[27]||(t[27]=e("span",null,"年产干草",-1)),e("strong",null,c(P(V.value.annualDryGrassWanTon,66,76,1)),1),t[28]||(t[28]=e("small",null,"万吨",-1))])])):(f(),h("div",za,[...t[30]||(t[30]=[e("div",null,[e("span",null,"年产鲜草"),e("strong",null,"--"),e("small",null,"万吨")],-1),e("i",null,null,-1),e("div",null,[e("span",null,"年产干草"),e("strong",null,"--"),e("small",null,"万吨")],-1)])])),e("div",Ea,[e("div",null,[t[31]||(t[31]=e("span",null,"理论承载力",-1)),e("p",null,[e("i",{style:ee({height:_(70)?`${oe.value}%`:"0%"})},null,4)]),e("strong",null,c(P(k.value.bearingCapacity,68,82,0)),1),t[32]||(t[32]=e("small",null,"头",-1))]),e("div",Ia,[t[33]||(t[33]=e("span",null,"实际载畜量",-1)),e("p",null,[e("i",{style:ee({height:_(70)?`${le.value}%`:"0%"})},null,4)]),e("strong",null,c(P(k.value.livestockCapacity,68,82,0)),1),t[34]||(t[34]=e("small",null,"头",-1))])]),e("div",Ha,[t[35]||(t[35]=e("span",null,"供需差额",-1)),e("strong",{class:S({surplus:Number(k.value.overloadCount)<0})},c(_(78)?y(k.value.overloadCount):"--"),3),t[36]||(t[36]=e("small",null,"头",-1))])],64)):(f(),h("div",Oa,[...t[37]||(t[37]=[e("i",null,null,-1),e("strong",null,"待加载",-1)])]))],2),e("div",{class:S(["stage-connector",{active:r.progress>=80}])},[...t[38]||(t[38]=[e("i",null,null,-1),e("span",null,null,-1)])],2),e("article",{class:S(["stage-card verdict-stage",K(4)])},[e("header",Wa,[t[40]||(t[40]=e("span",null,"04",-1)),e("div",null,[t[39]||(t[39]=e("h2",null,"草畜平衡结论",-1)),e("p",null,c((($=r.balance)==null?void 0:$.name)||"当前区域"),1)]),e("small",null,c(H(4,"已生成","判定中")),1)]),O(4)?(f(),h(T,{key:0},[e("div",{class:S(["verdict-visual",`is-${((R=r.balance)==null?void 0:R.levelKey)||"watch"}`])},[t[41]||(t[41]=e("div",{class:"verdict-scale"},[e("i"),e("span")],-1)),e("div",null,[e("span",null,c((W=r.balance)==null?void 0:W.name),1),e("strong",null,c(r.progress>=90?U.value:"推导中"),1),e("small",null,"承载利用率 "+c(P(k.value.usageRate,82,96,1))+"%",1)])],2),e("div",{class:S(["verdict-evidence reveal-block",{"is-revealed":_(88)}])},[e("div",{class:S(["overload-rate-card",{"is-surplus":Number(k.value.overloadRate)<0}])},[t[42]||(t[42]=e("span",null,"草畜平衡超载率",-1)),e("strong",null,c(Se(k.value.overloadRate)),1)],2),e("div",null,[e("span",null,c(G.value),1),e("strong",null,c(ve.value),1)])],2),e("div",{class:S(["verdict-advice reveal-block",{"is-revealed":_(92)}])},[t[43]||(t[43]=e("span",null,"调控建议",-1)),e("p",null,c(z.value),1)],2)],64)):(f(),h("div",ja,[...t[44]||(t[44]=[e("i",null,null,-1),e("strong",null,"待加载",-1)])]))],2)])],2)}}},Ga=ua(qa,[["__scopeId","data-v-97404235"]]);const Ka={class:"grass-livestock-balance"},Ja={class:"balance-selector"},Ya={class:"balance-scope-tabs"},Ua=["onClick"],Qa={class:"balance-target-list"},Xa=["title","onClick"],Za={class:"balance-action-box"},et={"aria-live":"polite"},at=["disabled"];const tt=326,nt=1310,lt=128,st=8,de=15e3,xt={__name:"index",props:{active:{type:Boolean,default:!0}},emits:["loading-progress","map-ready"],setup(r,{emit:s}){const v=r,F=s,x=w(typeof window=="undefined"?1080:window.innerHeight),D=u(()=>{const a=Math.max(1080,Number(x.value)||1080);return Math.max(944,a-lt-st)}),ne=u(()=>D.value),V=w("county"),k=w(""),N=w("idle"),q=w(0),M=w(0),U=w(0),z=w(0),G=w(!1),ve=w(null),ae=w(de),C=w(""),E=w(!1),oe=w({}),le=w([]),ue=w([]);let I=!1,se=0,K=null,H=0,O=null;const _=u(()=>[...le.value,...ue.value].map(a=>oe.value[a.key]||a)),P=u(()=>_.value.filter(a=>a.type==="county")),ge=u(()=>_.value.filter(a=>a.type==="town")),re=u(()=>_.value.filter(a=>a.type==="village")),fe=u(()=>V.value==="town"?ge.value:V.value==="village"?re.value:P.value),y=u(()=>_.value.find(a=>a.key===k.value)||null),Se=u(()=>{var i,o;const a=((i=y.value)==null?void 0:i.year)||"当前年度",n=String(((o=y.value)==null?void 0:o.scenarioVersion)||"").trim();return n?n.endsWith("current-stock")?`${a} · 当前存栏口径`:`${a} · ${n}`:a}),l=u(()=>!!y.value),t=u(()=>!!C.value&&!E.value&&!le.value.length),g=u(()=>N.value==="running"),m=u(()=>l.value&&N.value==="done"),$=u(()=>{var n,i,o,d,b,B,J,j;const a=y.value||{};return{bearing:(n=a.bearingCapacity)!=null?n:null,livestock:(i=a.livestockCapacity)!=null?i:null,areaRange:(o=a.areaRange)!=null?o:null,overloadCount:(d=a.overloadCount)!=null?d:null,overloadRate:(b=a.overloadRate)!=null?b:null,usageRate:(B=a.usageRate)!=null?B:null,bearingPercent:(J=a.bearingPercent)!=null?J:0,livestockPercent:(j=a.livestockPercent)!=null?j:0,risk:{key:a.levelKey||"watch",label:a.level||"--",description:a.conclusion||"暂缺分析结论"}}}),R=u(()=>[{key:"county",name:"县"},{key:"town",name:"镇"},{key:"village",name:"村"}]),W=u(()=>{var a;return((a=R.value.find(n=>n.key===V.value))==null?void 0:a.name)||"县"}),p=u(()=>E.value?"正在加载核算对象":C.value?C.value:l.value?m.value?"分析已完成":g.value?"正在执行核算":"已选择,待开始分析":"请先选择具体对象"),A=u(()=>m.value?"草畜平衡分析舱":"草畜平衡分析"),rt=u(()=>E.value?"加载中":t.value?"可重试":l.value?g.value?"分析中":"待开始":"待选择"),it=u(()=>E.value?"正在加载核算对象":t.value?"核算对象暂未加载":l.value?g.value?`${y.value.name} 正在分析`:`${y.value.name} 待开始分析`:"先选择一个核算对象"),ot=u(()=>E.value?"正在读取县、镇、村核算对象,请稍候。":C.value?C.value:l.value?g.value?"正在读取草畜平衡结果,核对承载力、载畜量和超载率。":"点击左侧开始分析后,再展示结果、分析过程、结论和建议。":"选择县、镇或村后,系统才会进入草地承载力核算。"),ut=u(()=>{var a;return((a=y.value)==null?void 0:a.summary)||"分析结果存在缺失项,请以页面状态为准。"}),ct=u(()=>{var a;return((a=y.value)==null?void 0:a.verdictHint)||"依据承载利用率判定"}),dt=u(()=>{var a;return((a=y.value)==null?void 0:a.decisionHint)||"分析建议"}),vt=u(()=>{var a;return`${Number((a=y.value)==null?void 0:a.usageAngleDeg)||0}deg`});function me(a){const n=Number(a);return Number.isFinite(n)?`${n.toFixed(1)}%`:"--"}function Q(a){if(a==null||a==="")return null;const n=Number(a);return Number.isFinite(n)?n:null}function Pe(a){const n=String(a||"");return n.includes("未超载")||n.includes("合理")?"healthy":n.includes("基本")?"watch":n.includes("轻度")?"light":n.includes("中度")?"warning":"danger"}function Le(a){const n=String(a||"");return n.includes("未超载")||n.includes("合理")?"保持监测":n.includes("基本")?"基本平衡":n.includes("轻度")?"关注调控":n.includes("中度")?"主动调控":"重点管控"}function Te(a){const n=String(a||"");return n.includes("未超载")||n.includes("合理")||n.includes("基本")?"保持监测":n.includes("轻度")?"关注调控":"需要调控"}function Fe(a){return[...new Set(String(a||"").split(/[。;;\n]+/).map(n=>n.trim()).filter(Boolean))]}function ze(a){return[{key:"productivity",index:"01",name:"草地生产力核算",description:`核算草地 ${L(a.areaRange,"亩",1)}、湿地 ${L(a.wetlandArea,"亩",1)}。`},{key:"forage",index:"02",name:"可利用草量折算",description:`理论承载力 ${L(a.bearingCapacity,"头")}。`},{key:"livestock",index:"03",name:"载畜量折算",description:`当前载畜量 ${L(a.livestockCapacity,"头")}。`},{key:"balance",index:"04",name:"平衡判定",description:`超载率 ${me(a.overloadRate)},判定为“${a.level||"--"}”。`}]}function Ee(){return[{key:"productivity",index:"01",name:"草地生产力核算",description:"正在读取下属区域草地与湿地数据",pending:"等待草地生产力数据"},{key:"forage",index:"02",name:"可利用草量折算",description:"正在读取下属区域理论承载力",pending:"等待理论承载力数据"},{key:"livestock",index:"03",name:"载畜量折算",description:"正在读取下属区域当前畜群数量",pending:"等待当前畜群数据"},{key:"balance",index:"04",name:"平衡判定",description:"正在生成下属区域超载率排行",pending:"等待平衡判定结果"}]}function Ie(a){const n=[...a].sort((o,d)=>{const b=Q(o.overloadRate),B=Q(d.overloadRate);return b===null&&B===null?String(o.areaCode).localeCompare(String(d.areaCode)):b===null?1:B===null?-1:B-b||String(o.areaCode).localeCompare(String(d.areaCode))}),i=Math.max(0,...n.map(o=>{var d;return(d=Q(o.overloadRate))!=null?d:0}));return n.map((o,d)=>{const b=Q(o.overloadRate),B=b===null||i<=0?0:Math.max(0,b)*100/i;return Z(X({},o),{rank:d+1,progressPct:B>0?Math.min(100,Math.max(6,B)):0,statusClass:b===null?"is-empty":b>=2.5?"is-alert":b>=2?"is-warning":"is-stable",tooltip:`${o.areaName||o.name}:理论${L(o.bearingCapacity,"头")},实际${L(o.livestockCapacity,"头")},超载率${me(b)}`})})}function He(a){if(!(a!=null&&a.hasData)||!(a!=null&&a.result))return a;const n=a.result,i=Array.isArray(a.children)?a.children:[],o=Q(n.bearingCapacity),d=Q(n.livestockCapacity),b=Q(n.overloadCount),B=Q(n.usageRate),J=Math.max(o!=null?o:0,d!=null?d:0),j=String(n.level||""),Y=n.areaLevel||n.type,be=i.length?i:[n];return Z(X({},n),{hasData:!0,emptyState:null,analysis:a.analysis||null,bearingPercent:J>0&&o!==null?o*100/J:0,livestockPercent:J>0&&d!==null?d*100/J:0,usageAngleDeg:B===null?0:Math.round(Math.min(130,Math.max(0,B))*360/130),levelKey:Pe(j),verdictHint:Le(j),decisionHint:Te(j),summary:b===null||B===null?"分析结果存在缺失项,请以页面状态为准。":`${b>=0?"超载量":"承载余量"} ${ya(Math.abs(b))}头,承载利用率 ${me(B)}。`,adviceRows:Fe(n.advice),calculationStages:ze(n),progressStages:Ee(),hasChildAreas:i.length>0,childCount:i.length,childLevel:Y==="county"?"town":Y==="town"?"village":null,processScopeLabel:i.length?Y==="county"?"下属乡镇":"下属村":"当前村",processRows:be,childRankingTitle:Y==="county"?"乡镇超载率排行":Y==="town"?"村级超载率排行":null,childRanking:Y==="village"?[]:Ie(i)})}const Oe=u(()=>{var a;return(((a=y.value)==null?void 0:a.calculationStages)||[]).map(n=>Z(X({},n),{desc:n.description}))}),te=u(()=>{var n;return(((n=y.value)==null?void 0:n.progressStages)||[{key:"productivity",index:"01",name:"草地生产力核算",desc:"正在读取草地生产力核算结果",pending:"等待生产力核算结果"},{key:"forage",index:"02",name:"可利用草量折算",desc:"正在读取可利用草量折算结果",pending:"等待草量折算结果"},{key:"livestock",index:"03",name:"载畜量折算",desc:"正在读取载畜量折算结果",pending:"等待载畜量折算结果"},{key:"balance",index:"04",name:"平衡判定",desc:"正在生成结论与建议",pending:"等待平衡判定结果"}]).map(i=>Z(X({},i),{desc:i.description||i.desc}))}),gt=u(()=>te.value[Math.min(M.value,te.value.length-1)]||te.value[0]),he=u(()=>{var n;const a=(n=y.value)==null?void 0:n.processRows;return Array.isArray(a)&&a.length?a:y.value?[y.value]:[]}),_e=u(()=>te.value.flatMap((a,n)=>he.value.map((i,o)=>({key:`${a.key}-${i.areaCode||i.key||o}`,stage:a,stageIndex:n,row:i,rowIndex:o})))),We=u(()=>_e.value.slice(0,z.value)),mt=u(()=>[{key:"productivity",index:"01",name:"草地生产力核算",desc:m.value?"已完成":l.value?"等待核算":"等待选择",state:l.value?"done":"active"},{key:"forage",index:"02",name:"可利用草量折算",desc:m.value?"已完成":"分析后折算",state:g.value?"active":m.value?"done":l.value?"pending":"disabled"},{key:"livestock",index:"03",name:"载畜量折算",desc:m.value?"已完成":"等待折算",state:g.value?"active":m.value?"done":"disabled"},{key:"balance",index:"04",name:"平衡判定",desc:m.value?$.value.risk.label:"等待判定",state:m.value?"done":"disabled"}]),yt=u(()=>{var a;return m.value?((a=y.value)==null?void 0:a.adviceRows)||[]:[]}),je=u(()=>{var a;return m.value?((a=y.value)==null?void 0:a.childRanking)||[]:[]}),qe=u(()=>{var a;return je.value.length>0&&((a=y.value)==null?void 0:a.areaLevel)!=="village"}),pt=u(()=>{var a;return((a=y.value)==null?void 0:a.childRankingTitle)||"下级超载率排行"});function L(a,n,i=0){if(a==null||a==="")return`--${n}`;const o=Number(a);return Number.isFinite(o)?`${o.toLocaleString("zh-CN",{minimumFractionDigits:i,maximumFractionDigits:i})}${n}`:`--${n}`}function bt(a,n=M.value){return n===0?`草地 ${L(a.areaRange,"亩",1)}`:n===1?`承载力 ${L(a.bearingCapacity,"头")}`:n===2?`载畜量 ${L(a.livestockCapacity,"头")}`:`超载率 ${me(a.overloadRate)}`}function ft(a,n=M.value){return n===0?`湿地 ${L(a.wetlandArea,"亩",1)}`:n===1?"可利用草量折算结果":n===2?"当前存栏":`${a.level||"待判定"}|超载量 ${L(a.overloadCount,"头")}`}function ht(a){return Number(a==null?void 0:a.progressPct)||0}function kt(a){return(a==null?void 0:a.statusClass)||"is-empty"}function Bt(a){return(a==null?void 0:a.tooltip)||(a==null?void 0:a.name)||"乡镇"}function ye(){se+=1,O=null,pe(),N.value="idle",q.value=0,M.value=0,U.value=0,z.value=0,G.value=!1,ae.value=de,C.value=""}function ke(){x.value=typeof window=="undefined"?1080:window.innerHeight}sa(()=>{ke(),window.addEventListener("resize",ke),F("loading-progress",{progress:100}),F("map-ready"),Ue()}),ra(()=>{I=!0,window.removeEventListener("resize",ke),se+=1,H+=1,pe()}),Be(()=>{var a;return(a=y.value)==null?void 0:a.key},()=>{ye()}),Be(()=>v.active,a=>{a||!g.value||ye()}),Be(()=>We.value.length,a=>ce(this,null,function*(){if(!a)return;yield ia();const n=ve.value;n&&n.scrollTo({top:n.scrollHeight,behavior:"smooth"})}));function Ge(a){V.value=a,k.value="",ye()}function Ke(a){a&&(V.value=["county","town","village"].includes(a.type)?a.type:"county",k.value=a.key,ye())}function Je(){if(!v.active||!y.value||g.value)return;N.value="running",q.value=0,M.value=0,U.value=0,z.value=0,G.value=!1,ae.value=de,C.value="",pe();const a=Date.now();let n=null,i=!1;const o=Ye().catch(d=>(i=!0,console.warn("[grassLivestockBalance] balance result unavailable",d),C.value=we(d,"当前对象的核算结果暂不可用,请稍后重试。"),null));o.then(d=>{d&&(ae.value=de,n=Date.now(),G.value=!0,z.value=1)}),O=o,K=window.setInterval(()=>{if(I||!G.value||!n)return;const d=Date.now()-n,b=Math.max(1,te.value.length),B=Math.max(de,ae.value),J=Math.min(94,Math.floor(d/B*100));q.value=J;const j=Math.max(1,he.value.length),Y=Math.max(1,b*j),be=Math.min(Y,Math.floor(d/(B/Y))+1),Ve=Math.max(0,be-1);z.value=be,M.value=Math.min(b-1,Math.floor(Ve/j)),U.value=Ve%j},120),o.finally(()=>ce(this,null,function*(){const d=n||a,b=n?ae.value-(Date.now()-d):0;if(b>0&&(yield new Promise(B=>window.setTimeout(B,b))),!(I||N.value!=="running"||O!==o)){if(O=null,pe(),!y.value){q.value=0,M.value=0,U.value=0,z.value=0,G.value=!1,N.value="idle";return}if(i||!Qe(y.value)){q.value=0,M.value=0,U.value=0,z.value=0,G.value=!1,N.value="idle";return}q.value=100,M.value=te.value.length-1,U.value=Math.max(0,he.value.length-1),z.value=_e.value.length,yield new Promise(B=>window.setTimeout(B,900)),!(I||N.value!=="running")&&(N.value="done")}}))}function Ye(){return ce(this,null,function*(){const a=y.value;if(!a)throw new Error("请先选择具体核算对象");const n=++se,i=yield ga({year:a.year,scenarioVersion:a.scenarioVersion,areaCode:a.areaCode});if(I||n!==se)return null;if(!(i!=null&&i.hasData))throw new Error((i==null?void 0:i.emptyState)||"未查询到该对象的草畜平衡结果");const o=He(i);return oe.value=Z(X({},oe.value),{[a.key]:o}),o})}function Ue(){return ce(this,null,function*(){const a=++H;E.value=!0,C.value="";try{const n=yield va();if(I||a!==H)return;const i=Array.isArray(n==null?void 0:n.rows)?n.rows:[],o=i.map(d=>Z(X({},d),{childCount:d.areaLevel==="village"?0:i.filter(b=>b.parentAreaCode===d.areaCode).length}));le.value=o.filter(d=>["county","town"].includes(d.type)),ue.value=o.filter(d=>d.type==="village"),C.value=o.length?"":(n==null?void 0:n.emptyState)||"暂无核算对象"}catch(n){if(I||a!==H)return;console.warn("[grassLivestockBalance] area balance rows unavailable",n),le.value=[],ue.value=[],C.value=we(n,"核算对象加载失败,请稍后重试。")}finally{!I&&a===H&&(E.value=!1)}})}function we(a,n){const i=String((a==null?void 0:a.message)||"").trim();return/404|not found|暂无|未查询到/i.test(i)?"暂未查询到核算数据,请稍后重试。":/network|fetch|timeout|连接|服务|502|503|504/i.test(i)?"核算服务暂时无法连接,请稍后重试。":n}function Qe(a={}){return["overloadRate","overload_rate","bearingCapacity","bearing_capacity","livestockCapacity","livestock_capacity"].some(n=>(a==null?void 0:a[n])!==void 0&&(a==null?void 0:a[n])!==null&&(a==null?void 0:a[n])!=="")}function pe(){K&&(window.clearInterval(K),K=null)}function Nt(a){const n=te.value[a],i=Oe.value[a];return m.value&&(i!=null&&i.desc)?i.desc:(n==null?void 0:n.desc)||"正在读取分析结果"}return(a,n)=>(f(),h("div",Ka,[n[14]||(n[14]=e("div",{class:"balance-backdrop","aria-hidden":"true"},[e("div",{class:"balance-orbit is-left"}),e("div",{class:"balance-orbit is-right"}),e("div",{class:"balance-energy-band"})],-1)),e("div",{class:"balance-screen",style:ee({"--balance-card-height":`${D.value}px`})},[Ne(Ae,{class:"balance-card balance-target-card",title:"核算对象",width:tt,height:ne.value},{default:De(()=>{var i;return[e("div",Ja,[e("div",Ya,[(f(!0),h(T,null,ie(R.value,o=>(f(),h("button",{key:o.key,type:"button",class:S({active:V.value===o.key}),onClick:d=>Ge(o.key)},c(o.name),11,Ua))),128))]),e("div",Qa,[(f(!0),h(T,null,ie(fe.value,o=>{var d;return f(),h("button",{key:o.key,type:"button",class:S({active:o.key===((d=y.value)==null?void 0:d.key)}),title:o.name,onClick:b=>Ke(o)},[e("span",null,c(o.name),1)],10,Xa)}),128))]),e("div",Za,[n[0]||(n[0]=e("span",null,"当前对象",-1)),e("strong",null,c(((i=y.value)==null?void 0:i.name)||"未选择"),1),e("small",et,c(p.value),1),e("button",{type:"button",disabled:!l.value||g.value,onClick:Je},c(g.value?"分析中...":m.value?"重新分析":"开始分析"),9,at)])])]}),_:1},8,["height"]),Ne(Ae,{class:"balance-card balance-sheet-card",title:A.value,width:nt,height:D.value},{default:De(()=>[e("div",{class:S(["balance-sheet",{"is-ready":m.value,"is-running":g.value,"is-village-result":m.value&&!qe.value}])},[n[13]||(n[13]=e("div",{class:"balance-field-lines","aria-hidden":"true"},[e("i"),e("i"),e("i")],-1)),Ne(Ga,{balance:y.value,"analysis-state":N.value,progress:q.value,"scope-label":W.value},null,8,["balance","analysis-state","progress","scope-label"]),oa("",!0)],2)]),_:1},8,["title","height"])],4)]))}};export{xt as default};