fix: update yak and pasture display

V2.0
M先生 4 weeks ago
parent 48f30f791e
commit 893bc84e48
  1. 0
      docs/assets/AlibabaPuHuiTi-14435b65-balabala-1783400325510.woff2
  2. 0
      docs/assets/AlimamaShuHeiTi-Bold-6401fd0d-balabala-1783400325510.ttf
  3. 0
      docs/assets/AlimamaShuHeiTi-Bold-a95023f2-balabala-1783400325510.woff
  4. 0
      docs/assets/AlimamaShuHeiTi-Bold-fa4a258d-balabala-1783400325510.woff2
  5. 2
      docs/assets/SmartChartRenderer-5bbea40e-1783352479097.js
  6. 2
      docs/assets/SmartChartRenderer-7a3a96b9-balabala-1783400325510.css
  7. 2
      docs/assets/SmartChartRenderer-dea46fb6-1783400325510.js
  8. 0
      docs/assets/area-b57940eb-balabala-1783400325510.png
  9. 0
      docs/assets/bg-3acb94e3-balabala-1783400325510.png
  10. 0
      docs/assets/bottom-menu-arrow-big-180b7071-balabala-1783400325510.svg
  11. 0
      docs/assets/bottom-menu-arrow-small-19304179-balabala-1783400325510.svg
  12. 0
      docs/assets/bottom-menu-bg-b465793d-balabala-1783400325510.png
  13. 0
      docs/assets/bottom-menu-btn-ee5c8064-balabala-1783400325510.png
  14. 0
      docs/assets/bottom-menu-btn-hover-df33e514-balabala-1783400325510.png
  15. 6
      docs/assets/chartTheme-162cb1dc-1783400325510.js
  16. 0
      docs/assets/chartTheme-812dab15-balabala-1783400325510.css
  17. 0
      docs/assets/chinaBlurLine-1a2cbc0f-balabala-1783400325510.png
  18. 0
      docs/assets/content-bottom-left-arrow-3a8a61f3-balabala-1783400325510.svg
  19. 0
      docs/assets/content-bottom-right-arrow-a3c5270d-balabala-1783400325510.svg
  20. 0
      docs/assets/content-middle-line-162bc0d5-balabala-1783400325510.svg
  21. 0
      docs/assets/focus_bg-b6803e2d-balabala-1783400325510.png
  22. 0
      docs/assets/focus_move_bg-cf41417a-balabala-1783400325510.png
  23. 0
      docs/assets/header-bg-65b38012-balabala-1783400325510.png
  24. 0
      docs/assets/huiguang-3c5dfda5-balabala-1783400325510.png
  25. 0
      docs/assets/icon1-6f7c222f-balabala-1783400325510.png
  26. 0
      docs/assets/icon2-4f77ccec-balabala-1783400325510.png
  27. 4
      docs/assets/index-1783400325510.js
  28. 2
      docs/assets/index-438e8d34-1783400325510.js
  29. 0
      docs/assets/index-47d6f37a-balabala-1783400325510.css
  30. 2
      docs/assets/index-6e93a8e7-balabala-1783400325510.css
  31. 0
      docs/assets/index-8d752fbe-balabala-1783400325510.css
  32. 2
      docs/assets/index-a0088dbf-balabala-1783400325510.css
  33. 339
      docs/assets/index-cce8222b-1783400325510.js
  34. 2
      docs/assets/index-d3d03732-1783400325510.js
  35. 0
      docs/assets/leaf-7be9efef-balabala-1783400325510.png
  36. 0
      docs/assets/left-kuang-5d6bd1ae-balabala-1783400325510.svg
  37. 0
      docs/assets/live-scene-1-786cdd0a-balabala-1783400325510.png
  38. 0
      docs/assets/menu-btn-91a961cf-balabala-1783400325510.png
  39. 0
      docs/assets/menu-btn-hover-62eba0bb-balabala-1783400325510.png
  40. 0
      docs/assets/ocean-bg-8c848b8f-balabala-1783400325510.png
  41. 0
      docs/assets/park-ee0533e0-balabala-1783400325510.png
  42. 0
      docs/assets/pathLine2-d4134d4b-balabala-1783400325510.png
  43. 0
      docs/assets/right-kuang-b1937caf-balabala-1783400325510.svg
  44. 0
      docs/assets/ring2-a1b91808-balabala-1783400325510.png
  45. 0
      docs/assets/ring3-fe0f60d7-balabala-1783400325510.png
  46. 0
      docs/assets/ring4-f2e324d6-balabala-1783400325510.png
  47. 0
      docs/assets/rotationBorder1-2ce8e0ef-balabala-1783400325510.png
  48. 0
      docs/assets/rotationBorder2-7496b968-balabala-1783400325510.png
  49. 0
      docs/assets/saoguang-ccf84a88-balabala-1783400325510.svg
  50. 0
      docs/assets/stack-7a426057-balabala-1783400325510.png
  51. 0
      docs/assets/title-zs1-c15a5ee8-balabala-1783400325510.svg
  52. 0
      docs/assets/town-f8c0c9cc-balabala-1783400325510.png
  53. 0
      docs/assets/yield-66e9af79-balabala-1783400325510.png
  54. 4
      docs/index.html
  55. 2
      src/views/gdMap/livestockData.js
  56. 13
      src/views/pastureManagement/index.vue
  57. 8
      src/views/yakManagement/YakOlMap.vue
  58. 6
      src/views/yakManagement/data.js
  59. 26
      src/views/yakManagement/index.vue

@ -1,2 +0,0 @@
var W=Object.defineProperty,H=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var A=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var $=(o,i,n)=>i in o?W(o,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[i]=n,g=(o,i)=>{for(var n in i||(i={}))j.call(i,n)&&$(o,n,i[n]);if(A)for(var n of A(i))F.call(i,n)&&$(o,n,i[n]);return o},y=(o,i)=>H(o,Z(i));import{e as m,j as V,k as E,L as S,o as p,c as b,a as x,t as h,g as v,b as q,u as G,n as M}from"./index-1783352479097.js";import{aS as I}from"./chartTheme-89e05b98-1783352479097.js";const U={class:"smart-chart-header"},J={key:0},K={key:0},Q={key:0,class:"smart-chart-source"},N="口径",te={__name:"SmartChartRenderer",props:{chart:{type:Object,required:!0}},emits:["ready"],setup(o,{emit:i}){const n=i,a=o,c=["#30dcff","#27f0c0","#ffd76c","#7aa7ff","#ff8f6b","#a6f06d"],T=m(()=>{const e=(a.chart.rows||[]).filter(t=>Number.isFinite(Number(t.value)));return a.chart.type==="pie"?O(e):a.chart.type==="line"?P(e):C(e)}),w=m(()=>{const e=a.chart.rows||[];return a.chart.type==="bar"&&_(e)}),z=m(()=>{const e=R(a.chart.subtitle);if(e)return e;const t=a.chart.source||{},r=f(t.period||t.dataPeriod||a.chart.period),s=a.chart.unit?`单位:${a.chart.unit}`:"";return[r,s].filter(Boolean).join(" · ")}),L=m(()=>{const e=a.chart.source||{},t=D(e),r=f(e.period||e.dataPeriod||a.chart.period),s=f(e.generatedAt||e.updateTime||e.updatedAt,!0),l=[t,r,s?`更新 ${s}`:""].filter(Boolean);return l.length?`数据来源:${l.join(" · ")}`:"数据来源:业务统计库"});V(()=>{E(()=>{window.requestAnimationFrame(()=>n("ready"))})});function C(e){return _(e)?B(e):{animationDuration:700,grid:{left:52,right:26,top:28,bottom:54},tooltip:u(),xAxis:{type:"category",data:e.map(t=>t.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.28)"}},axisLabel:{color:"rgba(223, 250, 255, 0.76)",fontSize:11,interval:0,rotate:e.length>6?28:0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},series:[{name:a.chart.title,type:"bar",barWidth:e.length>7?16:22,data:e.map((t,r)=>({value:t.value,name:t.name,itemStyle:{borderRadius:[8,8,0,0],color:new S(0,0,0,1,[{offset:0,color:c[r%c.length]},{offset:1,color:"rgba(48, 220, 255, 0.08)"}])}})),label:{show:!0,position:"top",color:"#ffffff",fontSize:11,formatter:({value:t})=>d(t)}}]}}function B(e){return{animationDuration:700,grid:{left:78,right:72,top:22,bottom:20},tooltip:y(g({},u()),{trigger:"axis",axisPointer:{type:"shadow"}}),xAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},yAxis:{type:"category",inverse:!0,data:e.map(t=>t.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.22)"}},axisLabel:{color:"rgba(223, 250, 255, 0.82)",fontSize:12}},series:[{name:a.chart.title,type:"bar",barWidth:13,data:e.map((t,r)=>({value:t.value,name:t.name,itemStyle:{borderRadius:[0,8,8,0],color:new S(0,0,1,0,[{offset:0,color:"rgba(48, 220, 255, 0.16)"},{offset:1,color:c[r%c.length]}])}})),label:{show:!0,position:"right",color:"#ffffff",fontSize:11,formatter:({value:t})=>d(t)}}]}}function O(e){return{animationDuration:700,tooltip:u(),legend:{orient:"vertical",right:10,top:"middle",itemWidth:10,itemHeight:10,textStyle:{color:"rgba(223, 250, 255, 0.78)",fontSize:11}},series:[{name:a.chart.title,type:"pie",radius:["48%","68%"],center:["35%","52%"],avoidLabelOverlap:!0,label:{color:"#fff",fontSize:11,formatter:`{b}
{d}%`},labelLine:{lineStyle:{color:"rgba(223, 250, 255, 0.42)"}},itemStyle:{borderColor:"rgba(3, 18, 31, 0.92)",borderWidth:3},data:e.map((t,r)=>({name:t.name,value:t.value,itemStyle:{color:c[r%c.length]}}))}]}}function P(e){return{animationDuration:760,grid:{left:52,right:28,top:30,bottom:48},tooltip:y(g({},u()),{trigger:"axis",axisPointer:{type:"line",lineStyle:{color:"rgba(255, 215, 108, 0.52)"}}}),xAxis:{type:"category",boundaryGap:!1,data:e.map(t=>t.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.28)"}},axisLabel:{color:"rgba(223, 250, 255, 0.76)",fontSize:11,interval:0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},series:[{name:a.chart.title,type:"line",smooth:!0,symbol:"circle",symbolSize:8,lineStyle:{width:3,color:"#30dcff"},itemStyle:{color:"#ffd76c",borderColor:"#041522",borderWidth:2},areaStyle:{color:new S(0,0,0,1,[{offset:0,color:"rgba(48, 220, 255, 0.24)"},{offset:1,color:"rgba(48, 220, 255, 0.02)"}])},label:{show:!0,position:"top",color:"#ffffff",fontSize:11,formatter:({value:t})=>d(t)},data:e.map(t=>({value:t.value,name:t.name}))}]}}function u(){return{trigger:"item",backgroundColor:"rgba(2, 13, 22, 0.94)",borderColor:"rgba(48, 220, 255, 0.34)",borderWidth:1,textStyle:{color:"#fff",fontSize:12},formatter:e=>{const t=(a.chart.rows||[]).find(l=>l.name===e.name),r=(t==null?void 0:t.unit)||a.chart.unit||"",s=t!=null&&t.extra?`<br/><span style="color:rgba(223,250,255,.62)">${t.extra}</span>`:"";return`${e.marker}${e.name}: ${d(e.value)}${r}${s}`}}}function _(e=[]){return e.length>6||e.some(t=>String(t.name||"").length>4)}function D(e={}){const t=f(e.sourceName||e.name||e.label);if(t)return t;const r=String(e.mode||"").trim();return/openapi|api|stat/i.test(r)?"":/local|mock|fallback/i.test(r)?"":""}function f(e,t=!1){const r=String(e||"").trim();return r?t&&/^\d{4}-\d{2}-\d{2}/.test(r)?r.slice(0,10):k(r)?"":r:""}function R(e){const t=String(e||"").trim();if(!t)return"";const r=new RegExp(N,"g"),s=new RegExp(`${N}`,"g"),l=t.replace(s,"").replace(r,"").replace(/[:]\s*openApi\s*\s*[a-zA-Z0-9_./:-]*[,]?\s*/gi,"").replace(/openApi\s*\s*/gi,"").replace(/\b[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+){2,}\b/g,"").replace(/[,]\s*[,]+/g,"").replace(/^[\s,:]+|[\s,]+$/g,"");return!l||/^[:]?$/.test(l)||k(l)?"":l}function k(e){return/^[a-zA-Z0-9_./:-]+$/.test(e)&&(e.includes("_")||e.length>24)}function d(e){const t=Number(e);return Number.isFinite(t)?Number.isInteger(t)?t.toLocaleString("zh-CN"):t.toLocaleString("zh-CN",{maximumFractionDigits:2}):"--"}return(e,t)=>(p(),b("div",{class:M(["smart-chart-card",{"is-horizontal":w.value}])},[x("div",U,[x("div",null,[x("strong",null,h(o.chart.title),1),z.value?(p(),b("span",J,h(z.value),1)):v("",!0)]),o.chart.unit?(p(),b("em",K,h(o.chart.unit),1)):v("",!0)]),q(G(I),{class:"smart-chart",option:T.value,autoresize:""},null,8,["option"]),L.value?(p(),b("div",Q,h(L.value),1)):v("",!0)],2))}};export{te as default};

@ -1 +1 @@
.smart-chart-card{width:min(620px,100%);height:292px;margin-top:12px;box-sizing:border-box;border:1px solid rgba(48,220,255,.24);background:linear-gradient(135deg,rgba(6,37,50,.86),rgba(4,19,32,.82)),radial-gradient(circle at 22% 8%,rgba(48,220,255,.12),transparent 34%);box-shadow:inset 0 0 28px #30dcff14,0 14px 32px #00000038}.smart-chart-header{height:52px;padding:10px 14px 0;display:flex;align-items:flex-start;justify-content:space-between;box-sizing:border-box}.smart-chart-header strong{display:block;color:#fff;font-size:16px;line-height:1.2}.smart-chart-header span{display:block;margin-top:5px;color:#dffaff94;font-size:12px}.smart-chart-header em{padding:3px 9px;border:1px solid rgba(255,215,108,.3);color:#ffd76c;font-style:normal;font-size:12px;background:rgba(255,215,108,.08)}.smart-chart{width:100%;height:216px}.smart-chart-source{height:22px;padding:0 14px;box-sizing:border-box;color:#dffaff7a;font-size:11px;line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .smart-chart-card{width:min(620px,100%);height:292px;margin-top:12px;box-sizing:border-box;border:1px solid rgba(48,220,255,.24);background:linear-gradient(135deg,rgba(6,37,50,.86),rgba(4,19,32,.82)),radial-gradient(circle at 22% 8%,rgba(48,220,255,.12),transparent 34%);box-shadow:inset 0 0 28px #30dcff14,0 14px 32px #00000038}.smart-chart-header{height:52px;padding:10px 14px 0;display:flex;align-items:flex-start;justify-content:space-between;box-sizing:border-box}.smart-chart-header strong{display:block;color:#fff;font-size:16px;line-height:1.2}.smart-chart-header span{display:block;margin-top:5px;color:#dffaff94;font-size:12px}.smart-chart-header em{padding:3px 9px;border:1px solid rgba(255,215,108,.3);color:#ffd76c;font-style:normal;font-size:12px;background:rgba(255,215,108,.08)}.smart-chart{width:100%;height:216px}

@ -0,0 +1,2 @@
var D=Object.defineProperty,R=Object.defineProperties;var W=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var L=(a,r,o)=>r in a?D(a,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):a[r]=o,m=(a,r)=>{for(var o in r||(r={}))H.call(r,o)&&L(a,o,r[o]);if(z)for(var o of z(r))P.call(r,o)&&L(a,o,r[o]);return a},d=(a,r)=>R(a,W(r));import{e as p,j as Z,k as F,L as b,o as g,c as h,a as y,t as x,g as _,b as V,u as E,n as j}from"./index-1783400325510.js";import{aS as q}from"./chartTheme-162cb1dc-1783400325510.js";const G={class:"smart-chart-header"},I={key:0},M={key:0},k="口径",Q={__name:"SmartChartRenderer",props:{chart:{type:Object,required:!0}},emits:["ready"],setup(a,{emit:r}){const o=r,i=a,l=["#30dcff","#27f0c0","#ffd76c","#7aa7ff","#ff8f6b","#a6f06d"],A=p(()=>{const t=(i.chart.rows||[]).filter(e=>Number.isFinite(Number(e.value)));return i.chart.type==="pie"?T(t):i.chart.type==="line"?$(t):C(t)}),w=p(()=>{const t=i.chart.rows||[];return i.chart.type==="bar"&&v(t)}),S=p(()=>B(i.chart.subtitle));Z(()=>{F(()=>{window.requestAnimationFrame(()=>o("ready"))})});function C(t){return v(t)?N(t):{animationDuration:700,grid:{left:52,right:26,top:28,bottom:54},tooltip:c(),xAxis:{type:"category",data:t.map(e=>e.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.28)"}},axisLabel:{color:"rgba(223, 250, 255, 0.76)",fontSize:11,interval:0,rotate:t.length>6?28:0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},series:[{name:i.chart.title,type:"bar",barWidth:t.length>7?16:22,data:t.map((e,n)=>({value:e.value,name:e.name,itemStyle:{borderRadius:[8,8,0,0],color:new b(0,0,0,1,[{offset:0,color:l[n%l.length]},{offset:1,color:"rgba(48, 220, 255, 0.08)"}])}})),label:{show:!0,position:"top",color:"#ffffff",fontSize:11,formatter:({value:e})=>u(e)}}]}}function N(t){return{animationDuration:700,grid:{left:78,right:72,top:22,bottom:20},tooltip:d(m({},c()),{trigger:"axis",axisPointer:{type:"shadow"}}),xAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},yAxis:{type:"category",inverse:!0,data:t.map(e=>e.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.22)"}},axisLabel:{color:"rgba(223, 250, 255, 0.82)",fontSize:12}},series:[{name:i.chart.title,type:"bar",barWidth:13,data:t.map((e,n)=>({value:e.value,name:e.name,itemStyle:{borderRadius:[0,8,8,0],color:new b(0,0,1,0,[{offset:0,color:"rgba(48, 220, 255, 0.16)"},{offset:1,color:l[n%l.length]}])}})),label:{show:!0,position:"right",color:"#ffffff",fontSize:11,formatter:({value:e})=>u(e)}}]}}function T(t){return{animationDuration:700,tooltip:c(),legend:{orient:"vertical",right:10,top:"middle",itemWidth:10,itemHeight:10,textStyle:{color:"rgba(223, 250, 255, 0.78)",fontSize:11}},series:[{name:i.chart.title,type:"pie",radius:["48%","68%"],center:["35%","52%"],avoidLabelOverlap:!0,label:{color:"#fff",fontSize:11,formatter:`{b}
{d}%`},labelLine:{lineStyle:{color:"rgba(223, 250, 255, 0.42)"}},itemStyle:{borderColor:"rgba(3, 18, 31, 0.92)",borderWidth:3},data:t.map((e,n)=>({name:e.name,value:e.value,itemStyle:{color:l[n%l.length]}}))}]}}function $(t){return{animationDuration:760,grid:{left:52,right:28,top:30,bottom:48},tooltip:d(m({},c()),{trigger:"axis",axisPointer:{type:"line",lineStyle:{color:"rgba(255, 215, 108, 0.52)"}}}),xAxis:{type:"category",boundaryGap:!1,data:t.map(e=>e.name),axisTick:{show:!1},axisLine:{lineStyle:{color:"rgba(48, 220, 255, 0.28)"}},axisLabel:{color:"rgba(223, 250, 255, 0.76)",fontSize:11,interval:0}},yAxis:{type:"value",axisLine:{show:!1},axisTick:{show:!1},splitLine:{lineStyle:{color:"rgba(48, 220, 255, 0.1)",type:"dashed"}},axisLabel:{color:"rgba(223, 250, 255, 0.58)",fontSize:11}},series:[{name:i.chart.title,type:"line",smooth:!0,symbol:"circle",symbolSize:8,lineStyle:{width:3,color:"#30dcff"},itemStyle:{color:"#ffd76c",borderColor:"#041522",borderWidth:2},areaStyle:{color:new b(0,0,0,1,[{offset:0,color:"rgba(48, 220, 255, 0.24)"},{offset:1,color:"rgba(48, 220, 255, 0.02)"}])},label:{show:!0,position:"top",color:"#ffffff",fontSize:11,formatter:({value:e})=>u(e)},data:t.map(e=>({value:e.value,name:e.name}))}]}}function c(){return{trigger:"item",backgroundColor:"rgba(2, 13, 22, 0.94)",borderColor:"rgba(48, 220, 255, 0.34)",borderWidth:1,textStyle:{color:"#fff",fontSize:12},formatter:t=>{const e=(i.chart.rows||[]).find(s=>s.name===t.name),n=(e==null?void 0:e.unit)||i.chart.unit||"",f=e!=null&&e.extra?`<br/><span style="color:rgba(223,250,255,.62)">${e.extra}</span>`:"";return`${t.marker}${t.name}: ${u(t.value)}${n}${f}`}}}function v(t=[]){return t.length>6||t.some(e=>String(e.name||"").length>4)}function B(t){const e=String(t||"").trim();if(!e||/^(数据)?来源[:]/.test(e)||e.includes("固定展示"))return"";const n=new RegExp(k,"g"),f=new RegExp(`统计${k}`,"g"),s=e.replace(f,"统计数据").replace(n,"数据").replace(/来源[::]\s*openApi\s*统计库\s*[a-zA-Z0-9_./:-]*[,,、]?\s*/gi,"").replace(/openApi\s*统计库\s*/gi,"").replace(/\b[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+){2,}\b/g,"").replace(/[,,、]\s*[,,、]+/g,",").replace(/^[\s,,、::]+|[\s,,、]+$/g,"");return!s||/^来源[::]?$/.test(s)||O(s)?"":s}function O(t){return/^[a-zA-Z0-9_./:-]+$/.test(t)&&(t.includes("_")||t.length>24)}function u(t){const e=Number(t);return Number.isFinite(e)?Number.isInteger(e)?e.toLocaleString("zh-CN"):e.toLocaleString("zh-CN",{maximumFractionDigits:2}):"--"}return(t,e)=>(g(),h("div",{class:j(["smart-chart-card",{"is-horizontal":w.value}])},[y("div",G,[y("div",null,[y("strong",null,x(a.chart.title),1),S.value?(g(),h("span",I,x(S.value),1)):_("",!0)]),a.chart.unit?(g(),h("em",M,x(a.chart.unit),1)):_("",!0)]),V(E(q),{class:"smart-chart",option:A.value,autoresize:""},null,8,["option"])],2))}};export{Q as default};

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

File diff suppressed because one or more lines are too long

@ -1 +1 @@
var m=(v,d,n)=>new Promise((i,a)=>{var u=l=>{try{r(n.next(l))}catch(t){a(t)}},o=l=>{try{r(n.throw(l))}catch(t){a(t)}},r=l=>l.done?i(l.value):Promise.resolve(l.value).then(u,o);r((n=n.apply(v,d)).next())});import{_ as x,J as w,K as h,e as M,o as _,c as f,a as e,y as S,z as g,A as y,t as b,g as V,d as p,M as k}from"./index-1783352479097.js";const B={class:"login-screen"},D={class:"login-shell"},R={class:"login-field"},U={class:"login-field"},q={key:0,class:"login-error"},A=["disabled"],C={__name:"index",setup(v){const d=w(),n=h(),i=p(""),a=p(""),u=p(!1),o=p(""),r=M(()=>{const t=typeof d.query.redirect=="string"?decodeURIComponent(d.query.redirect):"/platform";return t.startsWith("/login")?"/platform":t||"/platform"});function l(){return m(this,null,function*(){if(o.value="",!i.value||!a.value){o.value="请输入账号和密码。";return}u.value=!0;try{yield k(i.value,a.value),n.replace(r.value)}catch(t){o.value=(t==null?void 0:t.message)||"登录失败,请稍后再试。"}finally{u.value=!1}})}return(t,s)=>(_(),f("div",B,[e("div",D,[s[5]||(s[5]=e("div",{class:"login-brand"},[e("span",null,"红原县数字畜牧业监管平台"),e("small",null,"Hongyuan Digital Animal Husbandry Supervision Platform")],-1)),e("form",{class:"login-panel",onSubmit:S(l,["prevent"])},[s[4]||(s[4]=e("div",{class:"login-panel-title"},"用户登录",-1)),e("label",R,[s[2]||(s[2]=e("span",null,"账号",-1)),g(e("input",{"onUpdate:modelValue":s[0]||(s[0]=c=>i.value=c),autocomplete:"username",autofocus:"",placeholder:"请输入账号"},null,512),[[y,i.value,void 0,{trim:!0}]])]),e("label",U,[s[3]||(s[3]=e("span",null,"密码",-1)),g(e("input",{"onUpdate:modelValue":s[1]||(s[1]=c=>a.value=c),autocomplete:"current-password",placeholder:"请输入密码",type:"password"},null,512),[[y,a.value]])]),o.value?(_(),f("div",q,b(o.value),1)):V("",!0),e("button",{class:"login-submit",disabled:u.value,type:"submit"},b(u.value?"登录中":"登录"),9,A)],32)])]))}},N=x(C,[["__scopeId","data-v-8ebd0d6e"]]);export{N as default}; var m=(v,d,n)=>new Promise((i,a)=>{var u=l=>{try{r(n.next(l))}catch(t){a(t)}},o=l=>{try{r(n.throw(l))}catch(t){a(t)}},r=l=>l.done?i(l.value):Promise.resolve(l.value).then(u,o);r((n=n.apply(v,d)).next())});import{_ as x,I as w,J as h,e as M,o as _,c as f,a as e,y as S,z as g,A as y,t as b,g as V,d as p,M as k}from"./index-1783400325510.js";const B={class:"login-screen"},D={class:"login-shell"},I={class:"login-field"},R={class:"login-field"},U={key:0,class:"login-error"},q=["disabled"],A={__name:"index",setup(v){const d=w(),n=h(),i=p(""),a=p(""),u=p(!1),o=p(""),r=M(()=>{const t=typeof d.query.redirect=="string"?decodeURIComponent(d.query.redirect):"/platform";return t.startsWith("/login")?"/platform":t||"/platform"});function l(){return m(this,null,function*(){if(o.value="",!i.value||!a.value){o.value="请输入账号和密码。";return}u.value=!0;try{yield k(i.value,a.value),n.replace(r.value)}catch(t){o.value=(t==null?void 0:t.message)||"登录失败,请稍后再试。"}finally{u.value=!1}})}return(t,s)=>(_(),f("div",B,[e("div",D,[s[5]||(s[5]=e("div",{class:"login-brand"},[e("span",null,"红原县数字畜牧业监管平台"),e("small",null,"Hongyuan Digital Animal Husbandry Supervision Platform")],-1)),e("form",{class:"login-panel",onSubmit:S(l,["prevent"])},[s[4]||(s[4]=e("div",{class:"login-panel-title"},"用户登录",-1)),e("label",I,[s[2]||(s[2]=e("span",null,"账号",-1)),g(e("input",{"onUpdate:modelValue":s[0]||(s[0]=c=>i.value=c),autocomplete:"username",autofocus:"",placeholder:"请输入账号"},null,512),[[y,i.value,void 0,{trim:!0}]])]),e("label",R,[s[3]||(s[3]=e("span",null,"密码",-1)),g(e("input",{"onUpdate:modelValue":s[1]||(s[1]=c=>a.value=c),autocomplete:"current-password",placeholder:"请输入密码",type:"password"},null,512),[[y,a.value]])]),o.value?(_(),f("div",U,b(o.value),1)):V("",!0),e("button",{class:"login-submit",disabled:u.value,type:"submit"},b(u.value?"登录中":"登录"),9,q)],32)])]))}},N=x(A,[["__scopeId","data-v-8ebd0d6e"]]);export{N as default};

@ -1 +1 @@
.login-screen[data-v-8ebd0d6e]{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(180deg,rgba(4,16,38,.1),rgba(2,8,22,.62)),url(./bg-3acb94e3-balabala-1783352479097.png) center/cover no-repeat,#05142f;color:#fff}.login-screen[data-v-8ebd0d6e]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(0,0,0,.46),transparent 42%,rgba(0,0,0,.35)),radial-gradient(circle at 52% 46%,rgba(48,220,255,.16),transparent 32%)}.login-shell[data-v-8ebd0d6e]{position:relative;z-index:1;width:min(980px,100vw - 48px);display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:56px;align-items:center}.login-brand[data-v-8ebd0d6e]{display:flex;flex-direction:column;gap:14px;min-width:0;text-shadow:0 0 20px rgba(48,220,255,.36)}.login-brand span[data-v-8ebd0d6e]{font-size:42px;line-height:1.2;font-weight:700}.login-brand small[data-v-8ebd0d6e]{color:#c4f3feb8;font-size:13px;letter-spacing:0}.login-panel[data-v-8ebd0d6e]{width:360px;padding:30px 28px 28px;border:1px solid rgba(48,220,255,.34);background:rgba(3,14,32,.82);box-shadow:0 24px 70px #00000057,inset 0 0 28px #30dcff14;box-sizing:border-box}.login-panel-title[data-v-8ebd0d6e]{margin-bottom:26px;color:#fff;font-size:22px;font-weight:700;text-align:center}.login-field[data-v-8ebd0d6e]{display:block;margin-bottom:18px}.login-field span[data-v-8ebd0d6e]{display:block;margin-bottom:8px;color:#c4f3fec7;font-size:13px}.login-field input[data-v-8ebd0d6e]{width:100%;height:42px;padding:0 12px;border:1px solid rgba(48,220,255,.26);outline:none;background:rgba(0,10,24,.62);color:#fff;font-size:15px;box-sizing:border-box}.login-field input[data-v-8ebd0d6e]:focus{border-color:#30dcffb8;box-shadow:0 0 0 2px #30dcff1f}.login-error[data-v-8ebd0d6e]{min-height:20px;margin:-4px 0 12px;color:#ffcf8a;font-size:13px;line-height:20px}.login-submit[data-v-8ebd0d6e]{width:100%;height:44px;border:1px solid rgba(48,220,255,.52);background:linear-gradient(90deg,rgba(24,140,196,.92),rgba(37,204,218,.92));color:#fff;cursor:pointer;font-size:16px;font-weight:700}.login-submit[data-v-8ebd0d6e]:disabled{cursor:not-allowed;opacity:.68}@media (max-width: 820px){.login-shell[data-v-8ebd0d6e]{grid-template-columns:1fr;gap:28px}.login-brand span[data-v-8ebd0d6e]{font-size:30px}.login-panel[data-v-8ebd0d6e]{width:100%}} .login-screen[data-v-8ebd0d6e]{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(180deg,rgba(4,16,38,.1),rgba(2,8,22,.62)),url(./bg-3acb94e3-balabala-1783400325510.png) center/cover no-repeat,#05142f;color:#fff}.login-screen[data-v-8ebd0d6e]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(0,0,0,.46),transparent 42%,rgba(0,0,0,.35)),radial-gradient(circle at 52% 46%,rgba(48,220,255,.16),transparent 32%)}.login-shell[data-v-8ebd0d6e]{position:relative;z-index:1;width:min(980px,100vw - 48px);display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:56px;align-items:center}.login-brand[data-v-8ebd0d6e]{display:flex;flex-direction:column;gap:14px;min-width:0;text-shadow:0 0 20px rgba(48,220,255,.36)}.login-brand span[data-v-8ebd0d6e]{font-size:42px;line-height:1.2;font-weight:700}.login-brand small[data-v-8ebd0d6e]{color:#c4f3feb8;font-size:13px;letter-spacing:0}.login-panel[data-v-8ebd0d6e]{width:360px;padding:30px 28px 28px;border:1px solid rgba(48,220,255,.34);background:rgba(3,14,32,.82);box-shadow:0 24px 70px #00000057,inset 0 0 28px #30dcff14;box-sizing:border-box}.login-panel-title[data-v-8ebd0d6e]{margin-bottom:26px;color:#fff;font-size:22px;font-weight:700;text-align:center}.login-field[data-v-8ebd0d6e]{display:block;margin-bottom:18px}.login-field span[data-v-8ebd0d6e]{display:block;margin-bottom:8px;color:#c4f3fec7;font-size:13px}.login-field input[data-v-8ebd0d6e]{width:100%;height:42px;padding:0 12px;border:1px solid rgba(48,220,255,.26);outline:none;background:rgba(0,10,24,.62);color:#fff;font-size:15px;box-sizing:border-box}.login-field input[data-v-8ebd0d6e]:focus{border-color:#30dcffb8;box-shadow:0 0 0 2px #30dcff1f}.login-error[data-v-8ebd0d6e]{min-height:20px;margin:-4px 0 12px;color:#ffcf8a;font-size:13px;line-height:20px}.login-submit[data-v-8ebd0d6e]{width:100%;height:44px;border:1px solid rgba(48,220,255,.52);background:linear-gradient(90deg,rgba(24,140,196,.92),rgba(37,204,218,.92));color:#fff;cursor:pointer;font-size:16px;font-weight:700}.login-submit[data-v-8ebd0d6e]:disabled{cursor:not-allowed;opacity:.68}@media (max-width: 820px){.login-shell[data-v-8ebd0d6e]{grid-template-columns:1fr;gap:28px}.login-brand span[data-v-8ebd0d6e]{font-size:30px}.login-panel[data-v-8ebd0d6e]{width:100%}}

@ -6,8 +6,8 @@
<link rel="icon" type="image/svg+xml" href="./vite.svg" /> <link rel="icon" type="image/svg+xml" href="./vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>红原县数字畜牧业监管平台</title> <title>红原县数字畜牧业监管平台</title>
<script type="module" crossorigin src="./assets/index-1783352479097.js"></script> <script type="module" crossorigin src="./assets/index-1783400325510.js"></script>
<link rel="stylesheet" href="./assets/index-47d6f37a-balabala-1783352479097.css"> <link rel="stylesheet" href="./assets/index-47d6f37a-balabala-1783400325510.css">
</head> </head>
<body> <body>

@ -119,7 +119,7 @@ function withStockCounts(rows, total) {
export const herdStructureRows = withStockCounts( export const herdStructureRows = withStockCounts(
[ [
{ key: "fertileCow", name: "适龄能繁母牛", ratio: 44.8 }, { key: "fertileCow", name: "适龄能繁母牛", ratio: 44.8 },
{ key: "meatBull", name: "肉公牛", ratio: 15.2 }, { key: "meatBull", name: "麦洼公牦牛", ratio: 15.2 },
{ key: "breedingBull", name: "种公牛", ratio: 3.1 }, { key: "breedingBull", name: "种公牛", ratio: 3.1 },
{ key: "femaleCalf", name: "母犊牛", ratio: 14.9 }, { key: "femaleCalf", name: "母犊牛", ratio: 14.9 },
{ key: "maleCalf", name: "公犊牛", ratio: 15.1 }, { key: "maleCalf", name: "公犊牛", ratio: 15.1 },

@ -7,7 +7,7 @@
:active="props.active" :active="props.active"
:tile-url-template="pastureMapTileUrlTemplate" :tile-url-template="pastureMapTileUrlTemplate"
:center="pastureOlCenter" :center="pastureOlCenter"
:initial-zoom="18" :initial-zoom="9"
:max-zoom="21" :max-zoom="21"
:overlay-layer="pastureMapLayer" :overlay-layer="pastureMapLayer"
:overlay-layers="pastureMapLayers" :overlay-layers="pastureMapLayers"
@ -182,14 +182,14 @@ const apiProfile = ref(pastureFallbackProfile)
const pastureRows = ref(pastureListRows) const pastureRows = ref(pastureListRows)
const pastureBoundaryLayerKey = "pasture-grassland-boundary" const pastureBoundaryLayerKey = "pasture-grassland-boundary"
const pastureYakLayerKey = "pasture-yak-marks-layer" const pastureYakLayerKey = "pasture-yak-marks-layer"
const activeLayerKeys = ref([pastureBoundaryLayerKey, pastureYakLayerKey]) const activeLayerKeys = ref([])
const selectedLegendKey = ref("") const selectedLegendKey = ref("")
const pastureTopStatNames = ["牧户数量", "户均牦牛头数", "户均草地面积", "联户数量"] const pastureTopStatNames = ["牧户数量", "户均牦牛头数", "户均草地面积", "联户数量"]
const pasturePalette = ["#23f6c8", "#35d8ff", "#f0d96a", "#76e36b", "#ff9a5c", "#a59cff", "#20e5c4"] const pasturePalette = ["#23f6c8", "#35d8ff", "#f0d96a", "#76e36b", "#ff9a5c", "#a59cff", "#20e5c4"]
const pastureVideoElementId = `pasture-video-player-${Math.random().toString(36).slice(2)}` const pastureVideoElementId = `pasture-video-player-${Math.random().toString(36).slice(2)}`
const pastureVideoLoadTimeoutMs = 12000 const pastureVideoLoadTimeoutMs = 12000
const pastureMapTileUrlTemplate = "https://qkl-map.oss-cn-chengdu.aliyuncs.com/hy-result/{z}/{x}/{y}.png" const pastureMapTileUrlTemplate = "https://qkl-map.oss-cn-chengdu.aliyuncs.com/hy-result/{z}/{x}/{y}.png"
const pastureOlCenter = [102.804028, 33.250881] const pastureOlCenter = [103.07984, 33.029058]
const pastureBoundarySldBody = `<?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>t_grassland_result_caodi</Name><UserStyle><Title>pasture boundary</Title><FeatureTypeStyle><Rule><PolygonSymbolizer><Fill><CssParameter name="fill">#FFE35A</CssParameter><CssParameter name="fill-opacity">0</CssParameter></Fill><Stroke><CssParameter name="stroke">#FFE35A</CssParameter><CssParameter name="stroke-width">2.4</CssParameter><CssParameter name="stroke-opacity">0.98</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>` const pastureBoundarySldBody = `<?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>t_grassland_result_caodi</Name><UserStyle><Title>pasture boundary</Title><FeatureTypeStyle><Rule><PolygonSymbolizer><Fill><CssParameter name="fill">#FFE35A</CssParameter><CssParameter name="fill-opacity">0</CssParameter></Fill><Stroke><CssParameter name="stroke">#FFE35A</CssParameter><CssParameter name="stroke-width">2.4</CssParameter><CssParameter name="stroke-opacity">0.98</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>`
const pastureYakRecognitionLayer = { const pastureYakRecognitionLayer = {
key: pastureYakLayerKey, key: pastureYakLayerKey,
@ -494,10 +494,9 @@ const pastureListPanel = computed(() => ({
maxRows: 300, maxRows: 300,
searchKeys: ["name", "herdsmanName", "herdsman_name", "phone", "phonenumber", "idCard", "id_card", "township", "id", "grasslandArea", "searchText"], searchKeys: ["name", "herdsmanName", "herdsman_name", "phone", "phonenumber", "idCard", "id_card", "township", "id", "grasslandArea", "searchText"],
columns: [ columns: [
{ key: "name", label: "牧户名称", field: "name", width: "30%" }, { key: "name", label: "牧户名称", field: "name", width: "42%" },
{ key: "grasslandArea", label: "草场面积", field: "grasslandArea", width: "28%", align: "right", strong: true, format: "number", unit: "亩" }, { key: "township", label: "区域", field: "township", width: "36%" },
{ key: "township", label: "区域", field: "township", width: "24%" }, { key: "locate", label: "定位", field: "locateText", width: "22%", align: "center", fallback: "定位", icon: "locate" },
{ key: "locate", label: "定位", field: "locateText", width: "18%", align: "center", fallback: "定位", icon: "locate" },
], ],
rows: pastureRows.value, rows: pastureRows.value,
})) }))

@ -102,8 +102,8 @@ const TOWN_LABEL_LAYER_Z_INDEX = 240
const boundaryFormat = new GeoJSON() const boundaryFormat = new GeoJSON()
const boundaryGlowStyle = new Style({ const boundaryGlowStyle = new Style({
stroke: new Stroke({ stroke: new Stroke({
color: "rgba(1, 18, 27, 0.9)", color: "rgba(1, 18, 27, 0.72)",
width: 7, width: 3.4,
}), }),
}) })
const boundaryLineStyle = new Style({ const boundaryLineStyle = new Style({
@ -111,8 +111,8 @@ const boundaryLineStyle = new Style({
color: "rgba(3, 18, 31, 0)", color: "rgba(3, 18, 31, 0)",
}), }),
stroke: new Stroke({ stroke: new Stroke({
color: "rgba(126, 251, 246, 0.98)", color: "rgba(126, 251, 246, 0.9)",
width: 2.2, width: 1.15,
}), }),
}) })
const pastureFocusStyle = [ const pastureFocusStyle = [

@ -45,7 +45,7 @@ export const townRows = scaleTownRowsToTotal(townRecognitionRows, estimatedStock
export const yakStructureBaselineRows = [ export const yakStructureBaselineRows = [
{ key: "fertileCow", name: "适龄能繁母牛", ratio: 45, source: "畜群结构比例表" }, { key: "fertileCow", name: "适龄能繁母牛", ratio: 45, source: "畜群结构比例表" },
{ key: "meatBull", name: "肉公牛", ratio: 15, source: "畜群结构比例表" }, { key: "meatBull", name: "麦洼公牦牛", ratio: 15, source: "畜群结构比例表" },
{ key: "breedingBull", name: "种公牛", ratio: 3, source: "畜群结构比例表" }, { key: "breedingBull", name: "种公牛", ratio: 3, source: "畜群结构比例表" },
{ key: "femaleCalf", name: "母犊牛", ratio: 15, source: "畜群结构比例表" }, { key: "femaleCalf", name: "母犊牛", ratio: 15, source: "畜群结构比例表" },
{ key: "maleCalf", name: "公犊牛", ratio: 15, source: "畜群结构比例表" }, { key: "maleCalf", name: "公犊牛", ratio: 15, source: "畜群结构比例表" },
@ -54,7 +54,7 @@ export const yakStructureBaselineRows = [
export const yakStructureRatioRows = [ export const yakStructureRatioRows = [
{ key: "fertileCow", name: "适龄能繁母牛", ratio: 44.8, source: "畜群结构比例表" }, { key: "fertileCow", name: "适龄能繁母牛", ratio: 44.8, source: "畜群结构比例表" },
{ key: "meatBull", name: "肉公牛", ratio: 15.2, source: "畜群结构比例表" }, { key: "meatBull", name: "麦洼公牦牛", ratio: 15.2, source: "畜群结构比例表" },
{ key: "breedingBull", name: "种公牛", ratio: 3.1, source: "畜群结构比例表" }, { key: "breedingBull", name: "种公牛", ratio: 3.1, source: "畜群结构比例表" },
{ key: "femaleCalf", name: "母犊牛", ratio: 14.9, source: "畜群结构比例表" }, { key: "femaleCalf", name: "母犊牛", ratio: 14.9, source: "畜群结构比例表" },
{ key: "maleCalf", name: "公犊牛", ratio: 15.1, source: "畜群结构比例表" }, { key: "maleCalf", name: "公犊牛", ratio: 15.1, source: "畜群结构比例表" },
@ -113,7 +113,7 @@ export const forecastPeriods = [
] ]
export const forecastFactorRows = [ export const forecastFactorRows = [
{ name: "繁殖补充", value: 86 }, { name: "新生牛犊", value: 86 },
{ name: "出栏周转", value: 62 }, { name: "出栏周转", value: 62 },
{ name: "死亡淘汰", value: 48 }, { name: "死亡淘汰", value: 48 },
{ name: "母牛基础", value: 91 }, { name: "母牛基础", value: 91 },

@ -8,7 +8,7 @@
:active-layer="threeYakMapLayer" :active-layer="threeYakMapLayer"
:map-ranking="threeYakMapRanking" :map-ranking="threeYakMapRanking"
:tile-url-template="yakMapTileUrlTemplate" :tile-url-template="yakMapTileUrlTemplate"
:admin-boundary-line-scale="2.4" :admin-boundary-line-scale="1.35"
@layer-status="handleYakLayerStatus" @layer-status="handleYakLayerStatus"
@tile-status="handleYakTileStatus" @tile-status="handleYakTileStatus"
/> />
@ -965,7 +965,7 @@ const epidemicVaccineTypeCount = computed(() => getEpidemicVaccineTypeCount(epid
const epidemicTopVaccineName = computed(() => epidemicMedicineRows.value.find((item) => item.name && item.name !== "未填写")?.name || "-") const epidemicTopVaccineName = computed(() => epidemicMedicineRows.value.find((item) => item.name && item.name !== "未填写")?.name || "-")
const epidemicRecordTotal = computed(() => getMetricNumber(epidemicMetrics.value, ["total", "vaccine"])) const epidemicRecordTotal = computed(() => getMetricNumber(epidemicMetrics.value, ["total", "vaccine"]))
const epidemicOwnerTotal = computed(() => getMetricNumber(epidemicMetrics.value, ["owners"])) const epidemicOwnerTotal = computed(() => getMetricNumber(epidemicMetrics.value, ["owners"]))
const epidemicVillageTotal = computed(() => getMetricNumber(epidemicMetrics.value, ["villages"])) const epidemicVillageTotal = computed(() => Number(activeEpidemicYear.value) === 2026 ? 10 : getMetricNumber(epidemicMetrics.value, ["villages"]))
const epidemicTownCount = computed(() => epidemicTownRows.value.length) const epidemicTownCount = computed(() => epidemicTownRows.value.length)
const epidemicTopTownName = computed(() => epidemicTownRows.value[0]?.name || "-") const epidemicTopTownName = computed(() => epidemicTownRows.value[0]?.name || "-")
const epidemicLatestDate = computed(() => { const epidemicLatestDate = computed(() => {
@ -1665,7 +1665,7 @@ const forecastTrendOption = computed(() => {
`${row.label}${granularity.unit}度预测`, `${row.label}${granularity.unit}度预测`,
`预测存栏:${formatNumber(row.close)}`, `预测存栏:${formatNumber(row.close)}`,
`较上期:${formatSigned(change)}`, `较上期:${formatSigned(change)}`,
`繁殖补充${formatNumber(row.birth)}`, `新生牛犊${formatNumber(row.birth)}`,
`出栏扣减:${formatNumber(row.outflow)}`, `出栏扣减:${formatNumber(row.outflow)}`,
].join("<br/>") ].join("<br/>")
}, },
@ -1673,7 +1673,7 @@ const forecastTrendOption = computed(() => {
legend: { legend: {
top: 4, top: 4,
right: 8, right: 8,
data: ["预测存栏", "繁殖补充", "出栏扣减"], data: ["预测存栏", "新生牛犊", "出栏扣减"],
itemWidth: 12, itemWidth: 12,
itemHeight: 8, itemHeight: 8,
textStyle: { color: "rgba(222, 250, 255, 0.78)", fontSize: 10 }, textStyle: { color: "rgba(222, 250, 255, 0.78)", fontSize: 10 },
@ -1731,7 +1731,7 @@ const forecastTrendOption = computed(() => {
itemStyle: { color: "#30dcff", borderColor: "rgba(3, 18, 28, 0.9)", borderWidth: 1 }, itemStyle: { color: "#30dcff", borderColor: "rgba(3, 18, 28, 0.9)", borderWidth: 1 },
tooltip: { show: false }, tooltip: { show: false },
}, },
buildLineSeries("繁殖补充", series.births, "#ffd76c", 1), buildLineSeries("新生牛犊", series.births, "#ffd76c", 1),
buildLineSeries("出栏扣减", series.outflow, "#ff8f6b", 1), buildLineSeries("出栏扣减", series.outflow, "#ff8f6b", 1),
], ],
} }
@ -1891,7 +1891,7 @@ const flowComparisonOption = computed(() => ({
}, },
series: [ series: [
{ {
name: "繁殖补充", name: "新生牛犊",
type: "bar", type: "bar",
barWidth: 12, barWidth: 12,
data: forecastPeriods.map((item) => item.births), data: forecastPeriods.map((item) => item.births),
@ -4082,7 +4082,7 @@ function emitModuleStats() {
moduleKey: "yak-management", moduleKey: "yak-management",
items: [ items: [
{ zh: "预测期末存栏", value: activePeriod.value.stock, unit: "头" }, { zh: "预测期末存栏", value: activePeriod.value.stock, unit: "头" },
{ zh: "繁殖补充", value: activePeriod.value.births, unit: "头" }, { zh: "新生牛犊", value: activePeriod.value.births, unit: "头" },
{ zh: "出栏流出", value: activePeriod.value.outflow, unit: "头" }, { zh: "出栏流出", value: activePeriod.value.outflow, unit: "头" },
{ zh: "预测净变化", value: change, unit: "头" }, { zh: "预测净变化", value: change, unit: "头" },
], ],
@ -4104,9 +4104,9 @@ function emitModuleStats() {
emit("module-stats", { emit("module-stats", {
moduleKey: "yak-management", moduleKey: "yak-management",
items: [ items: [
{ zh: "无人机识别总数", value: recognitionTotal, unit: "头" }, { zh: "图像识别总数", value: recognitionTotal, unit: "头" },
{ zh: "专家共识模型修正", value: stockNetAdjustment.value, unit: "头" }, { zh: "模型修正总数", value: stockNetAdjustment.value, unit: "头" },
{ zh: "当前存栏预估数量", value: estimatedStock, unit: "头" }, { zh: "当前存栏数量", value: estimatedStock, unit: "头" },
], ],
}) })
} }
@ -4495,9 +4495,9 @@ function getStructureCategoryDefinitions() {
}, },
{ {
key: "meatBull", key: "meatBull",
name: "肉公牛", name: "麦洼公牦牛",
color: "#7aa7ff", color: "#7aa7ff",
matcher: (key, name) => key === "meatBull" || name.includes("肉公牛"), matcher: (key, name) => key === "meatBull" || name.includes("肉公牛") || name.includes("麦洼公牦牛"),
}, },
{ {
key: "breedingBull", key: "breedingBull",
@ -4711,7 +4711,7 @@ function structureSummaryBarWidth(item) {
function buildForecastWaterfallRows(period = {}) { function buildForecastWaterfallRows(period = {}) {
const startStock = estimatedStock const startStock = estimatedStock
const deltas = [ const deltas = [
{ key: "births", name: "繁殖补充", delta: Number(period.births || 0), color: "#27f0c0" }, { key: "births", name: "新生牛犊", delta: Number(period.births || 0), color: "#27f0c0" },
{ key: "outflow", name: "出栏流出", delta: -Number(period.outflow || 0), color: "#ff8f6b" }, { key: "outflow", name: "出栏流出", delta: -Number(period.outflow || 0), color: "#ff8f6b" },
{ key: "correction", name: "修正损耗", delta: Number(period.correction || 0), color: "#ffd76c" }, { key: "correction", name: "修正损耗", delta: Number(period.correction || 0), color: "#ffd76c" },
] ]

Loading…
Cancel
Save