@ -0,0 +1,2 @@ |
|||||
|
node_modules |
||||
|
dist |
@ -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 |
@ -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> |
@ -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> |
@ -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> |
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="VcsDirectoryMappings"> |
||||
|
<mapping directory="" vcs="Git" /> |
||||
|
</component> |
||||
|
</project> |
@ -0,0 +1,7 @@ |
|||||
|
# data-board |
||||
|
|
||||
|
## 1.0.0 (2024-03-07) |
||||
|
|
||||
|
### Patch Changes |
||||
|
|
||||
|
- 项目初始化 |
@ -0,0 +1,9 @@ |
|||||
|
/* eslint-disable */ |
||||
|
/* prettier-ignore */ |
||||
|
// @ts-nocheck
|
||||
|
// noinspection JSUnusedGlobalSymbols
|
||||
|
// Generated by unplugin-auto-import
|
||||
|
export {} |
||||
|
declare global { |
||||
|
|
||||
|
} |
@ -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'] |
||||
|
} |
||||
|
} |
@ -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/ |
@ -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/ |
@ -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> |
@ -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" |
||||
|
} |
||||
|
} |
@ -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 |
||||
|
} |
@ -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 |
||||
|
} |
@ -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 |
||||
|
} |
@ -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 |
||||
|
} |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 146 B |
After Width: | Height: | Size: 163 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 196 B |
After Width: | Height: | Size: 373 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 330 B |
After Width: | Height: | Size: 327 B |
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 388 B |
After Width: | Height: | Size: 410 B |
@ -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> |
@ -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); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
} |
@ -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>(); |
||||
|
} |
||||
|
} |
@ -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; |
||||
|
} |
@ -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}` |
||||
|
}); |
||||
|
} |
||||
|
} |
@ -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]); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -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); |
@ -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 |
||||
|
} |
||||
|
}); |
||||
|
} |
@ -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 |
||||
|
} |
||||
|
}); |
||||
|
} |
@ -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: [], |
||||
|
}; |
||||
|
}; |
@ -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", |
||||
|
}); |
||||
|
} |
@ -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 |
||||
|
} |
||||
|
}); |
||||
|
}; |
||||
|
|
@ -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, |
||||
|
} |
||||
|
); |
||||
|
} |
@ -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 |
||||
|
} |
||||
|
}); |
||||
|
} |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 3.3 MiB |
After Width: | Height: | Size: 2.8 MiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 702 KiB |
After Width: | Height: | Size: 879 B |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 354 B |
After Width: | Height: | Size: 683 B |
After Width: | Height: | Size: 146 B |
After Width: | Height: | Size: 163 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 509 B |
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 855 B |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 183 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 980 B |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 188 B |