feat: update resource dashboard visuals

V2.0
M先生 3 weeks ago
parent a34d7b57ce
commit 417d7a4942
  1. 36
      SCREEN2_VISUAL_STANDARD.md
  2. 218
      design-qa.md
  3. 0
      docs/assets/AlibabaPuHuiTi-14435b65-balabala-1783903470255.woff2
  4. 0
      docs/assets/AlimamaShuHeiTi-Bold-6401fd0d-balabala-1783903470255.ttf
  5. 0
      docs/assets/AlimamaShuHeiTi-Bold-a95023f2-balabala-1783903470255.woff
  6. 0
      docs/assets/AlimamaShuHeiTi-Bold-fa4a258d-balabala-1783903470255.woff2
  7. 0
      docs/assets/SmartChartRenderer-7a3a96b9-balabala-1783903470255.css
  8. 2
      docs/assets/SmartChartRenderer-949ad5af-1783903470255.js
  9. 0
      docs/assets/area-b57940eb-balabala-1783903470255.png
  10. 0
      docs/assets/bg-3acb94e3-balabala-1783903470255.png
  11. 0
      docs/assets/bottom-menu-arrow-big-180b7071-balabala-1783903470255.svg
  12. 0
      docs/assets/bottom-menu-arrow-small-19304179-balabala-1783903470255.svg
  13. 0
      docs/assets/bottom-menu-bg-b465793d-balabala-1783903470255.png
  14. 0
      docs/assets/bottom-menu-btn-ee5c8064-balabala-1783903470255.png
  15. 0
      docs/assets/bottom-menu-btn-hover-df33e514-balabala-1783903470255.png
  16. 1
      docs/assets/chartTheme-73f6d8d0-balabala-1783903470255.css
  17. 1
      docs/assets/chartTheme-812dab15-balabala-1783400325510.css
  18. 348
      docs/assets/chartTheme-eaeb803b-1783903470255.js
  19. 0
      docs/assets/chinaBlurLine-1a2cbc0f-balabala-1783903470255.png
  20. 0
      docs/assets/content-bottom-left-arrow-3a8a61f3-balabala-1783903470255.svg
  21. 0
      docs/assets/content-bottom-right-arrow-a3c5270d-balabala-1783903470255.svg
  22. 0
      docs/assets/content-middle-line-162bc0d5-balabala-1783903470255.svg
  23. 0
      docs/assets/focus_bg-b6803e2d-balabala-1783903470255.png
  24. 0
      docs/assets/focus_move_bg-cf41417a-balabala-1783903470255.png
  25. 0
      docs/assets/header-bg-65b38012-balabala-1783903470255.png
  26. 0
      docs/assets/huiguang-3c5dfda5-balabala-1783903470255.png
  27. 0
      docs/assets/icon1-6f7c222f-balabala-1783903470255.png
  28. 0
      docs/assets/icon2-4f77ccec-balabala-1783903470255.png
  29. 2
      docs/assets/index-0fa9c2f6-balabala-1783903470255.css
  30. 2
      docs/assets/index-1783903470255.js
  31. 1
      docs/assets/index-47d6f37a-balabala-1783400325510.css
  32. 2
      docs/assets/index-584d80b4-1783903470255.js
  33. 4
      docs/assets/index-744ec1b8-1783903470255.js
  34. 1
      docs/assets/index-81ac2587-balabala-1783903470255.css
  35. 0
      docs/assets/index-8d752fbe-balabala-1783903470255.css
  36. 1
      docs/assets/index-a0088dbf-balabala-1783400325510.css
  37. 11352
      docs/assets/index-c46cbb90-1783903470255.js
  38. 1
      docs/assets/index-ef699d05-balabala-1783903470255.css
  39. 0
      docs/assets/leaf-7be9efef-balabala-1783903470255.png
  40. 0
      docs/assets/left-kuang-5d6bd1ae-balabala-1783903470255.svg
  41. 0
      docs/assets/live-scene-1-786cdd0a-balabala-1783903470255.png
  42. 0
      docs/assets/menu-btn-91a961cf-balabala-1783903470255.png
  43. 0
      docs/assets/menu-btn-hover-62eba0bb-balabala-1783903470255.png
  44. 0
      docs/assets/ocean-bg-8c848b8f-balabala-1783903470255.png
  45. 0
      docs/assets/park-ee0533e0-balabala-1783903470255.png
  46. 0
      docs/assets/pathLine2-d4134d4b-balabala-1783903470255.png
  47. 0
      docs/assets/right-kuang-b1937caf-balabala-1783903470255.svg
  48. 0
      docs/assets/ring2-a1b91808-balabala-1783903470255.png
  49. 0
      docs/assets/ring3-fe0f60d7-balabala-1783903470255.png
  50. 0
      docs/assets/ring4-f2e324d6-balabala-1783903470255.png
  51. 0
      docs/assets/rotationBorder1-2ce8e0ef-balabala-1783903470255.png
  52. 0
      docs/assets/rotationBorder2-7496b968-balabala-1783903470255.png
  53. 0
      docs/assets/saoguang-ccf84a88-balabala-1783903470255.svg
  54. 0
      docs/assets/stack-7a426057-balabala-1783903470255.png
  55. 0
      docs/assets/title-zs1-c15a5ee8-balabala-1783903470255.svg
  56. 0
      docs/assets/town-f8c0c9cc-balabala-1783903470255.png
  57. BIN
      docs/assets/xiangfa-breeding-base-03c7f2cb-balabala-1783903470255.png
  58. 0
      docs/assets/yield-66e9af79-balabala-1783903470255.png
  59. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json
  60. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json
  61. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json
  62. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json
  63. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json
  64. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json
  65. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json
  66. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json
  67. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json
  68. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json
  69. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json
  70. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json
  71. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json
  72. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json
  73. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json
  74. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json
  75. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json
  76. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json
  77. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json
  78. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json
  79. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json
  80. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json
  81. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json
  82. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json
  83. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json
  84. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json
  85. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json
  86. 1
      docs/cdn/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json
  87. BIN
      docs/cdn/Cesium/Assets/Images/bing_maps_credit.png
  88. BIN
      docs/cdn/Cesium/Assets/Images/cesium_credit.png
  89. BIN
      docs/cdn/Cesium/Assets/Images/google_earth_credit.png
  90. BIN
      docs/cdn/Cesium/Assets/Images/ion-credit.png
  91. BIN
      docs/cdn/Cesium/Assets/Textures/LensFlare/DirtMask.jpg
  92. BIN
      docs/cdn/Cesium/Assets/Textures/LensFlare/StarBurst.jpg
  93. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg
  94. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg
  95. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg
  96. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg
  97. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg
  98. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg
  99. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg
  100. BIN
      docs/cdn/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,36 @@
# Screen2.0 Visual Standard
This file is a compatibility entry for earlier design notes.
The authoritative standard is now:
- `screen2-ui-standard.md`
- `src/assets/style/screen2-tokens.css`
- `src/utils/screen2Standard.js`
Main scope:
- Home
- Forest-Grass-Wet
- Ecological Protection
- Yak Management
- Pasture Management
- Yak Industry Chain
Excluded from the current unification pass:
- Grass-Livestock Balance
- Smart Management
Key fixed values:
- Viewport: `1920 x 1080`
- Side card width: `398px`
- Side stack: 4 cards per side
- Side card gap: `12px`
- Side top: `128px`
- Card title: `16px`
- Chart axis/unit minimum: `10px`
- Icon style: home top-stat cyan-blue style, weak glow, no colorful icon palette
Do not use the older draft values such as `PingFangSc` only, `8px` unit text, `9px` axis text, or high-saturation yellow/orange/red/purple icon colors.

@ -0,0 +1,218 @@
**Source Visual Truth**
- Reference screenshot: `/Users/mocker/.codex/attachments/448ee497-991a-4afa-b23d-00015b35ab41/image-1.png`
- Reference source: `/Users/mocker/Downloads/ThreeProject-gd_副本/src/components/mCard/index.vue`
- Reference chart source: `/Users/mocker/Downloads/ThreeProject-gd_副本/src/views/gdMap/components/BulkCommoditySalesChart.vue`
**Implementation Evidence**
- Home: `/tmp/screen2-home-bright-pass2-wait.png`
- Forest-Grass-Wet: `/tmp/screen2-forest-grass-wet-bright-check.png`
- Ecological Protection: `/tmp/screen2-ecological-protection-bright-check.png`
- Yak Management: `/tmp/screen2-yak-management-bright-check.png`
- Pasture Management: `/tmp/screen2-pasture-management-bright-check.png`
- Yak Industry Chain before final label fix: `/tmp/screen2-yak-industry-chain-four-card-check.png`
- Yak Industry Chain artificial grassland final: `/tmp/screen2-yak-industry-chain-final-check.png`
- Viewport: `1920x1080`
- Local route base: `http://127.0.0.1:5174/#/platform`
**Checks Completed**
- Card shell uses the reference fill/opacity, with page-level extra `filter`, drop-shadow, and title glow removed.
- Homepage chart labels, dashed grid lines, units, and bar proportions were aligned with the reference chart style.
- `forestGrassWet`, `ecologicalProtection`, `yakManagement`, `pastureManagement`, and `yakIndustryChain` no longer override `m-card` into the darker/blurrier style.
- WebGL pixel ratio cap is now `2`, improving map and canvas sharpness on the 1920x1080 target.
- Yak Industry Chain default stage now has four meaningful left cards:
- 家庭生态牧场乡镇分布
- 标准化建设配置
- 乡镇割草地、储草基地面积
- 草料配套类型占比
- Yak Industry Chain top metric label was shortened from `活动场地及通道` to `活动场地` to avoid text/value collision; the source data field remains unchanged.
**Yak Industry Chain DOM Verification**
- Left card positions: `y=128/367/606/831`, widths about `385px`, four cards present.
- Right list card height: `466px`, matching the previous “最高占据两个卡片高度” direction.
- Top metrics after fix:
- 家庭生态牧场 252处
- 标准化暖棚 61600㎡
- 饲草料库 12000㎡
- 活动场地 108800㎡
- Artificial grassland topic uses business dimensions instead of plot-only wording:
- 人工种草乡镇面积
- 年度项目建设面积
- 建设类型面积
- 作业方式面积
- Artificial grassland top metrics verified in browser:
- 实测种草面积 5.64万亩
- 建设项目 6项
- 覆盖乡镇 7个
- 项目投资 4309.48万元
**Notes**
- The in-app browser screenshot channel timed out after the final HMR refresh on the WebGL-heavy industry page, but DOM verification confirmed the final four-card and label state.
- A standalone Playwright screenshot reached the login page because it had no authenticated session; no browser cookies or local storage were copied.
**Final Result**
- Visual standardization pass: passed for the requested style foundation.
- Remaining product decision: Ecological Protection still contains some low-density/empty-data panels; this pass did not invent new business data for empty modules.
## 2026-07-12 Homepage Brightness Correction
**Source Visual Truth**
- User reference crop: `/var/folders/dh/pf6z830j3w3drsd1k4ncl7br0000gn/T/codex-clipboard-ab9196eb-0d73-4022-9008-0da0dbe7948e.png`
- Reference project: `/Users/mocker/Downloads/ThreeProject-gd_副本`
- Reference card source: `/Users/mocker/Downloads/ThreeProject-gd_副本/src/components/mCard/index.vue`
- Reference chart source: `/Users/mocker/Downloads/ThreeProject-gd_副本/src/views/gdMap/components/BulkCommoditySalesChart.vue`
**Implementation Evidence**
- Browser-rendered homepage: `/tmp/screen2-home-overlay-fixed-loaded.png`
- Full-view comparison: `/tmp/screen2-reference-vs-home-fixed-full.png`
- Focused card comparison: `/tmp/screen2-reference-vs-home-fixed-card.png`
- Browser viewport: `1280x720`; platform design canvas: `1920x1080` through the existing autofit layer.
- State: homepage loaded, left and right panels visible, map animation complete.
**Comparison History**
- Earlier P1: card titles, chart labels, values, and borders were uniformly dimmer than the reference even though `m-card` used the same SVG and body opacity.
- Root cause: `.large-screen-wrap::after` belongs to a shell with `z-index: 3`, while each platform module is a sibling at `z-index: 1`. The background texture therefore covered the entire module in the integrated platform. In the standalone reference page the cards are children above that texture.
- Fix: disable the shell pseudo-element in the integrated platform. Map and module-owned backgrounds remain unchanged; only the unintended foreground veil is removed.
- Post-fix evidence: browser-computed overlay content is `none`; title is `16px/600`, opacity `1`; card body opacity remains the reference value `0.6`.
**Required Fidelity Surfaces**
- Fonts and typography: title size, weight, gradient, chart labels, and values now follow the reference source; ten-town density remains intentionally higher than the five-category reference.
- Spacing and layout: four-card stacks, 398px design width, 12px gaps, and the existing left/right perspective are unchanged.
- Colors and tokens: the foreground dimming veil is removed; card fill, border cyan, title gradient, and chart colors remain source-aligned.
- Image quality: original SVG card assets are byte-identical to the reference project; no replacement raster or CSS approximation was introduced.
- Copy and content: real Hongyuan business titles and ten-town data are preserved.
- Primary interaction and console check: homepage loaded successfully; no browser warnings or errors were recorded.
**Findings**
- No remaining actionable P0/P1/P2 mismatch in the homepage card brightness treatment.
- P3: the ten-town chart necessarily uses smaller labels than the five-item reference chart; this is an intentional data-density difference requested for the project.
final result: passed
## 2026-07-13 Yak Industry Chain Stage Rhythm Pass
**Scope**
- Page: `http://127.0.0.1:5174/#/platform?module=yak-industry-chain`
- Files changed:
- `/Users/mocker/Documents/code/hy-screen/screenV2.0/src/views/yakIndustryChain/data.js`
- `/Users/mocker/Documents/code/hy-screen/screenV2.0/src/views/yakIndustryChain/index.vue`
- `/Users/mocker/Documents/code/hy-screen/screenV2.0/screen2-ui-standard.md`
**Stage Audit**
- Checked all 10 bottom stages: 家庭生态牧场、人工种草、规模化养殖基地、选育/扩繁基地、防灾减灾、奶源站、屠宰与加工、农机装备、牧草交易、社会化服务.
- All left sides render 4 visible cards.
- Generic right-side stages now follow the four-slot rhythm: list card `466px` + `环节核心指标 227px` + `建设要点 239px`.
- Artificial grassland remains four separate right cards; family pasture remains `2+1+1`.
**Fixes**
- Removed accidental `fillHeight` stretching from generic right-side `环节核心指标` and `建设要点`, which had made those cards `306/322px` and broke the four-slot rhythm.
- Added empty-state handling for yak-industry town column panels. When a stage has no positive business data, the panel shows `暂无业务统计数据` instead of an empty coordinate grid.
- Updated the UI standard: no-data charts must not render empty axes/grids.
**Evidence**
- 规模化养殖基地 fixed screenshot: `/tmp/screen2-standard-audit/yak-industry-规模化养殖基地-fixed-20260713.png`
- 奶源站 empty-state screenshot: `/tmp/screen2-standard-audit/yak-industry-奶源站-empty-standard-20260713.png`
- 牧草交易 empty-state screenshot: `/tmp/screen2-standard-audit/yak-industry-牧草交易-empty-standard-20260713.png`
- Browser console error check: no errors.
- Production build check: `npm run build` passed.
final result: passed
## 2026-07-13 Ecological National Park Top Metrics
**Scope**
- Page: `http://127.0.0.1:5174/#/platform?module=ecological-protection&view=national-park`
- File changed: `/Users/mocker/Documents/code/hy-screen/screenV2.0/src/views/platform/index.vue`
- Screenshot evidence: `/tmp/screen2-standard-audit/ecology-national-park-top-metrics-home-style-stable-20260713.png`
**Fix**
- The national park five-metric strip now reuses the homepage top-stat presentation instead of a custom full-width summary band.
- Removed the top-stat sweep pseudo-background inside the platform top metric area so five indicators no longer visually merge into one dark translucent bar.
- Added a compact national-park five-item rule so `公益岗位` stays clear of the right-side cards while preserving the homepage-style icon, label, value and unit.
**Validation**
- Browser check at `1920x1080`: five metrics render as separate homepage-style indicators.
- Computed top metric wrapper: `display: flex`, width `1100px`, no summary-strip background.
- First right-side card begins at `x=1502`; last metric ends at `x=1528`, with text no longer sitting on the right-card title area.
- Browser console error check: no errors.
final result: passed
## 2026-07-13 Yak Management Trade Right Rhythm
**Scope**
- Page: `http://127.0.0.1:5174/#/platform?module=yak-management&view=trade`
- File changed: `/Users/mocker/Documents/code/hy-screen/screenV2.0/src/views/yakManagement/index.vue`
- Screenshot evidence: `/tmp/screen2-standard-audit/yak-trade-right-four-slot-fixed-20260713.png`
**Fix**
- Removed manual height offsets from the trade right column.
- `出栏来源排行` now uses one standard side-card height.
- `交易出证台账` now uses the shared `getScreen2SpanHeight(sideCardHeight, 2)` two-slot formula.
**Validation**
- Browser check at `1920x1080`.
- Right side measured as `出证结构统计 239px` + `出栏来源排行 227px` + `交易出证台账 466px`.
- Left side remains four cards: `246px + 227px + 227px + 246px`.
final result: passed
## 2026-07-13 Cross-Module Four-Card Continuation
**Scope**
- Excluded as requested: Grass-Livestock Balance, Smart Management.
- Checked modules: Home, Forest-Grass-Wet, Ecological Protection, Yak Management, Pasture Management, Yak Industry Chain.
- Viewport: `1920x1080`.
- Local route base: `http://127.0.0.1:5174/#/platform`.
**New Evidence**
- Ecological Protection / National Park right side four cards: `/tmp/screen2-standard-audit/ecological-national-park-right-four-20260713.png`
- Ecological Protection / Ecological Redline right side four cards: `/tmp/screen2-standard-audit/ecology-ecological-redline-right-four-20260713.png`
- Ecological Protection / Natural Protected Area right side four cards: `/tmp/screen2-standard-audit/ecology-natural-protected-area-right-four-20260713.png`
- Yak Management / Epidemic right side four-slot layout: `/tmp/screen2-standard-audit/yak-management-epidemic-map-visible-check-20260713.png`
- Yak Industry Chain / Artificial Grassland real topic click verification: `/tmp/screen2-standard-audit/yak-industry-artificial-real-20260713.png`
- Forest-Grass-Wet shared renderer cleanup: `/tmp/screen2-standard-audit/forest-grass-wet-overview-shared-style-20260712.png`
- Pasture Management glow cleanup: `/tmp/screen2-standard-audit/pasture-management-glow-cleanup-20260712.png`
**Fixes Completed**
- Ecological Protection national park right side no longer has a blank fourth slot; added `草畜承载能力` as a metric card.
- Ecological redline and natural protected area right side now use four cards:
- `草原类型`: ring chart
- `草原级占比`: rank bar
- `林地质量`: heat/grade grid
- `林草湿面积构成`: structure band
- Yak Management epidemic view now uses `乡镇覆盖均衡 + 村级覆盖进度 + 防疫记录台账(2 slots)` instead of one full-height ledger.
- Yak Industry Chain artificial grassland topic was verified through the real bottom topic switch, not a guessed URL parameter; left and right sides both render four cards.
- Shared `BusinessPanelRenderer` glow was reduced for heat cells, structure bands and split rows so retained charts match the current restrained cyan-blue system.
**Open Follow-Up**
- Engineering Analysis is an independent workspace rather than a side-card dashboard; it should be reviewed with its own workflow standard instead of forcing four side cards.
- Full production deployment was not performed in this pass.
## 2026-07-12 Homepage Chart Variety Pass
**Scope**
- Page: `http://127.0.0.1:5174/#/platform?module=home`
- Source file: `/Users/mocker/Documents/code/hy-screen/screenV2.0/src/views/home/index.vue`
- Screenshot evidence: `/tmp/screen2-home-left-chart-stack-qa.png`
**Design Rule**
- The same screen must not repeat the exact same chart expression for adjacent cards.
- Chart style differences must come from the business reading task, not only from color changes.
**Homepage Mapping**
- 草地面积: vertical bar, used for ten-town area comparison without an extra trend overlay.
- 湿地面积: water-style capsule vertical bar, aligned with the resource-area comparison grammar but visually distinct from grassland.
- 草原类别: category proportion card, used for structure reading.
- 草地生产力: area line chart, used for productivity trend-like comparison.
- 牦牛存栏分布: vertical bar plus trend line, used for town livestock scale comparison and distribution fluctuation.
- 畜群结构: donut chart, used for herd composition.
- 草畜平衡: gauge cards, used for status comparison.
**Parameter Checks**
- Grassland and wetland both use full-width vertical composition, avoiding the right-side emptiness caused by the previous horizontal rank layout.
- Wetland uses a wider blue water-column treatment with rounded caps, while grassland keeps the slimmer square-cap column treatment.
- Yak stock distribution carries the subtle trend line so the page still has one bar-line combination without overloading both left resource cards.
- Background bars are dimmed to keep the data layer dominant.
- Browser console error check: no errors.
final result: passed

@ -1,2 +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}
var W=Object.defineProperty,D=Object.defineProperties;var R=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var L=(a,r,o)=>r in a?W(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)=>D(a,R(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-1783903470255.js";import{aW as q}from"./chartTheme-eaeb803b-1783903470255.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

@ -0,0 +1 @@
.m-card{position:relative;overflow:visible}.m-card-hd{position:absolute;left:0;top:0;width:100%;z-index:2;pointer-events:none}.m-card-hd-bg{position:absolute;left:0;top:0}.m-card-hd-zs1{position:absolute;right:12px;top:10px;width:120px;height:11px}.m-card-hd-title{position:absolute;left:22px;color:var(--screen-color-text-strong, #fff);font-size:var(--screen-card-title-size, 16px);letter-spacing:1.6px;height:36px;line-height:var(--screen-card-title-line-height, 32px);font-family:var(--screen-font-ui, "Alibaba PuHuiTi", "PingFang SC", "Microsoft YaHei", sans-serif);font-weight:var(--screen-card-title-weight, 600);background:-webkit-linear-gradient(rgb(219,249,255),rgb(169,240,255));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.m-card-hd-extra{position:absolute;top:5px;right:14px;z-index:4;height:24px;pointer-events:auto}.m-card-hd .saoguang{position:absolute;left:0;top:0;width:100%;height:36px;overflow:hidden;pointer-events:none}.m-card-hd .saoguang img{width:89px;height:36px;animation:saoguangMove 6s linear infinite}.m-card-bd{position:absolute;left:0;top:0;z-index:1}.m-card-bd-bg{position:absolute;left:0;top:0}.m-card-bd-bottom-left-arrow{position:absolute;left:4px;bottom:4px}.m-card-bd-bottom-right-arrow{position:absolute;right:4px;bottom:4px}.m-card-bd-middle-left-line{position:absolute;left:0;top:50%;margin-top:-35px}.m-card-bd-middle-right-line{position:absolute;right:0;top:50%;margin-top:-35px}.m-card-bd-content{position:absolute;left:0;top:36px;right:0;bottom:0;pointer-events:all;overflow:hidden}@keyframes saoguangMove{0%{transform:translate(-160px)}to{transform:translate(2000px)}}.three-pie-wrap{position:relative;width:100%;height:100%;z-index:2}.three-pie{width:100%;height:100%}.three-pie-slot{position:absolute;left:0;top:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;pointer-events:none}

@ -1 +0,0 @@
.m-card{position:relative;overflow:visible}.m-card-hd{position:absolute;left:0;top:0;width:100%;height:36px;z-index:2;pointer-events:none}.m-card-hd-bg{position:absolute;left:0;top:0;width:100%;height:36px}.m-card-hd-zs1{position:absolute;right:12px;top:10px;width:120px;height:11px}.m-card-hd-title{position:absolute;left:22px;right:128px;top:0;color:#fff;font-size:16px;letter-spacing:1.6px;height:36px;line-height:32px;font-family:PingFangSc;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;-webkit-background-clip:initial;-webkit-text-fill-color:#ffffff;opacity:1;mix-blend-mode:normal;filter:brightness(1.2) contrast(1.08);text-shadow:0 0 1px rgba(255,255,255,.96),0 0 8px rgba(255,255,255,.22)}.m-card-hd .saoguang{position:absolute;left:0;top:0;width:100%;height:36px;overflow:hidden;pointer-events:none}.m-card-hd .saoguang img{width:89px;height:36px;animation:saoguangMove 6s linear infinite}.m-card-bd{position:absolute;left:0;top:0;z-index:1}.m-card-bd-bg{position:absolute;left:0;top:0}.m-card-bd-bottom-left-arrow{position:absolute;left:4px;bottom:4px}.m-card-bd-bottom-right-arrow{position:absolute;right:4px;bottom:4px}.m-card-bd-middle-left-line{position:absolute;left:0;top:50%;margin-top:-35px}.m-card-bd-middle-right-line{position:absolute;right:0;top:50%;margin-top:-35px}.m-card-bd-content{position:absolute;left:0;top:36px;right:0;bottom:0;pointer-events:all;overflow:hidden}@keyframes saoguangMove{0%{transform:translate(-160px)}to{transform:translate(2000px)}}.three-pie-wrap{position:relative;width:100%;height:100%;z-index:2}.three-pie{width:100%;height:100%}.three-pie-slot{position:absolute;left:0;top:0;display:flex;justify-content:center;align-items:center;width:100%;height:100%;pointer-events:none}

@ -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-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%}}
.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-1783903470255.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%}}

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*,body{padding:0;margin:0}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;overflow:hidden}body{font-family:AlibabaPuHuiTi,Microsoft YaHei,Arial,sans-serif;font-size:14px;color:#e7fbff}button,input,select,textarea{font:inherit}

@ -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,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};
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-1783903470255.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};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save