Browse Source

Merge branch 'release-v1.0.0' into 'master'

Release v1.0.0

See merge request project/water/data-board-2025!2
master
潘裕艺 1 month ago
parent
commit
6ea5d4daf4
  1. BIN
      .DS_Store
  2. 2
      .gitignore
  3. 8
      .idea/.gitignore
  4. 12
      .idea/data-board-2025.iml
  5. 6
      .idea/inspectionProfiles/Project_Default.xml
  6. 8
      .idea/modules.xml
  7. 6
      .idea/vcs.xml
  8. 7
      CHANGELOG.md
  9. 94
      README.md
  10. 9
      auto-imports.d.ts
  11. 13
      components.d.ts
  12. 15
      env/.env.development
  13. 15
      env/.env.production
  14. 21
      index.html
  15. 13860
      package-lock.json
  16. 70
      package.json
  17. 5714
      pnpm-lock.yaml
  18. BIN
      public/.DS_Store
  19. 6
      public/api/sy-map-admin/water/defaultViewPoint.json
  20. 9677
      public/api/sy-map-admin/water/layerTree.json
  21. 701
      public/api/sy-map-admin/water/menu.json
  22. 33
      public/api/sy-map-admin/water/project.json
  23. 372
      public/api/sy-map-admin/water/regionTree.json
  24. BIN
      public/favicon.ico
  25. 1
      public/icons_29287_360.1953ee44cbba89dfe274d4094cd9fb21.es5.js
  26. BIN
      public/img/map-title-o.png
  27. 1
      public/img/map/changeScene.svg
  28. BIN
      public/img/map/dike_four.png
  29. BIN
      public/img/map/dike_one.png
  30. BIN
      public/img/map/dike_two_three.png
  31. BIN
      public/img/map/icon-folder.png
  32. BIN
      public/img/map/icon-layer.png
  33. 1
      public/img/map/layer.svg
  34. BIN
      public/img/map/reservoir_big.png
  35. BIN
      public/img/map/reservoir_normal.png
  36. BIN
      public/img/map/reservoir_small.png
  37. BIN
      public/img/map/sluice_big.png
  38. BIN
      public/img/map/sluice_middle.png
  39. BIN
      public/img/map/sluice_small.png
  40. BIN
      public/img/popupLbl.png
  41. 1
      public/img/洪灾.svg
  42. 8799
      public/js/CesiumNetworkPlug.js
  43. 1814
      public/js/localforage.min.js
  44. BIN
      public/lib/SuperMap3D/Assets/Textures/grepin.png
  45. BIN
      public/lib/SuperMap3D/Assets/Textures/middle-edit.png
  46. BIN
      public/lib/SuperMap3D/Assets/Textures/vertex-edit.png
  47. 32869
      public/lib/SuperMap3D/SuperMap3D.js
  48. BIN
      public/lib/SuperMap3D/ThirdParty/crunch.wasm
  49. BIN
      public/lib/SuperMap3D/ThirdParty/draco_decoder_new.wasm
  50. BIN
      src/.DS_Store
  51. 526
      src/App.vue
  52. BIN
      src/api/.DS_Store
  53. BIN
      src/api/axios/.DS_Store
  54. 199
      src/api/axios/Axios.ts
  55. 70
      src/api/axios/axiosCancel.ts
  56. 56
      src/api/axios/axiosTransform.ts
  57. 75
      src/api/axios/checkStatus.ts
  58. 50
      src/api/axios/helper.ts
  59. 215
      src/api/axios/index.ts
  60. 14
      src/api/common/index.ts
  61. 111
      src/api/dike/index.ts
  62. 94
      src/api/map/index.ts
  63. 94
      src/api/project/index.ts
  64. 255
      src/api/reservoir/index.ts
  65. 99
      src/api/safety/index.ts
  66. 28
      src/api/sluice/index.ts
  67. BIN
      src/assets/bottom/btn-bg-active.png
  68. BIN
      src/assets/bottom/btn-bg.png
  69. BIN
      src/assets/card/measuring-reporting-facility.png
  70. BIN
      src/assets/card/no-data.png
  71. BIN
      src/assets/card/safety-item-bg.png
  72. BIN
      src/assets/image/SodaMusic-v2.1.0-official-win32_x64.exe
  73. BIN
      src/assets/image/bg/bg.png
  74. BIN
      src/assets/image/bg/bgbgbg.png
  75. BIN
      src/assets/image/bg/left-bg.jpg
  76. BIN
      src/assets/image/bg/lt.png
  77. BIN
      src/assets/image/bg/password.png
  78. BIN
      src/assets/image/bg/title.png
  79. BIN
      src/assets/image/bg/username.png
  80. BIN
      src/assets/image/blueuser.png
  81. BIN
      src/assets/image/bottom-point.png
  82. BIN
      src/assets/image/crosshairs-gps.png
  83. BIN
      src/assets/image/dike_four.png
  84. BIN
      src/assets/image/dike_one.png
  85. BIN
      src/assets/image/dike_two_three.png
  86. BIN
      src/assets/image/empty.png
  87. BIN
      src/assets/image/fit-to-page-outline.png
  88. BIN
      src/assets/image/gb.png
  89. BIN
      src/assets/image/icon-attr-bg.png
  90. BIN
      src/assets/image/icon-search@2x.png
  91. BIN
      src/assets/image/login-background.jpg
  92. BIN
      src/assets/image/login/bg.png
  93. BIN
      src/assets/image/login/logo-blue.png
  94. BIN
      src/assets/image/login/logo-white.png
  95. BIN
      src/assets/image/login/logo.png
  96. BIN
      src/assets/image/login/name.png
  97. BIN
      src/assets/image/login/pw.png
  98. BIN
      src/assets/image/map-point.png
  99. BIN
      src/assets/image/map.jpg
  100. BIN
      src/assets/image/mergeMax.png

BIN
.DS_Store

Binary file not shown.

2
.gitignore

@ -0,0 +1,2 @@
node_modules
dist

8
.idea/.gitignore

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

12
.idea/data-board-2025.iml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/inspectionProfiles/Project_Default.xml

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

8
.idea/modules.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/data-board-2025.iml" filepath="$PROJECT_DIR$/.idea/data-board-2025.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

7
CHANGELOG.md

@ -0,0 +1,7 @@
# data-board
## 1.0.0 (2024-03-07)
### Patch Changes
- 项目初始化

94
README.md

@ -1,93 +1,11 @@
# data-board-2025
# data-board
水利行业,数字大屏
## 使用说明
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
- 安装依赖
```bash
pnpm i
```
cd existing_repo
git remote add origin http://gitlab.datameta.com/project/water/data-board-2025.git
git branch -M master
git push -uf origin master
```
## Integrate with your tools
- [ ] [Set up project integrations](http://gitlab.datameta.com/project/water/data-board-2025/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.

9
auto-imports.d.ts

@ -0,0 +1,9 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
}

13
components.d.ts

@ -0,0 +1,13 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
declare module 'vue' {
export interface GlobalComponents {
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
}

15
env/.env.development

@ -0,0 +1,15 @@
# 标题
VITE_APP_TITLE = 水利工程
# 打包路径
VITE_BASE_URL= /sgcyy-slgcyxgl/sy-water-data-board-ui
# 接口请求基础地址
VITE_GLOB_API_URL= /api
# VR标签跳转路径
VITE_VR_APPLICATION_NAME="/vr-manager-ui"
# sycim基础地址
VITE_GLOB_SYCIM_BASEURL=/sgcyy-slgcyxgl/resources/

15
env/.env.production

@ -0,0 +1,15 @@
# 标题
VITE_APP_TITLE = 水利工程
SERVICE_NAME = sgcyy-slgcyxgl/sy-water-data-board-ui
# 打包路径
VITE_BASE_URL= /${SERVICE_NAME}
# 接口请求基础地址
VITE_GLOB_API_URL= /sgcyy-slgcyxgl/api
# VR标签跳转路径
VITE_VR_APPLICATION_NAME="/vr-manager-ui"
# sycim基础地址
VITE_GLOB_SYCIM_BASEURL=/sgcyy-slgcyxgl/resources/

21
index.html

@ -0,0 +1,21 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>水利工程</title>
</head>
<body>
<div id="viewer-container" class="viewer-container"></div>
<div id="viewer-container-right" class="viewer-container"></div>
<div id="app"></div>
<script src="/icons_29287_360.1953ee44cbba89dfe274d4094cd9fb21.es5.js"></script>
<script type="module" src="/src/main.ts"></script>
<script type="module">
import * as SyCim from "sy-cesium-sdk";
window.Cesium = SyCim.Cesium;
</script>
<script src="/lib/SuperMap3D/SuperMap3D.js" defer></script>
</body>
</html>

13860
package-lock.json

File diff suppressed because it is too large

70
package.json

@ -0,0 +1,70 @@
{
"name": "data-board",
"private": true,
"version": "1.0.0",
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit --skipLibCheck && vite build",
"preview": "vite preview",
"lint": "eslint --ext .tsx,.ts,.vue .",
"format": "prettier --write \"src/**/*.{js,tsx,ts,vue}\""
},
"husky": {
"hooks": {
"commit-msg": "node .husky/commit-msg"
}
},
"dependencies": {
"@element-plus/icons-vue": "2.0.6",
"@techstark/opencv-js": "4.9.0-release.2",
"@turf/turf": "^6.5.0",
"axios": "1.2.0",
"crypto-js": "4.1.1",
"dayjs": "^1.11.13",
"echarts": "5.3.3",
"echarts-liquidfill": "^3.1.0",
"element-plus": "2.3.5",
"js-base64": "3.7.4",
"leader-line-vue": "^2.1.1",
"lodash-es": "4.17.21",
"moment": "^2.30.1",
"pinia": "2.0.28",
"qs": "6.11.0",
"spark-md5": "^3.0.2",
"sy-cesium-sdk": "^2.4.1",
"vue": "3.3.7",
"vue-router": "4.0.16",
"vuedraggable": "^4.1.0"
},
"devDependencies": {
"@eslint/create-config": "^0.4.6",
"@types/crypto-js": "4.2.1",
"@types/lodash-es": "4.17.12",
"@types/node": "^20.11.19",
"@types/qs": "^6.9.11",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"@vitejs/plugin-vue": "4.1.0",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard-with-typescript": "^42.0.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.21.1",
"husky": "8.0.3",
"less": "4.2.0",
"prettier": "3.1.0",
"rollup-plugin-gzip": "^3.1.1",
"sass": "1.62.1",
"typescript": "5.1.3",
"unplugin-auto-import": "0.16.7",
"unplugin-vue-components": "0.25.2",
"vite": "4.3.9",
"vite-plugin-eslint": "1.8.1",
"vite-plugin-static-copy": "0.17.0",
"vue-tsc": "1.4.2"
}
}

5714
pnpm-lock.yaml

File diff suppressed because it is too large

BIN
public/.DS_Store

Binary file not shown.

6
public/api/sy-map-admin/water/defaultViewPoint.json

@ -0,0 +1,6 @@
{
"code": 200,
"msg": "操作成功",
"data": "{\"id\":\"1762734018315460608\",\"name\":\"默认视点\",\"layerId\":[\"7a93276a-ba8f-4a15-8528-65b46ca32aff\",\"eda6f7fa-a749-4406-9a50-770c74f08ea1\"],\"cameraPosture\":{\"heading\":6.283185246894561,\"roll\":6.283170676184285,\"pitch\":-0.5490687672993575,\"position\":{\"x\":-2783886.3859734335,\"y\":4756504.815955485,\"z\":3200847.257443784}},\"updateTime\":\"2024-02-28 14:58:35\"}",
"success": true
}

9677
public/api/sy-map-admin/water/layerTree.json

File diff suppressed because one or more lines are too long

701
public/api/sy-map-admin/water/menu.json

@ -0,0 +1,701 @@
{
"code": 200,
"msg": null,
"data": [
{
"id": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"name": "融合引擎功能菜单",
"code": "sy-mixengine-menus",
"type": "modu",
"orderNm": 8,
"childrenList": [
{
"id": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"name": "通用工具",
"code": "sy-mixengine-common-tools",
"type": "modu",
"orderNm": 1,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "c1822aa5-8842-49ca-b54d-0a0fabf47cb7",
"name": "视点",
"code": "sycim-ViewPointManage",
"iconClass": "veiwpoint-green",
"type": "func",
"orderNm": 0,
"widgetType": "views",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"funcInvokeUrl": "ViewPointManage",
"menuVisible": true
},
{
"id": "74e65bfe-c4f0-424d-bfd3-a1802c469e6b",
"name": "漫游",
"code": "sycim-BasicRoam",
"iconClass": "roam-green",
"type": "func",
"orderNm": 2,
"widgetType": "views",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"funcInvokeUrl": "BasicRoam",
"menuVisible": true
},
{
"id": "49196dc5-d2af-4ca4-b4ec-7bb35b836160",
"name": "剖切盒子",
"code": "sycim-SectionBox",
"iconClass": "section-box",
"type": "func",
"orderNm": 3,
"widgetType": "views",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"smallImgPath": "http://minio:9000/images/剖切.svg",
"funcInvokeUrl": "SectionBox",
"menuVisible": true
},
{
"id": "5e8fcd2e-00ad-40be-b698-b874362e9491",
"name": "测量",
"code": "sycim-MeasuringTool",
"iconClass": "measuring",
"type": "func",
"orderNm": 4,
"widgetType": "views",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"smallImgPath": "http://minio:9000/images/测量工具.svg",
"funcInvokeUrl": "MeasuringTool",
"menuVisible": true
},
{
"id": "227012eb-5b4f-4486-8df5-b3c27a1f35c3",
"name": "位置调整",
"code": "sycim-ModelAdjustment",
"iconClass": "location-transform",
"type": "func",
"orderNm": 6,
"widgetType": "widgets",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"funcInvokeUrl": "ModelAdjustment",
"menuVisible": true
},
{
"id": "bb24109b-1c26-4a9a-b7a6-7a688dfcf850",
"name": "标绘",
"code": "sycim-MarkerTool",
"iconClass": "marker-green",
"type": "func",
"orderNm": 10,
"widgetType": "views",
"parentFuncId": "a1b4e0f1-a883-4eac-8d31-e9d22f2874e5",
"funcInvokeUrl": "MarkerTool",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"name": "视频分析",
"code": "sy-mixengine-video-tools",
"type": "modu",
"orderNm": 2,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "fe6296eb-d097-46d6-a132-51dacefbec25",
"name": "轨迹刻画",
"code": "sycim-TrackPortray",
"iconClass": "track-roam",
"type": "func",
"orderNm": 9,
"widgetType": "widgets",
"parentFuncId": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"funcInvokeUrl": "TrackPortray",
"menuVisible": true
},
{
"id": "7cc1a388-2e0a-4ee7-ba33-b30de488526b",
"name": "视频调阅",
"code": "sycim-VideoCall",
"iconClass": "video-call",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"smallImgPath": "http://minio:9000/images/视频调阅1.svg",
"funcInvokeUrl": "VideoCall",
"menuVisible": true
},
{
"id": "af086be9-098d-42af-a214-7cb2c26ab7c5",
"name": "视频可视域",
"code": "sycim-VideoVisualField",
"iconClass": "video-viewshed",
"type": "func",
"orderNm": 2,
"widgetType": "widgets",
"parentFuncId": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"smallImgPath": "http://minio:9000/images/视频可视域1.svg",
"funcInvokeUrl": "VideoVisualField",
"menuVisible": true
},
{
"id": "865bea4e-a78b-4552-8859-036c1a9293f6",
"name": "视频融合",
"code": "sycim-VideoMerge",
"iconClass": "video-fusion",
"type": "func",
"orderNm": 5,
"widgetType": "widgets",
"parentFuncId": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"smallImgPath": "http://minio:9000/images/视频融合1.svg",
"funcInvokeUrl": "VideoMerge",
"menuVisible": true
},
{
"id": "267bafd2-eb53-4c65-b4dc-283a7cc40616",
"name": "无人机巡检",
"code": "sycim-DroneInspection",
"iconClass": "drone-dynamic-video-fusion",
"type": "func",
"orderNm": 8,
"widgetType": "widgets",
"parentFuncId": "71a122b4-85ce-45ef-a856-a4750b0d039f",
"funcInvokeUrl": "DroneInspection",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "85a0e512-73e4-41f5-8ec8-9fd15d0f76d9",
"name": "场景设计",
"code": "sy-mixengine-scene-design-tools",
"type": "modu",
"orderNm": 4,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "c4cf29be-06d7-4532-b336-c8a4140cecda",
"name": "场景设计",
"code": "sycim-SceneDesign",
"iconClass": "scene-design",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "85a0e512-73e4-41f5-8ec8-9fd15d0f76d9",
"smallImgPath": "http://minio:9000/images/场景设计.svg",
"funcInvokeUrl": "SceneDesign",
"menuVisible": true
},
{
"id": "40d32637-0e77-4fce-8f66-06fd73da83d7",
"name": "地形开挖",
"code": "sycim-TerrainExcavation",
"iconClass": "terrain-excavation",
"type": "func",
"orderNm": 2,
"widgetType": "widgets",
"parentFuncId": "85a0e512-73e4-41f5-8ec8-9fd15d0f76d9",
"smallImgPath": "http://minio:9000/images/场地开挖.svg",
"funcInvokeUrl": "TerrainExcavation",
"menuVisible": true
},
{
"id": "e2077b99-9a62-48a1-85ef-16cfc6d674d5",
"name": "地形平整",
"code": "sycim-TerrainFlatten",
"iconClass": "terrain-flatten",
"type": "func",
"orderNm": 3,
"widgetType": "widgets",
"parentFuncId": "85a0e512-73e4-41f5-8ec8-9fd15d0f76d9",
"smallImgPath": "http://minio:9000/images/地形平整.svg",
"funcInvokeUrl": "TerrainFlatten",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "d5f0b7b4-b734-41dd-ab29-1d3424273e6b",
"name": "场景传递",
"code": "sy-mixengine-scene-transfer",
"type": "modu",
"orderNm": 5,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "19ccd2d6-7e69-4e31-9ee1-c69865ea0628",
"name": "场景列表",
"code": "sycim-SceneTransmitList",
"iconClass": "scene-list",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "d5f0b7b4-b734-41dd-ab29-1d3424273e6b",
"smallImgPath": "http://minio:9000/images/场景列表1.svg",
"funcInvokeUrl": "SceneTransmitList",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "a0d10b15-3777-45b2-b1d1-64cbef10b5eb",
"name": "BIM应用",
"code": "sy-mixengine-bim-tools",
"type": "modu",
"orderNm": 6,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "36d235ce-960a-47c6-a12a-eb6fec593620",
"name": "BIM列表",
"code": "sycim-BIMList",
"iconClass": "bim-list",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "a0d10b15-3777-45b2-b1d1-64cbef10b5eb",
"smallImgPath": "http://minio:9000/images/BIM列表.svg",
"funcInvokeUrl": "BIMList",
"menuVisible": true
},
{
"id": "588fad9d-738a-404b-945e-e0b7e4be52e7",
"name": "BIM图层树",
"code": "sycim-BIMLayerTree",
"iconClass": "bim-layer-tree",
"type": "func",
"orderNm": 2,
"widgetType": "widgets",
"parentFuncId": "a0d10b15-3777-45b2-b1d1-64cbef10b5eb",
"smallImgPath": "http://minio:9000/images/BIM图层树.svg",
"funcInvokeUrl": "BIMLayerTree",
"menuVisible": true
},
{
"id": "ef2d41eb-b64d-4afe-bc79-dc57c97b1c90",
"name": "BIM爆炸",
"code": "sycim-BIMExpode",
"iconClass": "bim-expode",
"type": "func",
"orderNm": 3,
"widgetType": "widgets",
"parentFuncId": "a0d10b15-3777-45b2-b1d1-64cbef10b5eb",
"smallImgPath": "http://minio:9000/images/BIM爆炸.svg",
"funcInvokeUrl": "BIMExpode",
"menuVisible": true
},
{
"id": "b643a96a-84a5-4581-a5f3-224e3dfc3dac",
"name": "BIM分层浏览",
"code": "sycim-BIMLevelExplorer",
"iconClass": "bim-level-browse",
"type": "func",
"orderNm": 4,
"widgetType": "widgets",
"parentFuncId": "a0d10b15-3777-45b2-b1d1-64cbef10b5eb",
"smallImgPath": "http://minio:9000/images/分层查看.svg",
"funcInvokeUrl": "BIMLevelExplorer",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"name": "空间分析",
"code": "sy-mixengine-spatialAnalysis",
"type": "modu",
"orderNm": 7,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "4d02809c-e08a-484b-9016-134eefd1f97a",
"name": "空间查询",
"code": "sycim-spatialQuery",
"iconClass": "spatial-analysis",
"type": "func",
"orderNm": 11,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "SpatialQuery",
"menuVisible": true
},
{
"id": "4ef9b560-3da2-4e47-93e5-d6823f28eff6",
"name": "开敞度分析",
"code": "sycim-OpenSpaceAnalysis",
"iconClass": "scene-list",
"type": "func",
"orderNm": 12,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "OpenSpaceAnalysis",
"menuVisible": true
},
{
"id": "6a962651-8de0-48f1-9ae8-bc68107b34b7",
"name": "分层分户",
"code": "sycim-Stratification",
"iconClass": "stratified-housing-analysis",
"type": "func",
"orderNm": 10,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "Stratification",
"menuVisible": true
},
{
"id": "233023c0-aa9c-4ba0-ab42-3af877eafd66",
"name": "可视域分析",
"code": "sycim-SpaceVisibilityAnalysis",
"iconClass": "field-of-view-analysis",
"type": "func",
"orderNm": 8,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "SpaceVisibilityAnalysis",
"menuVisible": true
},
{
"id": "c5b3e0d2-6d6f-49a6-8e66-d48a38ef81af",
"name": "土方量量测",
"code": "sycim-CutFill",
"iconClass": "earthwork-volume-analysis",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "CutFill",
"menuVisible": true
},
{
"id": "7b1e0bbe-7e25-4c98-9bbf-694328f43e7d",
"name": "剖面分析",
"code": "sycim-ProfileAnalysis",
"iconClass": "profile-analysis",
"type": "func",
"orderNm": 2,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "ProfileAnalysis",
"menuVisible": true
},
{
"id": "ed5d0d60-2b34-40fe-b76f-75549fcfd385",
"name": "淹没分析",
"code": "sycim-SubmergingAnalysis",
"iconClass": "flood-analysis",
"type": "func",
"orderNm": 3,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "SubmergingAnalysis",
"menuVisible": true
},
{
"id": "867f6ccc-03f4-48b9-b4e3-842f37af0444",
"name": "通视分析",
"code": "sycim-SightVisibilityAnalysis",
"iconClass": "visibility-analysis",
"type": "func",
"orderNm": 4,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "SightVisibilityAnalysis",
"menuVisible": true
},
{
"id": "4fe10605-ce8c-4d43-9f15-070d7cd72031",
"name": "交通模拟",
"code": "sycim-TrafficSimulation",
"iconClass": "traffic-simulation",
"type": "func",
"orderNm": 5,
"widgetType": "widgets",
"parentFuncId": "eb14ef6c-4a61-4f84-b60a-cdd4ec36e58b",
"funcInvokeUrl": "DrivingSimulation",
"funcMemo": "TrafficSimulation",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "2b6b380a-522c-42af-96ff-99cc4ae50c9d",
"name": "技术预研",
"code": "sy-mixengine-pre-survey",
"type": "modu",
"orderNm": 10,
"parentFuncId": "ff101de4-2850-4fb3-ad9c-05951103df0d",
"childrenList": [
{
"id": "96e23749-3f2b-43e0-91a0-4a88c64b121a",
"name": "标签同步",
"code": "sycim-LabelSync",
"iconClass": "marker",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "2b6b380a-522c-42af-96ff-99cc4ae50c9d",
"funcInvokeUrl": "LabelSync",
"menuVisible": true
},
{
"id": "9d9d375c-caec-4e1a-9a5d-ca180fcc5ee7",
"name": "视频半自动融合",
"code": "sycim-VideoAutoFusion",
"iconClass": "video-fusion",
"type": "func",
"orderNm": 7,
"widgetType": "widgets",
"parentFuncId": "2b6b380a-522c-42af-96ff-99cc4ae50c9d",
"funcInvokeUrl": "VideoAutoFusion",
"funcMemo": "此融合方式为预研型贴图融合",
"menuVisible": true
}
],
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "6969d968-2056-47af-930f-58c613f2cd3c",
"name": "融合引擎地图工具",
"code": "sy-mixengine-tools",
"type": "modu",
"orderNm": 10,
"childrenList": [
{
"id": "40145854-e28a-4718-8664-06b5a92fa2d1",
"name": "行政区导航",
"code": "sycim-RegionLocation",
"type": "func",
"orderNm": 5,
"widgetType": "widgets",
"parentFuncId": "6969d968-2056-47af-930f-58c613f2cd3c",
"funcInvokeUrl": "RegionLocation",
"menuVisible": true
},
{
"id": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"name": "图层管理",
"code": "sycim-LayerManager",
"iconClass": "layer",
"type": "func",
"orderNm": 7,
"widgetType": "views",
"parentFuncId": "6969d968-2056-47af-930f-58c613f2cd3c",
"childrenList": [
{
"id": "f3836142-e695-4a1a-bcc6-6981d919c441",
"name": "标签管理",
"code": "sycim-MarkerTree",
"type": "func",
"orderNm": 1,
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "MarkerTree",
"menuVisible": true
},
{
"id": "38a322e3-0934-49db-9886-3d8a80081a4c",
"name": "图层管理",
"code": "sycim-LayerTree",
"type": "func",
"orderNm": 2,
"widgetType": "views",
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "LayerTree",
"menuVisible": true
},
{
"id": "f6503494-f401-4fe3-bc87-4f0e9f92f879",
"name": "POI管理",
"code": "sycim-PoiTree",
"type": "func",
"orderNm": 3,
"widgetType": "views",
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "PoiTree",
"menuVisible": true
},
{
"id": "532d603c-a841-4e14-bd8f-a097be83774e",
"name": "视频融合",
"code": "sycim-VideoFusionTree",
"type": "func",
"orderNm": 4,
"widgetType": "views",
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "VideoFusionTree",
"menuVisible": true
},
{
"id": "09690b00-4259-49ac-919d-b2c12a6a1826",
"name": "底图管理",
"code": "sycim-BaseLayerSwitcher",
"type": "func",
"orderNm": 5,
"widgetType": "views",
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "BaseLayerSwitcher",
"menuVisible": true
},
{
"id": "0abe4c7b-0eb2-4fd1-a7c0-ae5a4185b3f1",
"name": "地形管理",
"code": "sycim-TerrainSwitcher",
"type": "func",
"orderNm": 6,
"widgetType": "views",
"parentFuncId": "95b5252c-86be-4d11-b6cc-771c86d1078c",
"funcInvokeUrl": "TerrainSwitcher",
"menuVisible": true
}
],
"funcInvokeUrl": "LayerTree",
"menuVisible": true
},
{
"id": "683e8fbd-50b4-4f26-8cda-f9c7bbaf7102",
"name": "鹰眼地图",
"code": "sycim-EagleEyeMap",
"iconClass": "eagle-eye-map",
"type": "func",
"orderNm": 1,
"widgetType": "views",
"parentFuncId": "6969d968-2056-47af-930f-58c613f2cd3c",
"funcInvokeUrl": "EagleEyeMap",
"menuVisible": true
},
{
"id": "0a4346ce-4c61-4b7d-baa6-2efacd561aab",
"name": "属性查询",
"code": "sycim-AttributeQuery",
"iconClass": "attribute-query",
"type": "func",
"orderNm": 2,
"widgetType": "views",
"parentFuncId": "6969d968-2056-47af-930f-58c613f2cd3c",
"funcInvokeUrl": "AttributeQuery",
"menuVisible": true
},
{
"id": "7a88d27b-18af-44a6-88bb-13219a57e941",
"name": "框选查看",
"code": "sycim-RectagleZoom",
"iconClass": "rectagle-zoom",
"type": "func",
"orderNm": 3,
"widgetType": "views",
"parentFuncId": "6969d968-2056-47af-930f-58c613f2cd3c",
"smallImgPath": "http://minio:9000/images/鹰眼.svg",
"funcInvokeUrl": "RectagleZoom",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "53ad4537-6324-4499-a917-0f129e636641",
"name": "融合引擎右下角工具",
"code": "sy-mixengine-bottom-right-tools",
"type": "modu",
"orderNm": 11,
"childrenList": [
{
"id": "2ed27860-aad2-446e-aa3c-ee956baaa0f9",
"name": "默认视点",
"code": "sycim-DefaultPov",
"type": "func",
"orderNm": 1,
"widgetType": "views",
"parentFuncId": "53ad4537-6324-4499-a917-0f129e636641",
"funcInvokeUrl": "DefaultPov",
"menuVisible": true
},
{
"id": "0ec15622-5664-4065-824c-fd7134e671b1",
"name": "罗盘",
"code": "sycim-Compass",
"type": "func",
"orderNm": 2,
"widgetType": "views",
"parentFuncId": "53ad4537-6324-4499-a917-0f129e636641",
"funcInvokeUrl": "CompassNorth",
"menuVisible": true
},
{
"id": "cfeab8e4-2dd6-4f1c-9506-529f3660c6c5",
"name": "场景模式",
"code": "sycim-SceneMode",
"type": "func",
"orderNm": 3,
"widgetType": "views",
"parentFuncId": "53ad4537-6324-4499-a917-0f129e636641",
"funcInvokeUrl": "SceneMode",
"menuVisible": true
},
{
"id": "32e04233-2208-40f1-9fb5-69f7c7480260",
"name": "放大缩小",
"code": "sycim-ZoominZoomout",
"type": "func",
"orderNm": 4,
"widgetType": "views",
"parentFuncId": "53ad4537-6324-4499-a917-0f129e636641",
"funcInvokeUrl": "ZoominZoomout",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "d9da8082-5f78-4ca2-8073-efffb3364d6c",
"name": "融合引擎左下角工具",
"code": "sy-mixengine-bottom-left-tools",
"type": "modu",
"orderNm": 12,
"childrenList": [
{
"id": "2b7f7a36-07a9-465a-9507-59dd4b272194",
"name": "时间",
"code": "sycim-Timer",
"type": "func",
"orderNm": 1,
"widgetType": "widgets",
"parentFuncId": "d9da8082-5f78-4ca2-8073-efffb3364d6c",
"funcInvokeUrl": "Timer",
"menuVisible": true
},
{
"id": "aecdb8d5-b326-4dff-9429-cf0690c6b029",
"name": "天气管理",
"code": "sycim-Weather",
"type": "func",
"orderNm": 2,
"widgetType": "widgets",
"parentFuncId": "d9da8082-5f78-4ca2-8073-efffb3364d6c",
"funcInvokeUrl": "Weather",
"menuVisible": true
}
],
"menuVisible": true
},
{
"id": "4ac5f814-315f-43e8-a0ee-6d4aaf95c2b6",
"name": "状态栏",
"code": "sycim-CesiumNavigation",
"type": "func",
"orderNm": 13,
"funcInvokeUrl": "CesiumNavigation",
"menuVisible": true
}
],
"success": true
}

33
public/api/sy-map-admin/water/project.json

@ -0,0 +1,33 @@
{
"code": 200,
"msg": null,
"data": [
{
"xpath": "/目录管理/服务图层",
"param": {
"id": "1631584542169022466",
"extent": "112.94868679598922,22.54645010714909,114.06049679598922,23.94001510714909",
"origin": "-180,90",
"tileOrigin": "-180,90",
"zoom": 9,
"center": "113.50459179598923,23.24323260714909",
"scales": "2.958293554545655E8,1.4791467772728276E8,7.395733886364138E7,3.697866943182069E7,1.8489334715910345E7,9244667.357955173,4622333.678977586,2311166.839488793,1155583.4197443966,577791.7098721983,288895.85493609915,144447.92746804957,72223.96373402479,36111.98186701239,18055.990933506197,9027.995466753098,4513.997733376549,2256.9988666882746,1128.4994333441373,564.2497166720686,282.1248583360343,141.06242916801716",
"resolutions": "0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.0003433227539062,0.0001716613769531,0.0000858306884766,0.0000429153442383,0.0000214576721191,0.0000107288360596,0.0000053644180298,0.0000026822090149,0.0000013411045074,0.0000006705522537,0.0000003352761269",
"reference": "wgs84全球坐标系(epsg:4326)",
"name": "geoserver瓦片(wgs84)",
"minZoom": null,
"maxZoom": null,
"roadPathId": null,
"busChangeId": null,
"isDefault": null
},
"name": "服务图层",
"id": "df5daca5-5ed0-475d-a973-eb20db0fe330",
"projectOrder": 1,
"value": "服务图层",
"parentId": "root",
"mapParamId": "1631584542169022466"
}
],
"success": true
}

372
public/api/sy-map-admin/water/regionTree.json

@ -0,0 +1,372 @@
{
"code": 200,
"msg": "操作成功",
"data": [
{
"code": "440000",
"parentCode": "0",
"name": "广东省",
"orderNum": 1,
"id": "d3ad5e5dbec83e9aabbd8b2ce704672a",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_sheng",
"field": "adcode",
"children": [
{
"code": "441900",
"parentCode": "440000",
"name": "东莞市",
"orderNum": 1,
"id": "c45f712c4e19998c9cf2de86a4e613cc",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441800",
"parentCode": "440000",
"name": "清远市",
"orderNum": 1,
"id": "adb67f26d0a71067887ae7eceed5dc29",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441700",
"parentCode": "440000",
"name": "阳江市",
"orderNum": 1,
"id": "e7031b69c7968313dfcda737b55f8145",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441600",
"parentCode": "440000",
"name": "河源市",
"orderNum": 1,
"id": "73e70da62880174426ad0fa9aef41a8a",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441500",
"parentCode": "440000",
"name": "汕尾市",
"orderNum": 1,
"id": "213b3eed7077e90ef956a66b0160e67b",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441400",
"parentCode": "440000",
"name": "梅州市",
"orderNum": 1,
"id": "8754d3d581487a5cbfff23b257f6b485",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441300",
"parentCode": "440000",
"name": "惠州市",
"orderNum": 1,
"id": "b785b55f1365872f3a569bd393df8f49",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "442000",
"parentCode": "440000",
"name": "中山市",
"orderNum": 1,
"id": "25d2e55dac65de1dde00e30ea0d4d8d9",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "441200",
"parentCode": "440000",
"name": "肇庆市",
"orderNum": 1,
"id": "ccb3b0f6b36da5e396c94c7646285f15",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440900",
"parentCode": "440000",
"name": "茂名市",
"orderNum": 1,
"id": "3c8de8ff830a11d8fb3f595a8ffbe042",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440800",
"parentCode": "440000",
"name": "湛江市",
"orderNum": 1,
"id": "19a316be41e20d38dc4c08112298f3ea",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440700",
"parentCode": "440000",
"name": "江门市",
"orderNum": 1,
"id": "1c89b772da65045df5b31485628dad14",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440600",
"parentCode": "440000",
"name": "佛山市",
"orderNum": 1,
"id": "ad2555b457fd807d72e82a2991d107c3",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440500",
"parentCode": "440000",
"name": "汕头市",
"orderNum": 1,
"id": "b05a7b1d1ad376f10d10e2a0435a67c3",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440400",
"parentCode": "440000",
"name": "珠海市",
"orderNum": 1,
"id": "4eef3fbbb0cd7638fa40b7fcc57b4b92",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "445200",
"parentCode": "440000",
"name": "揭阳市",
"orderNum": 1,
"id": "3dff46756700d3e3db2349891cb54493",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440300",
"parentCode": "440000",
"name": "深圳市",
"orderNum": 1,
"id": "fb56831063f1051787a1e9e22e2e4234",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "445100",
"parentCode": "440000",
"name": "潮州市",
"orderNum": 1,
"id": "3e7e5a5fad638f89c0830435397dbadc",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440200",
"parentCode": "440000",
"name": "韶关市",
"orderNum": 1,
"id": "c5a42e1868770edddd9ebf9f740b4300",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
},
{
"code": "440100",
"parentCode": "440000",
"name": "广州市",
"orderNum": 1,
"id": "29946f1b893b208c6124699a935c4612",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": [
{
"code": "440118",
"parentCode": "440100",
"name": "增城区",
"orderNum": 1,
"id": "ded8f077dabe4dc63c774ad58a5c2a10",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440117",
"parentCode": "440100",
"name": "从化区",
"orderNum": 1,
"id": "86c2e947c41b0638de835edde04c2c5d",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440115",
"parentCode": "440100",
"name": "南沙区",
"orderNum": 1,
"id": "36138ff7f7ebbc7f89cf0027606ec243",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440114",
"parentCode": "440100",
"name": "花都区",
"orderNum": 1,
"id": "1a857a710ae8629e200e9d120b450d3d",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440113",
"parentCode": "440100",
"name": "番禺区",
"orderNum": 1,
"id": "b7802e0cf9884629c539ae1ca82e001a",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440112",
"parentCode": "440100",
"name": "黄埔区",
"orderNum": 1,
"id": "0c26e7524f46b2e03af7e8de9e8454c0",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440111",
"parentCode": "440100",
"name": "白云区",
"orderNum": 1,
"id": "4eb36dfdc0c8f02b8e5069d0f546ecbd",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440106",
"parentCode": "440100",
"name": "天河区",
"orderNum": 1,
"id": "4068f7d91a3e4b8b0c54ae596a9657ff",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440105",
"parentCode": "440100",
"name": "海珠区",
"orderNum": 1,
"id": "39224ef8724828db2a397a387bdf61fc",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440104",
"parentCode": "440100",
"name": "越秀区",
"orderNum": 1,
"id": "159dccc4b1ae55111bd571a86634c16b",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
},
{
"code": "440103",
"parentCode": "440100",
"name": "荔湾区",
"orderNum": 1,
"id": "118759109037d200b15874736e708d71",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gz_qu",
"field": "adcode",
"children": []
}
]
},
{
"code": "445300",
"parentCode": "440000",
"name": "云浮市",
"orderNum": 1,
"id": "9c2d0666c2dd18437fd4bba9d04c6ba5",
"url": "/geoserver/ows",
"serviceIndex": "shuyuan:xzqconfig_gd_shi",
"field": "adcode",
"children": []
}
]
}
],
"success": true
}

BIN
public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

1
public/icons_29287_360.1953ee44cbba89dfe274d4094cd9fb21.es5.js

File diff suppressed because one or more lines are too long

BIN
public/img/map-title-o.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

1
public/img/map/changeScene.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
public/img/map/dike_four.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

BIN
public/img/map/dike_one.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

BIN
public/img/map/dike_two_three.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

BIN
public/img/map/icon-folder.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

BIN
public/img/map/icon-layer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

1
public/img/map/layer.svg

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="20" height="20" viewBox="0 0 20 20"><g><g><path d="M9.999699296875,9.385516708984376L17.591379296874997,6.222386708984375C18.104379296875,6.008626708984375,18.104379296875,5.250506708984375,17.591379296874997,5.036746708984375L9.999699296875,1.873626708984375L2.408007296875,5.036746708984375C1.894969796875,5.250506708984375,1.894970896875,6.008626708984375,2.408007296875,6.222386708984375L9.999699296875,9.385516708984376ZM9.999689296875,8.011006708984375L4.284089296875,5.629566708984375L9.999699296875,3.2481267089843753L15.715279296875,5.629566708984375L9.999689296875,8.011006708984375ZM1.873779296875,8.783306708984375L1.873779296875,10.317236708984375L10.000019296875,13.889926708984374L18.123779296875,10.318326708984374L18.123779296875,8.784396708984374L10.000019296875,12.356026708984375L1.873779296875,8.783306708984375ZM1.873779296875,13.024326708984376L1.873779296875,14.558226708984375L10.000139296875,18.130926708984376L18.123779296875,14.559426708984375L18.123779296875,13.025526708984374L10.000139296875,16.597026708984373L1.873779296875,13.024326708984376Z" fill-rule="evenodd" fill="#36B29E" fill-opacity="1"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
public/img/map/reservoir_big.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
public/img/map/reservoir_normal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/img/map/reservoir_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/img/map/sluice_big.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

BIN
public/img/map/sluice_middle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

BIN
public/img/map/sluice_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

BIN
public/img/popupLbl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

1
public/img/洪灾.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

8799
public/js/CesiumNetworkPlug.js

File diff suppressed because one or more lines are too long

1814
public/js/localforage.min.js

File diff suppressed because it is too large

BIN
public/lib/SuperMap3D/Assets/Textures/grepin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
public/lib/SuperMap3D/Assets/Textures/middle-edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

BIN
public/lib/SuperMap3D/Assets/Textures/vertex-edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

32869
public/lib/SuperMap3D/SuperMap3D.js

File diff suppressed because one or more lines are too long

BIN
public/lib/SuperMap3D/ThirdParty/crunch.wasm

Binary file not shown.

BIN
public/lib/SuperMap3D/ThirdParty/draco_decoder_new.wasm

Binary file not shown.

BIN
src/.DS_Store

Binary file not shown.

526
src/App.vue

@ -0,0 +1,526 @@
<script setup lang="ts">
import zhCn from "element-plus/dist/locale/zh-cn.mjs";
const locale = zhCn as any;
</script>
<template>
<el-config-provider namespace="sy" :locale="locale">
<router-view></router-view>
</el-config-provider>
</template>
<style>
html,
body {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
border: none;
overflow: hidden;
font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, "Microsoft Yahei", "Hiragino Sans GB", "WenQuanYi Micro Hei",
sans-serif;
font-size: 14px;
/* color: #ffffff; */
background: #000;
-webkit-overflow-scrolling: touch;
}
body {
position: relative;
overflow-x: hidden;
overflow-y: hidden;
}
/**************** 一个黑色面板,指向左下角黄色连线start ****************/
.div-icon {
position: absolute;
left: 0;
top: 0;
pointer-events: none;
--text-font-size: 15px;
--boder-width: 162px;
--clip-width-1: 177px;
--clip-width-2: 175px;
--boder-height: 30px;
--clip-height-1: 40px;
--clip-height-2: 38px;
--text-color: #ccc;
--border-color: #15d1f2;
--box-shadow-color: rgba(21, 209, 242, 0.5);
}
.blackPanel {
min-width: 90px;
min-height: 35px;
position: absolute;
left: 16px;
bottom: 31px;
cursor: default;
border-radius: 4px;
opacity: 0.96;
border: 1px solid #14171c;
box-shadow: 0px 2px 21px 0px rgba(33, 34, 39, 0.55);
border-radius: 4px;
box-sizing: border-box;
background: linear-gradient(0deg, #1e202a 0%, #0d1013 100%);
}
.blackPanel::before {
content: "";
width: calc(100% + 22px);
height: 39px;
position: absolute;
bottom: -39px;
left: -22px;
background: url("/img/popupLbl.png") 0px 0px no-repeat;
background-position: 0px 0px;
}
.blackPanel-text {
width: 100%;
height: 100%;
min-height: 33px;
text-align: center;
padding: 5px;
margin: 0;
font-size: 14px;
font-weight: 400;
color: #ffffff;
border: 1px solid #ffffff4f;
-webkit-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
.animation-spaceInDown {
animation-duration: 1s;
animation-fill-mode: both;
animation-name: spaceInDown;
}
@keyframes spaceInDown {
0% {
opacity: 0;
transform-origin: 0% 100%;
transform: scale(0.2) translate(0, 200%);
}
100% {
opacity: 1;
transform-origin: 0% 100%;
transform: scale(1) translate(0, 0);
}
}
@keyframes rise {
0% {
opacity: 0.1;
transform: translate(0, 100%);
}
5% {
opacity: 0.3;
transform: translate(0, 95%);
}
10% {
opacity: 0.6;
transform: translate(0, 90%);
}
15% {
opacity: 1;
transform: translate(0, 85%);
}
75% {
opacity: 1;
transform: translate(0, 25%);
}
80% {
opacity: 0.7;
transform: translate(0, 20%);
}
90% {
opacity: 0.3;
transform: translate(0, 10%);
}
95% {
opacity: 0.2;
transform: translate(0, 5%);
}
100% {
opacity: 0.1;
transform: translate(0, 0);
}
}
/**************** 一个黑色面板,指向左下角黄色连线end ****************/
@keyframes divBoderLabel-animation {
0%,
100% {
clip: rect(0px, var(--clip-width-1), 2px, 0px);
}
25% {
clip: rect(0px, 2px, var(--clip-height-1), 0px);
}
50% {
clip: rect(var(--clip-height-2), var(--clip-width-1), var(--clip-width-1), 0px);
}
75% {
clip: rect(0px, var(--clip-width-1), var(--clip-height-1), var(--clip-width-2));
}
}
.divBoderLabel-boder {
width: var(--boder-width);
height: var(--boder-height);
margin: auto;
color: var(--border-color);
box-shadow: inset 0 0 0 1px var(--box-shadow-color);
}
.divBoderLabel-text {
color: var(--text-color);
font-size: var(--text-font-size);
display: flex;
width: 100%;
height: 100%;
align-items: center;
justify-content: center;
font-weight: bolder;
user-select: none;
cursor: pointer;
font-family: 微软雅黑;
}
.divBoderLabel-boder,
.divBoderLabel-boder::before,
.divBoderLabel-boder::after {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.divBoderLabel-boder::before,
.divBoderLabel-boder::after {
content: "";
margin: -5%;
box-shadow: inset 0 0 0 2px;
animation: divBoderLabel-animation 8s linear infinite;
}
.divBoderLabel-boder::before {
animation-delay: -4s;
}
/**************** 一个渐变的文本面板,中间竖直连线start ****************/
.blueGradientPnl {
text-align: center;
padding: 5px 30px;
margin: 0;
color: #fff;
background: linear-gradient(rgb(7 10 203 / 75%), rgb(16 238 220));
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
max-height: 130px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
}
.blueGradientPnl:after {
content: "";
position: absolute;
bottom: -60px;
left: calc(50% - 3px);
display: block;
width: 3px;
height: 60px;
border-right: 3px solid #2bcdbb;
}
.blueGradientPnl-highlight {
border: 2px solid yellow;
}
.blueGradientPnl-highlight:after {
border-right: 3px solid yellow;
}
/**************** 一个渐变的文本面板,中间竖直连线end ****************/
/********** 面板:倾斜指向左下角的面板样式start ***********/
.tiltPanel-wrap {
position: relative;
padding: 30px;
overflow: hidden;
}
.tiltPanel .area {
position: relative;
min-width: 180px;
}
.tiltPanel .b-t {
position: absolute;
top: 0;
left: 44px;
right: 0;
height: 1px;
z-index: 10;
}
.tiltPanel .b-r {
position: absolute;
top: 0;
right: 0;
bottom: 44px;
width: 1px;
z-index: 10;
}
.tiltPanel .b-b {
position: absolute;
left: 0;
right: 44px;
bottom: 0;
height: 1px;
z-index: 10;
}
.tiltPanel .b-l {
position: absolute;
top: 44px;
left: 0;
bottom: 0;
width: 1px;
z-index: 10;
}
.tiltPanel .b-t-l {
position: absolute;
top: 0;
left: 0;
width: 1px;
height: 62px;
transform: rotate(45deg) translate(52px, -22px);
z-index: 10;
}
.tiltPanel .b-b-r {
position: absolute;
bottom: 0;
right: 0;
width: 1px;
height: 62px;
transform: rotate(45deg) translate(-52px, 22px);
z-index: 10;
}
.tiltPanel .label-wrap {
padding-left: 12px;
color: #fff;
font-size: 16px;
white-space: nowrap;
overflow: hidden;
}
.tiltPanel .title {
margin-top: 20px;
padding: 0 12px 0 30px;
height: 36px;
line-height: 36px;
position: relative;
}
.tiltPanel .title::before {
content: "";
position: absolute;
bottom: -4px;
left: 0;
right: 0;
z-index: 10;
height: 2px;
}
.tiltPanel .label-content {
padding: 15px 0;
}
.tiltPanel .data-li {
padding: 4px 45px 4px 0;
}
.tiltPanel .data-label,
.data-value {
display: inline-block;
}
.tiltPanel .data-value {
font-size: 14px;
}
.tiltPanel .label-num {
margin-right: 3px;
color: #f09e28;
font-weight: 600;
}
.tiltPanel .label-tag {
display: inline-block;
position: relative;
margin-right: 6px;
padding: 0 6px;
font-weight: 600;
cursor: pointer;
background-color: #909399;
border-radius: 4px;
}
.tiltPanel .label-tag::after {
content: attr(alt);
display: inline-block;
position: absolute;
bottom: -22px;
right: -35px;
z-index: -1;
padding: 2px 4px;
color: #fff;
font-size: 14px;
background-color: #333;
border-radius: 3px;
opacity: 0;
transition: all 0.3s ease-in;
}
.tiltPanel .label-tag:hover::after {
opacity: 1;
z-index: 11;
}
.tiltPanel .data-value-status-0 {
background-color: #f0285c;
}
.tiltPanel .data-value-status-1 {
background-color: #35b15b;
}
.tiltPanel .data-value-status-2 {
background-color: #f09e28;
}
.tiltPanel .arrow {
position: absolute;
bottom: 0;
left: 0;
width: 45px;
height: 2px;
transform: rotate(-45deg) translate(5px, -15px);
}
/* 蓝色主题 */
.tiltPanel-theme-blue .b-t,
.tiltPanel-theme-blue .b-r,
.tiltPanel-theme-blue .b-b,
.tiltPanel-theme-blue .b-l,
.tiltPanel-theme-blue .b-t-l,
.tiltPanel-theme-blue .b-b-r {
background-color: #29baf1;
box-shadow: 0 0 10px 2px #29baf1;
}
.tiltPanel-theme-blue .area {
background-image: linear-gradient(135deg, transparent 30px, #28bbf06c 30px, #28bbf06c 50%, transparent 50%),
linear-gradient(-45deg, transparent 30px, #28bbf06c 30px, #28bbf06c 50.1%, transparent 50%);
}
.tiltPanel-theme-blue .title {
background-image: linear-gradient(135deg, transparent 25px, #29baf1 25px);
}
.tiltPanel-theme-blue .arrow,
.tiltPanel-theme-blue .title::before {
background-color: #28bbf0;
}
/********** 面板:倾斜指向左下角的面板样式end ***********/
/**************** 一个简洁文本面板,中间竖直连线start ****************/
.greenGradientPnl {
width: 100px;
text-align: center;
background-image: linear-gradient(to right, #565d39, #00ffc3);
position: relative;
left: -1px;
bottom: 29px;
cursor: default;
padding: 5px;
border: 1px solid #9c9944e8;
}
.greenGradientPnl:hover {
border: 1px solid rgb(9, 255, 0);
}
.greenGradientPnl::before {
position: absolute;
content: "";
left: 50%;
bottom: -30px;
height: 30px;
border-left: 2px dashed #c5e22770;
}
.greenGradientPnl-highlight {
border: 2px solid yellow;
}
.greenGradientPnl-highlight::before {
border-left: 2px dashed yellow !important;
}
/**************** 一个简洁文本面板,中间竖直连线end ****************/
.sy-four-color {
width: 100%;
position: relative;
top: -68px;
left: -60px;
padding: 5px;
cursor: pointer;
}
.sy-four-color .four-color_bg {
position: absolute;
}
.sy-four-color .four-color_name {
width: 150px;
position: absolute;
top: 14px;
left: 25px;
text-align: left;
}
.sy-animation {
animation: cameraMove 1s linear infinite alternate;
-webkit-animation: cameraMove 1s linear infinite alternate;
}
</style>

BIN
src/api/.DS_Store

Binary file not shown.

BIN
src/api/axios/.DS_Store

Binary file not shown.

199
src/api/axios/Axios.ts

@ -0,0 +1,199 @@
/* eslint-disable @typescript-eslint/indent */
import type { AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosError, AxiosProgressEvent } from 'axios';
import type { RequestOptions, Result, UploadFileParams } from '@/types/axios';
import type { CreateAxiosOptions } from './axiosTransform';
import axios from 'axios';
import qs from 'qs';
import { AxiosCanceler } from './axiosCancel';
import { isFunction } from '@/utils/is';
import { cloneDeep } from 'lodash-es';
import { ContentTypeEnum, RequestEnum } from '@/enums/httpEnum';
// export * from "./axiosTransform";
/**
* @description: axios module
*/
export class VAxios {
private readonly axiosInstance: AxiosInstance;
private readonly options: CreateAxiosOptions;
constructor(options: CreateAxiosOptions) {
this.options = options;
this.axiosInstance = axios.create(options);
this.setupInterceptors();
}
/**
* @说明:
*/
private getTransform() {
const { transform } = this.options;
return transform;
}
/**
* @说明:
*/
private setupInterceptors() {
const transform = this.getTransform();
if (!transform) {
return;
}
const { requestInterceptors, requestInterceptorsCatch, responseInterceptors, responseInterceptorsCatch } =
transform;
const axiosCanceler = new AxiosCanceler();
// 禁止重复请求
this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => {
axiosCanceler.addPending(config);
if (requestInterceptors && isFunction(requestInterceptors)) {
config = requestInterceptors(config, this.options);
}
return config;
}, undefined);
// 请求拦截器错误捕获
requestInterceptorsCatch &&
isFunction(requestInterceptorsCatch) &&
this.axiosInstance.interceptors.request.use(undefined, requestInterceptorsCatch);
// 响应拦截器处理
this.axiosInstance.interceptors.response.use((res: AxiosResponse<any>) => {
res && axiosCanceler.removePending(res.config);
if (responseInterceptors && isFunction(responseInterceptors)) {
res = responseInterceptors(res);
}
return res;
}, undefined);
// 响应拦截器错误捕获
responseInterceptorsCatch &&
isFunction(responseInterceptorsCatch) &&
this.axiosInstance.interceptors.response.use(undefined, responseInterceptorsCatch);
}
/**
* @description: File Upload
*/
async uploadFile<T = any>(
config: AxiosRequestConfig,
params: UploadFileParams,
onUploadProgress: (progressEvent: AxiosProgressEvent) => void,
options?: RequestOptions
) {
const formData = new FormData();
const { requestOptions } = this.options;
// 合并默认配置与传入配置
const opt: RequestOptions = Object.assign({}, requestOptions, options);
for (const key in params) {
formData.append(key, params[key]);
}
// 获取伪类方法
const transform = this.getTransform();
const { transformRequestHook } = transform ?? {};
return await new Promise((resolve, reject) => {
this.axiosInstance
.request<T>({
...config,
method: 'POST',
data: formData,
onUploadProgress
})
.then((res: any) => {
if (transformRequestHook && isFunction(transformRequestHook)) {
try {
const ret = transformRequestHook(res, opt);
resolve(ret);
} catch (err) {
reject(err || new Error('request error!'));
}
return;
}
resolve(res as unknown as Promise<T>);
})
.catch((e: Error | AxiosError) => {
reject(e);
});
});
}
// support form-data
supportFormData(config: AxiosRequestConfig) {
const headers = config.headers ?? this.options.headers;
const contentType = headers?.['Content-Type'] ?? headers?.['content-type'];
if (
contentType !== ContentTypeEnum.FORM_URLENCODED ||
!Reflect.has(config, 'data') ||
config.method?.toUpperCase() === RequestEnum.GET
) {
return config;
}
return {
...config,
data: qs.stringify(config.data, { arrayFormat: 'brackets' })
};
}
async get<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return await this.request({ ...config, method: 'GET' }, options);
}
async post<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return await this.request({ ...config, method: 'POST' }, options);
}
async put<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return await this.request({ ...config, method: 'PUT' }, options);
}
async delete<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return await this.request({ ...config, method: 'DELETE' }, options);
}
async request<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
let conf: CreateAxiosOptions = cloneDeep(config);
// 获取伪类方法
const transform = this.getTransform();
const { requestOptions } = this.options;
// 合并默认配置与传入配置
const opt: RequestOptions = Object.assign({}, requestOptions, options);
const { beforeRequestHook, transformRequestHook } = transform ?? {};
// 获取路由配置
if (beforeRequestHook && isFunction(beforeRequestHook)) {
conf = beforeRequestHook(conf, opt);
}
conf.requestOptions = opt;
// 配置请求头
conf = this.supportFormData(conf);
return await new Promise((resolve, reject) => {
this.axiosInstance
.request<any, AxiosResponse<Result>>(conf)
.then(async (res: AxiosResponse<Result>) => {
if (transformRequestHook && isFunction(transformRequestHook)) {
try {
const ret = transformRequestHook(res, opt);
if (ret instanceof Promise) {
try {
const data = await ret;
resolve(data);
} catch (error) {
console.error('reponse error:结构体错误!' + config.url);
reject(error);
}
}
resolve(ret);
} catch (err) {
reject(err || new Error('request error!'));
}
return;
}
resolve(res as unknown as Promise<T>);
})
.catch((e: Error | AxiosError) => {
reject(e);
});
});
}
}

70
src/api/axios/axiosCancel.ts

@ -0,0 +1,70 @@
import type { AxiosRequestConfig, Canceler } from 'axios';
import axios from 'axios';
import { isFunction } from '@/utils/is';
// 用于储存接口标识与中断接口
// 新建一个集合便于储存接口标识
let pendingMap = new Map<string, Canceler>();
export const getPendingUrl = (config: AxiosRequestConfig) =>
[config.method, config.url].join('&');
export class AxiosCanceler {
/**
*
* @param {Object} config
*/
addPending(config: AxiosRequestConfig) {
this.removePending(config);
const url = getPendingUrl(config);
if (url.indexOf('cameras/previewURLs') > 0) return; // 忽略 重复请求获取预览取流地址
if (url.indexOf('preview/capture') > 0) return; // 忽略 重复请求获取预览取流地址
if (url.indexOf('/sy-engine-backer/cameraInfo/') > 0) return; // 忽略 重复请求获取预览取流地址
if (url.indexOf('/run/statistic/chart') > 0) return;
if (url.indexOf('/monitor/chart') > 0) return;
// 上传接口忽略重复请求
if (!url.includes('oss')) {
config.cancelToken =
config.cancelToken ??
new axios.CancelToken((cancel) => {
// 如果队列没有这个请求就添加进去
if (!pendingMap.has(url)) {
pendingMap.set(url, cancel);
}
});
}
}
/**
* @说明:
*/
removeAllPending() {
pendingMap.forEach((cancel) => {
cancel && isFunction(cancel) && cancel();
});
pendingMap.clear();
}
/**
*
* @param {Object} config
*/
removePending(config: AxiosRequestConfig) {
const url = getPendingUrl(config);
if (pendingMap.has(url)) {
const cancel = pendingMap.get(url);
cancel && cancel(url);
pendingMap.delete(url);
}
}
/**
* @说明:
*/
reset(): void {
pendingMap = new Map<string, Canceler>();
}
}

56
src/api/axios/axiosTransform.ts

@ -0,0 +1,56 @@
/**
*
*/
import type { AxiosRequestConfig, AxiosResponse } from 'axios';
import type { RequestOptions, Result } from '@/types/axios';
export interface CreateAxiosOptions extends AxiosRequestConfig {
transform?: AxiosTransform;
requestOptions?: RequestOptions;
}
export abstract class AxiosTransform {
/**
* @说明:
*/
beforeRequestHook?: (
config: AxiosRequestConfig,
options: RequestOptions,
) => AxiosRequestConfig;
/**
* @说明:
*/
transformRequestHook?: (
res: AxiosResponse<Result>,
options: RequestOptions,
) => any;
/**
* @说明:
*/
requestCatchHook?: (e: Error, options: RequestOptions) => Promise<any>;
/**
* @说明:
*/
requestInterceptors?: (
config: AxiosRequestConfig,
options: CreateAxiosOptions,
) => AxiosRequestConfig;
/**
* @说明:
*/
responseInterceptors?: (res: AxiosResponse<any>) => AxiosResponse<any>;
/**
* @说明:
*/
requestInterceptorsCatch?: (error: Error) => void;
/**
* @说明:
*/
responseInterceptorsCatch?: (error: Error) => void;
}

75
src/api/axios/checkStatus.ts

@ -0,0 +1,75 @@
import { useMessage } from '@/hooks/web/useMessage';
import { isEmpty } from '@/utils/is';
// import { useUserStore } from '@/store/modules/user';
const { createMessage, notification } = useMessage();
export function checkStatus(status: number, msg: string, errorMessageMode: any, customMessage: any, data: any): void {
let errMessage = '';
switch (status) {
case 400:
errMessage = `${msg}`;
break;
// 401: 无接口权限
case 401:
errMessage = msg || '没有权限访问';
break;
// 424 一般为token过期出现
// 如果未登录,则跳转到登录页面,并携带当前页面的路径
// 登录成功后,将返回到当前页面
case 424:
errMessage = msg || '登录凭证过期,请重新登录';
/* eslint-disable-next-line */
// const { logout } = useUserStore();
// logout();
break;
// 404请求不存在
case 404:
errMessage = '网络请求错误,未找到该资源!';
break;
case 405:
errMessage = '网络请求错误,请求方法未允许!';
break;
case 408:
errMessage = '网络请求超时!';
break;
case 500:
errMessage = '服务器错误,请联系管理员!';
break;
case 501:
errMessage = '网络未实现!';
break;
case 502:
errMessage = '网络错误!';
break;
case 503:
errMessage = '服务不可用,服务器暂时过载或维护!';
break;
case 504:
errMessage = '网络超时!';
break;
case 505:
errMessage = 'http版本不支持该请求!';
break;
default:
}
if (!isEmpty(customMessage)) {
errMessage = customMessage[status];
}
if (errMessage === '') {
errMessage = data?.error;
}
// 报错信息框类型
if (errorMessageMode === 'message') {
createMessage({
message: errMessage,
grouping: true,
type: 'error'
});
} else if (errorMessageMode === 'notification') {
notification.error({
title: '接口异常',
message: `${errMessage}`
});
}
}

50
src/api/axios/helper.ts

@ -0,0 +1,50 @@
import { isObject, isString } from '@/utils/is';
const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm';
export function joinTimestamp<T extends boolean>(
join: boolean,
restful: T,
): T extends true ? string : object;
export function joinTimestamp(join: boolean, restful = false): string | object {
if (!join) {
return restful ? '' : {};
}
const now = new Date().getTime();
if (restful) {
return `?_t=${now}`;
}
return { _t: now };
}
/**
* @说明:
*/
export function formatRequestDate(params: Recordable) {
// params不是对象直接返回
if (!isObject(params)) {
return;
}
for (const key in params) {
// 时间戳处理
if (params[key]?._isAMomentObject) {
params[key] = params[key].format(DATE_TIME_FORMAT);
}
// 字符串去空格
if (isString(key)) {
const value = params[key];
if (value) {
try {
params[key] = isString(value) ? value.trim() : value;
} catch (error: any) {
throw new Error(error);
}
}
}
if (isObject(params[key])) {
formatRequestDate(params[key]);
}
}
}

215
src/api/axios/index.ts

@ -0,0 +1,215 @@
// axios配置 可自行根据项目进行更改,只需更改该文件即可,其他文件可以不动
import type { AxiosResponse } from 'axios';
import type { RequestOptions, Result } from '@/types/axios';
import type { AxiosTransform, CreateAxiosOptions } from './axiosTransform';
import { VAxios } from './Axios';
import { useMessage } from '@/hooks/web/useMessage';
import { RequestEnum } from '@/enums/httpEnum';
import { isString, isEmpty } from '@/utils/is';
import { setObjToUrlParams, deepMerge } from '@/utils/index';
import { getAppEnvConfig } from '@/utils/env';
import { joinTimestamp, formatRequestDate } from './helper';
import { checkStatus } from './checkStatus';
// import { useUserStore } from '@/store/modules/user';
const whitelist = ['/cameras/previewURLs', '/cameras/preview/capture'];
const { notification, createMessage } = useMessage();
const { VITE_GLOB_API_URL } = getAppEnvConfig();
/**
* @description: 便
*/
const transform: AxiosTransform = {
/**
* @description:
*/
transformRequestHook: (res: AxiosResponse<Result>, options: RequestOptions) => {
const { isTransformResponse, isReturnNativeResponse } = options;
const {
data,
config: { url },
status
} = res;
const errorMessageMode = options?.errorMessageMode;
const customMessage = options?.customMessage;
let msg: string;
// 自定义报错信息
if (!isEmpty(customMessage)) {
msg = customMessage[status] ? customMessage[status] : data?.msg ?? '';
} else {
msg = data?.msg ?? '';
}
// 是否返回原生响应头 比如:需要获取响应头时使用该属性
if (isReturnNativeResponse) {
return res;
}
// 不进行任何处理,直接返回
// 用于页面代码可能需要直接获取code,data,message这些信息时开启
if (status === 200) {
if (isTransformResponse) {
// 过滤 oauth2 接口返回内容
if (data.code === 200 || url?.includes('oauth2')) {
return data;
} else {
// 报错信息框类型
if (errorMessageMode === 'message') {
createMessage.error(msg);
return Promise.reject(res);
} else if ((errorMessageMode as string) === 'notification') {
notification.error({
title: '接口异常',
message: `${msg}`
});
return Promise.reject(res);
}
}
}
if (data.code === 200) {
return data.data || data;
} else {
// 报错信息框类型
if (errorMessageMode === 'message') {
createMessage.error(msg);
return Promise.reject(res);
} else if ((errorMessageMode as string) === 'notification') {
notification.error({
title: '接口异常',
message: `${msg}`
});
return Promise.reject(res);
}
}
}
},
// 请求之前处理config
beforeRequestHook: (config, options) => {
const { joinParamsToUrl, formatDate, joinTime = true } = options;
const params = config.params || {};
const data = config.data || false;
formatDate && data && !isString(data) && formatRequestDate(data);
if (config.method?.toUpperCase() === RequestEnum.GET) {
if (!isString(params)) {
// 给 get 请求加上时间戳参数,避免从缓存中拿数据。
config.params = Object.assign(params || {}, joinTimestamp(joinTime, false));
} else {
// 兼容restful风格
config.url = config.url + params + `${joinTimestamp(joinTime, true)}`;
config.params = undefined;
}
} else {
if (!isString(params)) {
formatDate && formatRequestDate(params);
if (Reflect.has(config, 'data') && config.data && Object.keys(config.data).length > 0) {
config.data = data;
config.params = params;
} else {
// 非GET请求如果没有提供data,则将params视为data
config.data = isEmpty(params) ? undefined : params;
config.params = undefined;
}
if (joinParamsToUrl) {
config.url = setObjToUrlParams(config.url!, Object.assign({}, config.params, config.data));
config.data = undefined;
}
} else {
// 兼容restful风格
config.url = config.url + params;
config.params = undefined;
}
}
return config;
},
/**
* @description:
*/
requestInterceptors: (config) => {
// const { getUserInfo } = useUserStore();
if (
(config as Recordable)?.requestOptions?.withToken !== false &&
(config as Recordable).headers.Authorization === undefined
) {
// (config as Recordable).headers.Authorization =
// `Bearer ${getUserInfo?.access_token}`;
}
return config;
},
/**
* @description:
*/
responseInterceptors: (res: AxiosResponse<any>) => {
return res;
},
/**
* @description:
*/
/* eslint-disable-next-line */
responseInterceptorsCatch: (error: any) => {
if (!error.response) {
return Promise.reject(error);
}
const { response, config } = error || {};
const { data, status } = response;
const errorMessageMode = config?.requestOptions?.errorMessageMode;
const customMessage = config?.requestOptions?.customMessage;
const msg: string = data?.msg ?? '';
// 过滤视频获取地址和截图报错
if (whitelist.every((item) => config.url.indexOf(item) === -1)) {
checkStatus(status, msg, errorMessageMode, customMessage, data);
}
return Promise.reject(error);
}
};
function getCookie(name: string): string | null {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop()?.split(";").shift() || null;
return null;
}
function createAxios(opt?: Partial<CreateAxiosOptions>) {
return new VAxios(
deepMerge(
{
timeout: 300 * 1000,
// 基础接口地址
baseURL: VITE_GLOB_API_URL,
headers: {
'Content-Type': 'application/json',
'shuili': 'water ' + getCookie('Admin-Token')
},
// 数据处理方式
transform,
// 配置项,下面的选项都可以在独立的接口请求中覆盖
requestOptions: {
// 是否返回原生响应头 比如:(下载文件可以需要选为true)
isReturnNativeResponse: false,
// 需要对返回数据进行处理 (拦截器已经做了处理,如果后端code不等于200会报错,如果想自己处理选为true)
isTransformResponse: false,
// post请求的时候添加参数到url (post接口做了处理,如果data和params都有就正常,如果只有一个默认变成data,这个参数是把data变成params)
joinParamsToUrl: false,
// 格式化提交参数时间 (去空格还有时间戳格式变化,不需要可以为false)
formatDate: true,
// 消息提示类型 (可选message,notification)
errorMessageMode: 'message',
// 自定义信息 (可以改变响应status错误信息,如:{404: ‘报错404’})
customMessage: {},
// 是否加入时间戳 (如地址图片可避免链接重复)
joinTime: false,
// 是否携带token
withToken: true
}
},
opt ?? {}
)
);
}
const http = createAxios();
export default http;
export const request = async (config: any, options?: any) => await http.request(config, options);

14
src/api/common/index.ts

@ -0,0 +1,14 @@
import { request } from '../axios';
import { getCookie } from '@/utils';
// 获取cookie
const shuili = getCookie('Admin-Token');
// 获取字典列表
export function getDicts(dictType: string) {
return request({
url: `/system/dict/data/type/${dictType}`,
method: "get",
headers: {
shuili: 'water ' + shuili
}
});
}

111
src/api/dike/index.ts

@ -0,0 +1,111 @@
import { request } from '../axios';
import { getCookie } from '@/utils';
// 获取cookie
const shuili = getCookie('Admin-Token');
// 获取堤防基础列表
// 水库特征信息详情
export const getReservoirRsppDetailData = (id: string | number) => {
return request({
url: `/sk/rspp/${id}`,
method: 'get',
headers: {
shuili: 'water ' + shuili
}
});
};
// 获取水闸
// 查询水闸安全管理基本信息详细
export function getJbxx(id: any) {
return request({
url: '/df/jbxx/' + id,
method: 'get',
headers: {
shuili: 'water ' + shuili
}
});
}
// 查询水文特征列表
export function listSwtz(query: any) {
return request({
url: '/df/swtz/list',
method: 'post',
data: query,
headers: {
shuili: 'water ' + shuili
}
});
}
// 查询水文特征详细
export function getSwtz(id: any) {
return request({
url: '/df/swtz/' + id,
method: 'get',
headers: {
shuili: 'water ' + shuili
}
});
}
// 新增水文特征
export function addSwtz(data: any) {
return request({
url: '/df/swtz',
method: 'post',
data: data,
headers: {
shuili: 'water ' + shuili
}
});
}
// 修改水文特征
export function updateSwtz(data: any) {
return request({
url: '/df/swtz',
method: 'put',
data: data,
headers: {
shuili: 'water ' + shuili
}
});
}
// 删除水文特征
export function delSwtz(id: any) {
return request({
url: '/df/swtz/' + id,
method: 'delete',
headers: {
shuili: 'water ' + shuili
}
});
}
// 导出水文特征
export function exportSwtz(query: any) {
return request({
url: '/df/swtz/export',
method: 'get',
params: query,
headers: {
shuili: 'water ' + shuili
}
});
}
// 获取巡查统计分析数据/run/statistic/chart
export function getV2PatrolStatisticChart(data: any) {
return request({
url: `/run/statistic/chart`,
method: "post",
data,
headers: {
shuili: 'water ' + shuili
}
});
}

94
src/api/map/index.ts

@ -0,0 +1,94 @@
import { request } from "../axios";
import axios from "axios";
// 获取场景列表
export const getSceneListData = async (data: any) => {
return request({
url: `/map/scene/sceneList`,
method: "post",
data: {
pageNum: 1,
pageSize: 10,
data: {
id: "",
name: data.name,
},
params: {
order: "asc",
orderBy: "pub_date",
},
},
});
};
export const getLayerLegend = async (url: string) => {
return axios.get(url);
};
// 获取图形的
export const getLayerData = async (url: string, params: any) => {
return request({
url,
method: "post",
data: params,
headers: {
"Content-Type": "multipart/form-data",
},
});
};
//从水库-水库点图层中,根据水库名称/水平编码,从geojson中查询水库列表
export const getReservoirList = async (layerData: any, searchName: string) => {
const { serviceToken, text } = layerData;
if (!text) return;
let filter = "1=1";
switch (layerData.nameCn) {
case "水库点":
filter = searchName
? `RES_NAME LIKE '%${searchName}%' OR RES_CODE LIKE '%${searchName}%'`
: "1=1";
break;
case "水闸":
filter = searchName
? `WAGA_NAME LIKE '%${searchName}%' OR WAGA_CODE LIKE '%${searchName}%'`
: "1=1";
break;
case "堤防":
filter = searchName
? `DIKE_NAME LIKE '%${searchName}%' OR DIKE_CODE LIKE '%${searchName}%'`
: "1=1";
break;
}
const queryArr = text.split(";");
let dataUrl = queryArr[0];
const datasourceName = queryArr[1];
let params: any = {
getFeatureMode: "SQL",
datasetNames: [datasourceName],
maxFeatures: 100,
queryParameter: {
attributeFilter: filter,
},
};
let queryUrl = `${dataUrl}/data/featureResults.geojson?returnContent=true`;
if (serviceToken) {
queryUrl += `&k=${serviceToken}`;
}
const result = await axios.post(
queryUrl,
JSON.stringify(params),
{
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
},
}
);
if (result?.data?.features?.length > 0) {
return result.data;
}
return {
type: "FeatureCollection",
features: [],
};
};

94
src/api/project/index.ts

@ -0,0 +1,94 @@
import axios from "axios";
import { request } from "../axios";
const url = "/sy-map-admin";
export const getProjectList = async (params: any) => {
const res = await request({
url: url + "/water/project.json",
method: "get",
params,
});
return res;
};
export const getLayerTree = async (params: any) => {
return await request({
url: url + "/water/layerTree.json",
method: "get",
params,
});
};
// 默认视点
export const getDefaultViewPoint = async () => {
return await request({
url: url + "/water/defaultViewPoint.json",
method: "get",
});
};
// 行政区划树
export const getRegionTree = async () => {
return await request({
url: url + "/water/regionTree.json",
method: "get",
});
};
export const getLayerStyle = async (id: string) => {
return await request({
url: url + "/layer/style/" + id,
method: "get",
});
};
// 默认查询配置的第一个场景的信息
export const getFirstScene = async () => {
return request({
url: `/map/scene/sceneList`,
method: "post",
data: {
pageNum: 1,
pageSize: 1,
data: {
id: "",
name: "",
},
params: {
order: "asc",
orderBy: "pub_date",
},
},
});
};
export const getLayerData = async (sceneId: string) => {
return request({
url: `/map/scene/getLayerTree/${sceneId}`,
method: "get",
});
};
export const getLayerLegend = async (url: string) => {
return axios.get(url);
};
/**
*
* @param type
* @param code
* @returns
*/
export const identifyLayerInfo = async (
type: string | number,
code: string | number
) => {
return request({
url: `/run/api/object/info/${type}/${code}`,
method: "get",
});
};
// 获取场景配置
export function getSceneConfig(sceneId: string | number) {
return request({
url: `/map/scene/config/findConfigBySceneId/${sceneId}`,
method: "get",
});
}

255
src/api/reservoir/index.ts

@ -0,0 +1,255 @@
import { request } from '../axios';
import { getCookie } from '@/utils';
// 获取cookie
const shuili = getCookie('Admin-Token');
// 获取水库基础列表
export const getReservoirBaseListData = (data: any) => {
return request({
url: `/sk/base/list`,
method: 'post',
data: data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取水库测站基础列表
export const getReservoirCZListData = (data: any) => {
return request({
url: `/cz/base/list`,
method: 'post',
data: data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取测点列表 /cd/base/list
export const getReservoirCDListData = (data: any) => {
return request({
url: `/cd/base/list`,
method: 'post',
data: data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取水库测站提交告警详情
export const getReservoirCZAlarmDetailsData = (id: string | number) => {
return request({
url: `/cz/base/${id}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 水库基础信息详情
export const getReservoirBaseDetailData = (id: string | number) => {
return request({
url: `/sk/base/${id}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取水库代表站信息详情
export const getReservoirFlagCZData = (id: string | number) => {
return request({
url: `/sk/base/stcd/${id}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 水库特征信息详情
export const getReservoirRsppDetailData = (id: string | number) => {
return request({
url: `/sk/rspp/${id}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 水库测站详情
export const getReservoirCZDetailData = (id: string | number) => {
return request({
url: `/cz/base/${id}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 测站要素详情
export const getReservoirCZElementDetailData = (data: any) => {
return request({
url: `/cz/monitor/water`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取测站测点指标 /cz/monitor/index
export const getReservoirMonitorIndexData = (data: any) => {
return request({
url: `/cz/monitor/index`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 测站树结构
export const getReservoirTreeDetailData = (data: any) => {
return request({
url: `/cd/base/tree`,
method: 'get',
params: data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取测点列表
export const getReservoirCZPointListData = (data: any) => {
return request({
url: `/cd/base/list`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取水库测站echarts数据
export const getReservoirCZEchartsData = (data: any) => {
return request({
url: `/cz/monitor/chart`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 分页获取监测告警信息/cz/alarm/page
export const getReservoirCZAlarmPageData = (data: any) => {
return request({
url: `/cz/alarm/page`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 保存监测预警表单信息 /cz/monitor/config
export const saveReservoirCZMonitorConfigData = (data: any) => {
return request({
url: `/cz/monitor/config`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取监测预警表单信息 /cz/monitor/config/list/{stcd}
export const getReservoirCZMonitorConfigData = (stcd: any) => {
return request({
url: `/cz/monitor/config/list/${stcd}`,
method: 'get',
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取echart数据 /cz/monitor/chart
export const getReservoirCZMonitorEchartsData = (data: any) => {
return request({
url: `/cz/monitor/chart`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
// 获取视频列表/safe/operation/Play
export const getOperationPlay = (data: any) => {
return request({
url: `/safe/operation/play`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
export const getVideoDataList = (data: any) => {
return request({
url: `/safe/operation/reservoirList`,
method: 'post',
data,
headers: {
// 'Admin-Token': shuili,
shuili: 'water ' + shuili
}
});
};
export const getResStatisticsViewData = (data: any) => {
return request({
url: `/run/sk/statistics/view`,
method: 'post',
data,
headers: {
shuili: 'water ' + shuili
}
});
};

99
src/api/safety/index.ts

@ -0,0 +1,99 @@
// import axios from 'axios';
import { request } from '../axios';
// 预警统计
export const getWarningStatistic = (params: any) => {
return request({
url: "/run/api/warning/statistic",
method: "post",
params,
});
};
// 预警列表
export const getWarningList = (params: any) => {
return request({
url: "/run/api/warning/list",
method: "post",
params,
});
};
// 查询行政区划数据
export const getAreasData = () => {
return request({
url: "/run/api/common/xzgh/getGuangDong",
method: "get",
});
};
// 根据字典类型查询字典数据信息
export function getDicts(dictType: any) {
return request({
url: "/run/api/common/dict/type/" + dictType,
method: "get",
});
}
// 通过类型和编码查询对象详细信息
export const getObjectInfo = (params: any) => {
return request({
url: "/run/api/object/info/" + params.type + "/" + params.code,
method: "get",
});
};
// 视频图像
export const getVideoWarningList = (params: any) => {
return request({
url: "/run/api/video/warning/list", // /run/api/video/warning/list
method: "post",
params,
});
};
// 运行指标列表
export const getIndicatorList = (params: any) => {
return request({
url: "/run/api/indicator/list",
method: "post",
params,
});
};
// 按小时统计运行坐标
export const getIndicatorHour = (params: any) => {
return request({
url: "/run/api/indicator/hour",
method: "post",
params,
});
};
// 最大最小平均值
export const getIndicatorStatistic = (params: any) => {
return request({
url: "/run/api/indicator/statistic",
method: "post",
params,
});
};
// 水利对象统计
export const getObjectStatistic = (params: any) => {
return request({
url: "/run/api/object/statistic",
method: "post",
params,
});
};
export function getlStatisticChart(data: any) {
return request(
{
url: `/run/statistic/chart`,
method: "post",
data,
},
{
isReturnNativeResponse: true,
}
);
}

28
src/api/sluice/index.ts

@ -0,0 +1,28 @@
import { request } from '../axios';
import { getCookie } from '@/utils';
// 获取cookie
const shuili = getCookie('Admin-Token');
// 获取水闸
// 查询水闸安全管理基本信息详细
export function getJbxx(id: any) {
return request({
url: '/yg/jbxx/' + id,
method: 'get',
headers: {
shuili: 'water ' + shuili
}
});
}
// 查询水文特征列表
export function listSwtz(query: any) {
return request({
url: '/yg/swtz/list',
method: 'post',
data: query,
headers: {
shuili: 'water ' + shuili
}
});
}

BIN
src/assets/bottom/btn-bg-active.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/bottom/btn-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/card/measuring-reporting-facility.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
src/assets/card/no-data.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/assets/card/safety-item-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/assets/image/SodaMusic-v2.1.0-official-win32_x64.exe

Binary file not shown.

BIN
src/assets/image/bg/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

BIN
src/assets/image/bg/bgbgbg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
src/assets/image/bg/left-bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
src/assets/image/bg/lt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

BIN
src/assets/image/bg/password.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

BIN
src/assets/image/bg/title.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/assets/image/bg/username.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/image/blueuser.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

BIN
src/assets/image/bottom-point.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

BIN
src/assets/image/crosshairs-gps.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

BIN
src/assets/image/dike_four.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

BIN
src/assets/image/dike_one.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

BIN
src/assets/image/dike_two_three.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

BIN
src/assets/image/empty.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/assets/image/fit-to-page-outline.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

BIN
src/assets/image/gb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

BIN
src/assets/image/icon-attr-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/image/icon-search@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

BIN
src/assets/image/login-background.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
src/assets/image/login/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
src/assets/image/login/logo-blue.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
src/assets/image/login/logo-white.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
src/assets/image/login/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/assets/image/login/name.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/image/login/pw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/image/map-point.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 B

BIN
src/assets/image/map.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
src/assets/image/mergeMax.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

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

Loading…
Cancel
Save