From d3d7dcf919eda40a415b6dc744fb0b347d4293a8 Mon Sep 17 00:00:00 2001 From: zmc <zmc_li@foxmail.com> Date: 星期三, 30 八月 2023 16:10:29 +0800 Subject: [PATCH] 扬尘Vue代码 --- src/sfc/DustExceptionText.vue | 11 package-lock.json | 279 ++++++---- components.d.ts | 5 src/views/exception/FlightInspection.vue | 0 src/views/line_graph/DataRiskModel.vue | 506 +++++++++++++++++++++ src/views/setting/SetConfiguration.vue | 2 src/views/line_graph/components/LineChart.vue | 33 src/sfc/ExceptionType.vue | 57 + /dev/null | 244 ---------- src/api/exportExcel/requetsApi.js | 12 src/utils/common.js | 40 + package.json | 1 src/views/exception/ExceptionTest.vue | 18 src/views/line_graph/DataRiskRank.vue | 58 + src/views/line_graph/components/DustRadarChart.vue | 82 +++ src/components/layout/AppHeader.vue | 2 src/components/layout/AppAside.vue | 18 src/router/index.ts | 6 src/views/origin_data/TableData.vue | 12 src/components/layout/AppLayout.vue | 4 20 files changed, 953 insertions(+), 437 deletions(-) diff --git a/components.d.ts b/components.d.ts index 34308c9..f4d5460 100644 --- a/components.d.ts +++ b/components.d.ts @@ -37,17 +37,18 @@ ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] - ElRadio: typeof import('element-plus/es')['ElRadio'] - ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] ElSpace: typeof import('element-plus/es')['ElSpace'] ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTag: typeof import('element-plus/es')['ElTag'] ElText: typeof import('element-plus/es')['ElText'] + ElTimeline: typeof import('element-plus/es')['ElTimeline'] + ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default'] IconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default'] IconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default'] diff --git a/package-lock.json b/package-lock.json index e7cdd67..4044c4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@element-plus/icons-vue": "^2.1.0", + "@vueuse/core": "^10.4.1", "axios": "^1.4.0", "axiosInstance": "^1.4.0", "dayjs": "^1.11.9", @@ -1431,9 +1432,9 @@ "dev": true }, "node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + "version": "0.0.17", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.59.11", @@ -1776,14 +1777,14 @@ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, "node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.4.1.tgz", + "integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==", "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" + "@types/web-bluetooth": "^0.0.17", + "@vueuse/metadata": "10.4.1", + "@vueuse/shared": "10.4.1", + "vue-demi": ">=0.14.5" } }, "node_modules/@vueuse/core/node_modules/vue-demi": { @@ -1871,12 +1872,6 @@ } } }, - "node_modules/@vueuse/integrations/node_modules/@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true - }, "node_modules/@vueuse/integrations/node_modules/@vueuse/core": { "version": "10.2.1", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", @@ -1928,22 +1923,22 @@ } }, "node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.4.1.tgz", + "integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==" }, "node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.4.1.tgz", + "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==", "dependencies": { - "vue-demi": "*" + "vue-demi": ">=0.14.5" } }, "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "hasInstallScript": true, "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", @@ -2821,6 +2816,79 @@ }, "peerDependencies": { "vue": "^3.2.0" + } + }, + "node_modules/element-plus/node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/element-plus/node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + } + }, + "node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/element-plus/node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + }, + "node_modules/element-plus/node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + } + }, + "node_modules/element-plus/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/error-ex": { @@ -6259,39 +6327,6 @@ "vite": "^3.0.0-0 || ^4.0.0-0" } }, - "node_modules/vite-plugin-vue-devtools/node_modules/@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true - }, - "node_modules/vite-plugin-vue-devtools/node_modules/@vueuse/core": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", - "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", - "dev": true, - "dependencies": { - "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/@vueuse/metadata": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz", - "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==", - "dev": true - }, - "node_modules/vite-plugin-vue-devtools/node_modules/@vueuse/shared": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz", - "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", - "dev": true, - "dependencies": { - "vue-demi": ">=0.14.5" - } - }, "node_modules/vite-plugin-vue-devtools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -7809,9 +7844,9 @@ "dev": true }, "@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + "version": "0.0.17", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" }, "@typescript-eslint/eslint-plugin": { "version": "5.59.11", @@ -8068,14 +8103,14 @@ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, "@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.4.1.tgz", + "integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==", "requires": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" + "@types/web-bluetooth": "^0.0.17", + "@vueuse/metadata": "10.4.1", + "@vueuse/shared": "10.4.1", + "vue-demi": ">=0.14.5" }, "dependencies": { "vue-demi": { @@ -8097,12 +8132,6 @@ "vue-demi": ">=0.14.5" }, "dependencies": { - "@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true - }, "@vueuse/core": { "version": "10.2.1", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", @@ -8140,22 +8169,22 @@ } }, "@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.4.1.tgz", + "integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==" }, "@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "version": "10.4.1", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.4.1.tgz", + "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==", "requires": { - "vue-demi": "*" + "vue-demi": ">=0.14.5" }, "dependencies": { "vue-demi": { - "version": "0.14.5", - "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", - "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", "requires": {} } } @@ -8878,6 +8907,53 @@ "lodash-unified": "^1.0.2", "memoize-one": "^6.0.0", "normalize-wheel-es": "^1.2.0" + }, + "dependencies": { + "@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "requires": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + }, + "@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "requires": { + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} + } + } + } } }, "error-ex": { @@ -11622,39 +11698,6 @@ "xterm-addon-fit": "^0.7.0" }, "dependencies": { - "@types/web-bluetooth": { - "version": "0.0.17", - "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", - "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==", - "dev": true - }, - "@vueuse/core": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz", - "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==", - "dev": true, - "requires": { - "@types/web-bluetooth": "^0.0.17", - "@vueuse/metadata": "10.2.1", - "@vueuse/shared": "10.2.1", - "vue-demi": ">=0.14.5" - } - }, - "@vueuse/metadata": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz", - "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==", - "dev": true - }, - "@vueuse/shared": { - "version": "10.2.1", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz", - "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==", - "dev": true, - "requires": { - "vue-demi": ">=0.14.5" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", diff --git a/package.json b/package.json index 1aadf21..8b81bfd 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.1.0", + "@vueuse/core": "^10.4.1", "axios": "^1.4.0", "axiosInstance": "^1.4.0", "dayjs": "^1.11.9", diff --git a/src/api/exportExcel/requetsApi.js b/src/api/exportExcel/requetsApi.js new file mode 100644 index 0000000..5f2dae4 --- /dev/null +++ b/src/api/exportExcel/requetsApi.js @@ -0,0 +1,12 @@ +import {$http} from '@/api/index.js'; + +export default { + /** + * 鏍规嵁绔欑偣锛屾椂闂存鏌ヨ鍒嗘瀽琛ㄦ墍鏈夋暟鎹� + * @param锛� 璇锋眰鍙傛暟瀵硅薄 + * @returns + */ + fetchAllData(argsObj){ + return $http.get('dust/analysisall',{params:argsObj}); + } +} \ No newline at end of file diff --git a/src/components/layout/AppAside.vue b/src/components/layout/AppAside.vue index 9d5193e..2e89fc8 100644 --- a/src/components/layout/AppAside.vue +++ b/src/components/layout/AppAside.vue @@ -36,7 +36,7 @@ <el-menu active-text-color="#F7BA1E" - background-color="#0093E9" + background-color="#2876aa" class="el-menu-vertical-demo" default-active="2" text-color="#fff" @@ -60,7 +60,7 @@ <el-sub-menu index="1"> <template #title> <el-icon><i-ep-Monitor /></el-icon> - <span>鍒嗛櫓璇勪及</span> + <span class="parent-title">鍒嗛櫓璇勪及</span> </template> <el-menu-item index="avgDay" @click="selected = optionClick[0]"> @@ -77,7 +77,7 @@ <el-sub-menu index="2"> <template #title> <el-icon><i-ep-Histogram /></el-icon> - <span>绾夸笂宸℃</span> + <span class="parent-title">绾夸笂宸℃</span> </template> <el-menu-item index="edata" @click="selected = optionClick[2]"> <el-icon><i-ep-Bell /></el-icon> @@ -94,7 +94,7 @@ <el-sub-menu index="3"> <template #title> <el-icon><i-ep-DataLine /></el-icon> - <span>鏁版嵁绠$悊</span> + <span class="parent-title">鏁版嵁绠$悊</span> </template> @@ -116,7 +116,7 @@ <el-sub-menu index="4"> <template #title> <el-icon><i-ep-DataLine /></el-icon> - <span>閰嶇疆绠$悊</span> + <span class="parent-title">閰嶇疆绠$悊</span> </template> <el-menu-item index="setting" @click="selected = optionClick[6]"> @@ -132,7 +132,7 @@ <style lang="scss" scoped> .el-aside { - background-color: #0093E9; + background-color: #2876aa; height: 100vh; @@ -140,7 +140,7 @@ } .el-menu { - background-color: #0093E9; + background-color: #2876aa; width: 220px; border-right: none; @@ -180,4 +180,8 @@ .slot-lable { color: #f7f8fa; } +.parent-title { + font-weight: bold; + font-size: 18px; +} </style> diff --git a/src/components/layout/AppHeader.vue b/src/components/layout/AppHeader.vue index 3d710a9..9c51934 100644 --- a/src/components/layout/AppHeader.vue +++ b/src/components/layout/AppHeader.vue @@ -77,7 +77,7 @@ align-items: center; color: white; background-color: #0093E9; -background-image: linear-gradient(160deg, #0093E9 0%, #80D0C7 100%); +background-image: linear-gradient(160deg, #2876aa 0%, #5cbfdd 100%); diff --git a/src/components/layout/AppLayout.vue b/src/components/layout/AppLayout.vue index 4c2e72a..c946660 100644 --- a/src/components/layout/AppLayout.vue +++ b/src/components/layout/AppLayout.vue @@ -41,6 +41,8 @@ padding: 0; // overflow-y: hidden; } - +* { + font-family: 'KaiGenGothicSC-Light'; +} </style> diff --git a/src/router/index.ts b/src/router/index.ts index 67a0f21..dc48367 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -13,7 +13,7 @@ { path:"/avgDay", name:'avgDay', - component: () => import('@/views/line_graph/dayMonthAvgData.vue') + component: () => import('@/views/line_graph/DataRiskModel.vue') }, @@ -21,7 +21,7 @@ { path:"/analysis", name:'analysis', - component: () => import('@/views/line_graph/analysisData.vue') + component: () => import('@/views/line_graph/DataRiskRank.vue') }, // 鍘嗗彶鏁版嵁绠$悊 @@ -35,7 +35,7 @@ { path:"/edata", name:'edata', - component: () => import('@/views/exception/ExceptionData.vue') + component: () => import('@/views/exception/FlightInspection.vue') }, // 寮傚父娴嬭瘯 diff --git a/src/sfc/DustExceptionText.vue b/src/sfc/DustExceptionText.vue index 67cd5f8..0ac11dc 100644 --- a/src/sfc/DustExceptionText.vue +++ b/src/sfc/DustExceptionText.vue @@ -24,11 +24,12 @@ requestExceptionData() { // 涓嶅垎椤� exceptionApi - .exceptiondata1( - this.siteName, - this.exceptionType, - this.beginTime, - this.endTime + .exceptiondata1({ + siteName: this.siteName, + exceptionType:this.exceptionType, + beginTime:this.beginTime, + endTime:this.endTime + } ) .then((result) => { //灏嗚繑鍥炵殑缁撴灉浼犻�掔粰鐖剁粍浠� diff --git a/src/sfc/DustRadarChart.vue b/src/sfc/DustRadarChart.vue deleted file mode 100644 index 9b234cc..0000000 --- a/src/sfc/DustRadarChart.vue +++ /dev/null @@ -1,65 +0,0 @@ -<script> -import * as echarts from 'echarts'; -export default { - data() { - return { - chart: null - }; - }, - mounted() { - this.initRadarChart(); - }, - methods: { - initRadarChart() { - this.chart = echarts.init(document.getElementById('main')); - let option = { - title: { - text: '鍩虹鍒嗘瀽' - }, - // legend: { - // data: ['Allocated Budget', 'Actual Spending'] - // }, - tooltip: {}, - radar: { - // shape: 'circle', - indicator: [ - { name: '鏁版嵁鏈夋晥鐜�', max: 1 }, - { name: '鍚屾椂娈靛悓绫诲紓甯稿鐜版儏鍐�', max: 2 }, - { name: '寮傚父澶嶇幇鐜�', max: 1 }, - { name: '寮傚父绫诲瀷鏁伴噺', max: 15 }, - { name: '鏁版嵁鍦ㄧ嚎鐜�', max: 1 } - ] - }, - series: [ - { - name: 'Budget vs spending', - type: 'radar', - data: [ - { - value: [0.1, 1, 0.2, 8, 0.5], - name: '寮傚父鍒嗘瀽' - }, - // { - // value: [0.7, 1.4, 0.5, 8, 0.3], - // name: 'Actual Spending' - // } - ] - } - ] - }; - this.chart.setOption(option); - } - } -}; -</script> - -<template> - <div id="main" class="chart"></div> -</template> - -<style scoped> -.chart { - height: 500px; - width: 500px; -} -</style> diff --git a/src/sfc/ExceptionType.vue b/src/sfc/ExceptionType.vue index 60b42e7..c11f5d4 100644 --- a/src/sfc/ExceptionType.vue +++ b/src/sfc/ExceptionType.vue @@ -16,7 +16,10 @@ // 杩斿洖鐨勬墍鏈夊紓甯哥被鍨� exceptionType:[], //宸插嬀閫夌殑寮傚父 - checkedList: [] + checkedList: [], + // 鍏ㄩ�� + checkAll:false, + isIndeterminate:false, } }, mounted() { @@ -26,9 +29,24 @@ // 鑾峰彇涓嶅悓鐨勫紓甯稿悕绉� getExceptionType(){ this.$http.get('/dust/exceptiontype').then(response=>{ - this.exceptionType = response.data.data + // this.exceptionType = response.data.data + response.data.data.forEach(item => { + this.exceptionType.push(item.exceptionType) + }); + console.log(this.exceptionType); }) - } + }, + handleCheckAllChange (val) { + this.checkedList = val ? this.exceptionType : [] + this.isIndeterminate = false + this.$emit('submitValue',this.checkedList) + }, + handleCheckedExceptionChange (value) { + const checkedCount = value.length + this.checkAll = checkedCount === this.exceptionType.length + this.isIndeterminate = checkedCount > 0 && checkedCount < this.exceptionType.length + this.$emit('submitValue',this.checkedList) +} } } </script> @@ -36,17 +54,24 @@ <template> <div class="excption"> <span class="exception-text">寮傚父绫诲瀷锛�</span> - <el-checkbox-group v-model="checkedList" @change="$emit('submitValue',checkedList)"> - <el-checkbox :label="item.exceptionType" v-for="item in exceptionType" :key="item"> + <el-checkbox + v-model="checkAll" + :indeterminate="isIndeterminate" + @change="handleCheckAllChange" + class="select-text" + >鍏ㄩ��</el-checkbox + > + <el-checkbox-group v-model="checkedList" @change="handleCheckedExceptionChange"> + <el-checkbox :label="item" v-for="item in exceptionType" :key="item"> <template #default> - <span v-if="item.exceptionType == '0'">鏂數鎴栨柇缃�</span> - <span v-else-if="item.exceptionType == '1'">鏁版嵁瓒呬綆</span> - <span v-else-if="item.exceptionType == '2'">瓒呮爣</span> - <span v-else-if="item.exceptionType == '3'">鏁版嵁闀挎椂娈垫棤娉㈠姩</span> - <span v-else-if="item.exceptionType == '4'">閲忕骇绐佸彉寮傚父</span> - <span v-else-if="item.exceptionType == '5'">涓磋繎瓒呮爣寮傚父</span> - <span v-else-if="item.exceptionType == '6'">鍗曟棩瓒呮爣娆℃暟涓寸晫寮傚父</span> - <span v-else-if="item.exceptionType == '7'">婊戝姩骞冲潎鍊肩獊鍙�</span> + <span v-if="item == '0'">鏂數鎴栨柇缃�</span> + <span v-else-if="item == '1'">鏁版嵁瓒呬綆</span> + <span v-else-if="item == '2'">瓒呮爣</span> + <span v-else-if="item == '3'">鏁版嵁闀挎椂娈垫棤娉㈠姩</span> + <span v-else-if="item == '4'">閲忕骇绐佸彉寮傚父</span> + <span v-else-if="item == '5'">涓磋繎瓒呮爣寮傚父</span> + <span v-else-if="item == '6'">鍗曟棩瓒呮爣娆℃暟涓寸晫寮傚父</span> + <span v-else-if="item == '7'">婊戝姩骞冲潎鍊肩獊鍙�</span> </template> </el-checkbox> </el-checkbox-group> @@ -55,7 +80,7 @@ <style lang="scss" scoped> .excption { - display: flex; + display: flex; } .exception-text { font-weight: bold; @@ -65,4 +90,8 @@ .el-checkbox-group { margin-top: 5px; } +.select-text { + margin-top: 5px; + margin-right: 5px; +} </style> \ No newline at end of file diff --git a/src/utils/common.js b/src/utils/common.js index 62bd9f7..d105ca4 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -1,3 +1,4 @@ +import * as XLSX from 'xlsx/xlsx.mjs'; export function useCommonFunction(){ /** * description锛氬垽鏂捣濮嬫椂闂磋法搴︽槸鍚﹁秴杩�1涓湀 @@ -53,8 +54,43 @@ * @returns锛氬ぇ浜庯紝鍒欒繑鍥瀟rue銆傚惁鍒欒繑鍥瀎alse */ function cmpp(a, b) { - return Number(a.replace('%', '')) > Number(b.replace('%', '')); + return Number(a.replace('%', '')) >= Number(b.replace('%', '')); } - return {isExceedOneMonth,cmpp} + /** + *瀵煎嚭涓篹xcel + * @param锛� 琛ㄦ牸鏁版嵁锛屽緟瀵煎嚭鐨勮〃鏍煎垪锛宔xcel鍒楋紝excel鏂囦欢鍚� + * @returns + */ + function exportToExcel(exportData,tableColumns,excelColumnsName,excelName='data.xlsx'){ + const itemsFormatted = exportData.map((item) => { + const newItem = {}; + tableColumns.forEach((col) => { + newItem[col] = item[col]; + }); + return newItem; + }); + // 鍒涘缓xlsx瀵硅薄 + const xls = XLSX.utils.json_to_sheet(itemsFormatted); + + // xls['A1'].v = '璁惧缂栧彿'; + // xls['B1'].v = '寮傚父绫诲瀷'; + // xls['C1'].v = '鍦板尯'; + // xls['D1'].v = '寮�濮嬫椂闂�'; + // xls['E1'].v = '缁撴潫鏃堕棿'; + + // 缂栬緫琛ㄥご琛� 淇敼琛ㄥご + excelColumnsName.forEach(item =>{ + xls[item[0]].v = item[1] + }) + // 鍒涘缓workbook锛屽苟鎶妔heet娣诲姞杩涘幓 + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, xls, 'Sheet1'); + // 灏唚orkbook杞负浜岃繘鍒秞lsx鏂囦欢骞朵笅杞� + XLSX.writeFile(wb, excelName); + + } + + return {isExceedOneMonth,cmpp,exportToExcel} } + diff --git a/src/views/exception/ExceptionTest.vue b/src/views/exception/ExceptionTest.vue index cccd6ab..a64ed4e 100644 --- a/src/views/exception/ExceptionTest.vue +++ b/src/views/exception/ExceptionTest.vue @@ -39,7 +39,7 @@ // 琛ㄦ牸灞曠ず鐨勬暟鎹� displayData: [], // 琛ㄦ牸楂樺害 - tableHeight: 300, + tableHeight: 400, // 琛ㄦ牸鏁版嵁 // 褰撳墠椤� currentPage: 1, @@ -191,7 +191,7 @@ // console.log('鍘嗗彶鏁版嵁涓猴細', this.backData.value); this.backExceptionDataAWeekAgo(); - this.calTableHeight(); + // this.calTableHeight(); // 鏌ヨ鏃堕棿娈电殑鍚勫紓甯哥殑绔欑偣锛屾煡璇㈣鏃堕棿鍖洪棿鐨勫悇寮傚父鏁伴噺 this.getShopNames(); // this.exception.exception0 = this.getSiteNameByExceptionType('0',this.beginTime,this.endTime) @@ -1367,14 +1367,16 @@ </InputSearch> </el-form-item> + + + <el-form-item> + <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> + </el-form-item> + <el-form-item> <ExceptionType @submit-value="(n) => form.exceptionName = n" ></ExceptionType> - </el-form-item> - - <el-form-item> - <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> </el-form-item> </div> @@ -1608,7 +1610,7 @@ <!-- 鏍囧ご --> <div class="card-text1"> <image class="card-header-image"></image> - <span class="card-header-text">婊戝姩骞冲潎鍊煎紓甯�</span> + <span class="card-header-text">鍙樺寲瓒嬪娍寮傚父</span> </div> <div class="card-content-text"> @@ -1745,7 +1747,7 @@ <!-- 鏍囧ご --> <div class="card-text1"> <image class="card-header-image"></image> - <span class="card-header-text">鏂數鎴栨柇缃�</span> + <span class="card-header-text">鏁版嵁缂哄け寮傚父</span> </div> <div class="card-content-text"> diff --git a/src/views/exception/ExceptionData.vue b/src/views/exception/FlightInspection.vue similarity index 100% rename from src/views/exception/ExceptionData.vue rename to src/views/exception/FlightInspection.vue diff --git a/src/views/line_graph/DataRiskModel.vue b/src/views/line_graph/DataRiskModel.vue new file mode 100644 index 0000000..db0d463 --- /dev/null +++ b/src/views/line_graph/DataRiskModel.vue @@ -0,0 +1,506 @@ +<!-- 鏃ュ潎鍊� --> +<script> +import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; +import InputSearch from '../../sfc/InputSearch.vue'; +import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue'; + +import DustRadarChart from './components/DustRadarChart.vue'; +import exceptionApi from '@/api/exceptionApi.js'; +import { useWindowSize } from '@vueuse/core'; + +import LineChart from './components/LineChart.vue' + +import dayjs from 'dayjs'; +export default { + components: { + LineChart, + TimeSelectWithShortCuts, + InputSearch, + AreaAndmonitorType, + DustRadarChart + }, + data() { + return { + isNoData: false, + loading: false, + chartData: [], + chartData1: {}, //淇濆瓨鏌ヨ鐨勭粨鏋� + chartData2: {}, + chartData3: {}, + chartData4: {}, + //devId:'', //璁惧缂栧彿 + // begin: '2023-05-01', //寮�濮嬫椂闂� + // end: '2023-05-15', //缁撴潫鏃堕棿 + + form: { + // 绔欑偣鍚嶇О + name: '', + // 璁惧缂栧彿 + number: '', + // 寮�濮嬫椂闂� + beginTime: '', + // 缁撴潫鏃堕棿 + endTime: '' + }, + // 鎶樼嚎鍥鹃厤缃」 + option: {}, + // 鏁版嵁娓呭崟 + bill: { + min: '', + max: '', + avg: '', + online: '', + valid: '', + exceeding: '', + + // 鍏稿瀷寮傚父澶嶇幇鐜� + exceptionRecurrence: '', + // 寮傚父绫诲瀷鎹仛闆嗗害 + exceptionTypeAggregation: '', + + } + }; + }, + setup() { + const { height } = useWindowSize(); + return { height }; + }, + mounted() { + this.fetch(); + }, + methods: { + /** + * 璁$畻寮傚父绫诲瀷鑱氶泦搴� 寮傚父澶嶇幇鐜� + * @param锛� 寮傚父鏁版嵁鏁扮粍 + * @returns锛� + */ + calRecur(exceptionArr) { + // 鍏稿瀷寮傚父澶嶇幇鐜� + let exceptionTyprRecurRate = 0; + // 閲忕骇绐佸彉 + let mutationCount = 0; + // 瓒呮爣涓磋繎 + let exceedingNearCount = 0; + // 瓒呮爣娆℃暟涓寸晫 + let exceedindCriticalDegree = 0; + + // 淇濆瓨鍑虹幇鐨勪笉鍚屽紓甯哥被鍨� + let exception = [] + // 寮傚父绫诲瀷鑱氶泦搴� + let exceptionTypeAggregation = 0 + + exceptionArr.forEach(item => { + // 寮傚父澶嶇幇鐜� + if (item.exceptionType == 4) { + mutationCount++; + } else if (item.exceptionType == 5) { + exceedingNearCount++; + } else if (item.exceptionType == 6) { + exceedindCriticalDegree++; + } + + // 寮傚父绫诲瀷鑱氶泦搴� + if(exception.length == 0){ + exception.push(item.exceptionType) + } + // 淇濆瓨鏂扮殑寮傚父绫诲瀷 + else if(exception.indexOf(item.exceptionType) == -1){ + exception.push(item.exceptionType) + } + }); + + let sum = 0; + // 娆℃暟鍑�1锛岃寮傚父鍑虹幇2娆★紝绠楀鐜�1娆°�傚嚭鐜�3娆★紝绠楀鐜�2娆�... + if (mutationCount > 1) { + sum = sum + mutationCount - 1; + } + if (exceedingNearCount > 1) { + sum = sum + exceedindCriticalDegree - 1; + } + if (exceedindCriticalDegree > 1) { + sum = sum + exceedindCriticalDegree - 1; + } + console.log('sum:',sum); + console.log('exception:',exception); + console.log('鍏朵粬',mutationCount,exceedindCriticalDegree,exceedindCriticalDegree); + switch (sum) { + case 0: + exceptionTyprRecurRate = sum / 3; + break; + case 1: + exceptionTyprRecurRate = sum / 3; + break; + case 2: + case sum >= 3: + exceptionTyprRecurRate = 1; + break; + default: + return 'error'; + } + + exceptionTypeAggregation = exception.length / 8 + + let obj = {} + obj['exceptionRecurrence'] = exceptionTyprRecurRate + obj['exceptionTypeAggregation'] = exceptionTypeAggregation + + return obj + }, + /** + * 璁$畻鏃ユ湡鐩稿樊鍑犲ぉ + * @param锛� + * @createTime:寮�濮嬫椂闂达紝缁撴潫鏃堕棿 + * @returns锛� + */ + getDaysDifference(startDate, endDate) { + var start = new Date(startDate); + var end = new Date(endDate); + var timeDiff = Math.abs(end.getTime() - start.getTime()); + var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); + return diffDays; + }, + /** + * 浠庡垎鏋愭暟鎹暟缁勪腑鎵惧埌鏈�灏忓拰澶у�� + * @param锛� + * @returns锛� + */ + calBillData(arr) { + let min = 65536; + let max = -1; + let avg = 0; + let online = 0; + let valid = 0; + let exceeding = 0; + + let sumAvg = 0; + let sumOnline = 0; + let sumValid = 0; + let sumExceeding = 0; + + // 璁$畻閫夋嫨鐨勬椂闂寸殑鐩稿樊鐨勫ぉ鏁� + let begin = dayjs(this.form.beginTime).format('YYYY-MM-DD'); + let end = dayjs(this.form.endTime).format('YYYY-MM-DD'); + let dayDiff = this.getDaysDifference(begin, end); + let obj = {}; + // 璁$畻鏈�灏忓拰澶у�� + arr.forEach((item) => { + if (item.min < min) { + min = item.min; + } + if (item.max > max) { + max = item.max; + } + // 璁$畻骞冲潎鍊硷紝鍦ㄧ嚎鐜囷紝鏈夋晥鐜囷紝瓒呮爣鐜� + sumAvg = sumAvg + item.dayAvg; + sumOnline = sumOnline + Number(item.dayOnline.slice(0, -1)); + sumValid = sumValid + Number(item.dayValid.slice(0, -1)); + sumExceeding = sumExceeding + Number(item.dayExceeding.slice(0, -1)); + }); + // 璁$畻鍧囧�� + avg = sumAvg / dayDiff; + // console.log('sumavg:',sumAvg,dayDiff); + online = sumOnline / dayDiff; + valid = sumValid / dayDiff; + exceeding = sumExceeding / dayDiff; + obj['min'] = min; + obj['max'] = max; + + obj['avg'] = avg.toFixed(3); + obj['online'] = online.toFixed(3); + obj['valid'] = valid.toFixed(3); + obj['exceeding'] = exceeding.toFixed(3); + + return obj; + }, + + /** + * 灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮� + * @param锛� + * @returns锛� + */ + giveTime(val) { + //灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮�(璇ョ粍浠惰繑鍥炵殑鏍囧噯鏃堕棿鐨勬牸寮忥紝鎵�浠ュ繀椤荤殑鍔犺繖涓嚱鏁�) + this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); + this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); + }, + /** + * 鍒濆鍔犺浇鍑芥暟 + * @param锛� + * @returns锛� + */ + fetch() { + // 鍒嗘瀽鏁版嵁 + this.fetchData(); + // 寮傚父鏁版嵁 + this.exceptiondataCount(); + }, + + // 鐐瑰嚮灞曠ず鎸夐挳 + fetchData() { + if ( + this.form.beginTime >= this.form.endTime && + (this.form.beginTime != null || this.form.endTime != null) && + (this.form.beginTime != '' || tthis.form.endTime != '') + ) { + alert('璇疯緭鍏ユ湁鏁堢殑鏃堕棿娈�'); + return; + } + let params = {}; + if (this.form.name) { + params['siteName'] = this.form.name; + } + if (this.form.beginTime) { + params['beginTime'] = this.form.beginTime; + } + if (this.form.endTime) { + params['endTime'] = this.form.endTime; + } + this.loading = true; + exceptionApi + .analysisdata(this.form.name, this.form.beginTime, this.form.endTime) + .then((response) => { + this.chartData = response.data.data; + this.loading = false; + if (response.data.data.length == 0) { + this.isNoData = true; + return; + } + // 绉婚櫎绌烘暟鎹姸鎬� + this.isNoData = false; + this.setChart(); + + let temp = this.calBillData(this.chartData); + console.log('temp:', temp); + this.bill.min = temp['min']; + this.bill.max = temp['max']; + + this.bill.avg = temp['avg']; + this.bill.online = temp['online']; + this.bill.valid = temp['valid']; + this.bill.exceeding = temp['exceeding']; + }); + }, + + // 閫夋嫨鍏朵粬鍊肩被鍨嬫椂 + setChart() { + if (this.chartData.length) { + // x杞存棩鏈熸椂闂� + let dateList = []; + //棰楃矑鐗╁钩鍧囨祿搴� + let dayAvg = []; + let dataOnline = []; + let dataValid = []; + let dataExceed = []; + this.chartData.forEach((item) => { + //x杞存棩鏈� + dateList.push(item.lst); + // 鍘嗗彶娌圭儫娴撳害 + dayAvg.push(item.dayAvg); + dataOnline.push(item.dayOnline.slice(0, -1)); + dataValid.push(item.dayValid.slice(0, -1)); + dataExceed.push(item.dayExceeding.slice(0, -1)); + }); + + this.chartData1 = { + x: dateList, + y: dayAvg + }; + this.chartData2 = { + x: dateList, + y: dataOnline + }; + this.chartData3 = { + x: dateList, + y: dataValid + }; + this.chartData4 = { + x: dateList, + y: dataExceed + }; + } + }, + + // 浼佷笟寮傚父璇︽儏 + exceptiondataCount() { + exceptionApi + .exceptiondata1({ + siteName: this.form.name, + beginTime: this.form.beginTime, + endTime: this.form.endTime + }) + .then((res) => { + console.log('寮傚父锛�', res.data.data); + let obj = this.calRecur(res.data.data) + this.bill.exceptionRecurrence = obj['exceptionRecurrence'] + this.bill.exceptionTypeAggregation = obj['exceptionTypeAggregation'] + }); + } + } +}; +</script> +<template> + <div class="search-container"> + <el-container> + <el-main> + <el-form :inline="true" :model="form"> + <el-form-item> + <AreaAndmonitorType></AreaAndmonitorType> + </el-form-item> + <el-form-item> + <InputSearch + :isNeedDefaultSite="1" + @submit-value="(n) => (form.name = n)" + ></InputSearch> + </el-form-item> + <el-form-item> + <TimeSelectWithShortCuts + @submit-time="giveTime" + ></TimeSelectWithShortCuts> + </el-form-item> + + <el-form-item> + <el-button type="primary" @click="fetch">灞曠ず鎶樼嚎鍥�</el-button> + </el-form-item> + + <!-- <div> + <el-form-item> + <el-radio-group v-model="radio" @change="setChart"> + <el-radio :label="1">棰楃矑鐗╂祿搴﹀钩鍧囧��</el-radio> + <el-radio :label="2">鏁版嵁鍦ㄧ嚎/鏈夋晥/瓒呮爣鐜�</el-radio> + </el-radio-group> + </el-form-item> + </div> --> + </el-form> + + <div>鏁版嵁缁熻鏃舵锛歿{}}</div> + + <el-row :gutter="24"> + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> + <el-card + shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }" + > + <template #default> + <LineChart + title="鏃ュ潎鍊�" + :chartData="chartData1" + yName="娴撳害" + seriesName="鏃ュ潎鍊�" + > + </LineChart> + </template> + </el-card> + </el-col> + + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> + <el-card + shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }" + > + <template #default> + <LineChart + title="鏃ュ湪绾跨巼" + :chartData="chartData2" + yName="鐧惧垎姣�" + seriesName="鏃ュ湪绾跨巼" + > + </LineChart> + </template> + </el-card> + </el-col> + + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> + <el-card shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }"> + <template #default> + <LineChart + title="鏃ユ湁鏁堢巼" + :chartData="chartData3" + yName="鐧惧垎姣�" + seriesName="鏃ユ湁鏁堢巼" + > + </LineChart> + </template> + </el-card> + </el-col> + + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> + <el-card shadow="never" :style="{ height: `calc(${height}px - 35vh - 250px)` }"> + <template #default> + <LineChart + title="鏃ヨ秴鏍囩巼" + :chartData="chartData4" + yName="鐧惧垎姣�" + seriesName="鏃ヨ秴鏍囩巼" + > + </LineChart> + </template> + </el-card> + </el-col> + </el-row> + + <el-row :gutter="20"> + <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> + <el-card + shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }" + > + <DustRadarChart :name="['鏁版嵁鏈夋晥鐜�','鍏稿瀷寮傚父澶嶇幇鐜�','寮傚父绫诲瀷鑱氶泦搴�','鏁版嵁瓒呮爣鐜�','鏁版嵁鍦ㄧ嚎鐜�']" :data="[bill.valid,bill.exceptionRecurrence,bill.exceptionTypeAggregation,bill.exceeding,bill.online]" ></DustRadarChart> + </el-card> + </el-col> + + <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> + <el-card + shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }" + > + <template #header>寮傚父鏁伴噺缁熻</template> + <el-space direction="vertical"> + <div>鏈�澶у��:{{ bill.max }} mg/m鲁</div> + <div>鏈�灏忓��:{{ bill.min }} mg/m鲁</div> + <div>鍧囧��:{{ bill.avg }} mg/m鲁</div> + <div>鏁版嵁鏈夋晥鐜�:{{ bill.online }}%</div> + <div>鏁版嵁鍦ㄧ嚎鐜�:{{ bill.valid }}%</div> + <div>鏁版嵁瓒呮爣鐜�:{{ bill.exceeding }}%</div> + <div>寮傚父绫诲瀷鑱氶泦搴�:{{ bill.exceptionTypeAggregation*100 }}%</div> + <div>鍏稿瀷寮傚父澶嶇幇鐜�:{{ bill.exceptionRecurrence*100 }}%</div> + </el-space> + </el-card> + </el-col> + + <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> + <el-card + shadow="never" + :style="{ height: `calc(${height}px - 35vh - 250px)` }" + > + <template #header>椋庨櫓绛夌骇</template> + <template #default> + <el-space direction="vertical"> + <el-text>楂橀闄�(鈮�0.6)</el-text> + <el-text>涓闄�(0.2~0.6)</el-text> + <el-text>浣庨闄�(锛�0.2)</el-text> + </el-space> + </template> + </el-card> + </el-col> + </el-row> + </el-main> + </el-container> + </div> +</template> + +<style scoped> +.el-card { + margin-top: 15px; + border-radius: 9px; +} +.chart-container { + width: 100%; + height: 600px; +} +.el-header { + background-color: #010408; + color: #333; + line-height: 60px; +} +</style> diff --git a/src/views/line_graph/analysisData.vue b/src/views/line_graph/DataRiskRank.vue similarity index 81% rename from src/views/line_graph/analysisData.vue rename to src/views/line_graph/DataRiskRank.vue index 1475fd1..56824f2 100644 --- a/src/views/line_graph/analysisData.vue +++ b/src/views/line_graph/DataRiskRank.vue @@ -3,7 +3,7 @@ // import InputSearch from '../../sfc/InputSearch.vue'; import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue'; import {useCommonFunction} from '../../utils/common.js'; - +import requetsApi from '@/api/exportExcel/requetsApi.js' import dayjs from 'dayjs'; export default { components: { @@ -22,8 +22,8 @@ tableData: [], isNoData: false, loading: false, - begin: '2023-05-01', //寮�濮嬫椂闂� - end: '2023-05-15', //缁撴潫鏃堕棿 + // begin: '2023-05-01', //寮�濮嬫椂闂� + // end: '2023-05-15', //缁撴潫鏃堕棿 form: { // 绔欑偣鍚嶇О @@ -38,9 +38,9 @@ }; }, setup(){ - // 寮曞叆 鐧惧垎鍙锋瘮杈冨ぇ灏� - const {cmpp} = useCommonFunction() - return {cmpp} + // 寮曞叆 鐧惧垎鍙锋瘮杈冨ぇ灏� 瀵煎嚭鍔熻兘 + const {cmpp,exportToExcel} = useCommonFunction() + return {cmpp,exportToExcel} }, // watch:{ @@ -56,6 +56,35 @@ this.form.name = ''; }, methods: { + // 鍔熻兘锛氬鍑轰负Excel + exportData(){ + let params ={ + 'beginTime':this.form.beginTime, + 'endTime': this.form.endTime + } + requetsApi.fetchAllData(params).then(res => { + const data = res.data.data + console.log('闀垮害锛�',data.length); + + const tableColumns = [ + 'name', + 'mnCode', + 'lst', + 'dayAvg', + 'min', + 'max', + 'dayOnline', + 'dayValid', + 'dayExceeding', + ] + const excelColumns = [['A1','绔欑偣鍚嶇О'], + ['B1','璁惧缂栧彿'],['C1','鐩戞祴鏃ユ湡'],['D1','骞冲潎鍊�'], + ['E1','鏈�灏忓��'],['F1','鏈�澶у��'],['G1','鍦ㄧ嚎鐜�'], + ['H1','鏈夋晥鐜�'],['I1','瓒呮爣鐜�']] + this.exportToExcel(data,tableColumns,excelColumns,'鍒嗘瀽琛�.xlsx') + }) + + }, // 鍔熻兘锛氭敼鍙樿〃鏍兼煇涓崟鍏冩牸鐨勯鑹� tableCellClassName({ row, column, rowIndex, columnIndex }) { // 骞冲潎鍊间笉婊¤冻鏍囧噯鏃� @@ -159,6 +188,7 @@ </el-form-item> <el-form-item> <el-button type="primary" @click="fetchData">缁熻鍒嗘瀽</el-button> + <el-button type="warning" @click="exportData">瀵煎嚭</el-button> </el-form-item> </el-form> @@ -199,40 +229,40 @@ <el-table-column prop="dayAvg" - label="骞冲潎鍊�" + label="鏃ュ钩鍧囧��" sortable show-overflow-tooltip /> <el-table-column prop="min" - label="鏈�灏忓��" + label="鏃ユ渶灏忓��" sortable show-overflow-tooltip /> <el-table-column prop="max" - label="鏈�澶у��" + label="鏃ユ渶澶у��" sortable show-overflow-tooltip /> <el-table-column prop="dayOnline" - label="鍦ㄧ嚎鐜�" + label="鏃ュ湪绾跨巼" sortable show-overflow-tooltip /> <el-table-column prop="dayValid" - label="鏈夋晥鐜�" + label="鏃ユ湁鏁堢巼" sortable show-overflow-tooltip /> <el-table-column prop="dayExceeding" - label="瓒呮爣鐜�" + label="鏃ヨ秴鏍囩巼" sortable show-overflow-tooltip /> @@ -259,4 +289,8 @@ :deep().el-table__row .red-color { background-color: red; } +.el-table { + color: #000000; +} + </style> diff --git a/src/views/line_graph/components/DustRadarChart.vue b/src/views/line_graph/components/DustRadarChart.vue new file mode 100644 index 0000000..e6162a9 --- /dev/null +++ b/src/views/line_graph/components/DustRadarChart.vue @@ -0,0 +1,82 @@ +<!-- 闆疯揪鍥� + +--> +<script> +import * as echarts from 'echarts'; +export default { + props:{ + name:{ + type:Array, + default:()=>{ + return [] + } + }, + data:{ + type:Array, + default:()=>{ + return [] + } + } + }, + data() { + return { + chart: null + }; + }, + watch:{ + data(){ + this.set() + } + }, + mounted() { + this.initRadarChart(); + }, + methods: { + initRadarChart() { + this.chart = echarts.init(document.getElementById('main')); + }, + set(){ + let option = { + title: { + text: '鍩虹鍒嗘瀽' + }, + tooltip: {}, + radar: { + // shape: 'circle', + indicator: [ + { name: this.name[0], max: 1 }, + { name: this.name[1], max: 1 }, + { name: this.name[2], max: 1 }, + { name: this.name[3], max: 1 }, + { name: this.name[4], max: 1 } + ] + }, + series: [ + { + name: 'Budget vs spending', + type: 'radar', + data: [ + { + value: [this.data[0]*0.01,this.data[1]*0.01, this.data[2]*0.01,this.data[3]*0.01,this.data[4]*0.01], + name: '寮傚父鍒嗘瀽' + }, + ] + } + ] + }; + this.chart.setOption(option); + } + } +}; +</script> + +<template> + <div id="main" class="chart"></div> +</template> + +<style scoped> +.chart { + width: 100%; + height: 35vh; +} +</style> diff --git a/src/sfc/LineChart.vue b/src/views/line_graph/components/LineChart.vue similarity index 79% rename from src/sfc/LineChart.vue rename to src/views/line_graph/components/LineChart.vue index 38fd58f..e1c4b89 100644 --- a/src/sfc/LineChart.vue +++ b/src/views/line_graph/components/LineChart.vue @@ -44,14 +44,14 @@ }, mounted() { this.intiChart(); - // this.chart.setOption(this.chartData) window.addEventListener('resize', this.resizeChart); }, watch: { chartData() { // option鍙樺寲鏃讹紝鍥惧舰鍐嶆鍒濆鍖� this.setOption(); - } + }, + }, beforeUnmount() { if (this.chart) { @@ -62,9 +62,6 @@ intiChart() { // 鍒涘缓echarts瀹炰緥 this.chart = _echarts.init(this.$refs.chart); - - // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃 - // this.chart.setOption(option, true); }, setOption() { @@ -78,10 +75,10 @@ toolbox: { // 宸ュ叿鏍� feature: { - dataZoom: { - // 鍖哄煙缂╂斁 - yAxisIndex: 'none' - }, + // dataZoom: { + // // 鍖哄煙缂╂斁 + // yAxisIndex: 'none' + // }, // 淇濆瓨涓哄浘鐗� saveAsImage: {} @@ -89,7 +86,13 @@ }, xAxis: { name: this.xName, - data: this.chartData.x + data: this.chartData.x, + type: 'category', + axisLabel: { + formatter: function (value) { + return value.slice(5); + } + } }, yAxis: { type: 'value', @@ -112,7 +115,13 @@ // 璺熼〉闈㈠搷搴斿紡鍙樺寲 resizeChart() { - this.chart.resize(); + // this.chart.resize(); + // delay(600).then(() => this.chart.resize()); + this.$nextTick(() => { + if (this.chart) { + this.chart.resize(); + } + }); } } }; @@ -121,7 +130,7 @@ <style> .line-chart { width: 100%; - height: 500px; + height: 35vh; margin-top: 25px; } </style> diff --git a/src/views/line_graph/dayMonthAvgData.vue b/src/views/line_graph/dayMonthAvgData.vue deleted file mode 100644 index 696b539..0000000 --- a/src/views/line_graph/dayMonthAvgData.vue +++ /dev/null @@ -1,244 +0,0 @@ -<!-- 鏃ュ潎鍊� --> -<script> -import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue'; -import InputSearch from '../../sfc/InputSearch.vue'; -import AreaAndmonitorType from '../../sfc/AreaAndmonitorType.vue'; -import DustRadarChart from '../../sfc/DustRadarChart.vue'; -import exceptionApi from '@/api/exceptionApi.js'; - -// 寮傛缁勪欢 -const LineChart = defineAsyncComponent(() => import('../../sfc/LineChart.vue')); - -import dayjs from 'dayjs'; -export default { - components: { - LineChart, - TimeSelectWithShortCuts, - InputSearch, - AreaAndmonitorType, - DustRadarChart - }, - data() { - return { - isNoData: false, - loading: false, - chartData: [], - chartData1: {}, //淇濆瓨鏌ヨ鐨勭粨鏋� - chartData2: {}, - chartData3: {}, - chartData4: {}, - //devId:'', //璁惧缂栧彿 - begin: '2023-05-01', //寮�濮嬫椂闂� - end: '2023-05-15', //缁撴潫鏃堕棿 - - form: { - // 绔欑偣鍚嶇О - name: '', - // 璁惧缂栧彿 - number: '', - // 寮�濮嬫椂闂� - beginTime: '', - // 缁撴潫鏃堕棿 - endTime: '' - }, - // 鎶樼嚎鍥鹃厤缃」 - option: {}, - - // 澶嶉�夋缁� - radio: 1 - }; - }, - mounted() { - this.fetch(); - }, - methods: { - giveTime(val) { - //灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮�(璇ョ粍浠惰繑鍥炵殑鏍囧噯鏃堕棿鐨勬牸寮忥紝鎵�浠ュ繀椤荤殑鍔犺繖涓嚱鏁�) - this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss'); - this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss'); - }, - - fetch() { - this.fetchData(); - this.exceptiondataCount(); - }, - - // 鐐瑰嚮灞曠ず鎸夐挳 - fetchData() { - if ( - this.form.beginTime >= this.form.endTime && - (this.form.beginTime != null || this.form.endTime != null) && - (this.form.beginTime != '' || tthis.form.endTime != '') - ) { - alert('璇疯緭鍏ユ湁鏁堢殑鏃堕棿娈�'); - return; - } - let params = {}; - if (this.form.name) { - params['siteName'] = this.form.name; - } - if (this.form.beginTime) { - params['beginTime'] = this.form.beginTime; - } - if (this.form.endTime) { - params['endTime'] = this.form.endTime; - } - this.loading = true; - exceptionApi - .analysisdata(this.form.name, this.form.beginTime, this.form.endTime) - .then((response) => { - this.chartData = response.data.data; - this.loading = false; - if (response.data.data.length == 0) { - this.isNoData = true; - return; - } - // 绉婚櫎绌烘暟鎹姸鎬� - this.isNoData = false; - this.setChart(); - }); - }, - - // 閫夋嫨鍏朵粬鍊肩被鍨嬫椂 - setChart() { - if (this.chartData.length) { - // x杞存棩鏈熸椂闂� - let dateList = []; - //棰楃矑鐗╁钩鍧囨祿搴� - let dayAvg = []; - let dataOnline = []; - let dataValid = []; - let dataExceed = []; - this.chartData.forEach((item) => { - //x杞存棩鏈� - dateList.push(item.lst); - // 鍘嗗彶娌圭儫娴撳害 - dayAvg.push(item.dayAvg); - dataOnline.push(item.dayOnline.slice(0, -1)); - dataValid.push(item.dayValid.slice(0, -1)); - dataExceed.push(item.dayExceeding.slice(0, -1)); - }); - - this.chartData1 = { - x: dateList, - y: dayAvg - }; - this.chartData2 = { - x: dateList, - y: dataOnline - }; - this.chartData3 = { - x: dateList, - y: dataValid - }; - this.chartData4 = { - x: dateList, - y: dataExceed - }; - } - }, - - // 浼佷笟寮傚父璇︽儏 - exceptiondataCount() { - exceptionApi - .exceptiondata1({ - siteName: this.form.name, - beginTime: this.form.beginTime, - endTime: this.form.endTime - }) - .then((res) => { - // 鎵�鏈夊紓甯� - }); - } - } -}; -</script> -<template> - <div class="search-container"> - <el-container> - <el-main> - <el-form :inline="true" :model="form"> - <el-form-item> - <AreaAndmonitorType></AreaAndmonitorType> - </el-form-item> - <el-form-item> - <InputSearch - :isNeedDefaultSite="1" - @submit-value="(n) => (form.name = n)" - ></InputSearch> - </el-form-item> - <el-form-item> - <TimeSelectWithShortCuts - @submit-time="giveTime" - ></TimeSelectWithShortCuts> - </el-form-item> - - <el-form-item> - <el-button type="primary" @click="fetch">灞曠ず鎶樼嚎鍥�</el-button> - </el-form-item> - - <!-- <div> - <el-form-item> - <el-radio-group v-model="radio" @change="setChart"> - <el-radio :label="1">棰楃矑鐗╂祿搴﹀钩鍧囧��</el-radio> - <el-radio :label="2">鏁版嵁鍦ㄧ嚎/鏈夋晥/瓒呮爣鐜�</el-radio> - </el-radio-group> - </el-form-item> - </div> --> - </el-form> - - <div>鏁版嵁缁熻鏃舵锛氬疄闄呰幏鍙栨暟鎹殑鏃舵</div> - <el-card> 寮傚父鏁伴噺缁熻 </el-card> - <el-card> 瓒呮爣澶嶇幇鐜� </el-card> - <el-card> - <el-empty v-show="isNoData" :image-size="200" /> - <LineChart - title="鏃ュ潎鍊�" - :chartData="chartData1" - yName="娴撳害" - seriesName="鏃ュ潎鍊�" - > - </LineChart> - <LineChart - title="鏃ュ湪绾跨巼" - :chartData="chartData2" - yName="鐧惧垎姣�" - seriesName="鏃ュ湪绾跨巼" - > - </LineChart> - <LineChart - title="鏃ユ湁鏁堢巼" - :chartData="chartData3" - yName="鐧惧垎姣�" - seriesName="鏃ユ湁鏁堢巼" - > - </LineChart> - <LineChart - title="鏃ヨ秴鏍囩巼" - :chartData="chartData4" - yName="鐧惧垎姣�" - seriesName="鏃ヨ秴鏍囩巼" - > - </LineChart> - <DustRadarChart></DustRadarChart> - </el-card> - </el-main> - </el-container> - </div> -</template> - -<style scoped> -.el-card { - margin-top: 40px; - border-radius: 9px; -} -.chart-container { - width: 100%; - height: 600px; -} -.el-header { - background-color: #010408; - color: #333; - line-height: 60px; -} -</style> diff --git a/src/views/origin_data/TableData.vue b/src/views/origin_data/TableData.vue index 44cbe59..96aef65 100644 --- a/src/views/origin_data/TableData.vue +++ b/src/views/origin_data/TableData.vue @@ -163,6 +163,9 @@ <el-card > <el-form :inline="true"> <div class="demo-form-inline"> + <el-row> + <el-col> + <el-form-item> <AreaAndmonitorType ></AreaAndmonitorType> </el-form-item> @@ -185,9 +188,11 @@ <ScenarioType @submitScenarioType="(val) => (scenarioType = val)"> </ScenarioType> </el-form-item> + </el-col> <el-form-item> <TimeSelectWithShortCuts @submit-time="giveTime"></TimeSelectWithShortCuts> </el-form-item> + </el-row> </div> <div class="button-and-export"> <el-form-item> @@ -305,13 +310,6 @@ </el-row> - <!-- <el-row> - <el-col v-loading="true"> - <el-card > - 111 - </el-card> - </el-col> - </el-row> --> </template> <style lang="scss" scoped> diff --git a/src/views/setting/SetConfiguration.vue b/src/views/setting/SetConfiguration.vue index dcf7ae3..9adf956 100644 --- a/src/views/setting/SetConfiguration.vue +++ b/src/views/setting/SetConfiguration.vue @@ -1,5 +1,5 @@ <script> -import DustRadarChart from '../../sfc/DustRadarChart.vue'; +// import DustRadarChart from '../../sfc/DustRadarChart.vue'; import TimeSelectWithShortCuts from '../../sfc/TimeSelectWithShortCuts.vue' import dayjs from 'dayjs'; export default { -- Gitblit v1.9.3