diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 0dfd51f..d27386a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,6 +14,8 @@
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
+import tableAutoScroll from '@/directives/table-scroll/index'
+import loadMore from './directives/load-more'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm.mp3'
import otherAudio from '@/assets/audio/other.mp3'
@@ -129,6 +131,8 @@
app.directive('drag-width', (el, binding) => {
dragWidth(el, binding)
})
+ app.directive('tableAutoScroll', tableAutoScroll)
+ app.directive('loadmore', loadMore)
directive(app)
app.mount('#app')
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 0dfd51f..d27386a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,6 +14,8 @@
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
+import tableAutoScroll from '@/directives/table-scroll/index'
+import loadMore from './directives/load-more'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm.mp3'
import otherAudio from '@/assets/audio/other.mp3'
@@ -129,6 +131,8 @@
app.directive('drag-width', (el, binding) => {
dragWidth(el, binding)
})
+ app.directive('tableAutoScroll', tableAutoScroll)
+ app.directive('loadmore', loadMore)
directive(app)
app.mount('#app')
diff --git a/src/router/modules/pc.ts b/src/router/modules/pc.ts
index f291cfa..3ee5aac 100644
--- a/src/router/modules/pc.ts
+++ b/src/router/modules/pc.ts
@@ -147,157 +147,53 @@
],
},
{
- path: '/well',
+ path: '/leakage',
component: Layout,
- redirect: '/well/monitor',
- name: 'Well',
+ redirect: '/leakage/monitor',
+ name: 'Leakage',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
- auth: '/well',
+ auth: '/leakage',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/well/index.vue'),
- name: 'WellMonitor',
+ component: () => import('@/views/home/leakage/index.vue'),
+ name: 'LeakageMonitor',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/well',
- auth: '/well',
- },
- },
- {
- path: '/well/detail',
- component: () => import('@/views/home/well/components/detail.vue'),
- name: 'WellMonitorDetail',
- meta: {
- title: '闸井详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/well',
- auth: '/well/detail/menu',
+ activeMenu: '/leakage',
+ auth: '/leakage',
},
},
],
},
{
- path: '/station',
+ path: '/force',
component: Layout,
- redirect: '/station/monitor',
- name: 'Station',
+ redirect: '/force/monitor',
+ name: 'Force',
meta: {
- title: '场站监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
- auth: '/station',
+ auth: '/force',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/station/station/index.vue'),
- name: 'StationMonitor',
+ component: () => import('@/views/home/force/index.vue'),
+ name: 'ForceMonitor',
meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/monitor',
- },
- },
- {
- path: '/station/:type?',
- component: () => import('@/views/home/station/station/components/detail.vue'),
- name: 'StationMonitorDetail',
- meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/detail',
- },
- },
- {
- path: 'video',
- component: () => import('@/views/home/station/video/index.vue'),
- name: 'StationVideo',
- meta: {
- title: '视频轮巡',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/video',
- auth: '/station/video',
- },
- },
- {
- path: 'control',
- component: () => import('@/views/home/station/control/index.vue'),
- name: 'StationControl',
- meta: {
- title: '设备控制',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/control',
- auth: '/station/control',
- },
- },
- // {
- // path: 'operation',
- // component: () => import('@/views/home/station/operation/index.vue'),
- // name: 'StationOperation',
- // meta: {
- // title: '运维管理',
- // icon: 'ep:key',
- // sidebar: true,
- // breadcrumb: true,
- // activeMenu: '/station/operation',
- // auth: '/station/operation',
- // },
- // },
- ],
- },
- {
- path: '/pipeline',
- component: Layout,
- redirect: '/pipeline/monitor',
- name: 'Pipeline',
- meta: {
- title: '管线监测',
- icon: 'ep:key',
- auth: '/pipeline',
- },
- children: [
- {
- path: 'monitor',
- component: () => import('@/views/home/pipeline/index.vue'),
- name: 'PipelineMonitor',
- meta: {
- title: '管线监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline',
- },
- },
- {
- path: 'monitor/detail',
- component: () => import('@/views/home/pipeline/components/detail.vue'),
- name: 'PipelineMonitorDetail',
- meta: {
- title: '管线详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline/detail/menu',
+ activeMenu: '/force',
+ auth: '/force',
},
},
],
@@ -308,7 +204,7 @@
redirect: '/temporary/monitor',
name: 'Temporary',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
auth: '/temporary',
},
@@ -318,7 +214,7 @@
component: () => import('@/views/home/temporary/index.vue'),
name: 'TemporaryMonitor',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
@@ -342,6 +238,175 @@
],
},
{
+ path: '/object',
+ component: Layout,
+ redirect: '/object/well',
+ name: 'Object',
+ meta: {
+ title: '监测对象',
+ icon: 'ep:key',
+ auth: '/object',
+ },
+ children: [
+ {
+ path: '/well',
+ component: Layout,
+ redirect: '/well/monitor',
+ name: 'Well',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ auth: '/well',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/well/index.vue'),
+ name: 'WellMonitor',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well',
+ },
+ },
+ {
+ path: '/well/detail',
+ component: () => import('@/views/home/well/components/detail.vue'),
+ name: 'WellMonitorDetail',
+ meta: {
+ title: '闸井详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well/detail/menu',
+ },
+ },
+ ],
+ },
+ {
+ path: '/station',
+ component: Layout,
+ redirect: '/station/monitor',
+ name: 'Station',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ auth: '/station',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/station/station/index.vue'),
+ name: 'StationMonitor',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/monitor',
+ },
+ },
+ {
+ path: '/station/:type?',
+ component: () => import('@/views/home/station/station/components/detail.vue'),
+ name: 'StationMonitorDetail',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/detail',
+ },
+ },
+ {
+ path: 'video',
+ component: () => import('@/views/home/station/video/index.vue'),
+ name: 'StationVideo',
+ meta: {
+ title: '视频轮巡',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/video',
+ auth: '/station/video',
+ },
+ },
+ {
+ path: 'control',
+ component: () => import('@/views/home/station/control/index.vue'),
+ name: 'StationControl',
+ meta: {
+ title: '设备控制',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/control',
+ auth: '/station/control',
+ },
+ },
+ // {
+ // path: 'operation',
+ // component: () => import('@/views/home/station/operation/index.vue'),
+ // name: 'StationOperation',
+ // meta: {
+ // title: '运维管理',
+ // icon: 'ep:key',
+ // sidebar: true,
+ // breadcrumb: true,
+ // activeMenu: '/station/operation',
+ // auth: '/station/operation',
+ // },
+ // },
+ ],
+ },
+ {
+ path: '/pipeline',
+ component: Layout,
+ redirect: '/pipeline/monitor',
+ name: 'Pipeline',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ auth: '/pipeline',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/pipeline/index.vue'),
+ name: 'PipelineMonitor',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline',
+ },
+ },
+ {
+ path: 'monitor/detail',
+ component: () => import('@/views/home/pipeline/components/detail.vue'),
+ name: 'PipelineMonitorDetail',
+ meta: {
+ title: '管线详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline/detail/menu',
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
path: '/ledger',
component: Layout,
redirect: '/ledger/manage',
@@ -407,97 +472,6 @@
],
},
{
- path: '/operation',
- component: Layout,
- redirect: '/operation/alarm',
- name: 'Operation',
- meta: {
- title: '设备运维',
- icon: 'ep:key',
- auth: '/operation',
- },
- children: [
- {
- path: 'alarm',
- component: () => import('@/views/home/operation/alarm/index.vue'),
- name: 'operationAlarm',
- meta: {
- title: '设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm',
- },
- },
- {
- path: 'alarm/detail',
- component: () => import('@/views/home/operation/alarm/components/detail.vue'),
- name: 'operationAlarmDetail',
- meta: {
- title: '设备报警详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'history',
- component: () => import('@/views/home/operation/history/index.vue'),
- name: 'operationHistory',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/history',
- },
- },
- {
- path: 'history/detail',
- component: () => import('@/views/home/operation/history/detail.vue'),
- name: 'operationHistoryDetail',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'trajectory',
- component: () => import('@/views/home/operation/trajectory/index.vue'),
- name: 'operationTrajectory',
- meta: {
- title: '轨迹查询',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/trajectory',
- auth: '/operation/trajectory',
- },
- },
- {
- path: 'manufacturer',
- component: () => import('@/views/home/operation/manufacturer/index.vue'),
- name: 'operationManufacturer',
- meta: {
- title: '厂商运维记录',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/manufacturer',
- auth: '/operation/manufacturer',
- },
- },
- ],
- },
- {
path: '/device',
component: Layout,
redirect: '/device/type',
@@ -602,6 +576,98 @@
],
},
{
+ path: '/operation',
+ component: Layout,
+ redirect: '/operation/alarm',
+ name: 'Operation',
+ meta: {
+ title: '设备运维',
+ icon: 'ep:key',
+ auth: '/operation',
+ },
+ children: [
+ {
+ path: 'alarm',
+ component: () => import('@/views/home/operation/alarm/index.vue'),
+ name: 'operationAlarm',
+ meta: {
+ title: '设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm',
+ },
+ },
+ {
+ path: 'alarm/detail',
+ component: () => import('@/views/home/operation/alarm/components/detail.vue'),
+ name: 'operationAlarmDetail',
+ meta: {
+ title: '设备报警详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'history',
+ component: () => import('@/views/home/operation/history/index.vue'),
+ name: 'operationHistory',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/history',
+ },
+ },
+ {
+ path: 'history/detail',
+ component: () => import('@/views/home/operation/history/detail.vue'),
+ name: 'operationHistoryDetail',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'trajectory',
+ component: () => import('@/views/home/operation/trajectory/index.vue'),
+ name: 'operationTrajectory',
+ meta: {
+ title: '轨迹查询',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/trajectory',
+ auth: '/operation/trajectory',
+ },
+ },
+ {
+ path: 'manufacturer',
+ component: () => import('@/views/home/operation/manufacturer/index.vue'),
+ name: 'operationManufacturer',
+ meta: {
+ title: '厂商运维记录',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/manufacturer',
+ auth: '/operation/manufacturer',
+ },
+ },
+ ],
+ },
+ ...sysRoutes,
+ {
path: '/rule',
component: Layout,
redirect: '/rule/agreement',
@@ -653,7 +719,6 @@
},
],
},
- ...sysRoutes,
{
path: '/monitor',
component: Layout,
@@ -693,6 +758,46 @@
},
],
},
+ // 迅腾设备列表
+ {
+ path: '/meet',
+ component: Layout,
+ redirect: '/meet/manage',
+ name: 'Meet',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ auth: '/meet',
+ },
+ children: [
+ {
+ path: 'manage',
+ component: () => import('@/views/home/device/device/index.vue'),
+ name: 'MeetManage',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/meet/manage',
+ auth: '/meet',
+ },
+ },
+ {
+ path: '/manage/:type',
+ component: () => import('@/views/home/device/device/components/detail.vue'),
+ name: 'MeetManageDetail',
+ meta: {
+ title: '设备详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/meet/manage',
+ auth: '/meet/detail',
+ },
+ },
+ ],
+ },
]
export default routes
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 0dfd51f..d27386a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,6 +14,8 @@
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
+import tableAutoScroll from '@/directives/table-scroll/index'
+import loadMore from './directives/load-more'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm.mp3'
import otherAudio from '@/assets/audio/other.mp3'
@@ -129,6 +131,8 @@
app.directive('drag-width', (el, binding) => {
dragWidth(el, binding)
})
+ app.directive('tableAutoScroll', tableAutoScroll)
+ app.directive('loadmore', loadMore)
directive(app)
app.mount('#app')
diff --git a/src/router/modules/pc.ts b/src/router/modules/pc.ts
index f291cfa..3ee5aac 100644
--- a/src/router/modules/pc.ts
+++ b/src/router/modules/pc.ts
@@ -147,157 +147,53 @@
],
},
{
- path: '/well',
+ path: '/leakage',
component: Layout,
- redirect: '/well/monitor',
- name: 'Well',
+ redirect: '/leakage/monitor',
+ name: 'Leakage',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
- auth: '/well',
+ auth: '/leakage',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/well/index.vue'),
- name: 'WellMonitor',
+ component: () => import('@/views/home/leakage/index.vue'),
+ name: 'LeakageMonitor',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/well',
- auth: '/well',
- },
- },
- {
- path: '/well/detail',
- component: () => import('@/views/home/well/components/detail.vue'),
- name: 'WellMonitorDetail',
- meta: {
- title: '闸井详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/well',
- auth: '/well/detail/menu',
+ activeMenu: '/leakage',
+ auth: '/leakage',
},
},
],
},
{
- path: '/station',
+ path: '/force',
component: Layout,
- redirect: '/station/monitor',
- name: 'Station',
+ redirect: '/force/monitor',
+ name: 'Force',
meta: {
- title: '场站监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
- auth: '/station',
+ auth: '/force',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/station/station/index.vue'),
- name: 'StationMonitor',
+ component: () => import('@/views/home/force/index.vue'),
+ name: 'ForceMonitor',
meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/monitor',
- },
- },
- {
- path: '/station/:type?',
- component: () => import('@/views/home/station/station/components/detail.vue'),
- name: 'StationMonitorDetail',
- meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/detail',
- },
- },
- {
- path: 'video',
- component: () => import('@/views/home/station/video/index.vue'),
- name: 'StationVideo',
- meta: {
- title: '视频轮巡',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/video',
- auth: '/station/video',
- },
- },
- {
- path: 'control',
- component: () => import('@/views/home/station/control/index.vue'),
- name: 'StationControl',
- meta: {
- title: '设备控制',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/control',
- auth: '/station/control',
- },
- },
- // {
- // path: 'operation',
- // component: () => import('@/views/home/station/operation/index.vue'),
- // name: 'StationOperation',
- // meta: {
- // title: '运维管理',
- // icon: 'ep:key',
- // sidebar: true,
- // breadcrumb: true,
- // activeMenu: '/station/operation',
- // auth: '/station/operation',
- // },
- // },
- ],
- },
- {
- path: '/pipeline',
- component: Layout,
- redirect: '/pipeline/monitor',
- name: 'Pipeline',
- meta: {
- title: '管线监测',
- icon: 'ep:key',
- auth: '/pipeline',
- },
- children: [
- {
- path: 'monitor',
- component: () => import('@/views/home/pipeline/index.vue'),
- name: 'PipelineMonitor',
- meta: {
- title: '管线监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline',
- },
- },
- {
- path: 'monitor/detail',
- component: () => import('@/views/home/pipeline/components/detail.vue'),
- name: 'PipelineMonitorDetail',
- meta: {
- title: '管线详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline/detail/menu',
+ activeMenu: '/force',
+ auth: '/force',
},
},
],
@@ -308,7 +204,7 @@
redirect: '/temporary/monitor',
name: 'Temporary',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
auth: '/temporary',
},
@@ -318,7 +214,7 @@
component: () => import('@/views/home/temporary/index.vue'),
name: 'TemporaryMonitor',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
@@ -342,6 +238,175 @@
],
},
{
+ path: '/object',
+ component: Layout,
+ redirect: '/object/well',
+ name: 'Object',
+ meta: {
+ title: '监测对象',
+ icon: 'ep:key',
+ auth: '/object',
+ },
+ children: [
+ {
+ path: '/well',
+ component: Layout,
+ redirect: '/well/monitor',
+ name: 'Well',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ auth: '/well',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/well/index.vue'),
+ name: 'WellMonitor',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well',
+ },
+ },
+ {
+ path: '/well/detail',
+ component: () => import('@/views/home/well/components/detail.vue'),
+ name: 'WellMonitorDetail',
+ meta: {
+ title: '闸井详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well/detail/menu',
+ },
+ },
+ ],
+ },
+ {
+ path: '/station',
+ component: Layout,
+ redirect: '/station/monitor',
+ name: 'Station',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ auth: '/station',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/station/station/index.vue'),
+ name: 'StationMonitor',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/monitor',
+ },
+ },
+ {
+ path: '/station/:type?',
+ component: () => import('@/views/home/station/station/components/detail.vue'),
+ name: 'StationMonitorDetail',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/detail',
+ },
+ },
+ {
+ path: 'video',
+ component: () => import('@/views/home/station/video/index.vue'),
+ name: 'StationVideo',
+ meta: {
+ title: '视频轮巡',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/video',
+ auth: '/station/video',
+ },
+ },
+ {
+ path: 'control',
+ component: () => import('@/views/home/station/control/index.vue'),
+ name: 'StationControl',
+ meta: {
+ title: '设备控制',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/control',
+ auth: '/station/control',
+ },
+ },
+ // {
+ // path: 'operation',
+ // component: () => import('@/views/home/station/operation/index.vue'),
+ // name: 'StationOperation',
+ // meta: {
+ // title: '运维管理',
+ // icon: 'ep:key',
+ // sidebar: true,
+ // breadcrumb: true,
+ // activeMenu: '/station/operation',
+ // auth: '/station/operation',
+ // },
+ // },
+ ],
+ },
+ {
+ path: '/pipeline',
+ component: Layout,
+ redirect: '/pipeline/monitor',
+ name: 'Pipeline',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ auth: '/pipeline',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/pipeline/index.vue'),
+ name: 'PipelineMonitor',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline',
+ },
+ },
+ {
+ path: 'monitor/detail',
+ component: () => import('@/views/home/pipeline/components/detail.vue'),
+ name: 'PipelineMonitorDetail',
+ meta: {
+ title: '管线详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline/detail/menu',
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
path: '/ledger',
component: Layout,
redirect: '/ledger/manage',
@@ -407,97 +472,6 @@
],
},
{
- path: '/operation',
- component: Layout,
- redirect: '/operation/alarm',
- name: 'Operation',
- meta: {
- title: '设备运维',
- icon: 'ep:key',
- auth: '/operation',
- },
- children: [
- {
- path: 'alarm',
- component: () => import('@/views/home/operation/alarm/index.vue'),
- name: 'operationAlarm',
- meta: {
- title: '设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm',
- },
- },
- {
- path: 'alarm/detail',
- component: () => import('@/views/home/operation/alarm/components/detail.vue'),
- name: 'operationAlarmDetail',
- meta: {
- title: '设备报警详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'history',
- component: () => import('@/views/home/operation/history/index.vue'),
- name: 'operationHistory',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/history',
- },
- },
- {
- path: 'history/detail',
- component: () => import('@/views/home/operation/history/detail.vue'),
- name: 'operationHistoryDetail',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'trajectory',
- component: () => import('@/views/home/operation/trajectory/index.vue'),
- name: 'operationTrajectory',
- meta: {
- title: '轨迹查询',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/trajectory',
- auth: '/operation/trajectory',
- },
- },
- {
- path: 'manufacturer',
- component: () => import('@/views/home/operation/manufacturer/index.vue'),
- name: 'operationManufacturer',
- meta: {
- title: '厂商运维记录',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/manufacturer',
- auth: '/operation/manufacturer',
- },
- },
- ],
- },
- {
path: '/device',
component: Layout,
redirect: '/device/type',
@@ -602,6 +576,98 @@
],
},
{
+ path: '/operation',
+ component: Layout,
+ redirect: '/operation/alarm',
+ name: 'Operation',
+ meta: {
+ title: '设备运维',
+ icon: 'ep:key',
+ auth: '/operation',
+ },
+ children: [
+ {
+ path: 'alarm',
+ component: () => import('@/views/home/operation/alarm/index.vue'),
+ name: 'operationAlarm',
+ meta: {
+ title: '设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm',
+ },
+ },
+ {
+ path: 'alarm/detail',
+ component: () => import('@/views/home/operation/alarm/components/detail.vue'),
+ name: 'operationAlarmDetail',
+ meta: {
+ title: '设备报警详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'history',
+ component: () => import('@/views/home/operation/history/index.vue'),
+ name: 'operationHistory',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/history',
+ },
+ },
+ {
+ path: 'history/detail',
+ component: () => import('@/views/home/operation/history/detail.vue'),
+ name: 'operationHistoryDetail',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'trajectory',
+ component: () => import('@/views/home/operation/trajectory/index.vue'),
+ name: 'operationTrajectory',
+ meta: {
+ title: '轨迹查询',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/trajectory',
+ auth: '/operation/trajectory',
+ },
+ },
+ {
+ path: 'manufacturer',
+ component: () => import('@/views/home/operation/manufacturer/index.vue'),
+ name: 'operationManufacturer',
+ meta: {
+ title: '厂商运维记录',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/manufacturer',
+ auth: '/operation/manufacturer',
+ },
+ },
+ ],
+ },
+ ...sysRoutes,
+ {
path: '/rule',
component: Layout,
redirect: '/rule/agreement',
@@ -653,7 +719,6 @@
},
],
},
- ...sysRoutes,
{
path: '/monitor',
component: Layout,
@@ -693,6 +758,46 @@
},
],
},
+ // 迅腾设备列表
+ {
+ path: '/meet',
+ component: Layout,
+ redirect: '/meet/manage',
+ name: 'Meet',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ auth: '/meet',
+ },
+ children: [
+ {
+ path: 'manage',
+ component: () => import('@/views/home/device/device/index.vue'),
+ name: 'MeetManage',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/meet/manage',
+ auth: '/meet',
+ },
+ },
+ {
+ path: '/manage/:type',
+ component: () => import('@/views/home/device/device/components/detail.vue'),
+ name: 'MeetManageDetail',
+ meta: {
+ title: '设备详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/meet/manage',
+ auth: '/meet/detail',
+ },
+ },
+ ],
+ },
]
export default routes
diff --git a/src/views/home/alarm/current/components/confirmSituation.vue b/src/views/home/alarm/current/components/confirmSituation.vue
index e32e2cc..1e8118d 100644
--- a/src/views/home/alarm/current/components/confirmSituation.vue
+++ b/src/views/home/alarm/current/components/confirmSituation.vue
@@ -52,7 +52,19 @@
}) // 表单
const rules: FormRules = {
confirmValue: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
- descn: [{ required: true, message: '现场情况备注不能为空', trigger: ['blur', 'change'] }],
+ approvalStatus: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
+ descn: [{ required: true, message: '现场确认情况不能为空', trigger: ['blur', 'change'] }],
+
+
+
+ approvalPerson: [{ required: true, message: '现场确认人员不能为空', trigger: ['blur', 'change'] }],
+ approvalTime: [{ required: true, message: '现场确认时间不能为空', trigger: ['blur', 'change'] }],
+
+ approvalPerson1: [{ required: true, message: '处置人员不能为空', trigger: ['blur', 'change'] }],
+ descn1: [{ required: true, message: '处置情况记录不能为空', trigger: ['blur', 'change'] }],
+ approvalTime1: [{ required: true, message: '处置时间不能为空', trigger: ['blur', 'change'] }],
+
+
} // 前端校验规则
const isFirstLoading = ref(true)
@@ -260,14 +272,14 @@
-
+
-
+
@@ -275,7 +287,7 @@
-
+
@@ -286,21 +298,21 @@
-
+
-
+
-
+
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 0dfd51f..d27386a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,6 +14,8 @@
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
+import tableAutoScroll from '@/directives/table-scroll/index'
+import loadMore from './directives/load-more'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm.mp3'
import otherAudio from '@/assets/audio/other.mp3'
@@ -129,6 +131,8 @@
app.directive('drag-width', (el, binding) => {
dragWidth(el, binding)
})
+ app.directive('tableAutoScroll', tableAutoScroll)
+ app.directive('loadmore', loadMore)
directive(app)
app.mount('#app')
diff --git a/src/router/modules/pc.ts b/src/router/modules/pc.ts
index f291cfa..3ee5aac 100644
--- a/src/router/modules/pc.ts
+++ b/src/router/modules/pc.ts
@@ -147,157 +147,53 @@
],
},
{
- path: '/well',
+ path: '/leakage',
component: Layout,
- redirect: '/well/monitor',
- name: 'Well',
+ redirect: '/leakage/monitor',
+ name: 'Leakage',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
- auth: '/well',
+ auth: '/leakage',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/well/index.vue'),
- name: 'WellMonitor',
+ component: () => import('@/views/home/leakage/index.vue'),
+ name: 'LeakageMonitor',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/well',
- auth: '/well',
- },
- },
- {
- path: '/well/detail',
- component: () => import('@/views/home/well/components/detail.vue'),
- name: 'WellMonitorDetail',
- meta: {
- title: '闸井详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/well',
- auth: '/well/detail/menu',
+ activeMenu: '/leakage',
+ auth: '/leakage',
},
},
],
},
{
- path: '/station',
+ path: '/force',
component: Layout,
- redirect: '/station/monitor',
- name: 'Station',
+ redirect: '/force/monitor',
+ name: 'Force',
meta: {
- title: '场站监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
- auth: '/station',
+ auth: '/force',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/station/station/index.vue'),
- name: 'StationMonitor',
+ component: () => import('@/views/home/force/index.vue'),
+ name: 'ForceMonitor',
meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/monitor',
- },
- },
- {
- path: '/station/:type?',
- component: () => import('@/views/home/station/station/components/detail.vue'),
- name: 'StationMonitorDetail',
- meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/detail',
- },
- },
- {
- path: 'video',
- component: () => import('@/views/home/station/video/index.vue'),
- name: 'StationVideo',
- meta: {
- title: '视频轮巡',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/video',
- auth: '/station/video',
- },
- },
- {
- path: 'control',
- component: () => import('@/views/home/station/control/index.vue'),
- name: 'StationControl',
- meta: {
- title: '设备控制',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/control',
- auth: '/station/control',
- },
- },
- // {
- // path: 'operation',
- // component: () => import('@/views/home/station/operation/index.vue'),
- // name: 'StationOperation',
- // meta: {
- // title: '运维管理',
- // icon: 'ep:key',
- // sidebar: true,
- // breadcrumb: true,
- // activeMenu: '/station/operation',
- // auth: '/station/operation',
- // },
- // },
- ],
- },
- {
- path: '/pipeline',
- component: Layout,
- redirect: '/pipeline/monitor',
- name: 'Pipeline',
- meta: {
- title: '管线监测',
- icon: 'ep:key',
- auth: '/pipeline',
- },
- children: [
- {
- path: 'monitor',
- component: () => import('@/views/home/pipeline/index.vue'),
- name: 'PipelineMonitor',
- meta: {
- title: '管线监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline',
- },
- },
- {
- path: 'monitor/detail',
- component: () => import('@/views/home/pipeline/components/detail.vue'),
- name: 'PipelineMonitorDetail',
- meta: {
- title: '管线详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline/detail/menu',
+ activeMenu: '/force',
+ auth: '/force',
},
},
],
@@ -308,7 +204,7 @@
redirect: '/temporary/monitor',
name: 'Temporary',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
auth: '/temporary',
},
@@ -318,7 +214,7 @@
component: () => import('@/views/home/temporary/index.vue'),
name: 'TemporaryMonitor',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
@@ -342,6 +238,175 @@
],
},
{
+ path: '/object',
+ component: Layout,
+ redirect: '/object/well',
+ name: 'Object',
+ meta: {
+ title: '监测对象',
+ icon: 'ep:key',
+ auth: '/object',
+ },
+ children: [
+ {
+ path: '/well',
+ component: Layout,
+ redirect: '/well/monitor',
+ name: 'Well',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ auth: '/well',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/well/index.vue'),
+ name: 'WellMonitor',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well',
+ },
+ },
+ {
+ path: '/well/detail',
+ component: () => import('@/views/home/well/components/detail.vue'),
+ name: 'WellMonitorDetail',
+ meta: {
+ title: '闸井详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well/detail/menu',
+ },
+ },
+ ],
+ },
+ {
+ path: '/station',
+ component: Layout,
+ redirect: '/station/monitor',
+ name: 'Station',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ auth: '/station',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/station/station/index.vue'),
+ name: 'StationMonitor',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/monitor',
+ },
+ },
+ {
+ path: '/station/:type?',
+ component: () => import('@/views/home/station/station/components/detail.vue'),
+ name: 'StationMonitorDetail',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/detail',
+ },
+ },
+ {
+ path: 'video',
+ component: () => import('@/views/home/station/video/index.vue'),
+ name: 'StationVideo',
+ meta: {
+ title: '视频轮巡',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/video',
+ auth: '/station/video',
+ },
+ },
+ {
+ path: 'control',
+ component: () => import('@/views/home/station/control/index.vue'),
+ name: 'StationControl',
+ meta: {
+ title: '设备控制',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/control',
+ auth: '/station/control',
+ },
+ },
+ // {
+ // path: 'operation',
+ // component: () => import('@/views/home/station/operation/index.vue'),
+ // name: 'StationOperation',
+ // meta: {
+ // title: '运维管理',
+ // icon: 'ep:key',
+ // sidebar: true,
+ // breadcrumb: true,
+ // activeMenu: '/station/operation',
+ // auth: '/station/operation',
+ // },
+ // },
+ ],
+ },
+ {
+ path: '/pipeline',
+ component: Layout,
+ redirect: '/pipeline/monitor',
+ name: 'Pipeline',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ auth: '/pipeline',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/pipeline/index.vue'),
+ name: 'PipelineMonitor',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline',
+ },
+ },
+ {
+ path: 'monitor/detail',
+ component: () => import('@/views/home/pipeline/components/detail.vue'),
+ name: 'PipelineMonitorDetail',
+ meta: {
+ title: '管线详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline/detail/menu',
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
path: '/ledger',
component: Layout,
redirect: '/ledger/manage',
@@ -407,97 +472,6 @@
],
},
{
- path: '/operation',
- component: Layout,
- redirect: '/operation/alarm',
- name: 'Operation',
- meta: {
- title: '设备运维',
- icon: 'ep:key',
- auth: '/operation',
- },
- children: [
- {
- path: 'alarm',
- component: () => import('@/views/home/operation/alarm/index.vue'),
- name: 'operationAlarm',
- meta: {
- title: '设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm',
- },
- },
- {
- path: 'alarm/detail',
- component: () => import('@/views/home/operation/alarm/components/detail.vue'),
- name: 'operationAlarmDetail',
- meta: {
- title: '设备报警详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'history',
- component: () => import('@/views/home/operation/history/index.vue'),
- name: 'operationHistory',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/history',
- },
- },
- {
- path: 'history/detail',
- component: () => import('@/views/home/operation/history/detail.vue'),
- name: 'operationHistoryDetail',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'trajectory',
- component: () => import('@/views/home/operation/trajectory/index.vue'),
- name: 'operationTrajectory',
- meta: {
- title: '轨迹查询',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/trajectory',
- auth: '/operation/trajectory',
- },
- },
- {
- path: 'manufacturer',
- component: () => import('@/views/home/operation/manufacturer/index.vue'),
- name: 'operationManufacturer',
- meta: {
- title: '厂商运维记录',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/manufacturer',
- auth: '/operation/manufacturer',
- },
- },
- ],
- },
- {
path: '/device',
component: Layout,
redirect: '/device/type',
@@ -602,6 +576,98 @@
],
},
{
+ path: '/operation',
+ component: Layout,
+ redirect: '/operation/alarm',
+ name: 'Operation',
+ meta: {
+ title: '设备运维',
+ icon: 'ep:key',
+ auth: '/operation',
+ },
+ children: [
+ {
+ path: 'alarm',
+ component: () => import('@/views/home/operation/alarm/index.vue'),
+ name: 'operationAlarm',
+ meta: {
+ title: '设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm',
+ },
+ },
+ {
+ path: 'alarm/detail',
+ component: () => import('@/views/home/operation/alarm/components/detail.vue'),
+ name: 'operationAlarmDetail',
+ meta: {
+ title: '设备报警详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'history',
+ component: () => import('@/views/home/operation/history/index.vue'),
+ name: 'operationHistory',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/history',
+ },
+ },
+ {
+ path: 'history/detail',
+ component: () => import('@/views/home/operation/history/detail.vue'),
+ name: 'operationHistoryDetail',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'trajectory',
+ component: () => import('@/views/home/operation/trajectory/index.vue'),
+ name: 'operationTrajectory',
+ meta: {
+ title: '轨迹查询',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/trajectory',
+ auth: '/operation/trajectory',
+ },
+ },
+ {
+ path: 'manufacturer',
+ component: () => import('@/views/home/operation/manufacturer/index.vue'),
+ name: 'operationManufacturer',
+ meta: {
+ title: '厂商运维记录',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/manufacturer',
+ auth: '/operation/manufacturer',
+ },
+ },
+ ],
+ },
+ ...sysRoutes,
+ {
path: '/rule',
component: Layout,
redirect: '/rule/agreement',
@@ -653,7 +719,6 @@
},
],
},
- ...sysRoutes,
{
path: '/monitor',
component: Layout,
@@ -693,6 +758,46 @@
},
],
},
+ // 迅腾设备列表
+ {
+ path: '/meet',
+ component: Layout,
+ redirect: '/meet/manage',
+ name: 'Meet',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ auth: '/meet',
+ },
+ children: [
+ {
+ path: 'manage',
+ component: () => import('@/views/home/device/device/index.vue'),
+ name: 'MeetManage',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/meet/manage',
+ auth: '/meet',
+ },
+ },
+ {
+ path: '/manage/:type',
+ component: () => import('@/views/home/device/device/components/detail.vue'),
+ name: 'MeetManageDetail',
+ meta: {
+ title: '设备详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/meet/manage',
+ auth: '/meet/detail',
+ },
+ },
+ ],
+ },
]
export default routes
diff --git a/src/views/home/alarm/current/components/confirmSituation.vue b/src/views/home/alarm/current/components/confirmSituation.vue
index e32e2cc..1e8118d 100644
--- a/src/views/home/alarm/current/components/confirmSituation.vue
+++ b/src/views/home/alarm/current/components/confirmSituation.vue
@@ -52,7 +52,19 @@
}) // 表单
const rules: FormRules = {
confirmValue: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
- descn: [{ required: true, message: '现场情况备注不能为空', trigger: ['blur', 'change'] }],
+ approvalStatus: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
+ descn: [{ required: true, message: '现场确认情况不能为空', trigger: ['blur', 'change'] }],
+
+
+
+ approvalPerson: [{ required: true, message: '现场确认人员不能为空', trigger: ['blur', 'change'] }],
+ approvalTime: [{ required: true, message: '现场确认时间不能为空', trigger: ['blur', 'change'] }],
+
+ approvalPerson1: [{ required: true, message: '处置人员不能为空', trigger: ['blur', 'change'] }],
+ descn1: [{ required: true, message: '处置情况记录不能为空', trigger: ['blur', 'change'] }],
+ approvalTime1: [{ required: true, message: '处置时间不能为空', trigger: ['blur', 'change'] }],
+
+
} // 前端校验规则
const isFirstLoading = ref(true)
@@ -260,14 +272,14 @@
-
+
-
+
@@ -275,7 +287,7 @@
-
+
@@ -286,21 +298,21 @@
-
+
-
+
-
+
diff --git a/src/views/home/alarm/current/components/gasDataDialog.vue b/src/views/home/alarm/current/components/gasDataDialog.vue
index ffe98fa..b4cd67e 100644
--- a/src/views/home/alarm/current/components/gasDataDialog.vue
+++ b/src/views/home/alarm/current/components/gasDataDialog.vue
@@ -62,6 +62,7 @@
const list = ref([])
const xAxisData = ref([])
const data = ref([])
+const columnsType = ref('')
// 列表展示列
const columns = ref([
// { text: '设备编号', value: 'devcode', align: 'center' },
@@ -380,8 +381,10 @@
if (row.devTypeName) {
if (row.devTypeName === '燃气智能监测终端') {
columns.value = columns1.value
+ columnsType.value = 'columns1'
} else if (row.devTypeName.includes('管网哨兵')) {
columns.value = columns2.value
+ columnsType.value = 'columns2'
// 获取设备信息
manufactureName.value = ''
getDeviceListPage({ offset: 1, limit: 1, devCode: row.devcode }).then(res => {
@@ -389,22 +392,28 @@
manufactureName.value = res.data.rows[0].manufactureName
if (manufactureName.value.includes('百瑞生')) {
columns.value = columns2BRS.value
+ columnsType.value = 'columns2BRS'
}
else if (manufactureName.value.includes('麦哈克')) {
columns.value = columns2MHK.value
+ columnsType.value = 'columns2MHK'
}
}
})
// console.log(row, 'row')
} else if (row.devTypeName === '智能警示桩') {
columns.value = columns3.value
+ columnsType.value = 'columns3'
} else if (row.devTypeName === '场站监测云台') {
columns.value = columns4.value
+ columnsType.value = 'columns4'
} else {
columns.value = columns1.value
+ columnsType.value = 'columns1'
}
} else {
columns.value = columns1.value
+ columnsType.value = 'columns1'
}
const fetch = () => {
setTimeout(() => {
@@ -451,10 +460,92 @@
text: 'Loading',
background: 'rgba(255, 255, 255, 0.8)',
})
+ // 不同设备类型导出列
+ const exportDict = {
+ columns1: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3strength': item.strength,
+ '4cell': item.cell,
+ '5rsrp': item.rsrp,
+ '6rsrpName': item.rsrpName,
+ '7uptime': item.uptime,
+ '8logtime': item.logtime,
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电量(%)', '信号强度', '信号质量', '采集时间', '上传时间']
+ },
+ columns2: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5uptime': item.uptime,
+ '6logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '采集时间', '上传时间']
+ },
+ columns2BRS: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5ssState': item.ssState,
+ '6temp': item.temp,
+ '7sig': item.sig,
+ '8uptime': item.uptime,
+ '9logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '传感器状态', '温度(℃)', '信号质量', '采集时间', '上传时间']
+ },
+ columns2MHK: {
+ list: list.value.map((item: any, index:number) => ({
+ 'index': index+1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5ssState': item.ssState,
+ '6rsrp': item.rsrp,
+ '7uptime': item.uptime,
+ '8logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '电池状态', '信号质量', '采集时间', '上传时间']
+ },
+ columns3: {
+ list: list.value.map((item:any, index:number) => ({
+ '1index': index+ 1,
+ '2leftGas': item.leftGas,
+ '3rightGas': item.rightGas,
+ '4vbat': item.vbat,
+ '5pipeInclineAlarm': item.pipeInclineAlarm,
+ '6pipeBreakAlarm': item.pipeBreakAlarm,
+ '7leftOffLineAlarm': item.leftOffLineAlarm,
+ '8leftVibrateAlarm': item.leftVibrateAlarm,
+ '9rightOffLineAlarm': item.rightOffLineAlarm,
+ '10rightVibrateAlarm': item.rightVibrateAlarm,
+ '11uptime': item.uptime,
+ '12logtime': item.logtime
+ })),
+ columns: ['序号', '左侧甲烷值', '右侧甲烷值', '电池电压(V)', '桩倾斜报警', '桩拆卸报警', '左断线报警', '左振动报警', '右断线报警', '右振动报警', '采集时间', '上传时间']
+ },
+ columns4: {
+ list: list.value.map((item: any, index:number) => ({
+ '1index': index +1,
+ '2concentration': item.concentration,
+ '3dircetion': item.dircetion,
+ '4pitch': item.pitch,
+ '5uptime': item.uptime,
+ '6logtime': item.logtime
+ })),
+ columns: ['序号', '浓度', '水平位置', '垂直位置', '采集时间', '上传时间']
+ }
+ } as { [key: string]: any }
exportExcel({
- json: list.value.map((item: any, index: number) => ({ '1index': index + 1, '2devcode': item.devcode, '3gasval': item.gasval, '4vbat': item.vbat, '5uptime': item.uptime, '6logtime': item.logtime, })),
+ json: exportDict[columnsType.value]?.list || exportDict['columns1'].list,
name: `${info.value.devTypeName}燃气数据`,
- titleArr: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '采集时间', '上传时间'],
+ titleArr: exportDict[columnsType.value]?.columns || exportDict['columns1'].columns,
sheetName: 'sheet1',
})
loading.close()
diff --git a/package.json b/package.json
index 05b1972..8c33be7 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"dayjs": "^1.11.6",
"echarts": "^5.4.1",
"echarts-gl": "^2.0.8",
- "element-plus": "^2.7.8",
+ "element-plus": "^2.9.7",
"file-saver": "^2.0.5",
"hotkeys-js": "^3.10.0",
"html2canvas": "^1.4.1",
diff --git a/public/image/emergency/emergency-error.png b/public/image/emergency/emergency-error.png
new file mode 100644
index 0000000..c9ffc1a
--- /dev/null
+++ b/public/image/emergency/emergency-error.png
Binary files differ
diff --git a/public/image/emergency/emergency-no.png b/public/image/emergency/emergency-no.png
new file mode 100644
index 0000000..44f1cee
--- /dev/null
+++ b/public/image/emergency/emergency-no.png
Binary files differ
diff --git a/public/image/emergency/emergency-normal.png b/public/image/emergency/emergency-normal.png
new file mode 100644
index 0000000..1a0a5d5
--- /dev/null
+++ b/public/image/emergency/emergency-normal.png
Binary files differ
diff --git a/public/image/emergency/emergency-offline.png b/public/image/emergency/emergency-offline.png
new file mode 100644
index 0000000..3fdb8e3
--- /dev/null
+++ b/public/image/emergency/emergency-offline.png
Binary files differ
diff --git a/public/image/force/force-error.png b/public/image/force/force-error.png
new file mode 100644
index 0000000..b236e89
--- /dev/null
+++ b/public/image/force/force-error.png
Binary files differ
diff --git a/public/image/force/force-no.png b/public/image/force/force-no.png
new file mode 100644
index 0000000..bc7d81c
--- /dev/null
+++ b/public/image/force/force-no.png
Binary files differ
diff --git a/public/image/force/force-normal.png b/public/image/force/force-normal.png
new file mode 100644
index 0000000..706a311
--- /dev/null
+++ b/public/image/force/force-normal.png
Binary files differ
diff --git a/public/image/force/force-offline.png b/public/image/force/force-offline.png
new file mode 100644
index 0000000..8d90f9d
--- /dev/null
+++ b/public/image/force/force-offline.png
Binary files differ
diff --git a/public/image/legend/alarm.png b/public/image/legend/alarm.png
new file mode 100644
index 0000000..032a0fe
--- /dev/null
+++ b/public/image/legend/alarm.png
Binary files differ
diff --git a/public/image/legend/fault.png b/public/image/legend/fault.png
new file mode 100644
index 0000000..5c2dfca
--- /dev/null
+++ b/public/image/legend/fault.png
Binary files differ
diff --git a/public/image/legend/normal.png b/public/image/legend/normal.png
new file mode 100644
index 0000000..60053c3
--- /dev/null
+++ b/public/image/legend/normal.png
Binary files differ
diff --git a/public/image/legend/offline.png b/public/image/legend/offline.png
new file mode 100644
index 0000000..6d39209
--- /dev/null
+++ b/public/image/legend/offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-error.png b/public/image/occupy/occupy-error.png
new file mode 100644
index 0000000..eac599b
--- /dev/null
+++ b/public/image/occupy/occupy-error.png
Binary files differ
diff --git a/public/image/occupy/occupy-normal.png b/public/image/occupy/occupy-normal.png
new file mode 100644
index 0000000..c2c2015
--- /dev/null
+++ b/public/image/occupy/occupy-normal.png
Binary files differ
diff --git a/public/image/occupy/occupy-offline.png b/public/image/occupy/occupy-offline.png
new file mode 100644
index 0000000..8995138
--- /dev/null
+++ b/public/image/occupy/occupy-offline.png
Binary files differ
diff --git a/public/image/occupy/occupy-stop.png b/public/image/occupy/occupy-stop.png
new file mode 100644
index 0000000..a2cdad5
--- /dev/null
+++ b/public/image/occupy/occupy-stop.png
Binary files differ
diff --git a/public/image/pass/pass-error.png b/public/image/pass/pass-error.png
new file mode 100644
index 0000000..4edcb61
--- /dev/null
+++ b/public/image/pass/pass-error.png
Binary files differ
diff --git a/public/image/pass/pass-no.png b/public/image/pass/pass-no.png
new file mode 100644
index 0000000..533f288
--- /dev/null
+++ b/public/image/pass/pass-no.png
Binary files differ
diff --git a/public/image/pass/pass-normal.png b/public/image/pass/pass-normal.png
new file mode 100644
index 0000000..dfca3c6
--- /dev/null
+++ b/public/image/pass/pass-normal.png
Binary files differ
diff --git a/public/image/pass/pass-offline.png b/public/image/pass/pass-offline.png
new file mode 100644
index 0000000..b3122de
--- /dev/null
+++ b/public/image/pass/pass-offline.png
Binary files differ
diff --git a/public/image/pipeline/pieple-error.png b/public/image/pipeline/pieple-error.png
new file mode 100644
index 0000000..20fb67d
--- /dev/null
+++ b/public/image/pipeline/pieple-error.png
Binary files differ
diff --git a/public/image/pipeline/pieple-no.png b/public/image/pipeline/pieple-no.png
new file mode 100644
index 0000000..d73bc7f
--- /dev/null
+++ b/public/image/pipeline/pieple-no.png
Binary files differ
diff --git a/public/image/pipeline/pieple-normal.png b/public/image/pipeline/pieple-normal.png
new file mode 100644
index 0000000..c30e05d
--- /dev/null
+++ b/public/image/pipeline/pieple-normal.png
Binary files differ
diff --git a/public/image/pipeline/pieple-offline.png b/public/image/pipeline/pieple-offline.png
new file mode 100644
index 0000000..947bfc1
--- /dev/null
+++ b/public/image/pipeline/pieple-offline.png
Binary files differ
diff --git a/src/api/home/dashboard/index.ts b/src/api/home/dashboard/index.ts
index dd864c8..fad9ea8 100644
--- a/src/api/home/dashboard/index.ts
+++ b/src/api/home/dashboard/index.ts
@@ -52,3 +52,34 @@
data,
})
}
+
+// 监测概括
+export function getMonitorStatistics() {
+ return request({
+ url: '/homePage/apis/monitorStatistics',
+ method: 'post',
+ })
+}
+
+// 设备监测 列表
+export function getDeviceMonitorList(data: any) {
+ return request({
+ url: `/homePage/apis/deviceMonitorList?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 行政区视图
+export function getAreaStatistics() {
+ return request({
+ url: '/homePage/apis/areaStatistics',
+ method: 'post',
+ })
+}
+// 点位视图
+export function getPointStatistics() {
+ return request({
+ url: '/homePage/apis/pointStatistics',
+ method: 'post',
+ })
+}
diff --git a/src/api/home/ledger/location.ts b/src/api/home/ledger/location.ts
index 99e51e7..ff131a4 100644
--- a/src/api/home/ledger/location.ts
+++ b/src/api/home/ledger/location.ts
@@ -14,7 +14,7 @@
// 删除点位
export function removeLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchDelete',
method: 'post',
data: {
ids: data,
@@ -25,16 +25,17 @@
// 导出列表
export function exportLocation(params: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchExport',
method: 'get',
params,
responseType: 'blob',
+
})
}
export function importLocation(data: any) {
return request({
- url: '',
+ url: '/system/busLedgerPipe/batchImport',
method: 'post',
data,
})
diff --git a/src/assets/icons/icon-force.svg b/src/assets/icons/icon-force.svg
new file mode 100644
index 0000000..2b97ebe
--- /dev/null
+++ b/src/assets/icons/icon-force.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-leakage.svg b/src/assets/icons/icon-leakage.svg
new file mode 100644
index 0000000..e6a24c5
--- /dev/null
+++ b/src/assets/icons/icon-leakage.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-object.svg b/src/assets/icons/icon-object.svg
new file mode 100644
index 0000000..2953620
--- /dev/null
+++ b/src/assets/icons/icon-object.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 8d8f810..14f1cfc 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -341,7 +341,7 @@
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 818af92..2f82737 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -26,7 +26,7 @@
default: false,
},
})
-const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick'])
+const $emits = defineEmits(['complete', 'marke', 'mapClick', 'markerClick', 'lineClick', 'polygonClick', 'massMarksClick', 'polygonDbClick', 'textClick'])
const loading = ref(true)
const publicPath = window.location.href.split('#')[0]
// 设置安全密钥
@@ -101,7 +101,7 @@
AMapLoader.load({
key: localStorage.getItem('JsKey')!, // 后期需替换
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
- plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+ plugins: ['AMap.Scale', 'AMap.MouseTool', 'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.IndexCluster'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.then((AMap1: any) => {
// console.log($props.center, '$props.center')
@@ -111,7 +111,7 @@
map.value = new AMap1.Map('map', {
viewMode: '3D', // 是否为3D地图模式
zoom: $props.zoom, // 初始化地图级别
- zooms: [10, 18],
+ zooms: [8, 18],
resizeEnable: true,
center: $props.center && $props.center?.length === 2 && !isNaN($props.center[0]) && !isNaN($props.center[1]) ? $props.center : [116.397428, 39.90923],
})
@@ -252,7 +252,7 @@
}
// 移除管线图层
function removePiepleLayer() {
- if(xunteng.value) {
+ if (xunteng.value) {
xunteng.value.hide()
}
@@ -302,6 +302,7 @@
strokeWeight: style.strokeWeight,
strokeStyle: style.strokeStyle,
strokeDasharray: style.strokeDasharray,
+ pane: 'markerPane'
})
polygon.on('mouseover', () => {
@@ -326,6 +327,10 @@
// if (style.dbclickSetCenter) {
polygon.on('dblclick', (e) => {
// console.log(`当前点击的是${style.name}`)
+ $emits('polygonDbClick', { event: e, map: map.value, style })
+ })
+ polygon.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
$emits('polygonClick', { event: e, map: map.value, style })
})
polygonAllList.value.push(polygon)
@@ -370,6 +375,11 @@
angle: 0, // 旋转角度
style, // 文本样式
position: data.position, // 点标记在地图上显示的位置
+ zIndex: data.zIndex || 1
+ })
+ Text.on('click', (e) => {
+ // console.log(`当前点击的是${style.name}`)
+ $emits('textClick', { event: e, map: map.value, style })
})
textAllList.value.push(Text)
Text.setMap(map.value)
@@ -485,8 +495,8 @@
massMarksAllList.value.push(massMarks)
massMarks.setMap(map.value)
massMarks.on('click', (e) => {
- // console.log('点击了海量点标记')
- $emits('massMarksClick', { event: e, map: map.value, data, massMarks })
+ console.log('点击了海量点标记')
+ $emits('massMarksClick', { event: e, map: map.value, data, massMarks, type: 'marks' })
})
}
// 移除点标记(海量点)
@@ -536,9 +546,9 @@
const MarkerAllCluster = ref([]) // 点聚合数组
const cluster = ref()
// 添加点聚合(距离聚合)
-const addCluster = (points,styleList) => {
+const addCluster = (points, styleList, clusterOptions = {}) => {
// console.log(points.map((item: any) => ({ ...item, city: '北京' })), 'points')
- console.log(points, 'points')
+ // console.log(points, 'points')
var count = points.length
var _renderClusterMarker = function (context) {
var factor = (context.count / count) ** (1 / 18)
@@ -582,7 +592,7 @@
url: `${publicPath}/image/well/well-will.png`, // 图标地址
},
]
- if(styleList) {
+ if (styleList) {
style = styleList
}
const markerHtml = `
`
@@ -591,11 +601,11 @@
context.marker.setOffset(offset)
context.marker.on('click', (e) => {
// console.log(e, data, '1111')
- $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data })
+ $emits('massMarksClick', { event: { ...e, data: context.data[0] }, map: map.value, points, data, type: 'cluster' })
})
}
cluster.value = new AMap.value.MarkerCluster(map.value, points, {
- gridSize: 100, // 设置网格像素大小
+ gridSize: clusterOptions.gridSize || 100, // 设置网格像素大小
// maxZoom: false, // 最大的聚合级别,大于该级别就不进行相应的聚合 默认值为 18
clusterByZoomChange: false, // 地图缩放过程中是否聚合。默认值 false
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
@@ -603,7 +613,7 @@
})
// 聚合点小于11时不聚合
- cluster.value.setMinClusterSize(40)
+ cluster.value.setMinClusterSize(clusterOptions.setMinClusterSize || 40)
}
const removeCluster = () => {
if (cluster.value) {
@@ -614,8 +624,175 @@
}
}
// 点聚合(行政区)
-const addClusterForDistrict= () => {
+const clusterForDistrict = ref()
+const addClusterForDistrict = (points,) => {
+ console.log(points, 'points')
+ var district = {
+ '北京': {
+ "adcode" : "110000",
+ "center" : "116.405285,39.904989",
+ // "center" : "117.939152,40.976204",
+ },
+ '亦庄开发区': {
+ "center": "116.506647,39.795337",
+ },
+ '密云区': {
+ "adcode" : "110118",
+ "center" : "116.843352,40.377362",
+ },
+ '怀柔区': {
+ "adcode" : "110116",
+ "center" : "116.637122,40.324272",
+ },
+ '门头沟区': {
+ "adcode" : "110109",
+ "center" : "116.105381,39.937183",
+ },
+ '顺义区': {
+ "adcode" : "110113",
+ "center" : "116.653525,40.128936",
+ },
+ '朝阳区': {
+ "adcode" : "110105",
+ "center" : "116.486409,39.921489",
+ },
+ '通州区': {
+ "adcode" : "110112",
+ "center" : "116.658603,39.902486",
+ },
+ '大兴区': {
+ "adcode" : "110115",
+ "center" : "116.338033,39.728908",
+ },
+ '昌平区': {
+ "adcode" : "110114",
+ "center" : "116.235906,40.218085",
+ },
+ '西城区': {
+ "adcode" : "110102",
+ "center" : "116.366794,39.915309",
+ },
+ '东城区': {
+ "adcode" : "110101",
+ "center" : "116.418757,39.917544",
+ },
+ '房山区': {
+ "adcode" : "110111",
+ "center" : "116.139157,39.735535",
+ },
+ '石景山区': {
+ "adcode" : "110107",
+ "center" : "116.195445,39.914601",
+ },
+ '海淀区': {
+ "adcode" : "110108",
+ "center" : "116.310316,39.956074",
+ },
+ '丰台区': {
+ "center": "116.286968,39.863642",
+ },
+};
+ var clusterIndexSet = {
+ city: {
+ minZoom: 2,
+ maxZoom: 10,
+ },
+ district: {
+ minZoom: 10,
+ maxZoom: 12,
+ },
+ area: {
+ minZoom: 12,
+ maxZoom: 18,
+ },
+ };
+ function getStyle(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合绘制点 Marker 对象
+ var color = [
+ '8,60,156',
+ '66,130,198',
+ '107,174,214',
+ '78,200,211',
+ ];
+ var indexs = ['city', 'district', 'area', 'community'];
+ var i = indexs.indexOf(index['mainKey']);
+ var text = clusterData[0][index['mainKey']];
+ var size = Math.round(30 + Math.pow(count / points.length, 1 / 5) * 70);
+ if (i <= 2) {
+ var extra = '' + context.count + '套';
+ text = '' + text + '';
+ text += extra;
+ } else {
+ size = 12 * text.length + 20;
+ }
+ var style = {
+ bgColor: 'rgba(' + color[i] + ',.8)',
+ borderColor: 'rgba(' + color[i] + ',1)',
+ text: text,
+ size: size,
+ index: i,
+ color: '#ffffff',
+ textAlign: 'center',
+ boxShadow: '0px 0px 5px rgba(0,0,0,0.8)'
+ }
+ return style;
+ }
+ function getPosition(context) {
+ var key = context.index.mainKey;
+ var dataItem = context.clusterData && context.clusterData[0];
+ var districtName = dataItem[key];
+ if (!district[districtName]) {
+ return null;
+ }
+ var center = district[districtName].center.split(',');
+ var centerLnglat = new AMap.value.LngLat(center[0], center[1]);
+ return centerLnglat;
+ }
+ function _renderClusterMarker(context) {
+ var clusterData = context.clusterData; // 聚合中包含数据
+ var index = context.index; // 聚合的条件
+ var count = context.count; // 聚合中点的总数
+ var marker = context.marker; // 聚合点标记对象
+ var styleObj = getStyle(context);
+ // 自定义点标记样式
+ var div = document.createElement('div');
+ div.className = 'amap-cluster';
+ div.style.backgroundColor = styleObj.bgColor;
+ div.style.width = styleObj.size + 'px';
+ if (styleObj.index <= 2) {
+ div.style.height = styleObj.size + 'px';
+ // 自定义点击事件
+ context.marker.on('click', function (e) {
+ console.log(e)
+ var curZoom = map.value.getZoom();
+ if (curZoom < 20) {
+ curZoom += 1;
+ }
+ map.value.setZoomAndCenter(curZoom, e.lnglat);
+ });
+ }
+ div.style.border = 'solid 1px ' + styleObj.borderColor;
+ div.style.borderRadius = styleObj.size + 'px';
+ div.innerHTML = styleObj.text;
+ div.style.color = styleObj.color;
+ div.style.textAlign = styleObj.textAlign;
+ div.style.boxShadow = styleObj.boxShadow;
+ context.marker.setContent(div)
+ // 自定义聚合点标记显示位置
+ var position = getPosition(context);
+ if (position) {
+ context.marker.setPosition(position);
+ }
+ context.marker.setAnchor('center');
+ };
+ clusterForDistrict.value = new AMap.value.IndexCluster(map.value, points, {
+ renderClusterMarker: _renderClusterMarker,
+ clusterIndexSet: clusterIndexSet,
+ })
}
// ------------------------------------------------------------------------------------------------
onMounted(() => {
@@ -623,9 +800,9 @@
// setTimeout(() => {
loading.value = true
const height = document.getElementById('map-container-only')?.offsetHeight
- if(height) {
+ if (height) {
const map = document.getElementById('map')
- if(map) {
+ if (map) {
map.style.height = `${height}px`
}
}
@@ -686,6 +863,7 @@
getLocation, // 获取当前位置
addCluster,
removeCluster,
+ addClusterForDistrict
})
diff --git a/src/directives/load-more/index.ts b/src/directives/load-more/index.ts
new file mode 100644
index 0000000..62f3e54
--- /dev/null
+++ b/src/directives/load-more/index.ts
@@ -0,0 +1,45 @@
+
+import _ from 'lodash'
+export default {
+ created(el: any) {
+ },
+ mounted(el: any, binding: { value?: { loadmore?: Function } }) {
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ loadmore()
+ console.log('执行加在到底函数')
+ flag = false
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: any) {
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance <= sign) {
+ const { loadmore = () => { console.log('执行加在到底函数') } } = binding.value || {}
+ if (flag) {
+ flag = false
+ loadmore()
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+}
+
diff --git a/src/directives/table-scroll/index.ts b/src/directives/table-scroll/index.ts
new file mode 100644
index 0000000..84fdce7
--- /dev/null
+++ b/src/directives/table-scroll/index.ts
@@ -0,0 +1,78 @@
+
+import _ from 'lodash'
+interface ElType extends HTMLElement {
+ timer: number | null
+ isScroll: boolean
+ curTableTopValue: number
+}
+export default {
+ created(el: ElType) {
+ el.timer = null
+ el.isScroll = true
+ el.curTableTopValue = 0
+ },
+ mounted(el: ElType, binding: { value?: { delay?: number } }) {
+ const { delay = 15 } = binding.value || {}
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const viewDom = el.getElementsByClassName('el-scrollbar__view')[0] as HTMLElement
+ const onMouseOver = () => (el.isScroll = false)
+ const onMouseOut = () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ }
+ // table-container
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ // console.log(container, 'container')
+ container.addEventListener('mouseover', onMouseOver)
+ container.addEventListener('mouseout', onMouseOut)
+
+ el.timer = window.setInterval(() => {
+ const viewDomClientHeight = viewDom.scrollHeight
+ const tableDomClientHeight = el.clientHeight
+
+ if (el.isScroll && viewDomClientHeight > tableDomClientHeight) {
+ const curScrollPosition = tableDom.clientHeight + el.curTableTopValue
+ el.curTableTopValue =
+ curScrollPosition === tableDom.scrollHeight
+ ? 0
+ : el.curTableTopValue + 1
+ tableDom.scrollTop = el.curTableTopValue
+ }
+ }, delay)
+
+ // 监测是否快要滚动到底部
+ let flag = true
+ const selectWrap = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ selectWrap?.addEventListener('scroll', function () {
+ let sign = 50
+ const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
+ if (scrollDistance < sign) {
+ if(!el.isScroll) { return }
+ const { loadmore = () => { console.log('执行加在到底函数111')} } = binding.value || {}
+ if(flag) {
+ flag = false
+ loadmore()
+ // console.log('执行加在到底函数')
+ setTimeout(() => {
+ flag = true
+ }, 1000);
+ }
+ }
+ })
+ },
+ unmounted(el: ElType) {
+ if (el.timer !== null) {
+ clearInterval(el.timer)
+ }
+ el.timer = null
+
+ const tableDom = el.getElementsByClassName('el-scrollbar__wrap')[0] as HTMLElement
+ const container = document.getElementsByClassName('table-container')[0] as HTMLElement || document.getElementsByClassName('list-container')[0] as HTMLElement
+ container.removeEventListener('mouseover', () => (el.isScroll = false))
+ container.removeEventListener('mouseout', () => {
+ el.curTableTopValue = tableDom.scrollTop
+ el.isScroll = true
+ })
+ },
+}
+
diff --git a/src/layouts/components/Tools/index.vue b/src/layouts/components/Tools/index.vue
index 9f95ee2..c038408 100644
--- a/src/layouts/components/Tools/index.vue
+++ b/src/layouts/components/Tools/index.vue
@@ -151,7 +151,7 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 0dfd51f..d27386a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,6 +14,8 @@
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
+import tableAutoScroll from '@/directives/table-scroll/index'
+import loadMore from './directives/load-more'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm.mp3'
import otherAudio from '@/assets/audio/other.mp3'
@@ -129,6 +131,8 @@
app.directive('drag-width', (el, binding) => {
dragWidth(el, binding)
})
+ app.directive('tableAutoScroll', tableAutoScroll)
+ app.directive('loadmore', loadMore)
directive(app)
app.mount('#app')
diff --git a/src/router/modules/pc.ts b/src/router/modules/pc.ts
index f291cfa..3ee5aac 100644
--- a/src/router/modules/pc.ts
+++ b/src/router/modules/pc.ts
@@ -147,157 +147,53 @@
],
},
{
- path: '/well',
+ path: '/leakage',
component: Layout,
- redirect: '/well/monitor',
- name: 'Well',
+ redirect: '/leakage/monitor',
+ name: 'Leakage',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
- auth: '/well',
+ auth: '/leakage',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/well/index.vue'),
- name: 'WellMonitor',
+ component: () => import('@/views/home/leakage/index.vue'),
+ name: 'LeakageMonitor',
meta: {
- title: '闸井监测',
+ title: '泄漏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/well',
- auth: '/well',
- },
- },
- {
- path: '/well/detail',
- component: () => import('@/views/home/well/components/detail.vue'),
- name: 'WellMonitorDetail',
- meta: {
- title: '闸井详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/well',
- auth: '/well/detail/menu',
+ activeMenu: '/leakage',
+ auth: '/leakage',
},
},
],
},
{
- path: '/station',
+ path: '/force',
component: Layout,
- redirect: '/station/monitor',
- name: 'Station',
+ redirect: '/force/monitor',
+ name: 'Force',
meta: {
- title: '场站监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
- auth: '/station',
+ auth: '/force',
},
children: [
{
path: 'monitor',
- component: () => import('@/views/home/station/station/index.vue'),
- name: 'StationMonitor',
+ component: () => import('@/views/home/force/index.vue'),
+ name: 'ForceMonitor',
meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/monitor',
- },
- },
- {
- path: '/station/:type?',
- component: () => import('@/views/home/station/station/components/detail.vue'),
- name: 'StationMonitorDetail',
- meta: {
- title: '场站监测',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/station/monitor',
- auth: '/station/detail',
- },
- },
- {
- path: 'video',
- component: () => import('@/views/home/station/video/index.vue'),
- name: 'StationVideo',
- meta: {
- title: '视频轮巡',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/video',
- auth: '/station/video',
- },
- },
- {
- path: 'control',
- component: () => import('@/views/home/station/control/index.vue'),
- name: 'StationControl',
- meta: {
- title: '设备控制',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/station/control',
- auth: '/station/control',
- },
- },
- // {
- // path: 'operation',
- // component: () => import('@/views/home/station/operation/index.vue'),
- // name: 'StationOperation',
- // meta: {
- // title: '运维管理',
- // icon: 'ep:key',
- // sidebar: true,
- // breadcrumb: true,
- // activeMenu: '/station/operation',
- // auth: '/station/operation',
- // },
- // },
- ],
- },
- {
- path: '/pipeline',
- component: Layout,
- redirect: '/pipeline/monitor',
- name: 'Pipeline',
- meta: {
- title: '管线监测',
- icon: 'ep:key',
- auth: '/pipeline',
- },
- children: [
- {
- path: 'monitor',
- component: () => import('@/views/home/pipeline/index.vue'),
- name: 'PipelineMonitor',
- meta: {
- title: '管线监测',
+ title: '防外力破坏监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline',
- },
- },
- {
- path: 'monitor/detail',
- component: () => import('@/views/home/pipeline/components/detail.vue'),
- name: 'PipelineMonitorDetail',
- meta: {
- title: '管线详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: false,
- activeMenu: '/pipeline',
- auth: '/pipeline/detail/menu',
+ activeMenu: '/force',
+ auth: '/force',
},
},
],
@@ -308,7 +204,7 @@
redirect: '/temporary/monitor',
name: 'Temporary',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
auth: '/temporary',
},
@@ -318,7 +214,7 @@
component: () => import('@/views/home/temporary/index.vue'),
name: 'TemporaryMonitor',
meta: {
- title: '临时监测',
+ title: '隐患监测',
icon: 'ep:key',
sidebar: false,
breadcrumb: false,
@@ -342,6 +238,175 @@
],
},
{
+ path: '/object',
+ component: Layout,
+ redirect: '/object/well',
+ name: 'Object',
+ meta: {
+ title: '监测对象',
+ icon: 'ep:key',
+ auth: '/object',
+ },
+ children: [
+ {
+ path: '/well',
+ component: Layout,
+ redirect: '/well/monitor',
+ name: 'Well',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ auth: '/well',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/well/index.vue'),
+ name: 'WellMonitor',
+ meta: {
+ title: '闸井监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well',
+ },
+ },
+ {
+ path: '/well/detail',
+ component: () => import('@/views/home/well/components/detail.vue'),
+ name: 'WellMonitorDetail',
+ meta: {
+ title: '闸井详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/well',
+ auth: '/well/detail/menu',
+ },
+ },
+ ],
+ },
+ {
+ path: '/station',
+ component: Layout,
+ redirect: '/station/monitor',
+ name: 'Station',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ auth: '/station',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/station/station/index.vue'),
+ name: 'StationMonitor',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/monitor',
+ },
+ },
+ {
+ path: '/station/:type?',
+ component: () => import('@/views/home/station/station/components/detail.vue'),
+ name: 'StationMonitorDetail',
+ meta: {
+ title: '场站监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/station/monitor',
+ auth: '/station/detail',
+ },
+ },
+ {
+ path: 'video',
+ component: () => import('@/views/home/station/video/index.vue'),
+ name: 'StationVideo',
+ meta: {
+ title: '视频轮巡',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/video',
+ auth: '/station/video',
+ },
+ },
+ {
+ path: 'control',
+ component: () => import('@/views/home/station/control/index.vue'),
+ name: 'StationControl',
+ meta: {
+ title: '设备控制',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/station/control',
+ auth: '/station/control',
+ },
+ },
+ // {
+ // path: 'operation',
+ // component: () => import('@/views/home/station/operation/index.vue'),
+ // name: 'StationOperation',
+ // meta: {
+ // title: '运维管理',
+ // icon: 'ep:key',
+ // sidebar: true,
+ // breadcrumb: true,
+ // activeMenu: '/station/operation',
+ // auth: '/station/operation',
+ // },
+ // },
+ ],
+ },
+ {
+ path: '/pipeline',
+ component: Layout,
+ redirect: '/pipeline/monitor',
+ name: 'Pipeline',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ auth: '/pipeline',
+ },
+ children: [
+ {
+ path: 'monitor',
+ component: () => import('@/views/home/pipeline/index.vue'),
+ name: 'PipelineMonitor',
+ meta: {
+ title: '管线监测',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline',
+ },
+ },
+ {
+ path: 'monitor/detail',
+ component: () => import('@/views/home/pipeline/components/detail.vue'),
+ name: 'PipelineMonitorDetail',
+ meta: {
+ title: '管线详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/pipeline',
+ auth: '/pipeline/detail/menu',
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
path: '/ledger',
component: Layout,
redirect: '/ledger/manage',
@@ -407,97 +472,6 @@
],
},
{
- path: '/operation',
- component: Layout,
- redirect: '/operation/alarm',
- name: 'Operation',
- meta: {
- title: '设备运维',
- icon: 'ep:key',
- auth: '/operation',
- },
- children: [
- {
- path: 'alarm',
- component: () => import('@/views/home/operation/alarm/index.vue'),
- name: 'operationAlarm',
- meta: {
- title: '设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm',
- },
- },
- {
- path: 'alarm/detail',
- component: () => import('@/views/home/operation/alarm/components/detail.vue'),
- name: 'operationAlarmDetail',
- meta: {
- title: '设备报警详情',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/alarm',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'history',
- component: () => import('@/views/home/operation/history/index.vue'),
- name: 'operationHistory',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/history',
- },
- },
- {
- path: 'history/detail',
- component: () => import('@/views/home/operation/history/detail.vue'),
- name: 'operationHistoryDetail',
- meta: {
- title: '历史设备报警',
- icon: 'ep:key',
- sidebar: false,
- breadcrumb: true,
- activeMenu: '/operation/history',
- auth: '/operation/alarm/detail',
- },
- },
- {
- path: 'trajectory',
- component: () => import('@/views/home/operation/trajectory/index.vue'),
- name: 'operationTrajectory',
- meta: {
- title: '轨迹查询',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/trajectory',
- auth: '/operation/trajectory',
- },
- },
- {
- path: 'manufacturer',
- component: () => import('@/views/home/operation/manufacturer/index.vue'),
- name: 'operationManufacturer',
- meta: {
- title: '厂商运维记录',
- icon: 'ep:key',
- sidebar: true,
- breadcrumb: true,
- activeMenu: '/operation/manufacturer',
- auth: '/operation/manufacturer',
- },
- },
- ],
- },
- {
path: '/device',
component: Layout,
redirect: '/device/type',
@@ -602,6 +576,98 @@
],
},
{
+ path: '/operation',
+ component: Layout,
+ redirect: '/operation/alarm',
+ name: 'Operation',
+ meta: {
+ title: '设备运维',
+ icon: 'ep:key',
+ auth: '/operation',
+ },
+ children: [
+ {
+ path: 'alarm',
+ component: () => import('@/views/home/operation/alarm/index.vue'),
+ name: 'operationAlarm',
+ meta: {
+ title: '设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm',
+ },
+ },
+ {
+ path: 'alarm/detail',
+ component: () => import('@/views/home/operation/alarm/components/detail.vue'),
+ name: 'operationAlarmDetail',
+ meta: {
+ title: '设备报警详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/alarm',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'history',
+ component: () => import('@/views/home/operation/history/index.vue'),
+ name: 'operationHistory',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/history',
+ },
+ },
+ {
+ path: 'history/detail',
+ component: () => import('@/views/home/operation/history/detail.vue'),
+ name: 'operationHistoryDetail',
+ meta: {
+ title: '历史设备报警',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/operation/history',
+ auth: '/operation/alarm/detail',
+ },
+ },
+ {
+ path: 'trajectory',
+ component: () => import('@/views/home/operation/trajectory/index.vue'),
+ name: 'operationTrajectory',
+ meta: {
+ title: '轨迹查询',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/trajectory',
+ auth: '/operation/trajectory',
+ },
+ },
+ {
+ path: 'manufacturer',
+ component: () => import('@/views/home/operation/manufacturer/index.vue'),
+ name: 'operationManufacturer',
+ meta: {
+ title: '厂商运维记录',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/operation/manufacturer',
+ auth: '/operation/manufacturer',
+ },
+ },
+ ],
+ },
+ ...sysRoutes,
+ {
path: '/rule',
component: Layout,
redirect: '/rule/agreement',
@@ -653,7 +719,6 @@
},
],
},
- ...sysRoutes,
{
path: '/monitor',
component: Layout,
@@ -693,6 +758,46 @@
},
],
},
+ // 迅腾设备列表
+ {
+ path: '/meet',
+ component: Layout,
+ redirect: '/meet/manage',
+ name: 'Meet',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ auth: '/meet',
+ },
+ children: [
+ {
+ path: 'manage',
+ component: () => import('@/views/home/device/device/index.vue'),
+ name: 'MeetManage',
+ meta: {
+ title: '设备管理',
+ icon: 'ep:key',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/meet/manage',
+ auth: '/meet',
+ },
+ },
+ {
+ path: '/manage/:type',
+ component: () => import('@/views/home/device/device/components/detail.vue'),
+ name: 'MeetManageDetail',
+ meta: {
+ title: '设备详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/meet/manage',
+ auth: '/meet/detail',
+ },
+ },
+ ],
+ },
]
export default routes
diff --git a/src/views/home/alarm/current/components/confirmSituation.vue b/src/views/home/alarm/current/components/confirmSituation.vue
index e32e2cc..1e8118d 100644
--- a/src/views/home/alarm/current/components/confirmSituation.vue
+++ b/src/views/home/alarm/current/components/confirmSituation.vue
@@ -52,7 +52,19 @@
}) // 表单
const rules: FormRules = {
confirmValue: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
- descn: [{ required: true, message: '现场情况备注不能为空', trigger: ['blur', 'change'] }],
+ approvalStatus: [{ required: true, message: '现场浓度值不能为空', trigger: ['blur', 'change'] }],
+ descn: [{ required: true, message: '现场确认情况不能为空', trigger: ['blur', 'change'] }],
+
+
+
+ approvalPerson: [{ required: true, message: '现场确认人员不能为空', trigger: ['blur', 'change'] }],
+ approvalTime: [{ required: true, message: '现场确认时间不能为空', trigger: ['blur', 'change'] }],
+
+ approvalPerson1: [{ required: true, message: '处置人员不能为空', trigger: ['blur', 'change'] }],
+ descn1: [{ required: true, message: '处置情况记录不能为空', trigger: ['blur', 'change'] }],
+ approvalTime1: [{ required: true, message: '处置时间不能为空', trigger: ['blur', 'change'] }],
+
+
} // 前端校验规则
const isFirstLoading = ref(true)
@@ -260,14 +272,14 @@
-
+
-
+
@@ -275,7 +287,7 @@
-
+
@@ -286,21 +298,21 @@
-
+
-
+
-
+
diff --git a/src/views/home/alarm/current/components/gasDataDialog.vue b/src/views/home/alarm/current/components/gasDataDialog.vue
index ffe98fa..b4cd67e 100644
--- a/src/views/home/alarm/current/components/gasDataDialog.vue
+++ b/src/views/home/alarm/current/components/gasDataDialog.vue
@@ -62,6 +62,7 @@
const list = ref([])
const xAxisData = ref([])
const data = ref([])
+const columnsType = ref('')
// 列表展示列
const columns = ref([
// { text: '设备编号', value: 'devcode', align: 'center' },
@@ -380,8 +381,10 @@
if (row.devTypeName) {
if (row.devTypeName === '燃气智能监测终端') {
columns.value = columns1.value
+ columnsType.value = 'columns1'
} else if (row.devTypeName.includes('管网哨兵')) {
columns.value = columns2.value
+ columnsType.value = 'columns2'
// 获取设备信息
manufactureName.value = ''
getDeviceListPage({ offset: 1, limit: 1, devCode: row.devcode }).then(res => {
@@ -389,22 +392,28 @@
manufactureName.value = res.data.rows[0].manufactureName
if (manufactureName.value.includes('百瑞生')) {
columns.value = columns2BRS.value
+ columnsType.value = 'columns2BRS'
}
else if (manufactureName.value.includes('麦哈克')) {
columns.value = columns2MHK.value
+ columnsType.value = 'columns2MHK'
}
}
})
// console.log(row, 'row')
} else if (row.devTypeName === '智能警示桩') {
columns.value = columns3.value
+ columnsType.value = 'columns3'
} else if (row.devTypeName === '场站监测云台') {
columns.value = columns4.value
+ columnsType.value = 'columns4'
} else {
columns.value = columns1.value
+ columnsType.value = 'columns1'
}
} else {
columns.value = columns1.value
+ columnsType.value = 'columns1'
}
const fetch = () => {
setTimeout(() => {
@@ -451,10 +460,92 @@
text: 'Loading',
background: 'rgba(255, 255, 255, 0.8)',
})
+ // 不同设备类型导出列
+ const exportDict = {
+ columns1: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3strength': item.strength,
+ '4cell': item.cell,
+ '5rsrp': item.rsrp,
+ '6rsrpName': item.rsrpName,
+ '7uptime': item.uptime,
+ '8logtime': item.logtime,
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电量(%)', '信号强度', '信号质量', '采集时间', '上传时间']
+ },
+ columns2: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5uptime': item.uptime,
+ '6logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '采集时间', '上传时间']
+ },
+ columns2BRS: {
+ list: list.value.map((item: any, index: number) => ({
+ '1index': index + 1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5ssState': item.ssState,
+ '6temp': item.temp,
+ '7sig': item.sig,
+ '8uptime': item.uptime,
+ '9logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '传感器状态', '温度(℃)', '信号质量', '采集时间', '上传时间']
+ },
+ columns2MHK: {
+ list: list.value.map((item: any, index:number) => ({
+ 'index': index+1,
+ '2devcode': item.devcode,
+ '3gasval': item.gasval,
+ '4vbat': item.vbat,
+ '5ssState': item.ssState,
+ '6rsrp': item.rsrp,
+ '7uptime': item.uptime,
+ '8logtime': item.logtime
+ })),
+ columns: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '电池状态', '信号质量', '采集时间', '上传时间']
+ },
+ columns3: {
+ list: list.value.map((item:any, index:number) => ({
+ '1index': index+ 1,
+ '2leftGas': item.leftGas,
+ '3rightGas': item.rightGas,
+ '4vbat': item.vbat,
+ '5pipeInclineAlarm': item.pipeInclineAlarm,
+ '6pipeBreakAlarm': item.pipeBreakAlarm,
+ '7leftOffLineAlarm': item.leftOffLineAlarm,
+ '8leftVibrateAlarm': item.leftVibrateAlarm,
+ '9rightOffLineAlarm': item.rightOffLineAlarm,
+ '10rightVibrateAlarm': item.rightVibrateAlarm,
+ '11uptime': item.uptime,
+ '12logtime': item.logtime
+ })),
+ columns: ['序号', '左侧甲烷值', '右侧甲烷值', '电池电压(V)', '桩倾斜报警', '桩拆卸报警', '左断线报警', '左振动报警', '右断线报警', '右振动报警', '采集时间', '上传时间']
+ },
+ columns4: {
+ list: list.value.map((item: any, index:number) => ({
+ '1index': index +1,
+ '2concentration': item.concentration,
+ '3dircetion': item.dircetion,
+ '4pitch': item.pitch,
+ '5uptime': item.uptime,
+ '6logtime': item.logtime
+ })),
+ columns: ['序号', '浓度', '水平位置', '垂直位置', '采集时间', '上传时间']
+ }
+ } as { [key: string]: any }
exportExcel({
- json: list.value.map((item: any, index: number) => ({ '1index': index + 1, '2devcode': item.devcode, '3gasval': item.gasval, '4vbat': item.vbat, '5uptime': item.uptime, '6logtime': item.logtime, })),
+ json: exportDict[columnsType.value]?.list || exportDict['columns1'].list,
name: `${info.value.devTypeName}燃气数据`,
- titleArr: ['序号', '设备编号', '燃气浓度(%LEL)', '电池电压(mV)', '采集时间', '上传时间'],
+ titleArr: exportDict[columnsType.value]?.columns || exportDict['columns1'].columns,
sheetName: 'sheet1',
})
loading.close()
diff --git a/src/views/home/alarm/current/components/handlerDialog.vue b/src/views/home/alarm/current/components/handlerDialog.vue
index c4e30ad..a3e2627 100644
--- a/src/views/home/alarm/current/components/handlerDialog.vue
+++ b/src/views/home/alarm/current/components/handlerDialog.vue
@@ -101,7 +101,7 @@