From f19e5267cc23b1c714dc746239864f33ed715dd9 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 05 十二月 2025 17:55:02 +0800
Subject: [PATCH] 完成地图制作任务功能初版
---
src/styles/element/base.scss | 3
src/views/fysp/task/components/CompTaskMap.vue | 108 +++
src/views/fysp/task/components/CompSubTaskSelect.vue | 44 +
package-lock.json | 613 +++++++++++++++++++++--
src/views/fysp/check/components/CompProblemAddOrUpd copy.vue | 6
src/components/CompGenericWrapper.vue | 4
src/assets/dialog.css | 6
src/utils/time-util.js | 2
src/router/index.js | 2
src/utils/map/marks.js | 5
src/views/fysp/task/TaskProxy.js | 52 +
src/components/FYImageSelectDialog.vue | 2
src/composables/messageBox.js | 2
src/views/fysp/data-product/final-data-product/ProdMonInspecReport.vue | 6
src/views/fysp/task/components/CompDayTask.vue | 75 --
package.json | 4
src/views/fysp/check/components/CompProblemAddOrUpd.vue | 6
src/components/list-item/ItemSubTask.vue | 35
src/components/map/SceneMap.vue | 379 ++++++++++----
src/views/fysp/check/components/ComChangeEdit.vue | 8
src/views/fysp/task/components/CompSubTaskList.vue | 28
src/views/fysp/task/TaskManage.vue | 117 ++-
src/views/fysp/task/components/CompMonitorPlan.vue | 38 +
23 files changed, 1,187 insertions(+), 358 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c5270a2..1b5f587 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
"docxtemplater-image-module": "^3.1.0",
"docxtemplater-image-module-free": "^1.1.1",
"echarts": "^5.5.1",
- "element-plus": "^2.8.3",
+ "element-plus": "^2.11.9",
"exceljs": "^4.4.0",
"file-saver": "^2.0.5",
"js-base64": "^3.7.5",
@@ -59,7 +59,7 @@
"less": "^4.1.3",
"less-loader": "^11.1.0",
"prettier": "^3.1.0",
- "sass": "^1.56.2",
+ "sass": "^1.94.2",
"start-server-and-test": "^1.14.0",
"typescript": "^4.9.4",
"unplugin-element-plus": "^0.4.1",
@@ -1865,9 +1865,9 @@
}
},
"node_modules/@element-plus/icons-vue": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
- "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
+ "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
"peerDependencies": {
"vue": "^3.2.0"
}
@@ -2195,6 +2195,302 @@
"node": ">= 8"
}
},
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/@popperjs/core": {
"name": "@sxzz/popperjs-es",
"version": "2.11.7",
@@ -2287,12 +2583,14 @@
"license": "MIT"
},
"node_modules/@types/lodash": {
- "version": "4.14.191",
- "license": "MIT"
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="
},
"node_modules/@types/lodash-es": {
- "version": "4.17.6",
- "license": "MIT",
+ "version": "4.17.12",
+ "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"dependencies": {
"@types/lodash": "*"
}
@@ -4060,9 +4358,9 @@
}
},
"node_modules/dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+ "version": "1.11.19",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="
},
"node_modules/debug": {
"version": "4.3.4",
@@ -4157,6 +4455,19 @@
"license": "MIT",
"engines": {
"node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
}
},
"node_modules/dfa": {
@@ -4327,23 +4638,22 @@
"license": "ISC"
},
"node_modules/element-plus": {
- "version": "2.8.3",
- "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.8.3.tgz",
- "integrity": "sha512-BXQOyDf0s7JHyNEV8iaO+iaOzTZPsBXVKMzMI967vLCodUBDLrtiY5vglAn1YEebQcUOEUMhGcttTpIvEkcBjQ==",
+ "version": "2.11.9",
+ "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.9.tgz",
+ "integrity": "sha512-yTckX+fMGDGiBHVL1gpwfmjEc8P8OwuyU5ZX3f4FhMy2OdC2Y+OwQYWUXmuB+jFMukuSdnGYXYgHq6muBjSxTg==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
- "@element-plus/icons-vue": "^2.3.1",
+ "@element-plus/icons-vue": "^2.3.2",
"@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
- "@types/lodash": "^4.14.182",
- "@types/lodash-es": "^4.17.6",
+ "@types/lodash": "^4.17.20",
+ "@types/lodash-es": "^4.17.12",
"@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5",
- "dayjs": "^1.11.3",
- "escape-html": "^1.0.3",
+ "dayjs": "^1.11.19",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
- "lodash-unified": "^1.0.2",
+ "lodash-unified": "^1.0.3",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0"
},
@@ -4509,10 +4819,6 @@
"engines": {
"node": ">=6"
}
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "license": "MIT"
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
@@ -5636,9 +5942,10 @@
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"node_modules/immutable": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT"
+ "version": "5.1.4",
+ "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.4.tgz",
+ "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
+ "dev": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
@@ -6731,6 +7038,13 @@
"license": "MIT",
"peer": true
},
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "optional": true
+ },
"node_modules/node-releases": {
"version": "2.0.6",
"dev": true,
@@ -7556,19 +7870,51 @@
"license": "MIT"
},
"node_modules/sass": {
- "version": "1.56.2",
+ "version": "1.94.2",
+ "resolved": "https://registry.npmmirror.com/sass/-/sass-1.94.2.tgz",
+ "integrity": "sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/sax": {
@@ -10321,9 +10667,9 @@
}
},
"@element-plus/icons-vue": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
- "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
+ "integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
"requires": {}
},
"@eslint-community/eslint-utils": {
@@ -10573,6 +10919,123 @@
"fastq": "^1.6.0"
}
},
+ "@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1",
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ }
+ },
+ "@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "dev": true,
+ "optional": true
+ },
"@popperjs/core": {
"version": "npm:@sxzz/popperjs-es@2.11.7"
},
@@ -10642,10 +11105,14 @@
"dev": true
},
"@types/lodash": {
- "version": "4.14.191"
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="
},
"@types/lodash-es": {
- "version": "4.17.6",
+ "version": "4.17.12",
+ "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"requires": {
"@types/lodash": "*"
}
@@ -11850,9 +12317,9 @@
}
},
"dayjs": {
- "version": "1.11.13",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
- "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+ "version": "1.11.19",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="
},
"debug": {
"version": "4.3.4",
@@ -11911,6 +12378,13 @@
},
"delayed-stream": {
"version": "1.0.0"
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "optional": true
},
"dfa": {
"version": "1.2.0",
@@ -12061,23 +12535,22 @@
"dev": true
},
"element-plus": {
- "version": "2.8.3",
- "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.8.3.tgz",
- "integrity": "sha512-BXQOyDf0s7JHyNEV8iaO+iaOzTZPsBXVKMzMI967vLCodUBDLrtiY5vglAn1YEebQcUOEUMhGcttTpIvEkcBjQ==",
+ "version": "2.11.9",
+ "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.9.tgz",
+ "integrity": "sha512-yTckX+fMGDGiBHVL1gpwfmjEc8P8OwuyU5ZX3f4FhMy2OdC2Y+OwQYWUXmuB+jFMukuSdnGYXYgHq6muBjSxTg==",
"requires": {
"@ctrl/tinycolor": "^3.4.1",
- "@element-plus/icons-vue": "^2.3.1",
+ "@element-plus/icons-vue": "^2.3.2",
"@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
- "@types/lodash": "^4.14.182",
- "@types/lodash-es": "^4.17.6",
+ "@types/lodash": "^4.17.20",
+ "@types/lodash-es": "^4.17.12",
"@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5",
- "dayjs": "^1.11.3",
- "escape-html": "^1.0.3",
+ "dayjs": "^1.11.19",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
- "lodash-unified": "^1.0.2",
+ "lodash-unified": "^1.0.3",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0"
},
@@ -12186,9 +12659,6 @@
"escalade": {
"version": "3.1.1",
"dev": true
- },
- "escape-html": {
- "version": "1.0.3"
},
"escape-string-regexp": {
"version": "4.0.0",
@@ -12924,7 +13394,9 @@
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"immutable": {
- "version": "4.1.0",
+ "version": "5.1.4",
+ "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.4.tgz",
+ "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==",
"dev": true
},
"import-fresh": {
@@ -13685,6 +14157,13 @@
"dev": true,
"peer": true
},
+ "node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "optional": true
+ },
"node-releases": {
"version": "2.0.6",
"dev": true
@@ -14199,12 +14678,32 @@
"version": "2.1.2"
},
"sass": {
- "version": "1.56.2",
+ "version": "1.94.2",
+ "resolved": "https://registry.npmmirror.com/sass/-/sass-1.94.2.tgz",
+ "integrity": "sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==",
"dev": true,
"requires": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
+ "@parcel/watcher": "^2.4.1",
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
"source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "dependencies": {
+ "chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "requires": {
+ "readdirp": "^4.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true
+ }
}
},
"sax": {
diff --git a/package.json b/package.json
index 4c12d0f..cb5560b 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
"docxtemplater-image-module": "^3.1.0",
"docxtemplater-image-module-free": "^1.1.1",
"echarts": "^5.5.1",
- "element-plus": "^2.8.3",
+ "element-plus": "^2.11.9",
"exceljs": "^4.4.0",
"file-saver": "^2.0.5",
"js-base64": "^3.7.5",
@@ -64,7 +64,7 @@
"less": "^4.1.3",
"less-loader": "^11.1.0",
"prettier": "^3.1.0",
- "sass": "^1.56.2",
+ "sass": "^1.94.2",
"start-server-and-test": "^1.14.0",
"typescript": "^4.9.4",
"unplugin-element-plus": "^0.4.1",
diff --git a/src/assets/dialog.css b/src/assets/dialog.css
index 0c5d374..75962cc 100644
--- a/src/assets/dialog.css
+++ b/src/assets/dialog.css
@@ -1,9 +1,9 @@
-::v-deep .el-dialog {
+:deep(.el-dialog) {
--el-dialog-margin-top: 8vh;
}
-::v-deep .el-dialog__body {
+:deep(.el-dialog__body) {
padding: 0 var(--el-dialog-padding-primary) var(--el-dialog-padding-primary) var(--el-dialog-padding-primary);
}
-::v-deep .el-drawer__body {
+:deep(.el-drawer__body) {
padding: 0 var(--el-drawer-padding-primary);
}
\ No newline at end of file
diff --git a/src/components/CompGenericWrapper.vue b/src/components/CompGenericWrapper.vue
index 8048cb5..c641608 100644
--- a/src/components/CompGenericWrapper.vue
+++ b/src/components/CompGenericWrapper.vue
@@ -68,11 +68,11 @@
);
</script>
<style scoped>
-::v-deep .el-drawer__body {
+:deep(.el-drawer__body) {
padding-top: 0;
}
-::v-deep .el-drawer__header {
+:deep(.el-drawer__header) {
margin-bottom: 16px;
}
</style>
diff --git a/src/components/FYImageSelectDialog.vue b/src/components/FYImageSelectDialog.vue
index c35bc94..3bffbf1 100644
--- a/src/components/FYImageSelectDialog.vue
+++ b/src/components/FYImageSelectDialog.vue
@@ -304,7 +304,7 @@
padding: 5px;
}
-::v-deep .el-dialog__body {
+:deep(.el-dialog__body) {
padding: 10px calc(var(--el-dialog-padding-primary) + 10px) !important;
}
</style>
diff --git a/src/components/list-item/ItemSubTask.vue b/src/components/list-item/ItemSubTask.vue
index 93c3e8f..42cc041 100644
--- a/src/components/list-item/ItemSubTask.vue
+++ b/src/components/list-item/ItemSubTask.vue
@@ -1,7 +1,7 @@
<template>
<div class="wrapper">
<el-row justify="space-between" class="m-t-4">
- <el-col :span="20">
+ <el-col :span="24">
<div class="text-title">
<el-tag
size="small"
@@ -31,7 +31,9 @@
<el-icon class="m-r-4" size="16"><AlarmClock /></el-icon>
<span>鏃堕棿锛�</span>
</div>
- {{ $fm.formatYMDHM(item.executionstarttime) }}鑷硔{ $fm.formatYMDHM(item.executionendtime) }}
+ {{ $fm.formatYMDHM(item.executionstarttime) }}鑷硔{
+ $fm.formatYMDHM(item.executionendtime)
+ }}
</div>
<div class="text-info">
<div class="text-label">
@@ -40,21 +42,22 @@
</div>
{{ item.executorrealtimes }}
</div>
- <el-space class="m-t-4">
- <el-tag size="small" type="info" effect=""
- >闂锛歿{ status.proNum }}</el-tag
- >
- <el-tag size="small" type="info" effect=""
- >鏁存敼锛歿{ status.changeNum }}</el-tag
- >
- <el-tag size="small" :type="changePerType" effect=""
- >鏁存敼鐜囷細{{ status.changePer }}</el-tag
- >
- </el-space>
+ <el-row justify="space-between">
+ <el-space class="m-t-4">
+ <el-tag size="small" type="info" effect=""
+ >闂锛歿{ status.proNum }}</el-tag
+ >
+ <el-tag size="small" type="info" effect=""
+ >鏁存敼锛歿{ status.changeNum }}</el-tag
+ >
+ <el-tag size="small" :type="changePerType" effect=""
+ >鏁存敼鐜囷細{{ status.changePer }}</el-tag
+ >
+ </el-space>
+ <slot :item="item"></slot>
+ </el-row>
</el-col>
- <el-col :span="4">
- <slot :item="item"></slot>
- </el-col>
+ <!-- <el-col :span="4"> </el-col> -->
</el-row>
</div>
</template>
diff --git a/src/components/map/SceneMap.vue b/src/components/map/SceneMap.vue
index 42dede6..bcb2076 100644
--- a/src/components/map/SceneMap.vue
+++ b/src/components/map/SceneMap.vue
@@ -1,7 +1,7 @@
<template>
<BaseMap></BaseMap>
<div class="wrap p-events-none">
- <el-row class="p-events-none">
+ <el-row class="p-events-none top-left-wrap">
<FYOptionScene
class="p-events-auto"
label=""
@@ -14,67 +14,95 @@
</div>
</el-row>
<el-row
- class="p-events-none left-wrap"
- align="bottom"
+ class="p-events-none bottom-left-wrap"
+ align="middle"
:style="leftCardWrapStyle"
>
- <div
- ref="refLeftCard"
- v-show="leftCardShow"
- class="card-left p-events-auto"
- >
- <div><el-text size="large">鍦烘櫙鍒楄〃</el-text></div>
- <el-scrollbar height="400px" class="scrollbar">
- <el-row
- v-for="s in selectedSceneList"
- :key="s.guid"
- justify="space-between"
- class="p-v-4 scene-item"
- >
- <el-text truncated style="width: 250px">
- {{ s.index + '銆�' + s.name }}
- </el-text>
- <el-space>
- <el-icon
- :color="
- s._checked ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
- "
- @click="locateTo(s)"
- >
- <LocationInformation />
- </el-icon>
- <el-icon
- class="cursor-p"
- :color="
- s._visible ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
- "
- @click="handleVisibleChange(s)"
- >
- <View />
- </el-icon>
- </el-space>
+ <div class="card-left" ref="refLeftCard">
+ <div v-show="leftCardShow" class="p-events-auto">
+ <el-row ref="refLeftCardTitle" class="p-8" justify="space-between">
+ <el-text size="large">鍦烘櫙鍒楄〃</el-text>
+ <el-input
+ v-model="filterText"
+ icon="Search"
+ style="width: 250px"
+ placeholder="杈撳叆鍏抽敭瀛楋紝鎸夊洖杞﹂敭鎼滅储"
+ clearable
+ />
+ <!-- <el-badge
+ ref="sampleBadgeRef"
+ :value="1"
+ type="success"
+ :offset="[-2, 2]"
+ >
+ <img
+ style="width: 30px; height: 30px"
+ :src="sceneIcon(1)"
+ alt="宸ュ湴"
+ />
+ <template #content="{ value }">
+ <div class="custom-content">
+ <el-icon :size="8"><Select /></el-icon>
+ </div>
+ </template>
+ </el-badge> -->
</el-row>
- </el-scrollbar>
+ <el-scrollbar :height="scrollHeight" class="scrollbar">
+ <el-row
+ v-for="s in filteredSceneList"
+ :key="s.guid"
+ justify="space-between"
+ class="p-v-4 scene-item"
+ >
+ <el-text truncated style="width: 100%">
+ {{ s.index + '. ' + s.name }}
+ </el-text>
+ <el-row justify="space-between" style="margin-top: 4px">
+ <el-space>
+ <el-tag type="info" effect="plain" size="small">
+ {{ s.type }}
+ </el-tag>
+ <el-tag
+ :type="s.extension1 == '0' ? 'info' : 'success'"
+ size="small"
+ >
+ {{ onlineFormat(s.extension1) }}
+ </el-tag>
+ </el-space>
+ </el-row>
+ <el-space>
+ <el-icon
+ class="cursor-p"
+ :color="
+ s._checked ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
+ "
+ @click="locateTo(s)"
+ >
+ <LocationInformation />
+ </el-icon>
+ <el-icon
+ class="cursor-p"
+ :color="
+ s._visible ? 'rgb(121, 187, 255)' : 'rgb(200, 201, 204)'
+ "
+ @click="handleVisibleChange(s)"
+ >
+ <View />
+ </el-icon>
+ </el-space>
+ </el-row>
+ </el-scrollbar>
+ </div>
</div>
<el-button
class="close-btn-right p-events-auto"
- type="primary"
- plain
+ type="success"
size="small"
:icon="leftCardShow ? 'ArrowLeft' : 'ArrowRight'"
@click="leftCardShow = !leftCardShow"
></el-button>
</el-row>
</div>
-
- <!-- <el-row class="right-wrap">
- <el-col :span="4">
- <el-button>close</el-button>
- </el-col>
- <el-col :span="20">
-
- </el-col>
- </el-row> -->
</template>
<script setup>
import { ref, watch, computed, onMounted } from 'vue';
@@ -82,34 +110,88 @@
import marks from '@/utils/map/marks';
import mapUtil from '@/utils/map/util';
import { sceneIcon } from '@/assets/scene-icon';
+
+const startHtml = `<div class="el-badge">`;
+const endHtml = `<sup
+ class="el-badge__content el-badge__content--success is-fixed"
+ style="margin-top: 2px; margin-right: 2px"
+ >
+ <div class="custom-content">
+ <i class="el-icon" style="font-size: 8px">
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 1024 1024"
+ >
+ <path
+ fill="currentColor"
+ d="M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496"
+ ></path>
+ </svg>
+ </i>
+ </div>
+ </sup>
+ </div>`;
+//
+const markContentHtml = (sceneType, checked) => {
+ const imgHtml = `<img
+ style="width: 30px; height: 30px"
+ src="${sceneIcon(sceneType)}"
+ />`;
+ if (checked) {
+ return startHtml + imgHtml + endHtml;
+ } else {
+ return imgHtml;
+ }
+};
+
const props = defineProps({
+ // 閫変腑鐨勫満鏅�
+ modelValue: {
+ type: Array,
+ default: () => []
+ },
// 鍦烘櫙鐐逛綅淇℃伅
data: Array
});
+const emits = defineEmits(['update:modelValue']);
+
onMounted(() => {
- // refLeftCard.value.offsetHeight;
- // leftCardWrapStyle.value = {
- // height: refLeftCard.value.offsetHeight + 'px'
- // };
+ setTimeout(() => {
+ scrollHeight.value =
+ refLeftCard.value.offsetHeight -
+ refLeftCardTitle.value.offsetHeight +
+ 'px';
+ }, 500);
});
const refLeftCard = ref();
+const refLeftCardTitle = ref();
+
const leftCardShow = ref(true);
const leftCardWrapStyle = ref();
+const scrollHeight = ref('400px');
let allMarkViews = [];
let markViewList = [];
const scenetype = ref();
-const selectedSceneList = computed(() => {
- return props.data.filter((v) => {
+// 閫変腑鐨勫満鏅�
+const selectedSceneList = ref(props.modelValue);
+
+const allSceneList = computed(() => props.data);
+const filterText = ref('');
+// 鏍规嵁鍦烘櫙绫诲瀷绛涢�夊満鏅垪琛�
+const filteredSceneList = computed(() => {
+ return allSceneList.value.filter((v) => {
v._visible = true;
return (
- scenetype.value == undefined ||
- scenetype.value.value == null ||
- v.typeid + '' == scenetype.value.value
+ (scenetype.value == undefined ||
+ scenetype.value.value == null ||
+ v.typeid + '' == scenetype.value.value) &&
+ (v.name.indexOf(filterText.value) != -1 ||
+ v.index + '' == filterText.value)
);
});
});
@@ -118,7 +200,6 @@
() => props.data,
(nV, oV) => {
if (nV != oV) {
- clearSceneMarks();
createSceneMarks();
filterMarkViews(true);
}
@@ -128,10 +209,32 @@
watch(scenetype, (nV, oV) => {
if (nV != oV) {
- clearSceneMarks();
filterMarkViews(true);
}
});
+
+// 鐩戝惉澶栭儴閫変腑鎴栫Щ闄ゅ満鏅彉鍖�
+watch(
+ () => props.modelValue,
+ (nV, oV) => {
+ if (nV != oV) {
+ // 澶栭儴閫変腑鍦烘櫙鍙樺寲鏃讹紝鏇存柊鍐呴儴閫変腑鍦烘櫙鍒楄〃
+ selectedSceneList.value = nV;
+ // 澶栭儴閫変腑鍦烘櫙鍙樺寲鏃讹紝鏇存柊鍦板浘鏍囨敞鍐呭
+ allMarkViews.forEach((mv) => {
+ const scene = mv.getExtData();
+ const findOne = selectedSceneList.value.some((s) => {
+ return s.guid == scene.guid;
+ });
+ if (findOne) {
+ changeSceneMark(mv, true);
+ } else {
+ changeSceneMark(mv, false);
+ }
+ });
+ }
+ }
+);
function handleVisibleChange(scene) {
const mv = markViewList.find((v) => {
@@ -150,10 +253,12 @@
return scene.guid == v.getExtData().guid;
});
if (mv) {
- mapUtil.setFitView(mv);
+ // mapUtil.setFitView(mv);
+ mapUtil.setCenter(mv.getPosition());
}
}
+// 鍒涘缓鍦烘櫙鍦板浘鏍囨敞锛屾坊鍔犻紶鏍囦簨浠跺拰鐐瑰嚮浜嬩欢
function createSceneMarks() {
onMapMounted(() => {
allMarkViews = [];
@@ -161,42 +266,16 @@
// 鍒涘缓鍦烘櫙鍦板浘鏍囨敞
const mark = marks.createMarker({
position: [d.longitude, d.latitude],
- img: sceneIcon(d.typeid),
- label: '',
+ // img: sceneIcon(d.typeid),
+ content: markContentHtml(d.typeid),
+ label: d.index,
+ title: d.name,
extData: d
});
- var timeout;
- // 娣诲姞鐐瑰嚮浜嬩欢
- mark.on('mouseover', (ev) => {
- if (timeout) {
- clearTimeout(timeout);
- }
- const _mark = ev.target;
- const _extData = _mark.getExtData();
- ev.target.setLabel({
- content: _extData.name
- });
- timeout = setTimeout(() => {
- ev.target.setLabel({
- content: ''
- });
- }, 2000);
- // if (_extData._show) {
- // ev.target.setLabel({
- // content: ''
- // // direction: 'bottom'
- // });
- // _extData._show = false;
- // ev.target.setExtData(_extData);
- // } else {
- // ev.target.setLabel({
- // content: _extData.name
- // // direction: 'bottom'
- // });
- // _extData._show = true;
- // ev.target.setExtData(_extData);
- // }
- });
+ // 榧犳爣浜嬩欢
+ // onMouseOverListener(mark);
+ onClickListener(mark);
+
allMarkViews.push(mark);
});
});
@@ -210,6 +289,7 @@
if (markViewList.length > 0) {
map.remove(markViewList);
}
+ // 1. 绛涢�夊満鏅被鍨�
if (scenetype.value == undefined) {
markViewList = allMarkViews;
} else {
@@ -220,32 +300,74 @@
);
});
}
- markViewList = markViewList.filter((v) => {
- const _index = selectedSceneList.value.findIndex((s) => {
- return s.guid == v.getExtData().guid && s._visible;
- });
- return _index != -1;
- });
map.add(markViewList);
if (setFitView) {
setTimeout(() => {
map.setFitView(markViewList);
- // const list = markViewList.map((v) => {
- // const _extData = v.getExtData();
- // return [_extData.longitude, _extData.latitude];
- // });
- // mapUtil.setBound(list);
}, 1000);
}
});
}
-function clearSceneMarks() {
- onMapMounted(() => {
- if (markViewList.length > 0) {
- map.remove(markViewList);
+function onlineFormat(s) {
+ if (s == '0') {
+ return '涓嬬嚎';
+ } else {
+ return '涓婄嚎';
+ }
+}
+
+/** 鍦板浘鍦烘櫙鏍囪榧犳爣浜嬩欢 *********************************************/
+const onMouseOverListener = (mark) => {
+ let timeout;
+ // 娣诲姞鐐瑰嚮浜嬩欢
+ mark.on('mouseover', (ev) => {
+ if (timeout) {
+ clearTimeout(timeout);
}
+ const _mark = ev.target;
+ const _extData = _mark.getExtData();
+ _mark.setLabel({
+ content: _extData.name
+ });
+ timeout = setTimeout(() => {
+ _mark.setLabel({
+ content: ''
+ });
+ }, 2000);
});
+};
+const onClickListener = (mark) => {
+ mark.on('click', (ev) => {
+ const _mark = ev.target;
+ const extData = _mark.getExtData();
+ const index = selectedSceneList.value.indexOf(extData);
+ if (index == -1) {
+ selectedSceneList.value.push(extData);
+ changeSceneMark(_mark, true);
+ } else {
+ selectedSceneList.value.splice(index, 1);
+ changeSceneMark(_mark, false);
+ }
+ emits('update:modelValue', selectedSceneList.value);
+ });
+};
+/********************************************************************/
+
+/**
+ * 鏍规嵁閫変腑鐘舵�佷慨鏀瑰湴鍥炬爣璁扮殑鏍峰紡
+ * @param {AMap.Marker} mark 鍦板浘鏍囪
+ * @param checked
+ */
+function changeSceneMark(mark, checked) {
+ const scene = mark.getExtData();
+ if (checked && !scene._checked) {
+ scene._checked = true;
+ mark.setContent(markContentHtml(scene.typeid, true));
+ } else if (!checked && scene._checked) {
+ scene._checked = false;
+ mark.setContent(markContentHtml(scene.typeid, false));
+ }
}
</script>
<style scoped>
@@ -256,28 +378,36 @@
width: 100%;
height: 100%;
}
-.left-wrap {
+.top-left-wrap {
position: absolute;
- left: 0;
+ left: 0px;
+ top: 1px;
+}
+.bottom-left-wrap {
+ position: absolute;
+ left: 0px;
bottom: 1px;
}
.card-left {
- background-color: white;
- /* border-radius: 4px; */
- width: 316px;
- /* box-shadow: var(--el-box-shadow); */
+ background-color: rgba(255, 255, 255, 0.8);
+ border-radius: 4px;
+ /* width: 350px; */
+ height: 50vh;
+ box-shadow: var(--el-box-shadow);
z-index: 0;
+ /* padding: 8px; */
}
.scrollbar {
padding-right: 8px;
- /* width: 300px; */
+ width: 350px;
}
.close-btn-right {
- margin-left: -3px;
+ /* margin-left: -3px; */
height: 60px;
+ width: 20px;
}
.p-events-auto {
@@ -290,5 +420,16 @@
.scene-item {
/* background-color: aliceblue; */
+ padding: 8px;
+ border-radius: 8px;
+ border: 1px solid var(--el-border-color);
+ box-shadow: var(--el-box-shadow-lighter);
+ margin-bottom: 6px;
+}
+
+.custom-content {
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
</style>
diff --git a/src/composables/messageBox.js b/src/composables/messageBox.js
index a45738c..b2466cc 100644
--- a/src/composables/messageBox.js
+++ b/src/composables/messageBox.js
@@ -24,7 +24,7 @@
message: msg,
type: 'success',
// offset: 170,
- position: 'top-right',
+ position: 'bottom-right',
});
})
.catch((err) => {
diff --git a/src/router/index.js b/src/router/index.js
index 407f82d..f826b46 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -235,7 +235,7 @@
name: 'taskmanage',
path: 'manage',
component: () => import('@/views/fysp/task/TaskManage.vue'),
- meta: { keepAlive: true }
+ meta: { keepAlive: false }
},
{
//鐩戠浠诲姟鍦烘櫙缂栬緫
diff --git a/src/styles/element/base.scss b/src/styles/element/base.scss
index 6a2dabe..05b33f5 100644
--- a/src/styles/element/base.scss
+++ b/src/styles/element/base.scss
@@ -51,6 +51,9 @@
}
@each $i in $size {
+ .p-#{$i} {
+ padding: #{$i}px;
+ }
.p-v-#{$i} {
padding: #{$i}px 0;
}
diff --git a/src/utils/map/marks.js b/src/utils/map/marks.js
index 6ba80b9..05137fd 100644
--- a/src/utils/map/marks.js
+++ b/src/utils/map/marks.js
@@ -145,7 +145,7 @@
return layer;
},
- createMarker({ position, img, label = '', extData }) {
+ createMarker({ position, img, title, content, label = '', extData }) {
//鍒涘缓 AMap.Icon 瀹炰緥锛�
const icon = new AMap.Icon({
size: new AMap.Size(30, 30), //鍥炬爣灏哄
@@ -157,7 +157,8 @@
position: position,
// offset: new AMap.Pixel(-13, -30),
icon: icon, //娣诲姞 icon 鍥炬爣 URL
- title: label,
+ content: content,
+ title: title,
label: {
content: label,
direction: 'bottom'
diff --git a/src/utils/time-util.js b/src/utils/time-util.js
index cac41e8..3852869 100644
--- a/src/utils/time-util.js
+++ b/src/utils/time-util.js
@@ -75,7 +75,7 @@
const units = [
{ unit: '澶�', value: 24 * 60 * 60 },
{ unit: '灏忔椂', value: 60 * 60 },
- { unit: '鍒�', value: 60 },
+ { unit: '鍒嗛挓', value: 60 },
{ unit: '绉�', value: 1 }
];
diff --git a/src/views/fysp/check/components/ComChangeEdit.vue b/src/views/fysp/check/components/ComChangeEdit.vue
index b8b5b27..b8be328 100644
--- a/src/views/fysp/check/components/ComChangeEdit.vue
+++ b/src/views/fysp/check/components/ComChangeEdit.vue
@@ -263,10 +263,10 @@
margin-bottom: 30px;
margin-left: 63px;
}
-::v-deep .el-dialog__body {
+:deep(.el-dialog__body) {
width: 95%;
}
-::v-deep .el-upload-list--picture-card .el-upload-list__item-thumbnail {
+:deep(.el-upload-list--picture-card .el-upload-list__item-thumbnail) {
object-fit: cover !important;
}
.preview-pic {
@@ -274,11 +274,11 @@
width: 100%;
height: 100%;
}
-::v-deep .el-upload--picture-card {
+:deep(.el-upload--picture-card) {
display: none;
}
/* 闅愯棌el-upload涓婁紶鎴愬姛缁勪欢 */
-::v-deep .el-upload-list__item-status-label {
+:deep(.el-upload-list__item-status-label) {
display: none !important;
}
</style>
diff --git a/src/views/fysp/check/components/CompProblemAddOrUpd copy.vue b/src/views/fysp/check/components/CompProblemAddOrUpd copy.vue
index 949e1c6..7ad47aa 100644
--- a/src/views/fysp/check/components/CompProblemAddOrUpd copy.vue
+++ b/src/views/fysp/check/components/CompProblemAddOrUpd copy.vue
@@ -755,7 +755,7 @@
.row {
width: 100%;
}
-::v-deep .el-upload-list--picture-card .el-upload-list__item-thumbnail {
+:deep(.el-upload-list--picture-card .el-upload-list__item-thumbnail) {
object-fit: cover !important;
}
.preview-pic {
@@ -763,11 +763,11 @@
width: 100%;
height: 100%;
}
-::v-deep .el-upload--picture-card {
+:deep(.el-upload--picture-card) {
display: none;
}
/* 闅愯棌el-upload涓婁紶鎴愬姛缁勪欢 */
-::v-deep .el-upload-list__item-status-label {
+:deep(.el-upload-list__item-status-label) {
display: none !important;
}
</style>
diff --git a/src/views/fysp/check/components/CompProblemAddOrUpd.vue b/src/views/fysp/check/components/CompProblemAddOrUpd.vue
index 5bf78fb..8221a0e 100644
--- a/src/views/fysp/check/components/CompProblemAddOrUpd.vue
+++ b/src/views/fysp/check/components/CompProblemAddOrUpd.vue
@@ -764,7 +764,7 @@
.row {
width: 100%;
}
-::v-deep .el-upload-list--picture-card .el-upload-list__item-thumbnail {
+:deep(.el-upload-list--picture-card .el-upload-list__item-thumbnail) {
object-fit: cover !important;
}
.preview-pic {
@@ -772,11 +772,11 @@
width: 100%;
height: 100%;
}
-::v-deep .el-upload--picture-card {
+:deep(.el-upload--picture-card) {
display: none;
}
/* 闅愯棌el-upload涓婁紶鎴愬姛缁勪欢 */
-::v-deep .el-upload-list__item-status-label {
+:deep(.el-upload-list__item-status-label) {
display: none !important;
}
</style>
diff --git a/src/views/fysp/data-product/final-data-product/ProdMonInspecReport.vue b/src/views/fysp/data-product/final-data-product/ProdMonInspecReport.vue
index 664fcbe..f7c3afa 100644
--- a/src/views/fysp/data-product/final-data-product/ProdMonInspecReport.vue
+++ b/src/views/fysp/data-product/final-data-product/ProdMonInspecReport.vue
@@ -194,18 +194,18 @@
.fetchProblemCountByArea(opt)
.then(async (res) => {
if (res.success) {
- const data = res.data.sort((a, b) => b.ratio - a.ratio);
+ const data = res.data.sort((a, b) => b.proAvg - a.proAvg);
templateParam.townCount = data.length;
templateParam.topThree =
data
.slice(0, 3)
- .map((item) => `${item.townName}锛�${item.ratio.toFixed(1)}涓級`)
+ .map((item) => `${item.townName}锛�${item.proAvg.toFixed(1)}涓級`)
.join('銆�') + '銆�';
const res2 =
await dataprodmiddleApi.fetchProblemCountByArea(compareOpt);
if (res2.success) {
- const data2 = res2.data.sort((a, b) => b.ratio - a.ratio);
+ const data2 = res2.data.sort((a, b) => b.proAvg - a.proAvg);
const combineData = ProdProblemCountSummaryProxy.combineData(
data,
data2
diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue
index 31a2926..3274b74 100644
--- a/src/views/fysp/task/TaskManage.vue
+++ b/src/views/fysp/task/TaskManage.vue
@@ -31,42 +31,52 @@
class="el-scrollbar"
v-loading="mainLoading"
>
- <el-row justify="space-between">
- <!-- <div><el-text>鐩戠璁″垝</el-text></div>
+ <!-- <div><el-text>鐩戠璁″垝</el-text></div>
<el-button type="warning" size="small" @click="editPlan"
>璁″垝璋冩暣</el-button
> -->
- <el-tabs model-value="first">
- <el-tab-pane label="宸℃煡璁″垝" name="first">
- <el-row>
- <el-col :span="curSubTaskList ? 16 : 24">
- <CompMonitorPlan
- :loading="daytaskLoading"
- ref="planRef"
- :task="curTask.data"
- :day-task-list="curDayTaskList"
- @date-change="onDateChange"
- ></CompMonitorPlan>
- </el-col>
- <el-col v-if="curSubTaskList" :span="8">
- <CompSubTaskList
- create
- v-model="curSubTaskList"
- :date="curDay"
- :loading="subTaskLoading"
- :create-loading="daytaskCreateLoading"
- height="56vh"
- @add="handleAddSubtask"
- @submit="handleSubtaskSubmit"
- ></CompSubTaskList>
- </el-col>
- </el-row>
- </el-tab-pane>
- <el-tab-pane label="鍦烘櫙鍦板浘" name="second">
- <CompTaskMap :plans="curMonitorObjList"></CompTaskMap>
- </el-tab-pane>
- </el-tabs>
+ <!-- <el-tabs model-value="first">
+ <el-tab-pane label="宸℃煡璁″垝" name="first"> -->
+ <el-row justify="space-between" style="padding: 16px 0px 16px 16px">
+ <el-text size="large">宸℃煡璁″垝</el-text>
+ <!-- <el-button type="primary" size="small" @click="sceneMapDialog = true">
+ 杩涘叆鍦烘櫙鍦板浘<el-icon class="el-icon--right"><Right /></el-icon>
+ </el-button> -->
</el-row>
+ <div class="plan-container">
+ <el-row>
+ <el-col :span="curSubTaskList ? 16 : 24">
+ <CompMonitorPlan
+ :loading="daytaskLoading"
+ ref="planRef"
+ :task="curTask.data"
+ :day-task-list="curDayTaskList"
+ @date-change="onDateChange"
+ ></CompMonitorPlan>
+ </el-col>
+ <el-col v-if="curSubTaskList" :span="8">
+ <!-- <el-affix target=".plan-container" :offset="140"> -->
+ <CompSubTaskList
+ create
+ v-model="curSubTaskList"
+ :date="curDay"
+ :loading="subTaskLoading"
+ :create-loading="daytaskCreateLoading"
+ height="66vh"
+ @openMap="sceneMapDialog = true"
+ @add="handleAddSubtask"
+ @submit="onSubtaskUpdate"
+ @remove="onSubtaskUpdate"
+ ></CompSubTaskList>
+ <!-- </el-affix> -->
+ </el-col>
+ </el-row>
+ </div>
+ <!-- </el-tab-pane>
+ <el-tab-pane label="鍦烘櫙鍦板浘" name="second"> -->
+ <!-- <CompTaskMap :plans="curMonitorObjList"></CompTaskMap> -->
+ <!-- </el-tab-pane>
+ </el-tabs> -->
<el-divider></el-divider>
<el-row justify="space-between">
<div><el-text>鐩戠鍦烘櫙</el-text></div>
@@ -94,12 +104,11 @@
title="鏃ヨ鍒掔鐞�"
direction="btt"
size="96%"
- destroy-on-close
>
<CompDayTask
:day-task="curDayTask"
:mObjList="curMonitorObjList"
- @submit="handleSubtaskSubmit"
+ @submit="onSubtaskUpdate"
></CompDayTask>
</el-drawer>
<el-dialog
@@ -116,6 +125,19 @@
@cancel="topTaskAddVisible = false"
></CompTaskEdit>
</el-dialog>
+ <el-drawer
+ v-model="sceneMapDialog"
+ title="鍦烘櫙鍦板浘"
+ direction="btt"
+ size="100%"
+ body-class="el-drawer__custom"
+ >
+ <CompTaskMap
+ :plans="curMonitorObjList"
+ :day-task="curDayTask"
+ @submit="onSubtaskUpdate"
+ ></CompTaskMap>
+ </el-drawer>
</template>
<script>
@@ -197,7 +219,9 @@
curSubTaskList: undefined,
subTaskLoading: false,
// 鎬讳换鍔℃柊澧炲脊鍑烘
- topTaskAddVisible: false
+ topTaskAddVisible: false,
+ // 鍦烘櫙鍦板浘寮瑰嚭妗�
+ sceneMapDialog: false
};
},
provide() {
@@ -340,11 +364,12 @@
}
});
},
- handleSubtaskSubmit() {
- this.subTaskLoading = true;
- this.$refs.planRef
- .fetchDayTasks()
- .finally(() => (this.subTaskLoading = false));
+ onSubtaskUpdate() {
+ // this.subTaskLoading = true;
+ // this.$refs.planRef
+ // .fetchDayTasks()
+ // .finally(() => (this.subTaskLoading = false));
+ this.fetchDayTasks();
},
handleAddSubtask() {
// 鍒ゆ柇褰撴棩鏄惁鏈夋棩浠诲姟锛岃嫢娌℃湁锛屽厛鍒涘缓鍦ㄨ烦杞瓙浠诲姟鍒涘缓鐣岄潰
@@ -378,7 +403,7 @@
totalTaskNum: 0
};
this.subTaskDrawer = true;
- this.handleSubtaskSubmit();
+ this.onSubtaskUpdate();
})
.finally(() => (this.daytaskCreateLoading = false));
}
@@ -399,5 +424,15 @@
.el-scrollbar {
height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar)));
+ padding-right: 8px;
+}
+
+.plan-container {
+ /* background-color: aliceblue; */
+}
+</style>
+<style>
+.el-drawer__custom {
+ padding: 0px !important;
}
</style>
diff --git a/src/views/fysp/task/TaskProxy.js b/src/views/fysp/task/TaskProxy.js
index 4fcca0b..56053d4 100644
--- a/src/views/fysp/task/TaskProxy.js
+++ b/src/views/fysp/task/TaskProxy.js
@@ -1,14 +1,60 @@
+import { unref } from 'vue';
+import dayjs from 'dayjs';
+import taskApi from '@/api/fysp/taskApi';
+import subtaskApi from '@/api/fysp/subtaskApi';
+
export default {
/**
* 鐢熸垚宸℃煡瀛愪换鍔″璞�
*/
- ceateSubTask(){
+ createSubtasks(dayTask, sceneList, executors) {
+ const seletedSceneList = unref(sceneList);
+ const subtasks = seletedSceneList.map((_) => {
+ const s = _.scene;
+ return {
+ // 涓婚敭鐢辨湇鍔$鍒涘缓
+ stguid: undefined,
+ tguid: dayTask.tsGuid,
+ tsguid: dayTask.guid,
+ name: `${s.name}宸℃煡`,
+ typeno: 1,
+ type: '宸℃煡',
+ provincecode: s.provincecode,
+ provincename: s.provincename,
+ citycode: s.citycode,
+ cityname: s.cityname,
+ districtcode: s.districtcode,
+ districtname: s.districtname,
+ scensename: s.name,
+ scenseid: s.guid,
+ scenseaddress: s.location,
+ planstarttime: dayTask.date,
+ planendtime: dayjs(dayTask.date)
+ .endOf('day')
+ .set('millisecond', 0)
+ .toDate(),
+ deployerguid: 'rAR0A4gJdlOZEqZs',
+ deployerusername: 'ccheck',
+ deployerrealname: '鏁存敼瀹℃牳',
+ executorguids: executors.ids,
+ executorusernames: executors.uName,
+ executorrealtimes: executors.rName,
+ status: '鏈墽琛�',
+ remark: undefined
+ };
+ });
+ // 鏇存柊鍦烘櫙鐩戠娆℃暟
+ seletedSceneList.forEach((s) => {
+ s.extension1 = s.extension1 ? parseInt(s.extension1) + 1 + '' : '1';
+ });
+ taskApi.updateMonitorObject(seletedSceneList);
+ return subtaskApi.putSubtasks(subtasks);
},
/**
* 鏍规嵁澶氶�変笅鎷夋鐨勯�夐」鍊硷紝杩斿洖浠诲姟鎵ц浜哄璞�
- * @returns
+ * @returns
*/
getExecutors(data, executorOptions) {
const ids = [];
@@ -28,4 +74,4 @@
rName: rNames.join('#')
};
}
-}
\ No newline at end of file
+};
diff --git a/src/views/fysp/task/components/CompDayTask.vue b/src/views/fysp/task/components/CompDayTask.vue
index 678b26f..16f72ac 100644
--- a/src/views/fysp/task/components/CompDayTask.vue
+++ b/src/views/fysp/task/components/CompDayTask.vue
@@ -6,9 +6,8 @@
</div>
<el-divider />
<CompSubTaskSelect
- :data="seletedSceneList"
+ v-model="seletedSceneList"
:dayTask="dayTask"
- @delete="deleteScene"
@submit="createSubtasks"
></CompSubTaskSelect>
<div>
@@ -41,6 +40,7 @@
<CompSubTaskList
v-model="curSubTaskList"
:height="height"
+ :date="dayTask.date"
@submit="deleteSubtasks"
></CompSubTaskList>
</el-col>
@@ -68,7 +68,7 @@
mObjList: Array
});
-const emit = defineEmits(['submit'])
+const emit = defineEmits(['submit']);
/*************************** 鏁版嵁鍒濆鍖� ************************************/
// 宸℃煡瀛愪换鍔¢泦鍚�
@@ -122,67 +122,24 @@
seletedSceneList.value.push(item);
}
// 绉婚櫎浠诲姟鍦烘櫙
-function deleteScene(item) {
- item.select = false;
- const index = seletedSceneList.value.indexOf(item);
- seletedSceneList.value.splice(index, 1);
-}
+// function deleteScene(item) {
+// item.select = false;
+// const index = seletedSceneList.value.indexOf(item);
+// seletedSceneList.value.splice(index, 1);
+// }
-function createSubtasks(executors) {
- const dt = props.dayTask;
- const subtasks = seletedSceneList.value.map((_) => {
- const s = _.scene;
- return {
- // 涓婚敭鐢辨湇鍔$鍒涘缓
- stguid: undefined,
- tguid: dt.tsGuid,
- tsguid: dt.guid,
- name: `${s.name}宸℃煡`,
- typeno: 1,
- type: '宸℃煡',
- provincecode: s.provincecode,
- provincename: s.provincename,
- citycode: s.citycode,
- cityname: s.cityname,
- districtcode: s.districtcode,
- districtname: s.districtname,
- scensename: s.name,
- scenseid: s.guid,
- scenseaddress: s.location,
- planstarttime: dt.date,
- planendtime: dayjs(dt.date).endOf('day').set('millisecond', 0).toDate(),
- deployerguid: 'rAR0A4gJdlOZEqZs',
- deployerusername: 'ccheck',
- deployerrealname: '鏁存敼瀹℃牳',
- executorguids: executors.ids,
- executorusernames: executors.uName,
- executorrealtimes: executors.rName,
- status: '鏈墽琛�',
- remark: undefined
- };
+function createSubtasks() {
+ seletedSceneList.value = [];
+ fetchSubTask(props.dayTask.guid);
+ ElMessage({
+ message: '宸℃煡浠诲姟娣诲姞鎴愬姛',
+ type: 'success'
});
-
- // 鏇存柊鍦烘櫙鐩戠娆℃暟
- seletedSceneList.value.forEach((s) => {
- s.extension1 = s.extension1 ? parseInt(s.extension1) + 1 + '' : '1';
- });
- taskApi.updateMonitorObject(seletedSceneList.value).then((res) => {
- if (res > 0) {
- subtaskApi.putSubtasks(subtasks).then((res) => {
- seletedSceneList.value = [];
- fetchSubTask(props.dayTask.guid);
- ElMessage({
- message: '宸℃煡浠诲姟娣诲姞鎴愬姛',
- type: 'success'
- });
- emit('submit')
- });
- }
- });
+ emit('submit');
}
function deleteSubtasks() {
- emit('submit')
+ emit('submit');
}
</script>
<style scoped></style>
diff --git a/src/views/fysp/task/components/CompMonitorPlan.vue b/src/views/fysp/task/components/CompMonitorPlan.vue
index a9c6bf8..acea676 100644
--- a/src/views/fysp/task/components/CompMonitorPlan.vue
+++ b/src/views/fysp/task/components/CompMonitorPlan.vue
@@ -5,7 +5,7 @@
@update:model-value="onDateChange"
>
<template #header="{ date }">
- <div>
+ <div style="width: 100%">
<el-row justify="space-between">
<el-space>
<el-tag type="default"
@@ -21,7 +21,7 @@
)
}}</el-tag
>
- <el-tag type="default">鏁存敼锛歿{ taskStatistic.changed }}</el-tag>
+ <!-- <el-tag type="default">鏁存敼锛歿{ taskStatistic.changed }}</el-tag> -->
</el-space>
<el-space>
<el-text>鑱氱劍鐢ㄦ埛锛�</el-text>
@@ -29,6 +29,8 @@
v-model="selectedUsers"
multiple
clearable
+ collapse-tags
+ :max-collapse-tags="1"
style="width: 150px"
>
<el-option
@@ -47,12 +49,21 @@
v-for="user in taskStatistic.progressPerUser"
:key="user.userId"
>
- {{
+ <!-- {{
`${user.userName}锛氬贰鏌ラ噺 ${
user.completeTaskNum
- }锛屽強鏃舵暣鏀圭巼 ${formatPercent(
+ }锛屽嵆鏃舵暣鏀圭巼 ${formatPercent(
user.changedProblemNumOnTime / user.totalProblemNum
)}锛屽钩鍧囪�楁椂 ${
+ user.avgInspectionTime ? user.avgInspectionTime : '--'
+ }`
+ }} -->
+ {{
+ `${user.userName}锛�${
+ user.completeTaskNum
+ } | ${formatPercent(
+ user.changedProblemNumOnTime / user.totalProblemNum
+ )} | ${
user.avgInspectionTime ? user.avgInspectionTime : '--'
}`
}}
@@ -94,6 +105,7 @@
>
<el-row justify="space-between">
<el-text
+ title="宸℃煡浜哄憳"
size="small"
:type="
selectedUsers.includes(item.userName) ? 'primary' : 'info'
@@ -105,6 +117,7 @@
<el-row justify="space-between">
<!-- <el-space> -->
<el-text
+ title="宸℃煡閲�"
size="small"
style="text-align: center; flex: 1"
:type="
@@ -114,6 +127,7 @@
>{{ item.completeTaskNum }}</el-text
>
<el-text
+ title="鍗虫椂鏁存敼鐜�"
size="small"
style="text-align: center; flex: 1"
:type="
@@ -127,6 +141,7 @@
}}</el-text
>
<el-text
+ title="骞冲潎鑰楁椂"
size="small"
style="text-align: center; flex: 1"
:type="
@@ -249,6 +264,7 @@
// 鎬讳换鍔$粺璁�
const taskStatistic = computed(() => {
+ // const resMap = new Map()
const res = {
total: 0,
complete: 0,
@@ -325,16 +341,16 @@
top: 5px;
}
-::v-deep .el-calendar-table .el-calendar-day {
+:deep(.el-calendar-table .el-calendar-day) {
height: initial;
padding: initial;
}
-::v-deep .el-calendar-table .el-calendar-day:hover {
+:deep(.el-calendar-table .el-calendar-day:hover) {
background-color: transparent;
}
-/* ::v-deep .el-calendar-table td.is-selected {
+/* :deep(.el-calendar-table td.is-selected) {
background-color: initial;
} */
@@ -361,15 +377,15 @@
cursor: not-allowed;
}
-/* ::v-deep .el-calendar-table tr td:first-child {
+/* :deep(.el-calendar-table tr td:first-child) {
border-left: none !important;
} */
-/* ::v-deep .el-calendar-table tr:first-child td {
+/* :deep(.el-calendar-table tr:first-child td) {
border-top: none;
} */
-/* ::v-deep .el-calendar-table td {
+/* :deep(.el-calendar-table td) {
border-bottom: none;
border-right: none;
vertical-align: top;
@@ -377,7 +393,7 @@
transition: background-color 0.2s ease;
} */
-::v-deep .el-calendar-table thead th {
+:deep(.el-calendar-table thead th) {
padding: 12px 0;
color: #606266;
font-weight: normal;
diff --git a/src/views/fysp/task/components/CompSubTaskList.vue b/src/views/fysp/task/components/CompSubTaskList.vue
index 51dd342..5b6d1e0 100644
--- a/src/views/fysp/task/components/CompSubTaskList.vue
+++ b/src/views/fysp/task/components/CompSubTaskList.vue
@@ -1,6 +1,6 @@
<template>
<el-row justify="space-between">
- <el-text>{{dateStr}}璁″垝</el-text>
+ <el-text>{{ dateStr }}璁″垝</el-text>
<div v-show="create && data && data.length > 0">
<el-button
icon="IconPrinter"
@@ -13,6 +13,9 @@
<el-button type="success" size="small" @click="add" icon="Switch"
>浠诲姟璋冩暣</el-button
>
+ <el-button type="primary" size="small" @click="openMap">
+ 杩涘叆鍦板浘<el-icon class="el-icon--right"><Right /></el-icon>
+ </el-button>
</div>
</el-row>
<el-divider />
@@ -27,7 +30,7 @@
>
<ItemSubTask v-for="s in data" :key="s.guid" :item="s">
<template #default="{ item }">
- <el-space direction="vertical">
+ <el-space direction="horizontal">
<el-button
:disabled="item.status != '鏈墽琛�'"
plain
@@ -35,16 +38,16 @@
size="small"
icon="EditPen"
@click="edit(item)"
- >淇敼</el-button
- >
+ title="淇敼"
+ ></el-button>
<el-button
:disabled="item.status != '鏈墽琛�'"
type="danger"
size="small"
icon="Delete"
@click="remove(item)"
- >绉婚櫎</el-button
- >
+ title="绉婚櫎"
+ ></el-button>
</el-space>
</template>
</ItemSubTask>
@@ -111,9 +114,9 @@
const downloadDialog = ref(false);
const downloadSceneList = ref([]);
-const emit = defineEmits(['submit', 'add', 'remove', 'update:modelValue']);
+const emit = defineEmits(['submit', 'add', 'openMap', 'remove', 'update:modelValue']);
-const dateStr = computed(()=> dayjs(props.date).format('MM鏈圖D鏃�'))
+const dateStr = computed(() => dayjs(props.date).format('MM鏈圖D鏃�'));
function remove(item) {
if (item.status == '鏈墽琛�') {
@@ -156,6 +159,15 @@
emit('add');
}
+/**
+ * 鎵撳紑鍦烘櫙鍦板浘
+ */
+function openMap() {
+ emit('openMap');
+}
+
+
+
onUnmounted(() => {
dialogVisible.value = false;
});
diff --git a/src/views/fysp/task/components/CompSubTaskSelect.vue b/src/views/fysp/task/components/CompSubTaskSelect.vue
index cfeb571..11a515e 100644
--- a/src/views/fysp/task/components/CompSubTaskSelect.vue
+++ b/src/views/fysp/task/components/CompSubTaskSelect.vue
@@ -17,7 +17,7 @@
collapse-tags
placeholder="閫夋嫨鎵ц浜�"
:max-collapse-tags="1"
- style="width: 240px"
+ style="width: 150px"
>
<template #header>
<el-checkbox
@@ -40,9 +40,13 @@
</FYForm>
</el-row>
<div>
- <el-scrollbar :height="scrollHeight" v-if="data.length > 0">
- <el-space wrap>
- <ItemMonitorObj v-for="obj in data" :key="obj.movid" :item="obj">
+ <el-scrollbar :height="height" v-if="modelValue.length > 0">
+ <el-space wrap :direction="direction">
+ <ItemMonitorObj
+ v-for="obj in modelValue"
+ :key="obj.movid"
+ :item="obj"
+ >
<template #default="{ item }">
<el-button
size="small"
@@ -79,21 +83,34 @@
const props = defineProps({
// 瀛愪换鍔¢泦鍚�
- data: {
+ modelValue: {
type: Array,
default: () => []
},
- height: String,
+ height: {
+ type: String,
+ default: '14vh'
+ },
+ direction: {
+ type: String,
+ default: 'horizontal'
+ },
// 鏃ヤ换鍔�
dayTask: Object
});
-const emit = defineEmits(['submit', 'delete']);
+const emit = defineEmits(['submit', 'delete', 'update:modelValue']);
-const scrollHeight = ref('14vh');
+const data = computed(() => props.modelValue);
// 绉婚櫎浠诲姟鍦烘櫙
function deleteScene(item) {
+ item.select = false;
+ const index = data.value.indexOf(item);
+ if (index > -1) {
+ data.value.splice(index, 1);
+ emit('update:modelValue', data.value);
+ }
emit('delete', item);
}
@@ -109,7 +126,7 @@
]
});
function submit(v, success, fail) {
- if (props.data.length == 0) {
+ if (props.modelValue.length == 0) {
fail('鏈�夋嫨鐩戠鍦烘櫙');
} else if (v.value.executor.length == 0) {
fail('鏈�夋嫨鎵ц浜�');
@@ -117,7 +134,13 @@
success();
// 灏嗕换鍔℃墽琛屼汉鏍煎紡鍖栧苟浼犻��
const param = TaskProxy.getExecutors(v.value.executor, executors.value);
- emit('submit', param);
+ TaskProxy.createSubtasks(props.dayTask, props.modelValue, param).then(
+ () => {
+ formInfo.value.executor = [];
+ emit('update:modelValue', []);
+ emit('submit');
+ }
+ );
}
}
@@ -161,6 +184,7 @@
});
executors.value = list;
+ formInfo.value.executor = [];
}
// watch(topTask, (nV, oV) => {
// if (nV != oV) {
diff --git a/src/views/fysp/task/components/CompTaskMap.vue b/src/views/fysp/task/components/CompTaskMap.vue
index 1af7d06..2e188e7 100644
--- a/src/views/fysp/task/components/CompTaskMap.vue
+++ b/src/views/fysp/task/components/CompTaskMap.vue
@@ -1,6 +1,10 @@
<template>
- <div style="width: 68vw; height: 600px; background-color: aliceblue">
- <SceneMap :data="scenes">
+ <div class="map-wrapper">
+ <SceneMap
+ :model-value="seletedSceneList"
+ @update:model-value="onUpdateSeletedSceneList"
+ :data="scenes"
+ >
<template #left-top>
<FYOptionSupervisionStatus
label=""
@@ -9,10 +13,32 @@
></FYOptionSupervisionStatus>
</template>
</SceneMap>
+ <el-row class="p-events-none top-right-wrap" align="middle">
+ <el-button
+ class="close-btn-left p-events-auto"
+ type="success"
+ size="small"
+ :icon="rightCardShow ? 'ArrowRight' : 'ArrowLeft'"
+ @click="rightCardShow = !rightCardShow"
+ ></el-button>
+ <div class="right-wrapper">
+ <div v-show="rightCardShow" class="p-events-auto subtask-select">
+ <CompSubTaskSelect
+ :model-value="selectedPlans"
+ @update:model-value="onUpdateSelectedPlans"
+ height="82vh"
+ :dayTask="dayTask"
+ @submit="handleSubmitDone"
+ ></CompSubTaskSelect>
+ </div>
+ </div>
+ </el-row>
</div>
</template>
<script setup>
-import { ref, computed } from 'vue';
+import { ref, computed, watch } from 'vue';
+
+import CompSubTaskSelect from './CompSubTaskSelect.vue';
const props = defineProps({
// 鍦烘櫙璁″垝
@@ -20,14 +46,29 @@
type: Array,
default: () => []
},
- dayTasks: {
- type: Array,
- default: () => []
+ dayTask: {
+ type: Object
}
});
-const supervisionStatus = ref();
+const emits = defineEmits(['submit']);
+const supervisionStatus = ref();
+const rightCardShow = ref(true);
+const seletedSceneList = ref([]);
+const selectedPlans = ref([]);
+
+watch(
+ () => props.dayTask,
+ (newVal, oldVal) => {
+ if (newVal != oldVal) {
+ seletedSceneList.value = [];
+ selectedPlans.value = [];
+ }
+ }
+);
+
+// 鐩戠璁″垝鍖呭惈鐨勫満鏅偣浣嶄俊鎭�
const scenes = computed(() => {
return props.plans
.filter((v) => {
@@ -51,11 +92,62 @@
return true;
}
} else {
- return true
+ return true;
}
})
.map((p) => {
return p.scene;
});
});
+
+// 鐩戝惉鍦板浘閫変腑鍦烘櫙浜嬩欢
+function onUpdateSeletedSceneList(val) {
+ seletedSceneList.value = val;
+ selectedPlans.value = seletedSceneList.value.map((s) => {
+ return props.plans.find((p) => p.scene.guid == s.guid);
+ });
+}
+
+// 鐩戝惉瀛愪换鍔$Щ闄や簨浠�
+function onUpdateSelectedPlans(val) {
+ selectedPlans.value = val;
+ seletedSceneList.value = selectedPlans.value.map((v) => v.scene);
+}
+
+function handleSubmitDone(e) {
+ console.log(e);
+ emits('submit', e);
+}
</script>
+<style scoped>
+.map-wrapper {
+ position: relative;
+ width: 100%;
+ height: 90vh;
+}
+
+.right-wrapper {
+ background-color: rgba(255, 255, 255, 0.8);
+ box-shadow: var(--el-box-shadow);
+ border-radius: 4px;
+ height: 90vh;
+}
+
+.subtask-select {
+ width: 330px;
+ padding-left: 4px;
+ padding-top: 8px;
+}
+
+.close-btn-left {
+ margin-right: 0px;
+ height: 60px;
+ width: 20px;
+}
+
+.top-right-wrap {
+ position: absolute;
+ right: 0px;
+ top: 1px;
+}
+</style>
--
Gitblit v1.9.3