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
45 KiB
1 lines
45 KiB
var ca=Object.defineProperty,da=Object.defineProperties;var fa=Object.getOwnPropertyDescriptors;var Et=Object.getOwnPropertySymbols;var ga=Object.prototype.hasOwnProperty,pa=Object.prototype.propertyIsEnumerable;var Mt=(N,v,y)=>v in N?ca(N,v,{enumerable:!0,configurable:!0,writable:!0,value:y}):N[v]=y,g=(N,v)=>{for(var y in v||(v={}))ga.call(v,y)&&Mt(N,y,v[y]);if(Et)for(var y of Et(v))pa.call(v,y)&&Mt(N,y,v[y]);return N},P=(N,v)=>da(N,fa(v));var C=(N,v,y)=>new Promise((ee,U)=>{var z=E=>{try{L(y.next(E))}catch(h){U(h)}},ye=E=>{try{L(y.throw(E))}catch(h){U(h)}},L=E=>E.done?ee(E.value):Promise.resolve(E.value).then(z,ye);L((y=y.apply(N,v)).next())});import{g as f,q as ya,h as ha,w as ma,o as F,c as $,C as va,a as S,j as re,b as k,x as X,u as K,n as Gt,F as ka,y as ba,J as wt,t as Vt,f as _a,d as p,A as Te}from"./index-1784043664472.js";import{g as Pa,l as Ot,E as Na}from"./live-scene-1-16ce1514-1784043664472.js";import{_ as Q}from"./index-e3442fcf-1784043664472.js";import{M as Aa}from"./index-0060e718-1784043664472.js";import{_ as Ca}from"./LayerPanel-4a87f4f0-1784043664472.js";import{a as se,_ as Sa}from"./FeatureInfoPanel-479e79c5-1784043664472.js";import{l as Ia,d as La,e as xa,m as Ta}from"./townshipBoundaries-1b068bef-1784043664472.js";import{c as Ra,d as Ba,F as Fa,e as za,f as Ea,h as Ma,i as Ga}from"./featurePanelLayout-93409244-1784043664472.js";import{q as $t,r as wa,s as Va}from"./screen2Standard-15e4461a-1784043664472.js";import{p as Oa,a as qe,b as $a,c as ja,d as Wa,e as Ka,f as ge,g as Ze,h as Ye,i as jt,j as Ua}from"./data-defd9b10-1784043664472.js";import"./index-d0c7091a-1784043664472.js";import"./index-e9f36657-1784043664472.js";import"./livestockData-36ec0ae2-1784043664472.js";const Da={class:"pasture-management"},Ha={key:0,class:"pasture-map-loading"},qa={class:"pasture-management-ui"},Za={class:"pasture-left"},Ya={class:"pasture-side-stack is-left"},Ja={class:"pasture-video-monitor"},Xa=["disabled"],Qa=["onClick"],er={key:1,class:"pasture-video-play"},tr={key:2,class:"pasture-video-loading"},nr={key:3,class:"pasture-video-error"},ar={class:"pasture-video-point-name"},rr=["disabled"],sr={class:"pasture-right"},ur={class:"pasture-side-stack is-right"},or={class:"pasture-map-layer-tools"},Je="pasture-grassland-boundary",Wt="pasture-yak-marks-layer",lr=12e3,ir="https://qkl-map.oss-cn-chengdu.aliyuncs.com/hy-result/{z}/{x}/{y}.png",pe="#30DCFF",Xe="#FFE600",Cr={__name:"index",props:{active:{type:Boolean,default:!0}},emits:["module-stats","loading-progress","map-ready"],setup(N,{expose:v,emit:y}){const ee=N,U=y,z=$t.sideCardWidth;$t.sideCardGap;const ye=p(typeof window=="undefined"?1080:window.innerHeight),L=f(()=>wa(ye.value)),E=f(()=>Va(L.value,2)),h=p(null),ue=p(!1),Qe=p(0);let he=0;const D=p(null),oe=p(!1),le=p(!1),te=p(null),x=p(Ze),H=p(Ye),ne=p([Je,Wt]),Re=p(""),Kt=["牧户数量","户均牦牛头数","户均草地面积","联户数量"],me=["#30dcff","#24f6c4","#8bf7ff","#48cfff","#16b6e8","#b9fbff","#67ffe4"],B=`pasture-video-player-${Math.random().toString(36).slice(2)}`,Ut=new Set(["code","msg","message","success","data","result","dycolumn","geom","wkt","geometry","the_geom","raw_properties","gid","id","objectid","object_id","fid","key_uid","bsm","ysdm"]),et=[102.58,32.72],Dt=Wn("ne:t_pasture_grassland",pe),Ht={key:Wt,sourceType:"wmts",layerName:"ne:daping_yak_marks",style:"ne:yak_marks",styles:"ne:yak_marks",format:"image/png",tileMatrixSetID:"EPSG:900913",maximumLevel:21,url:"/geoserver/gwc/service/wmts",name:"牦牛识别标记",color:Xe,fillColor:"rgba(255, 230, 0, 0)",strokeColor:Xe,glowColor:"rgba(255, 230, 0, 0.42)",opacity:.92,lineWidth:1.4,zIndex:46,legends:[{key:"pasture-yak-marks",name:"牦牛识别",fillColor:Xe,strokeColor:"#FFF58A",selectable:!1}]},Be={key:"pasture-empty-video",title:"暂无在线可播放摄像头",town:"红原县",scene:"牧场监控",device:"",channel:"",cameraCount:0,status:"待接入",onlineRate:0,updateTime:"",operator:"等待在线摄像头",progress:0,image:Ot,playUrl:"",hdPlayUrl:"",token:""},Fe=p(null),M=p([]),ve=p(0),q=p(!1),G=p(!1),A=p("");let w=!1,ae=0,V=null,I=null,ze=!1,Z=0,ke=null,ie=0;const qt={"4028abc18eecd2af018eecdc44b7086b":"瓦切镇","402881828b486d54018b48741f590270":"查尔玛乡","402881828b486d54018b48740ed7024a":"麦洼乡","402881828b486d54018b48732e1c0044":"安曲镇","4028abc18eec9b97018eeca1538900db":"瓦切镇","402881828b486d54018b48740fb1024c":"安曲镇"},Zt={尼尕尔让:"瓦切镇",更迫尕:"查尔玛乡",王西卓玛:"麦洼乡",扎花克周:"安曲镇",恰波:"瓦切镇",热布丹:"安曲镇",求甲:"阿木乡",罗尔旦:"阿木乡",扎尔江:"阿木乡",达尔基:"阿木乡",尼科:"瓦切镇",班洛:"阿木乡",拉木共:"阿木乡",尕尔玛:"瓦切镇",尕尔丹:"安曲镇",泽旺甲:"瓦切镇",阿尕:"安曲镇",陈理:"瓦切镇",贡秋卓玛:"阿木乡",更多:"瓦切镇",阿泽:"瓦切镇",达勒错:"色地镇",泽朗罗日:"安曲镇",仁青:"瓦切镇",贡多:"阿木乡",泽周:"刷经寺镇",泽科:"瓦切镇",扎巴:"阿木乡",泽真:"瓦切镇",索拉姐:"瓦切镇",尕让罗周:"瓦切镇",尕让拉姆:"瓦切镇",更让尼玛:"阿木乡",向秋卓玛:"瓦切镇",东科:"阿木乡",扑瓦甲:"阿木乡"},Yt=ua(Ta),tt=f(()=>[{key:Je,sourceType:"wms",renderMode:"tile",layerName:"ne:t_pasture_grassland",name:"草场边界",styles:"",cqlFilter:"gov_show = true",sldBody:Dt,color:pe,fillColor:"rgba(48, 220, 255, 0.035)",strokeColor:pe,glowColor:"rgba(48, 220, 255, 0.2)",zIndex:35,opacity:.72,queryBuffer:8,mapView:{targetLngLat:et,distanceScale:.82,targetLocalZ:.76,duration:.85},legends:[{key:"pasture-grassland-boundary",name:"草场边界",fillColor:pe,strokeColor:pe,selectable:!1}]},Ht]),Jt=f(()=>Array.isArray(ne.value)?ne.value.map(String).filter(Boolean):ne.value?[String(ne.value)]:[]),be=f(()=>{const e=new Set(Jt.value);return tt.value.filter(t=>e.has(t.key))}),Xt=f(()=>be.value[0]||null),ce=f(()=>be.value.flatMap(e=>e.legends||[]).find(e=>e.key===Re.value)||null),Qt=f(()=>be.value.flatMap(e=>e.legends||[]));function en(e){var n;return e?!(e.legends||[]).some(a=>{var s;return a.key===((s=ce.value)==null?void 0:s.key)})||!((n=ce.value)!=null&&n.cqlFilter)?e:P(g({},e),{cqlFilter:ce.value.cqlFilter,activeLegend:ce.value,name:ce.value.name||e.name}):null}const nt=f(()=>be.value.map(en).filter(Boolean)),_e=f(()=>nt.value[0]||null),tn=f(()=>!!te.value),nn=Fa,at=f(()=>Ra({point:te.value?Gn(te.value):null,rowCount:D.value?yt(D.value):0,loading:le.value,empty:oe.value||!D.value})),an=f(()=>at.value.height),rn=f(()=>at.value.style),rt=f(()=>bt(x.value.core).length?bt(x.value.core):Oa),Pe=f(()=>Ee(_t(x.value.distribution).length?_t(x.value.distribution):qe,ge)),sn=f(()=>{const e=Jn(x.value.online);return Xn(e.length?e:$a)}),un=f(()=>Ee(Pt(x.value.age).length?Pt(x.value.age):ja,ge)),on=f(()=>Ee(Nt(x.value.age).length?Nt(x.value.age):Wa,ge)),st=f(()=>Qn(Ua));f(()=>({title:"牧户分布排行",metricLabel:"牧户",unit:"户",hideMapLabels:!1,hideTownNames:!1,showBars:!1,showPointMarkers:!1,showMissingTownStats:!1,rows:(Pe.value.length?Pe.value:Ka).map(e=>{const t=Number(e.value);return!e.name||!Number.isFinite(t)||t<=0?null:{name:e.name,value:t,unit:e.unit||"户"}}).filter(Boolean)})),f(()=>({key:"pasture-town",type:"bar",variant:"distribution",rows:Pe.value})),f(()=>({key:"pasture-grassland-area",type:"heat",rows:st.value}));const ln=f(()=>({key:"pasture-household-column",type:"column",variant:"plain",scrollable:!1,rows:hn(Pe.value).slice(0,10).map((e,t)=>P(g({},e),{unit:e.unit||"户",color:me[t%me.length]}))})),cn=f(()=>({key:"pasture-grassland-column",type:"bar",variant:"raceBar",rows:st.value.map((e,t)=>P(g({},e),{unit:e.unit||"万亩",color:me[(t+1)%me.length]}))})),dn=f(()=>({key:"pasture-online",type:"line",rows:sn.value})),fn=f(()=>({key:"pasture-age",type:"column",variant:"plain",lineOverlay:!0,labelMode:"horizontal",scrollable:!1,rows:un.value})),gn=f(()=>({key:"pasture-gender",type:"donut",rows:on.value})),pn=f(()=>({key:"pasture-herdsman-list",type:"projectTable",searchPlaceholder:"搜索牧户 / 乡镇",emptyText:"无匹配牧户",maxRows:300,searchKeys:["name","herdsmanName","herdsman_name","phone","phonenumber","idCard","id_card","township","id","grasslandArea","searchText"],columns:[{key:"name",label:"牧户名称",field:"name",width:"42%"},{key:"township",label:"区域",field:"township",width:"36%"},{key:"locate",label:"定位",field:"locateText",width:"22%",align:"center",fallback:"定位",icon:"locate",action:"locate"}],rows:H.value})),Ne=f(()=>{const e=M.value.length;return e?ve.value%e:0}),yn=f(()=>M.value[Ne.value]||Be),ut=f(()=>kn(M.value,Ne.value,Be));function hn(e=[]){return(Array.isArray(e)?e:[]).map((t,n)=>{var a,s,r;return P(g({},t),{key:t.key||t.code||t.name||`${n}`,name:t.name||t.areaName||t.area_name||t.townName||"未标注",value:Number((r=(s=(a=t.value)!=null?a:t.number)!=null?s:t.count)!=null?r:t.num)||0,unit:t.unit||""})}).filter(t=>t.name&&Number.isFinite(t.value)&&t.value>=0)}function Ee(e=[],t=ge){const n=Array.isArray(e)?e:[],a=n.reduce((u,o)=>u+(Number(o.value)||0),0);if(!n.length||!a||!t||a===t)return n;const s=n.map(u=>P(g({},u),{value:Math.round((Number(u.value)||0)/a*t)})),r=t-s.reduce((u,o)=>u+(Number(o.value)||0),0);if(r&&s.length){const u=s.reduce((o,i,d)=>{var l;return Number(i.value)>Number(((l=s[o])==null?void 0:l.value)||0)?d:o},0);s[u].value+=r}return s}function Me(){ye.value=typeof window=="undefined"?1080:window.innerHeight}ya(()=>{Me(),window.addEventListener("resize",Me),kt(),zn(),Sn(),mn()}),ha(()=>{w=!0,window.removeEventListener("resize",Me),Y(),V&&window.clearTimeout(V),ae+=1}),ma(()=>ee.active,e=>{var t,n;e||Y({resetError:!0}),h.value&&(e?(J(),(n=(t=h.value).refreshView)==null||n.call(t)):(V&&window.clearTimeout(V),V=null,ae+=1))});function mn(){return C(this,null,function*(){try{const e=yield Pa();if(w)return;M.value=e,ve.value=0,A.value=e.length?"":"暂无在线可播放摄像头"}catch(e){if(w)return;M.value=[],A.value="监控接口暂不可用",window.setTimeout(()=>{!w&&A.value==="监控接口暂不可用"&&(A.value="")},2400)}})}function vn(e,t){t!=null&&t.isActive&&(Fe.value=e||null)}function kn(e=[],t=0,n=Be){const a=Array.isArray(e)?e:[];if(!a.length)return[{key:`empty-${n.key||"video"}`,index:0,live:n,isActive:!0}];const s=(t+a.length)%a.length,r=a[s]||n;return[{key:`${r.key||r.title||"video"}-${s}`,index:s,live:r,isActive:!0}]}function bn(e,t=!0){const n=(e==null?void 0:e.image)||Ot;return q.value&&t?void 0:{backgroundImage:`url(${n})`}}function _n(){ot(-1)}function Pn(){ot(1)}function ot(e){const t=M.value.length;t&&(Y({resetError:!0}),ve.value=(Ne.value+e+t)%t)}function Nn(e){const t=M.value.length;if(!t){lt();return}const n=((Number(e)||0)+t)%t;(n!==Ne.value||I||G.value)&&Y({resetError:!0}),ve.value=n,Te(lt)}function lt(){return C(this,null,function*(){var a,s;const e=yn.value;if(!(e!=null&&e.hdPlayUrl)||!(e!=null&&e.token)){A.value="暂无在线可播放摄像头";return}if(q.value||G.value)return;I&&Y({resetError:!0}),A.value="",G.value=!0,yield Te();const t=++Z;let n=null;An(t);try{const r=(s=(a=Fe.value)==null?void 0:a.getBoundingClientRect)==null?void 0:s.call(a),u=Math.max(300,Math.floor((r==null?void 0:r.width)||340)),o=Math.max(80,Math.floor((r==null?void 0:r.height)||120));if(n=new Na.EZUIKitPlayer({id:B,accessToken:e.token,url:e.hdPlayUrl,audio:0,width:u,height:o,themeData:Cn(),handleError(i){t===Z&&(de(),console.warn("Pasture EZUIKit player error",i),A.value="视频加载失败",G.value=!1,q.value=!1,Z+=1,I=null,ze=!1,Ge())},handleSuccess(){t===Z&&(de(),A.value="",ze=!0,G.value=!1,ct(),it())},fullScreenChangeCallBack(){}}),t!==Z){dt(n),Ge();return}I=n,q.value=!0,Te(()=>{ct(),it()})}catch(r){de(),console.warn("Pasture EZUIKit init error",r),A.value="视频加载失败",Y()}})}function it(){if(typeof document=="undefined")return;const e=document.getElementById(`${B}-ez-iframe-footer-container`),t=document.getElementById(`${B}-audioControls`);e&&Object.assign(e.style,{position:"absolute",left:"0",right:"0",bottom:"0",zIndex:"20",width:"100%",marginTop:"0",pointerEvents:"auto",visibility:"visible",opacity:"1"}),t&&Object.assign(t.style,{opacity:"1",pointerEvents:"all",visibility:"visible"})}function ct(){var d,l;if(typeof document=="undefined")return;const e=Fe.value,t=document.getElementById(`${B}-wrap`),n=document.getElementById(B),a=t||n;if(!e||!a)return;const s=(d=e.getBoundingClientRect)==null?void 0:d.call(e),r=Math.max(1,Math.floor((s==null?void 0:s.width)||e.clientWidth||1)),u=Math.max(1,Math.floor((s==null?void 0:s.height)||e.clientHeight||1));try{I&&typeof I.reSize=="function"?I.reSize(r,u):I&&typeof I.autoResize=="function"&&I.autoResize()}catch(m){console.warn("Pasture EZUIKit resize failed",m)}Object.assign(a.style,{position:"absolute",left:"0",top:"0",right:"0",bottom:"0",display:"block",width:`${r}px`,height:`${u}px`,verticalAlign:"top"}),t&&n&&Object.assign(n.style,{position:"relative",left:"auto",top:"auto",right:"auto",bottom:"auto",display:"block",width:"100%",height:"100%",maxWidth:"none",maxHeight:"none",overflow:"hidden",verticalAlign:"top"});const o=document.getElementById(`EZUIKitPlayer-${B}`);o&&(o.setAttribute("width",String(r)),o.setAttribute("height",String(u))),[...Array.from((n==null?void 0:n.children)||[]),...Array.from(((l=n==null?void 0:n.querySelectorAll)==null?void 0:l.call(n,".play-window, video, canvas, iframe"))||[]),o].filter(Boolean).forEach(m=>{Object.assign(m.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",maxWidth:"none",maxHeight:"none"})})}function Y(e={}){const{clearElement:t=!0,resetError:n=!1}=e;de();const a=I;I=null,ze=!1,Z+=1,a&&dt(a),t&&Ge(),q.value=!1,G.value=!1,n&&(A.value="")}function An(e){de(),ke=window.setTimeout(()=>{e!==Z||!G.value||(A.value="视频加载超时",Y({resetError:!1}))},lr)}function de(){ke&&(window.clearTimeout(ke),ke=null)}function dt(e){if(!(!e||typeof e.stop!="function"))try{const t=e.stop();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){console.warn("Pasture EZUIKit stop error",t)}}function Ge(){if(typeof document=="undefined")return;const e=document.getElementById(`${B}-wrap`);if(e){const n=document.createElement("div");n.id=B,n.className="pasture-video-player",e.replaceWith(n);return}const t=document.getElementById(B);t&&t.replaceChildren()}function Cn(){return{autoFocus:0,header:{color:"#30dcff",activeColor:"#ffffff",backgroundColor:"#000000",btnList:[{iconId:"deviceID",part:"left",defaultActive:0,memo:"顶部设备序列号",isrender:0},{iconId:"deviceName",part:"left",defaultActive:0,memo:"顶部设备名称",isrender:0},{iconId:"cloudRec",part:"right",defaultActive:0,memo:"云存储",isrender:0},{iconId:"rec",part:"right",defaultActive:0,memo:"SD卡回放",isrender:0}]},footer:{color:"#ffffff",activeColor:"#30dcff",backgroundColor:"#00000021",btnList:[{iconId:"play",part:"left",defaultActive:1,memo:"播放",isrender:1},{iconId:"capturePicture",part:"left",defaultActive:0,memo:"截屏按钮",isrender:0},{iconId:"sound",part:"left",defaultActive:0,memo:"声音按钮",isrender:1},{iconId:"pantile",part:"left",defaultActive:0,memo:"云台控制按钮",isrender:1},{iconId:"recordvideo",part:"left",defaultActive:0,memo:"录制按钮",isrender:0},{iconId:"zoom",part:"left",defaultActive:0,memo:"电子放大",isrender:1},{iconId:"hd",part:"right",defaultActive:0,memo:"清晰度切换按钮",isrender:1},{iconId:"expend",part:"right",defaultActive:0,memo:"全局全屏按钮",isrender:1}]}}}function Sn(){return C(this,null,function*(){try{const e=yield Ba();if(w)return;x.value=g(g({},Ze),e),kt();const t=ea(e.list);H.value=t.length?t:At(Ye),In(H.value)}catch(e){x.value=Ze,H.value=At(Ye)}})}function In(e=H.value,t=600){w||!ee.active||(V&&window.clearTimeout(V),V=window.setTimeout(()=>{V=null,!(w||!ee.active)&&Ln(e)},t))}function Ln(){return C(this,arguments,function*(e=[]){const t=++ae,n=(Array.isArray(e)?e:[]).filter(xn).slice(0,60);if(!n.length)return;const a=yield gt(n,5,r=>C(this,null,function*(){const u=xt(r),o=W(r);let i=o,d=null,l=Ie(r,o)||Le(r,r.name,u);try{(!l||!i.some(b))&&(i=yield pt(r))}catch(R){i=o}if(l=l||Ie(r,i)||Le(r,r.name,u),!l){try{d=u?yield za(u):null}catch(Ft){d=null}const R=W(d);l=Rn(d)||Ie(d,R),R.length&&!i.length&&(i=R)}l=l||Le(r,r.name,u);const m=!!(u||Se(r)||i.some(b)||b(r));if(!l&&!i.length&&m===r.canLocate)return null;const _={key:r.key,id:r.id,realPastureId:u,name:r.name,township:l||r.township,grasslands:i.length?i:r.grasslands,grasslandArea:i.length?St(i):O(r),canLocate:m,locateText:m?"定位":"--"};return Tn(_,t),_}));if(w||t!==ae)return;const s=new Map;a.filter(Boolean).forEach(r=>{[r.key,r.id,r.realPastureId,r.name].filter(Boolean).forEach(u=>{s.set(String(u),r)})}),s.size&&ft(s)})}function xn(e={}){const t=String((e==null?void 0:e.township)||"").trim();return!(b(e)||W(e).some(b))&&je(e).length?!0:t&&t!=="--"?!1:O(e)>0||We(e)}function Tn(e,t=ae){if(!e||w||t!==ae)return;const n=new Map;[e.key,e.id,e.realPastureId,e.name].filter(Boolean).forEach(a=>{n.set(String(a),e)}),ft(n)}function ft(e){e!=null&&e.size&&(H.value=H.value.map(t=>{var r,u;const n=[t.key,t.id,t.realPastureId,t.name].filter(Boolean).map(o=>e.get(String(o))).find(Boolean);if(!n)return t;const a=n.township&&n.township!=="--"?n.township:t.township,s=Number(n.grasslandArea)>0?Number(n.grasslandArea):O(t);return P(g({},t),{township:a,grasslands:n.grasslands,grasslandArea:s,acreage:s,value:s,grasslandCount:fe(n,n.grasslands),hasGrasslandBoundary:((u=(r=n.grasslands)==null?void 0:r.some)==null?void 0:u.call(r,b))||t.hasGrasslandBoundary,canLocate:n.canLocate,locateText:n.locateText,searchText:[t.name,a,t.id].filter(Boolean).join(" ")})}))}function we(e=[]){const t=[],n=a=>{if(!a)return;if(Array.isArray(a)){a.forEach(n);return}if(typeof a!="object")return;const s=W(a);if(s.length)t.push(...s);else{let r=!1;["rows","list","data","result","grassland","pasture","features"].forEach(u=>{const o=a==null?void 0:a[u];o&&(Array.isArray(o)||typeof o=="object")&&(r=!0,n(o))}),r||t.push(a)}};return n(e),t}function Rn(e){const t=Array.isArray(e)?e:Array.isArray(e==null?void 0:e.rows)?e.rows:Array.isArray(e==null?void 0:e.list)?e.list:Array.isArray(e==null?void 0:e.data)?e.data:[e];for(const n of t.filter(Boolean)){const a=Array.isArray(n==null?void 0:n.fields)?n.fields:Array.isArray(n==null?void 0:n.children)?n.children:[],s=c(n,["township","townName","town_name","areaName","area_name","fullName","full_name","address","牧场所在区域"]);if(s)return T(Ae(s));for(const u of a){const o=String((u==null?void 0:u.name)||(u==null?void 0:u.label)||(u==null?void 0:u.title)||"").trim(),i=c(u,["value","text","content"]);if(i&&/区域|地址|乡镇/.test(o))return T(Ae(i))}const r=Object.entries(n||{}).filter(([u])=>/fullName|full_name|address|areaName|area_name|town/i.test(u)).map(([,u])=>u);for(const u of r)if(u)return T(Ae(u))}return""}function Ae(e){const t=String(e||"").trim();if(!t||t==="--")return"";const n=t.match(/([\u4e00-\u9fa5]{1,12}(?:镇|乡))/);return(n==null?void 0:n[1])||t}function gt(e,t,n){return C(this,null,function*(){const a=new Array(e.length);let s=0;const r=Array.from({length:Math.min(t,e.length)},()=>C(this,null,function*(){for(;s<e.length;){const u=s;s+=1,a[u]=yield n(e[u],u)}}));return yield Promise.all(r),a})}function pt(){return C(this,arguments,function*(e={}){const t=we(W(e)),n=[];for(const a of je(e))try{const s=we(yield Ea(a));if(s.length&&n.push(...s),s.some(b))break}catch(s){}return Bn($e([...n,...t]))})}function Bn(){return C(this,arguments,function*(e=[]){const t=$e(e);if(!t.length)return[];const n=yield gt(t,5,a=>C(this,null,function*(){if(b(a))return a;const s=It(a);if(!s)return a;try{const r=yield Ma(s),o=we([r]).find(b);return o?na(a,o):a}catch(r){return a}}));return $e(n)})}function Fn(e){return C(this,null,function*(){var r,u,o,i;const t=++he;J(),(u=(r=h.value)==null?void 0:r.clearFloatingOverlays)==null||u.call(r);let n=[];try{n=yield pt(e)}catch(d){n=W(e)}if(t!==he)return;const a=n.filter(b);if(!a.length){vt();return}if(t!==he)return;((i=(o=h.value)==null?void 0:o.focusPasture)==null?void 0:i.call(o,{name:e==null?void 0:e.name,grasslands:a,highlightTone:"white"}))||vt()})}function zn(){ue.value=!1,U("loading-progress",{progress:0})}function En(){ue.value=!0,U("loading-progress",{progress:100}),U("map-ready")}function Mn(e=_e.value){const t=String((e==null?void 0:e.key)||"").toLowerCase(),n=String((e==null?void 0:e.layerName)||"").toLowerCase();return t===Je||n.includes("t_pasture_grassland")}function Gn(e={}){const t=document.querySelector(".pasture-management"),n=t==null?void 0:t.getBoundingClientRect();return n?{x:((Number(e.x)||n.left+n.width/2)-n.left)/Math.max(1,n.width)*1920,y:((Number(e.y)||n.top+n.height/2)-n.top)/Math.max(1,n.height)*1080}:{x:Number(e.x)||960,y:Number(e.y)||540}}function yt(e){const t=(e==null?void 0:e.properties)||{};return Math.min(10,Object.entries(t).filter(([n,a])=>wn(n,a)).length)}function wn(e,t){return t==null||t===""||Array.isArray(t)||typeof t=="object"?!1:!Ut.has(String(e||"").toLowerCase())}function Vn(e={}){const t=ht(e.lng),n=ht(e.lat);return t===""||n===""?"":`POINT(${t} ${n})`}function ht(e){const t=Number(e);return Number.isFinite(t)?t.toFixed(8).replace(/\.?0+$/,""):""}function On(e={},t={}){var s,r;const n=$n(e);if(!n||!Object.keys(n).length)return null;const a=jn(e,n);return{id:n.id||n.grasslandId||n.grassland_id||`${(s=t==null?void 0:t.lngLat)==null?void 0:s.lng}-${(r=t==null?void 0:t.lngLat)==null?void 0:r.lat}`,properties:n,feature:{type:"Feature",properties:n,geometry:a},geometry:a,layer:_e.value||Xt.value,lngLat:t.lngLat}}function $n(e={}){var o,i,d,l;const t=mt(e),n=j((t==null?void 0:t.grassland)||((o=t==null?void 0:t.data)==null?void 0:o.grassland)),a=j((t==null?void 0:t.pasture)||((i=t==null?void 0:t.data)==null?void 0:i.pasture)),s=j((t==null?void 0:t.pasture_balance)||(t==null?void 0:t.pastureBalance)||((d=t==null?void 0:t.data)==null?void 0:d.pasture_balance)),r=n||j(t==null?void 0:t.data)||j(t==null?void 0:t.result)||j(t);if(!r&&!a&&!s)return null;const u=c(r||{},["recognizedYakCount","recognized_yak_count"]);return P(g(g(g(g(g({},r||{}),s||{}),Ve(r)),Ve(a)),Ve(s)),{pastureName:c(a||{},["name","pasturesName","pastures_name","pastureName","pasture_name"])||c(r||{},["pastureName","pasture_name"]),recognizedYakCount:u,yakCount:(l=u!=null?u:c(a||{},["yakCount","yak_count","yakNumber","yak_number"]))!=null?l:c(s||{},["yakCount","yak_count","yakNumber","yak_number"])})}function Ve(e={}){return(Array.isArray(e==null?void 0:e.dyColumn)?e.dyColumn:Array.isArray(e==null?void 0:e.fields)?e.fields:[]).reduce((n,a)=>{var u,o;const s=String((a==null?void 0:a.field)||(a==null?void 0:a.key)||(a==null?void 0:a.title)||(a==null?void 0:a.label)||"").trim(),r=(o=(u=a==null?void 0:a.value)!=null?u:a==null?void 0:a.text)!=null?o:a==null?void 0:a.content;return s&&r!==void 0&&r!==null&&r!==""&&(n[s]=r),n},{})}function mt(e){return!e||typeof e!="object"?{}:e.data&&typeof e.data=="object"?e.data:e.result&&typeof e.result=="object"?e.result:e}function jn(e={},t={}){var r,u;const n=mt(e),a=j((n==null?void 0:n.grassland)||((r=n==null?void 0:n.data)==null?void 0:r.grassland)),s=j((n==null?void 0:n.pasture)||((u=n==null?void 0:n.data)==null?void 0:u.pasture));return c(a||{},["geometry","geom","wkt","geo","the_geom","geometryWkt","geometry_wkt","shape"])||c(s||{},["geometry","geom","wkt","geo","the_geom","geometryWkt","geometry_wkt","shape"])||c(t,["geometry","geom","wkt","geo","the_geom","geometryWkt","geometry_wkt","shape"])||c(n,["geometry","geom","wkt","geo","the_geom","geometryWkt","geometry_wkt","shape"])||null}function j(e){return Array.isArray(e)?e.find(t=>t&&typeof t=="object")||null:e&&typeof e=="object"?e:null}function Oe(){D.value=null,te.value=null,oe.value=!1,le.value=!1}function J(){var e,t;ie+=1,Oe(),(t=(e=h.value)==null?void 0:e.clearSelectedFeature)==null||t.call(e)}function vt(){var e,t;he+=1,(t=(e=h.value)==null?void 0:e.clearPastureFocus)==null||t.call(e)}function Wn(e,t){return`<?xml version="1.0" encoding="UTF-8"?><StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><NamedLayer><Name>${e}</Name><UserStyle><Title>${e}</Title><FeatureTypeStyle><Rule><PolygonSymbolizer><Fill><CssParameter name="fill">${t}</CssParameter><CssParameter name="fill-opacity">0.025</CssParameter></Fill><Stroke><CssParameter name="stroke">${t}</CssParameter><CssParameter name="stroke-width">0.9</CssParameter><CssParameter name="stroke-opacity">0.74</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>`}function Kn(){return C(this,arguments,function*(e={}){var r,u,o,i,d,l;if(!Mn(e.overlayLayer||_e.value)){J();return}const t=Number((r=e==null?void 0:e.lngLat)==null?void 0:r.lng),n=Number((u=e==null?void 0:e.lngLat)==null?void 0:u.lat);if(!Number.isFinite(t)||!Number.isFinite(n)){J();return}const a=++ie,s=e.screen||{x:960,y:540};te.value=null,D.value=null,oe.value=!1,le.value=!0,(i=(o=h.value)==null?void 0:o.clearSelectedFeature)==null||i.call(o);try{const m=yield Ga(Vn({lng:t,lat:n}));if(a!==ie)return;const _=On(m,e);if(!_||yt(_)<=0){Oe();return}D.value=_,te.value=s,oe.value=!1,_.geometry&&((l=(d=h.value)==null?void 0:d.highlightFeature)==null||l.call(d,_,{highlightTone:"v21"}))}catch(m){if(a!==ie)return;Oe()}finally{a===ie&&(le.value=!1)}})}function Un(){var e,t;J(),(t=(e=h.value)==null?void 0:e.refreshView)==null||t.call(e)}function Dn(){var e,t,n,a;if(J(),(t=(e=h.value)==null?void 0:e.hasMap)!=null&&t.call(e)){ue.value=!0,(a=(n=h.value)==null?void 0:n.resetView)==null||a.call(n);return}ue.value=!1,Qe.value+=1,Te(()=>{window.setTimeout(()=>{var s,r;(r=(s=h.value)==null?void 0:s.refreshView)==null||r.call(s)},160)})}v({refreshMapView:Un,resetMap:Dn});function kt(){U("module-stats",{moduleKey:"pasture-management",items:Hn().map(e=>({zh:e.name,name:e.name,value:e.value,unit:e.unit,decimals:Number.isInteger(Number(e.value))?0:2}))})}function Hn(){const e=new Map;(Array.isArray(rt.value)?rt.value:[]).forEach(n=>{!(n!=null&&n.name)||Yn(n.name)||e.set(n.name,n)});const t=e.get("牧户数量")||jt.find(n=>n.name==="牧户数量"||n.zh==="牧户数量");return e.set("牧户数量",P(g({},t),{name:"牧户数量",value:ge,unit:(t==null?void 0:t.unit)||"户"})),Kt.map(n=>e.get(n)||jt.find(a=>a.name===n||a.zh===n)).filter(Boolean).slice(0,4)}function bt(e=[]){return(Array.isArray(e)?e:[]).map((t,n)=>{const a=t.key||t.id||t.code||t.name||t.zh||`${n}`,s=t.name||t.title||t.label||t.zh,r=qn(s,a),u=c(t,["value","num","count","dataValue"]);if(!r||u===void 0||u===null||u==="")return null;const o=Zn(r,u,t.unit||t.dw||"");return{key:a,name:o.name,value:o.value,unit:o.unit,icon:t.icon||["town","area","yield","rate"][n%4]}}).filter(Boolean)}function qn(e,t){const n=String(e||t||""),a=String(t||"").toLowerCase();return/avg.*yak|yak.*avg|yak.*household|yak.*per|hjyak/.test(a)||/户均.*牦牛|牦牛.*户均/.test(n)?"户均牦牛头数":/avg.*grass|grass.*avg|grass.*household|grass.*per/.test(a)||/户均.*草地|草地.*户均/.test(n)?"户均草地面积":/income|revenue|人均收入/.test(a)||n.includes("人均收入")?"人均收入":/poverty|monitor|防反贫|监测户/.test(a)||n.includes("防反贫")||n.includes("监测户")?"防反贫监测户":/joint|union|link|联户/.test(a)||n.includes("联户")?"联户数量":/herdsman|muhu|pasture.*count|牧户数量/.test(a)||n.includes("牧户数量")?"牧户数量":/yak/.test(a)||n.includes("牦牛")?null:/grass/.test(a)||n.includes("草地面积")?"草地面积":/wet/.test(a)||n.includes("湿地")?"湿地面积":n.includes("牧户")||n.includes("牧场")?"牧户数量":/project/.test(a)||n.includes("工程")||n.includes("项目")?"工程数量":/base/.test(a)||n.includes("基地")?"基地数量":n}function Zn(e,t,n){const a=Number(t)||0;return e==="户均牦牛头数"?{name:e,value:a,unit:n||"头"}:e==="户均草地面积"?{name:e,value:a,unit:n||"亩"}:e==="人均收入"?{name:e,value:a,unit:n||"元/年"}:e==="联户数量"||e==="防反贫监测户"?{name:e,value:a,unit:n||"户"}:(e.includes("草地")||e.includes("湿地"))&&!String(n).includes("万")?{name:e,value:Math.round(a/1e4*100)/100,unit:"万亩"}:e.includes("牧户")?{name:e,value:a,unit:n||"户"}:e.includes("工程")||e.includes("项目")||e.includes("基地")?{name:e,value:a,unit:n||"个"}:{name:e,value:a,unit:n}}function Yn(e){return e==="草地面积"||e==="湿地面积"||e==="区域数量"||e==="牦牛数量"}function _t(e=[]){return(Array.isArray(e)?e:[]).map(t=>{const n=c(t,["areaName","area_name","name","townName","zoneName"]),a=c(t,["number","value","count","num","pastureCount","muhuCount","muhu_count"]);return!n||a===void 0||a===null||a===""?null:{key:t.code||t.areaCode||t.area_code||n,name:n,value:Number(a)||0,unit:"户"}}).filter(Boolean).sort((t,n)=>n.value-t.value)}function Jn(e=[]){return(Array.isArray(e)?e:[]).map(t=>{const n=c(t,["areaName","area_name","name","townName","zoneName"]),a=Number(c(t,["registeredMuhuCount","registered_muhu_count","registeredCount"])),s=Number(c(t,["muhuCount","muhu_count","onlineCount"])),r=c(t,["onlinePercent","uplineRate","upline_rate","onlineRate","value","percent","rate"]),u=r!=null&&r!==""?r:a>0?s/a*100:void 0;return!n||u===void 0||u===null||u===""?null:{key:t.code||t.areaCode||t.area_code||n,name:n,value:Number(String(u).replace("%",""))||0,unit:"%",extra:Number.isFinite(s)&&Number.isFinite(a)&&a>0?`${s}/${a}户`:t.extra}}).filter(Boolean)}function Xn(e=[]){const t=new Map;return(Array.isArray(e)?e:[]).forEach(n=>{const a=String((n==null?void 0:n.key)||(n==null?void 0:n.code)||(n==null?void 0:n.areaCode)||(n==null?void 0:n.area_code)||"").trim(),s=T((n==null?void 0:n.name)||(n==null?void 0:n.areaName)||(n==null?void 0:n.area_name)||(n==null?void 0:n.townName)||(n==null?void 0:n.zoneName));[a,s].filter(Boolean).forEach(r=>t.set(r,n))}),qe.map(n=>{const a=t.get(String(n.key||""))||t.get(n.name);return a?P(g({},a),{key:n.key,name:n.name,unit:a.unit||"%"}):{key:n.key,name:n.name,value:0,unit:"%",extra:"--"}})}function Qn(e=[]){const t=new Map;return(Array.isArray(e)?e:[]).forEach(n=>{const a=String((n==null?void 0:n.key)||(n==null?void 0:n.code)||(n==null?void 0:n.areaCode)||(n==null?void 0:n.area_code)||"").trim(),s=T((n==null?void 0:n.name)||(n==null?void 0:n.areaName)||(n==null?void 0:n.area_name)||(n==null?void 0:n.townName)||(n==null?void 0:n.zoneName)||(n==null?void 0:n.township));[a,s].filter(Boolean).forEach(r=>t.set(r,n))}),qe.map(n=>{const a=t.get(String(n.key||""))||t.get(n.name);return{key:n.key,name:n.name,value:Number(a==null?void 0:a.value)||0,unit:(a==null?void 0:a.unit)||"万亩"}}).sort((n,a)=>a.value-n.value)}function Pt(e=[]){const t=new Map;return(Array.isArray(e)?e:[]).forEach(n=>{const a=c(n,["ageRange","age_range","age","name","label"]),s=c(n,["number","value","count","num"]);!a||s===void 0||s===null||s===""||t.set(a,(t.get(a)||0)+(Number(s)||0))}),Array.from(t.entries()).map(([n,a])=>({key:n,name:n,value:a,unit:"人"}))}function Nt(e=[]){const t=new Map;return(Array.isArray(e)?e:[]).forEach(n=>{const a=c(n,["sex","gender","name"]),s=c(n,["number","value","count","num"]);if(!a||s===void 0||s===null||s==="")return;const r=String(a).includes("女")?"女":String(a).includes("男")?"男":a;t.set(r,(t.get(r)||0)+(Number(s)||0))}),Array.from(t.entries()).map(([n,a])=>({key:n,name:n,value:a,unit:"人"}))}function ea(e=[]){return(Array.isArray(e)?e:[]).map((t,n)=>{const a=c(t,["name","pasturesName","pastures_name","muhuName","muhu_name","pastureName","pasture_name","herdsmanName"]);if(!a)return null;const s=W(t),r=O(t)||St(s),u=fe(t,s),o=xt(t),i=Ie(t,s)||Le(t,a,o),d=Ce(t),l=P(g({},t),{key:t.key||t.id||t.pasturesId||t.pastures_id||`${a}-${n}`,id:o||t.id||t.pastureId||t.pasturesId||t.pastures_id||t.muhuId||t.key,realPastureId:o,name:a,pastureSortOrder:d,township:i||"--",grasslandArea:r,acreage:r,grasslandCount:u,hasGrasslandBoundary:u>0,grasslands:s});return l.canLocate=!!(o||Se(t)||s.some(b)||b(t)),l.locateText=l.canLocate?"定位":"--",l.value=l.grasslandArea,l.unit="亩",l.searchText=[l.name,l.herdsmanName,l.herdsman_name,l.phone,l.phonenumber,l.idCard,l.id_card,l.township,l.id].filter(Boolean).join(" "),l}).filter(Boolean).sort(Ct)}function At(e=[]){return[...Array.isArray(e)?e:[]].map(t=>P(g({},t),{pastureSortOrder:Ce(t),grasslandArea:O(t),acreage:O(t)})).sort(Ct)}function Ce(e={}){const t=c(e,["pastureSortOrder","pasture_sort_order","pastureOrder","pasture_order","muhuSortOrder","muhu_sort_order","sortOrder","sort_order"]);if(t==null||t==="")return null;const n=Number(String(t).replace(/,/g,"").trim());return Number.isFinite(n)?n:null}function Ct(e,t){const n=Ce(e),a=Ce(t);if(n!==null||a!==null)return n===null?1:a===null?-1:n!==a?n-a:String((e==null?void 0:e.name)||"").localeCompare(String((t==null?void 0:t.name)||""),"zh-CN");const s=Se(e)?1:0,r=Se(t)?1:0;if(s!==r)return r-s;const u=fe(e),o=fe(t);if(u!==o)return o-u;const i=O(e),d=O(t),l=i>0?1:0,m=d>0?1:0;if(l!==m)return m-l;const _=We(e)?1:0,R=We(t)?1:0;return _!==R?R-_:i!==d?d-i:String((e==null?void 0:e.name)||"").localeCompare(String((t==null?void 0:t.name)||""),"zh-CN")}function Se(e={}){const t=c(e,["hasGrasslandBoundary","has_grassland_boundary","hasBoundary","has_boundary"]);return t===!0||t===1||t==="1"||typeof t=="string"&&["true","yes","y"].includes(t.trim().toLowerCase())?!0:fe(e)>0}function fe(e={},t=e==null?void 0:e.grasslands){const n=["grasslandCount","grassland_count","grasslandsCount","grasslands_count","grasslandBoundaryCount","grassland_boundary_count","boundaryCount","boundary_count"];for(const a of n){const s=Number(e==null?void 0:e[a]);if(Number.isFinite(s)&&s>0)return s}return Array.isArray(t)?t.length:0}function O(e={}){const n=["grasslandArea","grassland_area","grasslandAcreage","grassland_acreage","assignedGrasslandAcreage","assigned_grassland_acreage","area","areaRange","area_range","cdAcreage","cd_acreage","totalAcreage","total_acreage","pastureArea","pasture_area","acreage"].map(s=>ta(e==null?void 0:e[s]));return n.find(s=>s>0)||n.find(s=>s===0)||0}function St(e=[]){return(Array.isArray(e)?e:[]).reduce((t,n)=>t+O(n),0)}function ta(e){if(typeof e=="number")return Number.isFinite(e)?e:0;const t=String(e!=null?e:"").trim();if(!t||t==="--")return 0;const n=t.replace(/,/g,"").match(/-?\d+(?:\.\d+)?/);if(!n)return 0;const a=Number(n[0]);return Number.isFinite(a)?t.includes("万")?a*1e4:a:0}function W(e={}){const t=[];["grasslands","grasslandList","grasslandRows","landList","plots","features"].forEach(s=>{const r=e==null?void 0:e[s];Array.isArray(r)?t.push(...r):Array.isArray(r==null?void 0:r.rows)?t.push(...r.rows):Array.isArray(r==null?void 0:r.list)?t.push(...r.list):Array.isArray(r==null?void 0:r.data)&&t.push(...r.data)});const a=c(e,["wkt","geo","geom","geometryWkt","geometry_wkt","shape","location"]);return(a||e!=null&&e.geometry)&&t.push(P(g({},e),{id:(e==null?void 0:e.grasslandId)||(e==null?void 0:e.gid)||(e==null?void 0:e.id),pastureId:(e==null?void 0:e.pastureId)||(e==null?void 0:e.pasturesId)||(e==null?void 0:e.pastures_id)||(e==null?void 0:e.muhuId)||(e==null?void 0:e.id),name:(e==null?void 0:e.grasslandName)||(e==null?void 0:e.name),wkt:a,geometry:e==null?void 0:e.geometry})),t.filter(Boolean)}function b(e={}){var t,n;return typeof e=="string"?!!e.trim():(e==null?void 0:e.type)==="Feature"||e!=null&&e.type&&(e!=null&&e.coordinates)||(t=e==null?void 0:e.geometry)!=null&&t.type||(n=e==null?void 0:e.geometry)!=null&&n.coordinates||typeof(e==null?void 0:e.geometry)=="string"?!0:!!c(e,["wkt","geo","geom","geometryWkt","geometry_wkt","shape","location"])}function na(e={},t={}){var r,u,o,i,d;const n=P(g(g({},e),t),{id:(r=e==null?void 0:e.id)!=null?r:t==null?void 0:t.id,grasslandId:(d=(i=(o=(u=e==null?void 0:e.grasslandId)!=null?u:e==null?void 0:e.grassland_id)!=null?o:t==null?void 0:t.grasslandId)!=null?i:t==null?void 0:t.grassland_id)!=null?d:t==null?void 0:t.id}),a=c(t,["wkt","geo","geom","geometryWkt","geometry_wkt","shape","location"]),s=c(e,["wkt","geo","geom","geometryWkt","geometry_wkt","shape","location"]);return(a||s)&&(n.wkt=a||s),n.geometry=(t==null?void 0:t.geometry)||(e==null?void 0:e.geometry),n}function $e(e=[]){const t=new Set;return(Array.isArray(e)?e:[]).filter(n=>{if(!n)return!1;const a=aa(n);return a&&t.has(a)?!1:(a&&t.add(a),!0)})}function aa(e={}){const t=c(e,["wkt","geo","geom","geometryWkt","geometry_wkt","shape","location"]);if(t)return`g:${String(t).slice(0,240)}`;if(e!=null&&e.geometry)try{return`j:${JSON.stringify(e.geometry).slice(0,240)}`}catch(a){return""}const n=It(e);return n?`id:${n}`:""}function It(e={}){return Lt(c(e,["id","grasslandId","grassland_id","landId","land_id","gid","objectid","object_id","fid"]))}function je(e={}){return[e==null?void 0:e.realPastureId,e==null?void 0:e.pastureId,e==null?void 0:e.pasturesId,e==null?void 0:e.pastures_id,e==null?void 0:e.muhuId,e==null?void 0:e.muhu_id,e==null?void 0:e.id].map(Lt).filter(Boolean).filter((t,n,a)=>a.indexOf(t)===n)}function Lt(e){const t=String(e!=null?e:"").trim();return t&&t!=="--"?t:""}function xt(e={}){return je(e)[0]||null}function We(e={}){return e!=null&&e.canLocate||b(e)?!0:W(e).some(b)}function c(e={},t=[]){for(const n of t){const a=e==null?void 0:e[n];if(a!=null&&a!=="")return a}}function Ie(e={},t=[]){const n=c(e,["township","townName","town_name","areaName","area_name","zoneName","zone_name","fullName","full_name","address","牧场所在区域"]),a=T(n);if(a)return a;const s=Ke(c(e,["areaCode","area_code","townCode","town_code","code"]));if(s)return s;for(const u of t){const o=c(u,["township","townName","town_name","areaName","area_name","zoneName","zone_name","fullName","full_name","address","牧场所在区域"]),i=T(o);if(i)return i;const d=Ke(c(u,["areaCode","area_code","townCode","town_code","code"]));if(d)return d}const r=Tt(e);if(r)return r;for(const u of t){const o=Tt(u);if(o)return o}return""}function T(e){const t=String(e||"").trim();if(!t||t==="--")return"";const n=Ke(t);if(n)return n;if(Ia(t))return t;const a=La.find(r=>t.includes(r));if(a)return a;const s=Ae(t);return s&&s!==t?T(s):""}function Le(e={},t="",n=""){const a=[n,e.realPastureId,e.pastureId,e.pasturesId,e.pastures_id,e.muhuId,e.id];for(const r of a){const u=qt[String(r||"").trim()];if(u)return T(u)}const s=[t,e.name,e.pasturesName,e.pastures_name,e.muhuName,e.muhu_name,e.pastureName,e.pasture_name];for(const r of s){const u=Zt[ra(r)];if(u)return T(u)}return""}function ra(e){return String(e||"").replace(/[·•・..。`´’‘ʼʹ''"“”\s\-—_()()]/g,"").replace(/˙/g,"")}function Ke(e){const t=String(e||"").trim();if(!t)return"";const n=t.replace(/\D/g,"");return n?xa(n):""}function Tt(e={}){const t=Ue(e),n=oa(t);if(!n)return"";const a=Yt.find(s=>ia(n,s.geometry));return a!=null&&a.name?T(a.name):""}function Ue(e={}){var a,s;if((e==null?void 0:e.type)==="Feature")return Ue(e.geometry);if(e!=null&&e.type&&(e!=null&&e.coordinates))return e;if((a=e==null?void 0:e.geometry)!=null&&a.type||(s=e==null?void 0:e.geometry)!=null&&s.coordinates)return e.geometry;const t=c(e,["geometry","location","wkt","geo","geom","geometryWkt","geometry_wkt","shape"]);if(!t||typeof t!="string")return null;const n=t.trim();if(!n)return null;if(n.startsWith("{")||n.startsWith("["))try{const r=JSON.parse(n);return Ue(r)}catch(r){return null}return sa(n)}function sa(e){var r;const t=String(e||"").trim(),n=t.match(/^([A-Z]+)(?:\s+[A-Z]+)?\s*\(/i),a=(r=n==null?void 0:n[1])==null?void 0:r.toUpperCase();if(!a)return null;const s=t.slice(t.indexOf("("));return a==="POINT"?{type:"Point",coordinates:De(s)}:a==="MULTIPOINT"?{type:"MultiPoint",coordinates:xe(s).map(De).filter(Boolean)}:a==="LINESTRING"?{type:"LineString",coordinates:He(s)}:a==="MULTILINESTRING"?{type:"MultiLineString",coordinates:xe(s).map(He).filter(u=>u.length)}:a==="POLYGON"?{type:"Polygon",coordinates:Rt(s)}:a==="MULTIPOLYGON"?{type:"MultiPolygon",coordinates:xe(s).map(Rt).filter(u=>u.length)}:null}function De(e){const t=String(e||"").replace(/^\(+|\)+$/g,"").trim().split(/\s+/).slice(0,2).map(Number);return t.length>=2&&Number.isFinite(t[0])&&Number.isFinite(t[1])?[t[0],t[1]]:null}function He(e){return String(e||"").replace(/^\(+|\)+$/g,"").split(",").map(De).filter(Boolean)}function Rt(e){return xe(e).map(He).filter(t=>t.length>=3)}function xe(e){const t=[];let n=0,a=-1;return Array.from(String(e||"")).forEach((s,r)=>{s==="("?(n===0&&(a=r+1),n+=1):s===")"&&(n-=1,n===0&&a>=0&&(t.push(e.slice(a,r)),a=-1))}),t.length?t:[String(e||"")]}function ua(e){try{const t=typeof e=="string"?JSON.parse(e):e;return((t==null?void 0:t.features)||[]).map(n=>{var a,s,r,u;return{name:((a=n==null?void 0:n.properties)==null?void 0:a.name)||((s=n==null?void 0:n.properties)==null?void 0:s.areaName)||((r=n==null?void 0:n.properties)==null?void 0:r.townName),code:(u=n==null?void 0:n.properties)==null?void 0:u.code,geometry:n==null?void 0:n.geometry}}).filter(n=>{var a;return n.name&&((a=n.geometry)==null?void 0:a.coordinates)})}catch(t){return[]}}function oa(e){const t=la(e);if(!t.length)return null;const n=t.reduce((a,s)=>({lng:a.lng+s[0],lat:a.lat+s[1]}),{lng:0,lat:0});return[n.lng/t.length,n.lat/t.length]}function la(e){const t=[],n=a=>{if(Array.isArray(a)){if(a.length>=2&&Number.isFinite(Number(a[0]))&&Number.isFinite(Number(a[1]))){t.push([Number(a[0]),Number(a[1])]);return}a.forEach(n)}};return n(e==null?void 0:e.coordinates),t}function ia(e,t){return!e||!(t!=null&&t.coordinates)?!1:t.type==="Polygon"?Bt(e,t.coordinates):t.type==="MultiPolygon"?t.coordinates.some(n=>Bt(e,n)):!1}function Bt(e,t){var u,o,i,d;const n=t==null?void 0:t[0];if(!Array.isArray(n)||n.length<3)return!1;let a=!1;const s=e[0],r=e[1];for(let l=0,m=n.length-1;l<n.length;m=l++){const _=Number((u=n[l])==null?void 0:u[0]),R=Number((o=n[l])==null?void 0:o[1]),Ft=Number((i=n[m])==null?void 0:i[0]),zt=Number((d=n[m])==null?void 0:d[1]);R>r!=zt>r&&s<(Ft-_)*(r-R)/(zt-R||1e-12)+_&&(a=!a)}return a}return(e,t)=>(F(),$("div",Da,[(F(),va(Aa,{key:Qe.value,ref_key:"mapSceneRef",ref:h,class:"pasture-ol-map-layer",active:ee.active,"tile-url-template":ir,center:et,"initial-zoom":9,"minimum-zoom-distance":1,"auto-apply-layer-map-view":!1,"max-zoom":21,"overlay-layer":_e.value,"overlay-layers":nt.value,onReady:En,onMapClick:Kn},null,8,["active","overlay-layer","overlay-layers"])),t[2]||(t[2]=S("div",{class:"pasture-map-scrim"},null,-1)),ue.value?re("",!0):(F(),$("div",Ha,"3D地图加载中")),S("div",qa,[S("div",Za,[S("div",Ya,[k(Q,{class:"pasture-side-card left-card",title:"牧户区域统计",width:K(z),height:L.value},{default:X(()=>[k(se,{panel:ln.value,compact:"","column-label-standard":"","visual-version":"v21"},null,8,["panel"])]),_:1},8,["width","height"]),k(Q,{class:"pasture-side-card left-card",title:"草场面积分布",width:K(z),height:L.value},{default:X(()=>[k(se,{panel:cn.value,compact:"","visual-version":"v21"},null,8,["panel"])]),_:1},8,["width","height"]),k(Q,{class:"pasture-side-card left-card pasture-video-card",title:"牧场实时监控",width:K(z),height:L.value},{default:X(()=>[S("div",Ja,[S("button",{class:"pasture-video-nav pasture-video-prev",type:"button",disabled:M.value.length<=1,"aria-label":"上一个监控点",onClick:_n}," ‹ ",8,Xa),S("div",{class:Gt(["pasture-video-grid",{"is-single":ut.value.length<=1}])},[(F(!0),$(ka,null,ba(ut.value,n=>(F(),$("div",{key:n.key,ref_for:!0,ref:a=>vn(a,n),class:Gt(["pasture-video-screen",{"is-active":n.isActive,"is-playing":q.value&&n.isActive,"is-loading":G.value&&n.isActive}]),style:wt(bn(n.live,n.isActive)),onClick:a=>Nn(n.index)},[n.isActive?(F(),$("div",{key:0,id:B,class:"pasture-video-player"})):re("",!0),(!q.value||!n.isActive)&&n.live.hdPlayUrl?(F(),$("div",er)):re("",!0),G.value&&n.isActive?(F(),$("div",tr,"加载中")):re("",!0),A.value&&n.isActive?(F(),$("div",nr,Vt(A.value),1)):re("",!0),S("div",ar,Vt(n.live.title),1)],14,Qa))),128))],2),S("button",{class:"pasture-video-nav pasture-video-next",type:"button",disabled:M.value.length<=1,"aria-label":"下一个监控点",onClick:Pn}," › ",8,rr)])]),_:1},8,["width","height"]),k(Q,{class:"pasture-side-card left-card",title:"牧户上线率",width:K(z),height:L.value},{default:X(()=>[k(se,{panel:dn.value,compact:"","visual-version":"v21"},null,8,["panel"])]),_:1},8,["width","height"])])]),S("div",sr,[S("div",ur,[k(Q,{class:"pasture-side-card right-card",title:"牧户年龄统计",width:K(z),height:L.value},{default:X(()=>[k(se,{panel:fn.value,compact:"","column-label-standard":"","visual-version":"v21"},null,8,["panel"])]),_:1},8,["width","height"]),k(Q,{class:"pasture-side-card right-card",title:"牧户性别统计",width:K(z),height:L.value},{default:X(()=>[k(se,{panel:gn.value,compact:"","visual-version":"v21"},null,8,["panel"])]),_:1},8,["width","height"]),k(Q,{class:"pasture-side-card right-card pasture-list-card",title:"牧户列表",width:K(z),height:E.value},{default:X(()=>[k(se,{panel:pn.value,compact:"","visual-version":"v21",onRowSelect:Fn},null,8,["panel"])]),_:1},8,["width","height"])])]),S("div",or,[k(Ca,{modelValue:ne.value,"onUpdate:modelValue":t[0]||(t[0]=n=>ne.value=n),"selected-legend-key":Re.value,"onUpdate:selectedLegendKey":t[1]||(t[1]=n=>Re.value=n),"topic-key":"grassland",layers:tt.value,legends:Qt.value,multiple:"",width:232,height:430},null,8,["modelValue","selected-legend-key","layers","legends"])]),tn.value?(F(),$("div",{key:0,class:"pasture-map-feature-info",style:wt(rn.value)},[S("button",{class:"pasture-map-feature-close",type:"button","aria-label":"关闭图斑详情",title:"关闭",onClick:_a(J,["stop"])}," × "),k(Sa,{feature:D.value,empty:oe.value,loading:le.value,width:K(nn),height:an.value,"compact-grassland":""},null,8,["feature","empty","loading","width","height"])],4)):re("",!0)])]))}};export{Cr as default};
|
|
|