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-c45f03eb-178404507856...

1 lines
18 KiB

var Je=Object.defineProperty,We=Object.defineProperties;var Ue=Object.getOwnPropertyDescriptors;var re=Object.getOwnPropertySymbols;var Ye=Object.prototype.hasOwnProperty,Ge=Object.prototype.propertyIsEnumerable;var ie=(n,i,u)=>i in n?Je(n,i,{enumerable:!0,configurable:!0,writable:!0,value:u}):n[i]=u,B=(n,i)=>{for(var u in i||(i={}))Ye.call(i,u)&&ie(n,u,i[u]);if(re)for(var u of re(i))Ge.call(i,u)&&ie(n,u,i[u]);return n},j=(n,i)=>We(n,Ue(i));var E=(n,i,u)=>new Promise((h,x)=>{var g=_=>{try{C(u.next(_))}catch(b){x(b)}},W=_=>{try{C(u.throw(_))}catch(b){x(b)}},C=_=>_.done?h(_.value):Promise.resolve(_.value).then(g,W);C((u=u.apply(n,i)).next())});import{_ as ue}from"./index-27149dbd-1784045078568.js";import{r as Qe,n as Xe}from"./index-6a8ef8cf-1784045078568.js";import{a as Ze,n as ea,d as aa,f as Z,c as O,s as na,p as oe}from"./data-5c83c66b-1784045078568.js";import{g as o,q as la,h as ta,w as ce,o as y,c as f,a as e,b as ve,x as de,F as P,y as z,n as S,t as r,J as T,u as K,d as N}from"./index-1784045078568.js";import"./index-e9f36657-1784045078568.js";const ee=ia("/jsyApi"),sa="/openApi";function ra(n,i){return/^https?:\/\//.test(i)?i:`${n}${i.startsWith("/")?i:`/${i}`}`}function ia(n){const i=String(n||"/jsyApi").replace(/\/+$/,"");return i.endsWith("/api")?i:`${i}/api`}function ua(n){if((n==null?void 0:n.success)===!1||(n==null?void 0:n.code)!==void 0&&![0,200,"0","200"].includes(n.code)){const u=new Error((n==null?void 0:n.msg)||(n==null?void 0:n.message)||"接口请求失败");throw u.code=n==null?void 0:n.code,u}return Xe(n)}function J(n,i,u,h={}){return Qe(ra(n,i),{params:u,timeout:h.timeout||16e3}).then(ua)}function oa(n){return Array.isArray(n)?n:Array.isArray(n==null?void 0:n.rows)?n.rows:Array.isArray(n==null?void 0:n.list)?n.list:Array.isArray(n==null?void 0:n.data)?n.data:[]}function ca(n){return Array.isArray(n)?n.length>0:!n||typeof n!="object"?n!=null&&n!=="":["areaRange","area_range","acreage","grasslandArea","grassland_area","arearange","area","yakNumber","yak_number","yaknumber","number","yakCount","yak_count","livestockCount","livestock_count","bearingCapacity","bearing_capacity","bearingcapacity","capacity","theoryCapacity","livestockCapacity","livestock_capacity","livestockcapacity","carryingCapacity","actualCapacity","overloadRate","overload_rate","overloadrate","rate","level","conclusion","advice","balanceAdvice","balance_advice"].some(u=>n[u]!==void 0&&n[u]!==null&&n[u]!=="")}function va(){return E(this,arguments,function*({areaCode:n}={}){const i={areaCode:n},u=[()=>J(ee,"/ai/livestockBalance",i,{timeout:18e3}),()=>J(sa,"/ai/balance/advice",i,{timeout:18e3})];let h;for(const x of u)try{const g=yield x();if(ca(g))return g}catch(g){h=g}throw h||new Error("草畜平衡接口不可用")})}function da(n){return E(this,null,function*(){const i=[()=>J(ee,"/area/children",{areaCode:n},{timeout:12e3}),()=>J(ee,"/map/areaCode",{areaCode:n},{timeout:12e3})];let u,h=!1;for(const x of i)try{const g=oa(yield x());if(g.length)return g;h=!0}catch(g){u=g}if(h)return[];throw u||new Error("区划接口不可用")})}const ya={class:"grass-livestock-balance"},fa={class:"balance-selector"},ga={class:"balance-scope-tabs"},ma=["onClick"],ba={class:"balance-target-list"},pa=["title","onClick"],ka={class:"balance-action-box"},ha=["disabled"],wa={key:0,class:"balance-running"},_a={class:"balance-running-head"},Ra={class:"balance-core-inner"},Aa={class:"balance-running-title"},Ca={class:"balance-progress-line"},$a={class:"balance-live-process"},xa={key:1,class:"balance-waiting"},Sa={class:"balance-wait-core"},Na={class:"balance-core-ring is-empty"},Ba={class:"balance-core-inner"},Ma={class:"balance-preflight"},Ea={key:2,class:"balance-analysis"},Pa={class:"balance-dashboard"},za={class:"balance-object-block"},Ta={class:"balance-core"},qa={class:"balance-core-inner"},Ia={class:"balance-compare"},Va={class:"balance-bar-row"},Da={class:"balance-bar-row is-livestock"},Ha={class:"balance-detail"},ja={class:"balance-process"},Ka={class:"balance-section-title"},La={class:"balance-process-track"},Fa={class:"balance-decision"},Oa={class:"balance-section-title"},Ja={class:"balance-conclusion"},Wa={class:"balance-advice-list"},Ua={class:"balance-overload-ranking"},Ya={class:"balance-rank-list"},Ga=326,Qa=1310,Xa=128,Za=8,en=6200,un={__name:"index",props:{active:{type:Boolean,default:!0}},emits:["loading-progress","map-ready"],setup(n,{emit:i}){const u=n,h=i,x=N(typeof window=="undefined"?1080:window.innerHeight),g=o(()=>{const a=Math.max(1080,Number(x.value)||1080);return Math.max(944,a-Xa-Za)}),W=o(()=>g.value),C=N("county"),_=N(""),b=N("idle"),R=N(0),$=N(0),A=N(""),q=N({}),U=N([]);let M=!1,Y=0,L=null,D=0,I=null;const F=o(()=>[...Ze,...U.value].map(a=>ea(q.value[a.key],a))),ye=o(()=>F.value.filter(a=>a.type==="county")),G=o(()=>F.value.filter(a=>a.type==="town")),fe=o(()=>F.value.filter(a=>a.type==="village")),ge=o(()=>C.value==="town"?G.value:C.value==="village"?fe.value:ye.value),d=o(()=>F.value.find(a=>a.key===_.value)||null),k=o(()=>!!d.value),p=o(()=>b.value==="running"),m=o(()=>k.value&&b.value==="done"),c=o(()=>aa(d.value||{})),ae=o(()=>[{key:"county",name:"县"},{key:"town",name:"镇"},{key:"village",name:"村"}]),me=o(()=>{var a;return((a=ae.value.find(l=>l.key===C.value))==null?void 0:a.name)||"县"}),be=o(()=>d.value?d.value.areaCode?`行政区划 ${d.value.areaCode}`:d.value.township||"核算对象":"等待选择核算对象"),pe=o(()=>A.value?A.value:k.value?m.value?"分析已完成":p.value?"正在执行核算":"已选择,待开始分析":"请先选择具体对象"),ke=o(()=>m.value?"草畜平衡分析舱":"草畜平衡分析"),he=o(()=>k.value?p.value?"分析中":"待开始":"待选择"),we=o(()=>k.value?p.value?`${d.value.name} 正在分析`:`${d.value.name} 待开始分析`:"先选择一个核算对象"),_e=o(()=>A.value?A.value:k.value?p.value?"正在读取草畜平衡结果,核对承载力、载畜量和超载率。":"点击左侧开始分析后,再展示结果、分析过程、结论和建议。":"选择县、镇或村后,系统才会进入草地承载力核算。"),Re=o(()=>{const a=c.value;return a.delta===null?"根据草畜平衡结果表返回的承载力、载畜量和超载率生成判定。":`${a.delta>0?"超载量":"承载余量"} ${Z(Math.abs(a.delta))},承载利用率 ${O(a.usageRate)}`}),Ae=o(()=>c.value.risk.key==="healthy"?"保持监测":c.value.risk.key==="watch"?"基本平衡":c.value.risk.key==="light"?"关注调控":c.value.delta===null?"按结果表判定":c.value.delta>0?"需调控载畜量":"承载能力可覆盖"),Ce=o(()=>c.value.risk.key==="healthy"||c.value.risk.key==="watch"?"保持监测":c.value.risk.key==="light"?"关注调控":c.value.delta===null?"结果表口径":c.value.delta>0?"需要调控":"保持监测"),$e=o(()=>{const a=Math.max(0,Math.min(130,Number(c.value.usageRate)||0));return`${Math.round(a/130*360)}deg`}),xe=o(()=>[{key:"productivity",index:"01",name:"草地生产力核算",desc:"核定草地范围、面积和产草量等级,形成生产力基础口径。"},{key:"forage",index:"02",name:"可利用草量折算",desc:"扣除不可食草量、生态保留量和利用限制,折算可供放牧利用草量。"},{key:"livestock",index:"03",name:"载畜量折算",desc:"依据实际存栏和草畜平衡标准,统一形成载畜压力口径。"},{key:"balance",index:"04",name:"平衡判定",desc:"对比草地承载能力与载畜压力,输出平衡状态和调控方案。"}]),V=o(()=>{const a=c.value;return[{key:"productivity",index:"01",name:"草地生产力核算",desc:"核算草地面积与产草能力",pending:"等待草地参数",plan:"核定草地范围、面积和产草量等级"},{key:"forage",index:"02",name:"可利用草量折算",desc:"折算可供放牧利用草量",pending:"等待草量折算",plan:"扣除不可食草量、生态保留量和利用限制"},{key:"livestock",index:"03",name:"载畜量折算",desc:"形成实际载畜压力口径",pending:"等待载畜折算",plan:"依据实际存栏和草畜平衡标准进行折算"},{key:"balance",index:"04",name:"平衡判定",desc:"生成结论与调控方向",pending:"等待平衡判定",plan:["healthy","watch"].includes(a.risk.key)?"判定平衡状态并生成监测方案":"判定超载风险并生成调控方案"}]}),Q=o(()=>V.value[Math.min($.value,V.value.length-1)]||V.value[0]),Se=o(()=>[{key:"productivity",index:"01",name:"生产力核算",desc:m.value?"草地生产力核算":k.value?"等待核算":"等待选择",state:k.value?"done":"active"},{key:"forage",index:"02",name:"草量折算",desc:m.value?"可利用草量折算":"分析后折算",state:p.value?"active":m.value?"done":k.value?"pending":"disabled"},{key:"livestock",index:"03",name:"载畜折算",desc:m.value?"载畜压力折算":"等待折算",state:p.value?"active":m.value?"done":"disabled"},{key:"balance",index:"04",name:"平衡判定",desc:m.value?c.value.risk.label:"等待判定",state:m.value?"done":"disabled"}]),Ne=o(()=>m.value?na(d.value,c.value.risk):[]),ne=o(()=>G.value.filter(a=>Number.isFinite(Number(a.overloadRate))).slice().sort((a,l)=>Number(l.overloadRate)-Number(a.overloadRate)).slice(0,10)),Be=o(()=>Math.max(1,...ne.value.map(a=>Math.max(0,Number(a.overloadRate)||0)))),Me=o(()=>ne.value.map((a,l)=>j(B({},a),{rank:l+1})));function Ee(a){const l=Math.max(0,Number(a==null?void 0:a.overloadRate)||0);return Math.max(6,Math.min(100,l/Be.value*100))}function Pe(a){const l=Number(a==null?void 0:a.overloadRate);return Number.isFinite(l)?l>=2.5?"is-alert":l>=2?"is-warning":"is-stable":"is-empty"}function X(){x.value=typeof window=="undefined"?1080:window.innerHeight}la(()=>{X(),window.addEventListener("resize",X),h("loading-progress",{progress:100}),h("map-ready"),Ve()}),ta(()=>{M=!0,window.removeEventListener("resize",X),Y+=1,D+=1,H()}),ce(()=>{var a;return(a=d.value)==null?void 0:a.key},()=>{b.value="idle",R.value=0,$.value=0,A.value="",I=null,H()}),ce(()=>u.active,a=>{a||!p.value||(b.value="idle",R.value=0,$.value=0,A.value="",I=null,H())});function ze(a){C.value=a,_.value="",b.value="idle",A.value=""}function Te(a){a&&(C.value=["county","town","village"].includes(a.type)?a.type:"county",_.value=a.key,b.value="idle",A.value="")}function qe(){if(!u.active||!d.value||p.value)return;b.value="running",R.value=0,$.value=0,A.value="",H();const a=Date.now();let l=!1;const t=Ie().catch(s=>(l=!0,console.warn("[grassLivestockBalance] fallback balance row used",s),A.value="接口暂不可用,已使用本地兜底口径",d.value));I=t,L=window.setInterval(()=>{if(M)return;const s=I===t?92:100;R.value=Math.min(s,R.value+2),$.value=Math.min(V.value.length-1,Math.floor(R.value/25))},140),t.finally(()=>E(this,null,function*(){var v;const s=en-(Date.now()-a);if(s>0&&(yield new Promise(w=>window.setTimeout(w,s))),!(M||b.value!=="running"||I!==t)){if(I=null,H(),!d.value){R.value=0,$.value=0,b.value="idle";return}!l&&!q.value[(v=d.value)==null?void 0:v.key]&&(A.value="未查询到接口结果,已使用本地兜底口径"),R.value=100,$.value=V.value.length-1,b.value="done"}}))}function Ie(){return E(this,null,function*(){const a=d.value;if(!a)throw new Error("请先选择具体核算对象");if(q.value[a.key])return q.value[a.key];const l=++Y,t=yield va({areaCode:a.areaCode});if(M||l!==Y)return null;if(!t||typeof t!="object"||!Object.keys(t).length)throw new Error("未查询到该对象的草畜平衡结果");return q.value=j(B({},q.value),{[a.key]:t}),t})}function Ve(){return E(this,null,function*(){const a=++D,l=G.value.filter(t=>t==null?void 0:t.areaCode).map(t=>B({},t));if(l.length)try{const t=yield Promise.all(l.map(s=>E(this,null,function*(){try{const v=yield da(s.areaCode);return M||a!==D?[]:De(v,s)}catch(v){return[]}})));if(M||a!==D)return;U.value=t.flat()}catch(t){if(M||a!==D)return;U.value=[]}})}function De(a=[],l={}){const s=(Array.isArray(a)?a:[]).filter(v=>{const w=le(v),se=te(v);return!!(w||se)}).map((v,w)=>Ke(v,w,l)).filter(Boolean);return He(s,l)}function He(a=[],l={}){const t=new Map;return a.forEach(s=>{const v=je(s,l),w=t.get(v);if(!w){t.set(v,j(B({},s),{duplicateSources:[s.source].filter(Boolean)}));return}const Oe=!w.areaCode&&s.areaCode?B(B({},w),s):w;t.set(v,j(B({},Oe),{duplicateSources:[...w.duplicateSources||[],s.source].filter(Boolean)}))}),[...t.values()]}function je(a={},l={}){const t=String(a.name||"").replace(/\s+/g,"").trim();return`${String(a.township||l.name||"").replace(/\s+/g,"").trim()||"unknown-town"}-${t||a.areaCode||"unknown-village"}`}function Ke(a={},l=0,t={}){const s=le(a),v=te(a)||(s?`村级区划${s}`:"");return!s&&!v?null:{key:`village-${s||`${t.key||t.name}-${v}-${l}`}`,type:"village",name:v,areaCode:s,township:t.name,source:a,year:"2026"}}function le(a={}){return String(oe(a,["areaCode","area_code","areacode","code","value","id","areaId","area_id"],"")||"").trim()}function te(a={}){return String(oe(a,["areaName","area_name","areaname","name","label","zoneName","villageName","village_name"],"")||"").trim()}function H(){L&&(window.clearInterval(L),L=null)}function Le(a){return m.value||p.value&&a<=$.value}function Fe(a){return a<$.value||m.value?"done":a===$.value&&p.value?"active":"pending"}return(a,l)=>(y(),f("div",ya,[l[15]||(l[15]=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:T({"--balance-card-height":`${g.value}px`})},[ve(ue,{class:"balance-card balance-target-card",title:"核算对象",width:Ga,height:W.value},{default:de(()=>{var t;return[e("div",fa,[e("div",ga,[(y(!0),f(P,null,z(ae.value,s=>(y(),f("button",{key:s.key,type:"button",class:S({active:C.value===s.key}),onClick:v=>ze(s.key)},r(s.name),11,ma))),128))]),e("div",ba,[(y(!0),f(P,null,z(ge.value,s=>{var v;return y(),f("button",{key:s.key,type:"button",class:S({active:s.key===((v=d.value)==null?void 0:v.key)}),title:s.name,onClick:w=>Te(s)},[e("span",null,r(s.name),1)],10,pa)}),128))]),e("div",ka,[l[0]||(l[0]=e("span",null,"当前对象",-1)),e("strong",null,r(((t=d.value)==null?void 0:t.name)||"未选择"),1),e("small",null,r(pe.value),1),e("button",{type:"button",disabled:!k.value||p.value,onClick:qe},r(p.value?"分析中...":m.value?"重新分析":"开始分析"),9,ha)])])]}),_:1},8,["height"]),ve(ue,{class:"balance-card balance-sheet-card",title:ke.value,width:Qa,height:g.value},{default:de(()=>[e("div",{class:S(["balance-sheet",{"is-ready":m.value,"is-running":p.value}])},[l[14]||(l[14]=e("div",{class:"balance-field-lines","aria-hidden":"true"},[e("i"),e("i"),e("i")],-1)),p.value?(y(),f("section",wa,[e("div",_a,[e("div",{class:"balance-core-ring is-running",style:T({"--usage-angle":`${R.value*3.6}deg`})},[e("div",Ra,[l[1]||(l[1]=e("span",null,"分析进度",-1)),e("strong",null,r(R.value)+"%",1),e("small",null,r(Q.value.name),1)])],4),e("div",Aa,[e("span",null,r(d.value.name),1),e("strong",null,r(Q.value.desc),1),e("small",null,r(Q.value.plan),1),e("div",Ca,[e("i",{style:T({width:`${R.value}%`})},null,4)])])]),e("div",$a,[(y(!0),f(P,null,z(V.value,(t,s)=>(y(),f("div",{key:t.key,class:S(["balance-live-step",`is-${Fe(s)}`])},[e("span",null,r(t.index),1),e("div",null,[e("strong",null,r(t.name),1),e("p",null,r(Le(s)?t.plan:t.pending),1)])],2))),128))])])):m.value?(y(),f("section",Ea,[e("div",Pa,[e("div",za,[e("span",null,r(me.value)+"核算对象",1),e("strong",null,r(d.value.name),1),e("small",null,r(be.value),1)]),e("div",Ta,[e("div",{class:"balance-core-ring",style:T({"--usage-angle":$e.value})},[e("div",qa,[l[5]||(l[5]=e("span",null,"承载利用率",-1)),e("strong",null,r(K(O)(c.value.usageRate)),1),e("small",null,"超载率 "+r(K(O)(c.value.overloadRate)),1)])],4),l[6]||(l[6]=e("div",{class:"balance-core-caption"},"草地承载力模型",-1))]),e("div",{class:S(["balance-verdict-card",`is-${c.value.risk.key}`])},[l[7]||(l[7]=e("span",null,"分析结论",-1)),e("strong",null,r(c.value.risk.label),1),e("small",null,r(Ae.value),1)],2)]),e("div",Ia,[e("div",Va,[l[8]||(l[8]=e("span",null,"理论承载力",-1)),e("div",null,[e("i",{style:T({width:`${c.value.bearingPercent}%`})},null,4)]),e("strong",null,r(K(Z)(c.value.bearing)),1)]),e("div",Da,[l[9]||(l[9]=e("span",null,"实际载畜量",-1)),e("div",null,[e("i",{style:T({width:`${c.value.livestockPercent}%`})},null,4)]),e("strong",null,r(K(Z)(c.value.livestock)),1)])]),e("div",Ha,[e("div",ja,[e("div",Ka,[l[10]||(l[10]=e("span",null,"分析过程",-1)),e("small",null,r(d.value.year||"当前年度"),1)]),e("div",La,[(y(!0),f(P,null,z(Se.value,t=>(y(),f("span",{key:`track-${t.key}`,class:S(`is-${t.state}`)},r(t.name),3))),128))]),(y(!0),f(P,null,z(xe.value,t=>(y(),f("div",{key:t.key,class:"balance-formula-row"},[e("span",null,r(t.index),1),e("div",null,[e("strong",null,r(t.name),1),e("p",null,r(t.desc),1)])]))),128))]),e("div",Fa,[e("div",Oa,[l[11]||(l[11]=e("span",null,"结论与建议",-1)),e("small",null,r(Ce.value),1)]),e("div",Ja,[e("strong",null,r(c.value.risk.description),1),e("p",null,r(Re.value),1)]),e("div",Wa,[(y(!0),f(P,null,z(Ne.value,(t,s)=>(y(),f("div",{key:`${t}-${s}`,class:"balance-advice-item"},[e("span",null,r(s+1),1),e("p",null,r(t),1)]))),128))])]),e("div",Ua,[l[13]||(l[13]=e("div",{class:"balance-section-title"},[e("span",null,"超载率排行"),e("small",null,"乡镇 Top10")],-1)),e("div",Ya,[(y(!0),f(P,null,z(Me.value,t=>(y(),f("div",{key:`overload-${t.key||t.name}`,class:S(["balance-rank-row",Pe(t)]),style:T({"--rank-progress":`${Ee(t)}%`})},[e("span",null,r(t.rank),1),e("strong",null,r(t.name),1),l[12]||(l[12]=e("div",null,[e("i")],-1)),e("em",null,r(K(O)(t.overloadRate)),1)],6))),128))])])])])):(y(),f("section",xa,[e("div",Sa,[e("div",Na,[e("div",Ba,[e("span",null,r(he.value),1),e("strong",null,r(k.value?d.value.name:"草畜平衡"),1),e("small",null,r(k.value?"待执行模型分析":"等待核算对象"),1)])]),e("h2",null,r(we.value),1),e("p",null,r(_e.value),1)]),e("div",Ma,[e("span",{class:S({active:k.value})},"对象锁定",2),l[2]||(l[2]=e("i",null,null,-1)),e("span",{class:S({active:k.value})},"等待启动分析",2),l[3]||(l[3]=e("i",null,null,-1)),l[4]||(l[4]=e("span",null,"生成过程与结论",-1))])]))],2)]),_:1},8,["title","height"])],4)]))}};export{un as default};