diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue new file mode 100644 index 0000000..08b880c --- /dev/null +++ b/src/components/threejs/index.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue new file mode 100644 index 0000000..08b880c --- /dev/null +++ b/src/components/threejs/index.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js new file mode 100644 index 0000000..87e4904 --- /dev/null +++ b/src/components/threejs/init.js @@ -0,0 +1,274 @@ +/** + * 初始化场景 + */ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' +import * as THREE from 'three' +import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js' + +// 类声明 +class SceneInit { + /** + * 构造函数,用来初始化 + * @param dom dom + * @param cameraObj + */ + constructor(dom, cameraObj) { + console.log('dom', dom) + console.log('cameraObj', cameraObj) + + this.dom = dom // 创建dom属性 + this.groupObj = { // 创建groupObj属性 + gridHelperGroup: undefined, + } + // render前的回调函数集合 + this.animateCallBackArray = [] + this.init(cameraObj) + } + + /** + * 初始化 + */ + init(cameraObj) { + // 初始化Renderer + this.initRenderer() + // 初始化摄像头 + this.initCamera(cameraObj) + // 初始化场景 + this.initScene() + // 初始化灯源 + this.initLight() + // 摄像头控制器 + this.initControls() + this.animateCallBackArray = [] + // 动画 + // setTimeout(() => { + this.animate() + this.resizeFun = this.updataWh.bind(this) + window.addEventListener('resize', this.resizeFun) + } + + /** + * 初始化渲染器 + */ + initRenderer() { + this.renderer = new THREE.WebGLRenderer({ + alpha: this.alpha, // 画布透明 + depthTest: true, // 深度测试 + antialias: true, // 是否开启抗锯齿效果,默认值为false。 + logarithmicDepthBuffer: true, // 对数深度缓存 + }) + // width和height用来设置Three.js输出的Canvas画布尺寸(像素px) + this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度 + this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度 + this.renderer.localClippingEnabled = true // 启用局部裁剪 + this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px) + this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染 + this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序 + this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。 + this.renderer.domElement.style.position = 'absolute' + this.renderer.domElement.style.top = '0px' + this.renderer.domElement.style.left = '0px' + // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中 + this.dom.appendChild(this.renderer.domElement) + this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须 + // this.renderer.outputEncoding = THREE.sRGBEncoding; + this.renderer.gammaFactor = 2.2 + this.renderer.gammaOutPut = true + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap + + this.renderer.toneMappingExposure = 1.0 + // 物理灯光 + this.renderer.physicallyCorrectLights = true + } + + /** + * 初始化摄像头 + */ + + initCamera(cameraObj) { + if (!cameraObj) { + cameraObj = { + fov: 45, // 摄像机视锥体垂直视野角度。 + aspect: this.width / this.height, // 摄像机视锥体长宽比。 + near: 0.1, // 摄像机视锥体近端面。 + far: 100000, // 摄像机视锥体远端面。 + // position: [0, 50, 85], + // position: [62, 67, 20], + position: [0, 0, 12], + } + } + this.camera = new THREE.PerspectiveCamera( + cameraObj.fov, + this.width / this.height, // 摄像机视锥体长宽比。 + // cameraObj.aspect, + cameraObj.near, + cameraObj.far, + ) + this.camera.position.set(...cameraObj.position) + // this.camera.position.set([0, 50, 85]) + } + + /** + * 初始化场景 + */ + initScene() { + this.scene = new THREE.Scene() + } + + /** + * 初始化灯源 + */ + initLight() { + // 默认环境光 + const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光 + this.scene.add(ambientLight) + ambientLight.intensity = 0.3 // 光照强度 + const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果 + this.scene.add(hemiLight) + } + + /** + * 初始化控制器 + */ + initControls() { + this.controller = new OrbitControls(this.camera, this.renderer.domElement) + } + + /** + *宽高变更时自动适配 + */ + updataWh() { + this.width = this.dom.clientWidth + this.height = this.dom.clientHeight + this.camera.aspect = this.width / this.height + this.camera.updateProjectionMatrix() + this.renderer.setSize(this.width, this.height) + } + + /** + * 动画渲染 + * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。 + **/ + animate(time) { + // 请求动画帧window.requestAnimationFrame + // requestAnimationFrame实现周期性循环执行 + // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能 + this.animateKey = requestAnimationFrame(this.animate.bind(this)) + if (this.controller) { + this.controller.update() + } + // 额外回调 + for (let i = 0; i < this.animateCallBackArray.length; i++) { + if (this.animateCallBackArray[i]) { + this.animateCallBackArray[i](time, this.renderer, this.scene) + } + } + this.renders() + } + + /** + * 网格辅助线 + */ + grid() { + // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size + const size = 1000 + // 网格的划分数量,即网格线上有多少个分割点 + const divisions = 60 + // 主要颜色,默认为0x444444(深灰色),用于主轴线 + const colorMain = '0x444444' + // 次要颜色,默认为0x888888(浅灰色),用于其他线 + const colorSecondary = '0x888888' + this.groupObj.gridHelperGroup = new THREE.GridHelper( + size, + divisions, + // colorMain, + // colorSecondary, + ) + this.scene.add(this.groupObj.gridHelperGroup) + } + + /** + * 渲染 + */ + renders() { + if (this.renderer) { + this.renderer.render(this.scene, this.camera) + } + } + + /** + * 获取根对象,便于其它类使用公共场景变量 + */ + getRoot() { + return { + scene: this.scene, + renderer: this.renderer, + controller: this.controller, + camera: this.camera, + addAnimateCallBack: this.addAnimateCallBack, + removeAnimateCallBack: this.removeAnimateCallBack, + } + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + addAnimateCallBack = (fun) => { + const index = this.animateCallBackArray.length + this.animateCallBackArray.push(fun) + return index + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + removeAnimateCallBack = (index) => { + this.animateCallBackArray[index] = false + } + + /** + * 销毁,释放内存 + */ + destroy() { + cancelAnimationFrame(this.animateKey) + this.scene.traverse((child) => { + if (child instanceof THREE.Mesh) { + if (child.material) { + child.material.dispose && child.material.dispose() + } + if (child.geometry) { + child.geometry && child.geometry.dispose() + } + + !!child.clear && child.clear() + child = null + } + }) + this.scene.environment = null + this.scene.clear() + const dom = this.renderer.domElement + if (dom) { + dom.parentNode.removeChild(dom) + } + this.renderer.renderLists.dispose() + this.renderer.dispose() + this.renderer.forceContextLoss() + this.renderer.domElement = null + this.renderer.content = null + this.renderer = null + window.removeEventListener('resize', this.resizeFun) + } + + // 加载点云 + loadPCD(padPath) { + const loader = new PCDLoader() + loader.load(padPath, (points) => { + this.scene.add(points) // 直接将点云添加到场景中 + this.animate() + }) + } +} + +export default SceneInit diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue new file mode 100644 index 0000000..08b880c --- /dev/null +++ b/src/components/threejs/index.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js new file mode 100644 index 0000000..87e4904 --- /dev/null +++ b/src/components/threejs/init.js @@ -0,0 +1,274 @@ +/** + * 初始化场景 + */ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' +import * as THREE from 'three' +import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js' + +// 类声明 +class SceneInit { + /** + * 构造函数,用来初始化 + * @param dom dom + * @param cameraObj + */ + constructor(dom, cameraObj) { + console.log('dom', dom) + console.log('cameraObj', cameraObj) + + this.dom = dom // 创建dom属性 + this.groupObj = { // 创建groupObj属性 + gridHelperGroup: undefined, + } + // render前的回调函数集合 + this.animateCallBackArray = [] + this.init(cameraObj) + } + + /** + * 初始化 + */ + init(cameraObj) { + // 初始化Renderer + this.initRenderer() + // 初始化摄像头 + this.initCamera(cameraObj) + // 初始化场景 + this.initScene() + // 初始化灯源 + this.initLight() + // 摄像头控制器 + this.initControls() + this.animateCallBackArray = [] + // 动画 + // setTimeout(() => { + this.animate() + this.resizeFun = this.updataWh.bind(this) + window.addEventListener('resize', this.resizeFun) + } + + /** + * 初始化渲染器 + */ + initRenderer() { + this.renderer = new THREE.WebGLRenderer({ + alpha: this.alpha, // 画布透明 + depthTest: true, // 深度测试 + antialias: true, // 是否开启抗锯齿效果,默认值为false。 + logarithmicDepthBuffer: true, // 对数深度缓存 + }) + // width和height用来设置Three.js输出的Canvas画布尺寸(像素px) + this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度 + this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度 + this.renderer.localClippingEnabled = true // 启用局部裁剪 + this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px) + this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染 + this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序 + this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。 + this.renderer.domElement.style.position = 'absolute' + this.renderer.domElement.style.top = '0px' + this.renderer.domElement.style.left = '0px' + // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中 + this.dom.appendChild(this.renderer.domElement) + this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须 + // this.renderer.outputEncoding = THREE.sRGBEncoding; + this.renderer.gammaFactor = 2.2 + this.renderer.gammaOutPut = true + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap + + this.renderer.toneMappingExposure = 1.0 + // 物理灯光 + this.renderer.physicallyCorrectLights = true + } + + /** + * 初始化摄像头 + */ + + initCamera(cameraObj) { + if (!cameraObj) { + cameraObj = { + fov: 45, // 摄像机视锥体垂直视野角度。 + aspect: this.width / this.height, // 摄像机视锥体长宽比。 + near: 0.1, // 摄像机视锥体近端面。 + far: 100000, // 摄像机视锥体远端面。 + // position: [0, 50, 85], + // position: [62, 67, 20], + position: [0, 0, 12], + } + } + this.camera = new THREE.PerspectiveCamera( + cameraObj.fov, + this.width / this.height, // 摄像机视锥体长宽比。 + // cameraObj.aspect, + cameraObj.near, + cameraObj.far, + ) + this.camera.position.set(...cameraObj.position) + // this.camera.position.set([0, 50, 85]) + } + + /** + * 初始化场景 + */ + initScene() { + this.scene = new THREE.Scene() + } + + /** + * 初始化灯源 + */ + initLight() { + // 默认环境光 + const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光 + this.scene.add(ambientLight) + ambientLight.intensity = 0.3 // 光照强度 + const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果 + this.scene.add(hemiLight) + } + + /** + * 初始化控制器 + */ + initControls() { + this.controller = new OrbitControls(this.camera, this.renderer.domElement) + } + + /** + *宽高变更时自动适配 + */ + updataWh() { + this.width = this.dom.clientWidth + this.height = this.dom.clientHeight + this.camera.aspect = this.width / this.height + this.camera.updateProjectionMatrix() + this.renderer.setSize(this.width, this.height) + } + + /** + * 动画渲染 + * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。 + **/ + animate(time) { + // 请求动画帧window.requestAnimationFrame + // requestAnimationFrame实现周期性循环执行 + // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能 + this.animateKey = requestAnimationFrame(this.animate.bind(this)) + if (this.controller) { + this.controller.update() + } + // 额外回调 + for (let i = 0; i < this.animateCallBackArray.length; i++) { + if (this.animateCallBackArray[i]) { + this.animateCallBackArray[i](time, this.renderer, this.scene) + } + } + this.renders() + } + + /** + * 网格辅助线 + */ + grid() { + // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size + const size = 1000 + // 网格的划分数量,即网格线上有多少个分割点 + const divisions = 60 + // 主要颜色,默认为0x444444(深灰色),用于主轴线 + const colorMain = '0x444444' + // 次要颜色,默认为0x888888(浅灰色),用于其他线 + const colorSecondary = '0x888888' + this.groupObj.gridHelperGroup = new THREE.GridHelper( + size, + divisions, + // colorMain, + // colorSecondary, + ) + this.scene.add(this.groupObj.gridHelperGroup) + } + + /** + * 渲染 + */ + renders() { + if (this.renderer) { + this.renderer.render(this.scene, this.camera) + } + } + + /** + * 获取根对象,便于其它类使用公共场景变量 + */ + getRoot() { + return { + scene: this.scene, + renderer: this.renderer, + controller: this.controller, + camera: this.camera, + addAnimateCallBack: this.addAnimateCallBack, + removeAnimateCallBack: this.removeAnimateCallBack, + } + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + addAnimateCallBack = (fun) => { + const index = this.animateCallBackArray.length + this.animateCallBackArray.push(fun) + return index + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + removeAnimateCallBack = (index) => { + this.animateCallBackArray[index] = false + } + + /** + * 销毁,释放内存 + */ + destroy() { + cancelAnimationFrame(this.animateKey) + this.scene.traverse((child) => { + if (child instanceof THREE.Mesh) { + if (child.material) { + child.material.dispose && child.material.dispose() + } + if (child.geometry) { + child.geometry && child.geometry.dispose() + } + + !!child.clear && child.clear() + child = null + } + }) + this.scene.environment = null + this.scene.clear() + const dom = this.renderer.domElement + if (dom) { + dom.parentNode.removeChild(dom) + } + this.renderer.renderLists.dispose() + this.renderer.dispose() + this.renderer.forceContextLoss() + this.renderer.domElement = null + this.renderer.content = null + this.renderer = null + window.removeEventListener('resize', this.resizeFun) + } + + // 加载点云 + loadPCD(padPath) { + const loader = new PCDLoader() + loader.load(padPath, (points) => { + this.scene.add(points) // 直接将点云添加到场景中 + this.animate() + }) + } +} + +export default SceneInit diff --git a/src/router/index.ts b/src/router/index.ts index e4760f5..9ce2c1b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -44,7 +44,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } @@ -151,7 +152,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue new file mode 100644 index 0000000..08b880c --- /dev/null +++ b/src/components/threejs/index.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js new file mode 100644 index 0000000..87e4904 --- /dev/null +++ b/src/components/threejs/init.js @@ -0,0 +1,274 @@ +/** + * 初始化场景 + */ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' +import * as THREE from 'three' +import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js' + +// 类声明 +class SceneInit { + /** + * 构造函数,用来初始化 + * @param dom dom + * @param cameraObj + */ + constructor(dom, cameraObj) { + console.log('dom', dom) + console.log('cameraObj', cameraObj) + + this.dom = dom // 创建dom属性 + this.groupObj = { // 创建groupObj属性 + gridHelperGroup: undefined, + } + // render前的回调函数集合 + this.animateCallBackArray = [] + this.init(cameraObj) + } + + /** + * 初始化 + */ + init(cameraObj) { + // 初始化Renderer + this.initRenderer() + // 初始化摄像头 + this.initCamera(cameraObj) + // 初始化场景 + this.initScene() + // 初始化灯源 + this.initLight() + // 摄像头控制器 + this.initControls() + this.animateCallBackArray = [] + // 动画 + // setTimeout(() => { + this.animate() + this.resizeFun = this.updataWh.bind(this) + window.addEventListener('resize', this.resizeFun) + } + + /** + * 初始化渲染器 + */ + initRenderer() { + this.renderer = new THREE.WebGLRenderer({ + alpha: this.alpha, // 画布透明 + depthTest: true, // 深度测试 + antialias: true, // 是否开启抗锯齿效果,默认值为false。 + logarithmicDepthBuffer: true, // 对数深度缓存 + }) + // width和height用来设置Three.js输出的Canvas画布尺寸(像素px) + this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度 + this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度 + this.renderer.localClippingEnabled = true // 启用局部裁剪 + this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px) + this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染 + this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序 + this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。 + this.renderer.domElement.style.position = 'absolute' + this.renderer.domElement.style.top = '0px' + this.renderer.domElement.style.left = '0px' + // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中 + this.dom.appendChild(this.renderer.domElement) + this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须 + // this.renderer.outputEncoding = THREE.sRGBEncoding; + this.renderer.gammaFactor = 2.2 + this.renderer.gammaOutPut = true + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap + + this.renderer.toneMappingExposure = 1.0 + // 物理灯光 + this.renderer.physicallyCorrectLights = true + } + + /** + * 初始化摄像头 + */ + + initCamera(cameraObj) { + if (!cameraObj) { + cameraObj = { + fov: 45, // 摄像机视锥体垂直视野角度。 + aspect: this.width / this.height, // 摄像机视锥体长宽比。 + near: 0.1, // 摄像机视锥体近端面。 + far: 100000, // 摄像机视锥体远端面。 + // position: [0, 50, 85], + // position: [62, 67, 20], + position: [0, 0, 12], + } + } + this.camera = new THREE.PerspectiveCamera( + cameraObj.fov, + this.width / this.height, // 摄像机视锥体长宽比。 + // cameraObj.aspect, + cameraObj.near, + cameraObj.far, + ) + this.camera.position.set(...cameraObj.position) + // this.camera.position.set([0, 50, 85]) + } + + /** + * 初始化场景 + */ + initScene() { + this.scene = new THREE.Scene() + } + + /** + * 初始化灯源 + */ + initLight() { + // 默认环境光 + const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光 + this.scene.add(ambientLight) + ambientLight.intensity = 0.3 // 光照强度 + const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果 + this.scene.add(hemiLight) + } + + /** + * 初始化控制器 + */ + initControls() { + this.controller = new OrbitControls(this.camera, this.renderer.domElement) + } + + /** + *宽高变更时自动适配 + */ + updataWh() { + this.width = this.dom.clientWidth + this.height = this.dom.clientHeight + this.camera.aspect = this.width / this.height + this.camera.updateProjectionMatrix() + this.renderer.setSize(this.width, this.height) + } + + /** + * 动画渲染 + * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。 + **/ + animate(time) { + // 请求动画帧window.requestAnimationFrame + // requestAnimationFrame实现周期性循环执行 + // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能 + this.animateKey = requestAnimationFrame(this.animate.bind(this)) + if (this.controller) { + this.controller.update() + } + // 额外回调 + for (let i = 0; i < this.animateCallBackArray.length; i++) { + if (this.animateCallBackArray[i]) { + this.animateCallBackArray[i](time, this.renderer, this.scene) + } + } + this.renders() + } + + /** + * 网格辅助线 + */ + grid() { + // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size + const size = 1000 + // 网格的划分数量,即网格线上有多少个分割点 + const divisions = 60 + // 主要颜色,默认为0x444444(深灰色),用于主轴线 + const colorMain = '0x444444' + // 次要颜色,默认为0x888888(浅灰色),用于其他线 + const colorSecondary = '0x888888' + this.groupObj.gridHelperGroup = new THREE.GridHelper( + size, + divisions, + // colorMain, + // colorSecondary, + ) + this.scene.add(this.groupObj.gridHelperGroup) + } + + /** + * 渲染 + */ + renders() { + if (this.renderer) { + this.renderer.render(this.scene, this.camera) + } + } + + /** + * 获取根对象,便于其它类使用公共场景变量 + */ + getRoot() { + return { + scene: this.scene, + renderer: this.renderer, + controller: this.controller, + camera: this.camera, + addAnimateCallBack: this.addAnimateCallBack, + removeAnimateCallBack: this.removeAnimateCallBack, + } + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + addAnimateCallBack = (fun) => { + const index = this.animateCallBackArray.length + this.animateCallBackArray.push(fun) + return index + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + removeAnimateCallBack = (index) => { + this.animateCallBackArray[index] = false + } + + /** + * 销毁,释放内存 + */ + destroy() { + cancelAnimationFrame(this.animateKey) + this.scene.traverse((child) => { + if (child instanceof THREE.Mesh) { + if (child.material) { + child.material.dispose && child.material.dispose() + } + if (child.geometry) { + child.geometry && child.geometry.dispose() + } + + !!child.clear && child.clear() + child = null + } + }) + this.scene.environment = null + this.scene.clear() + const dom = this.renderer.domElement + if (dom) { + dom.parentNode.removeChild(dom) + } + this.renderer.renderLists.dispose() + this.renderer.dispose() + this.renderer.forceContextLoss() + this.renderer.domElement = null + this.renderer.content = null + this.renderer = null + window.removeEventListener('resize', this.resizeFun) + } + + // 加载点云 + loadPCD(padPath) { + const loader = new PCDLoader() + loader.load(padPath, (points) => { + this.scene.add(points) // 直接将点云添加到场景中 + this.animate() + }) + } +} + +export default SceneInit diff --git a/src/router/index.ts b/src/router/index.ts index e4760f5..9ce2c1b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -44,7 +44,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } @@ -151,7 +152,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts index 9aa7fe3..af35115 100644 --- a/src/router/modules/menus.ts +++ b/src/router/modules/menus.ts @@ -1,5 +1,6 @@ // 所有菜单路由 import systemRoutes from './system' +import patrolRoutes from './patrol' import type { Route } from '@/global' const Layout = () => import('@/layouts/index.vue') @@ -8,7 +9,7 @@ { path: '/home', component: Layout, - redirect: '/home/index', + redirect: '/patrol/navigation', name: 'Home', meta: { title: '首页', @@ -31,6 +32,8 @@ }, ], }, + // 巡检管理 + ...patrolRoutes, // 系统路由 ...systemRoutes, ] diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明diff --git a/package.json b/package.json index a6745d6..b8f7e9c 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", + "three": "^0.173.0", "tinymce": "^6.2.0", "vue": "^3.2.44", "vue-pdf-embed": "^1.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 860f410..351badd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,7 @@ stylelint-config-standard-vue: ^1.0.0 stylelint-scss: ^4.3.0 svgo: ^3.0.0 + three: ^0.173.0 tinymce: ^6.2.0 typescript: ^4.8.4 unplugin-auto-import: ^0.11.4 @@ -107,6 +108,7 @@ print-js: 1.6.0 qrcode: 1.5.4 qs: 6.13.1 + three: 0.173.0 tinymce: 6.8.5 vue: 3.5.13_typescript@4.9.5 vue-pdf-embed: 1.2.1_vue@3.5.13 @@ -8623,6 +8625,10 @@ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.173.0: + resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true diff --git a/public/4.pcd b/public/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/public/4.pcd Binary files differ diff --git a/public/config/config.json b/public/config/config.json index 0c02bb3..e5cba39 100644 --- a/public/config/config.json +++ b/public/config/config.json @@ -1,5 +1,5 @@ { - "title":"燃气物联感知平台", + "title":"巡检精灵综合管理平台", "baseUrl": "http://111.198.10.15:11645", "securityJsCode": "56bf9671d4b3517d294caec4751889a1", "JsKey": "40849e82b4e33f5255b17372520c954d", diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/public/finalCloud.pcd Binary files differ diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg new file mode 100644 index 0000000..8619714 --- /dev/null +++ b/src/assets/icons/icon-patrol.svg @@ -0,0 +1 @@ + diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg new file mode 100644 index 0000000..23e16e8 --- /dev/null +++ b/src/assets/tempImages/2.jpg Binary files differ diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png new file mode 100644 index 0000000..27cb0a6 --- /dev/null +++ b/src/assets/tempImages/control.png Binary files differ diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg new file mode 100644 index 0000000..53c25df --- /dev/null +++ b/src/assets/tempImages/dog-arm.jpg Binary files differ diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/dog-picture.jpg Binary files differ diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png new file mode 100644 index 0000000..1672a81 --- /dev/null +++ b/src/assets/tempImages/dog.png Binary files differ diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg new file mode 100644 index 0000000..28707bb --- /dev/null +++ b/src/assets/tempImages/icon-link.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png new file mode 100644 index 0000000..0530d85 --- /dev/null +++ b/src/assets/tempImages/map.png Binary files differ diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png new file mode 100644 index 0000000..3a8be1f --- /dev/null +++ b/src/assets/tempImages/point.png Binary files differ diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg new file mode 100644 index 0000000..a1c25e0 --- /dev/null +++ b/src/assets/tempImages/sgjc.jpg Binary files differ diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg new file mode 100644 index 0000000..6d37211 --- /dev/null +++ b/src/assets/tempImages/tyx.jpg Binary files differ diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg new file mode 100644 index 0000000..071a185 --- /dev/null +++ b/src/assets/tempImages/yrg.jpg Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index f651253..a0817c2 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -72,6 +72,7 @@ SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] TableContainer: typeof import('./components/TableContainer/index.vue')['default'] + Threejs: typeof import('./components/threejs/index.vue')['default'] Trend: typeof import('./components/Trend/index.vue')['default'] } } diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue index 63a2160..bf0b007 100644 --- a/src/components/NormalTable/index.vue +++ b/src/components/NormalTable/index.vue @@ -481,5 +481,10 @@ .el-radio__label { display: none !important; } + // 单元格样式 + .el-table__cell { + position: static !important; // 解决el-image 和 el-table冲突层级冲突问题 + z-index: 99999999; + } } diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd new file mode 100644 index 0000000..a45a92e --- /dev/null +++ b/src/components/threejs/4.pcd Binary files differ diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd new file mode 100644 index 0000000..b07d7d8 --- /dev/null +++ b/src/components/threejs/finalCloud.pcd Binary files differ diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue new file mode 100644 index 0000000..08b880c --- /dev/null +++ b/src/components/threejs/index.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js new file mode 100644 index 0000000..87e4904 --- /dev/null +++ b/src/components/threejs/init.js @@ -0,0 +1,274 @@ +/** + * 初始化场景 + */ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' +import * as THREE from 'three' +import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js' + +// 类声明 +class SceneInit { + /** + * 构造函数,用来初始化 + * @param dom dom + * @param cameraObj + */ + constructor(dom, cameraObj) { + console.log('dom', dom) + console.log('cameraObj', cameraObj) + + this.dom = dom // 创建dom属性 + this.groupObj = { // 创建groupObj属性 + gridHelperGroup: undefined, + } + // render前的回调函数集合 + this.animateCallBackArray = [] + this.init(cameraObj) + } + + /** + * 初始化 + */ + init(cameraObj) { + // 初始化Renderer + this.initRenderer() + // 初始化摄像头 + this.initCamera(cameraObj) + // 初始化场景 + this.initScene() + // 初始化灯源 + this.initLight() + // 摄像头控制器 + this.initControls() + this.animateCallBackArray = [] + // 动画 + // setTimeout(() => { + this.animate() + this.resizeFun = this.updataWh.bind(this) + window.addEventListener('resize', this.resizeFun) + } + + /** + * 初始化渲染器 + */ + initRenderer() { + this.renderer = new THREE.WebGLRenderer({ + alpha: this.alpha, // 画布透明 + depthTest: true, // 深度测试 + antialias: true, // 是否开启抗锯齿效果,默认值为false。 + logarithmicDepthBuffer: true, // 对数深度缓存 + }) + // width和height用来设置Three.js输出的Canvas画布尺寸(像素px) + this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度 + this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度 + this.renderer.localClippingEnabled = true // 启用局部裁剪 + this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px) + this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染 + this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序 + this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。 + this.renderer.domElement.style.position = 'absolute' + this.renderer.domElement.style.top = '0px' + this.renderer.domElement.style.left = '0px' + // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中 + this.dom.appendChild(this.renderer.domElement) + this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须 + // this.renderer.outputEncoding = THREE.sRGBEncoding; + this.renderer.gammaFactor = 2.2 + this.renderer.gammaOutPut = true + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap + + this.renderer.toneMappingExposure = 1.0 + // 物理灯光 + this.renderer.physicallyCorrectLights = true + } + + /** + * 初始化摄像头 + */ + + initCamera(cameraObj) { + if (!cameraObj) { + cameraObj = { + fov: 45, // 摄像机视锥体垂直视野角度。 + aspect: this.width / this.height, // 摄像机视锥体长宽比。 + near: 0.1, // 摄像机视锥体近端面。 + far: 100000, // 摄像机视锥体远端面。 + // position: [0, 50, 85], + // position: [62, 67, 20], + position: [0, 0, 12], + } + } + this.camera = new THREE.PerspectiveCamera( + cameraObj.fov, + this.width / this.height, // 摄像机视锥体长宽比。 + // cameraObj.aspect, + cameraObj.near, + cameraObj.far, + ) + this.camera.position.set(...cameraObj.position) + // this.camera.position.set([0, 50, 85]) + } + + /** + * 初始化场景 + */ + initScene() { + this.scene = new THREE.Scene() + } + + /** + * 初始化灯源 + */ + initLight() { + // 默认环境光 + const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光 + this.scene.add(ambientLight) + ambientLight.intensity = 0.3 // 光照强度 + const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果 + this.scene.add(hemiLight) + } + + /** + * 初始化控制器 + */ + initControls() { + this.controller = new OrbitControls(this.camera, this.renderer.domElement) + } + + /** + *宽高变更时自动适配 + */ + updataWh() { + this.width = this.dom.clientWidth + this.height = this.dom.clientHeight + this.camera.aspect = this.width / this.height + this.camera.updateProjectionMatrix() + this.renderer.setSize(this.width, this.height) + } + + /** + * 动画渲染 + * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。 + **/ + animate(time) { + // 请求动画帧window.requestAnimationFrame + // requestAnimationFrame实现周期性循环执行 + // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能 + this.animateKey = requestAnimationFrame(this.animate.bind(this)) + if (this.controller) { + this.controller.update() + } + // 额外回调 + for (let i = 0; i < this.animateCallBackArray.length; i++) { + if (this.animateCallBackArray[i]) { + this.animateCallBackArray[i](time, this.renderer, this.scene) + } + } + this.renders() + } + + /** + * 网格辅助线 + */ + grid() { + // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size + const size = 1000 + // 网格的划分数量,即网格线上有多少个分割点 + const divisions = 60 + // 主要颜色,默认为0x444444(深灰色),用于主轴线 + const colorMain = '0x444444' + // 次要颜色,默认为0x888888(浅灰色),用于其他线 + const colorSecondary = '0x888888' + this.groupObj.gridHelperGroup = new THREE.GridHelper( + size, + divisions, + // colorMain, + // colorSecondary, + ) + this.scene.add(this.groupObj.gridHelperGroup) + } + + /** + * 渲染 + */ + renders() { + if (this.renderer) { + this.renderer.render(this.scene, this.camera) + } + } + + /** + * 获取根对象,便于其它类使用公共场景变量 + */ + getRoot() { + return { + scene: this.scene, + renderer: this.renderer, + controller: this.controller, + camera: this.camera, + addAnimateCallBack: this.addAnimateCallBack, + removeAnimateCallBack: this.removeAnimateCallBack, + } + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + addAnimateCallBack = (fun) => { + const index = this.animateCallBackArray.length + this.animateCallBackArray.push(fun) + return index + } + + /** + * + * 更新前的回调,暂用于模型矩阵变化动画 + */ + removeAnimateCallBack = (index) => { + this.animateCallBackArray[index] = false + } + + /** + * 销毁,释放内存 + */ + destroy() { + cancelAnimationFrame(this.animateKey) + this.scene.traverse((child) => { + if (child instanceof THREE.Mesh) { + if (child.material) { + child.material.dispose && child.material.dispose() + } + if (child.geometry) { + child.geometry && child.geometry.dispose() + } + + !!child.clear && child.clear() + child = null + } + }) + this.scene.environment = null + this.scene.clear() + const dom = this.renderer.domElement + if (dom) { + dom.parentNode.removeChild(dom) + } + this.renderer.renderLists.dispose() + this.renderer.dispose() + this.renderer.forceContextLoss() + this.renderer.domElement = null + this.renderer.content = null + this.renderer = null + window.removeEventListener('resize', this.resizeFun) + } + + // 加载点云 + loadPCD(padPath) { + const loader = new PCDLoader() + loader.load(padPath, (points) => { + this.scene.add(points) // 直接将点云添加到场景中 + this.animate() + }) + } +} + +export default SceneInit diff --git a/src/router/index.ts b/src/router/index.ts index e4760f5..9ce2c1b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -44,7 +44,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } @@ -151,7 +152,8 @@ // 如果已登录状态下,进入登录页会强制跳转到控制台页面 if (to.name === 'login') { next({ - name: 'dashboard', + // name: 'dashboard', + name: 'PatrolManage', replace: true, }) } diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts index 9aa7fe3..af35115 100644 --- a/src/router/modules/menus.ts +++ b/src/router/modules/menus.ts @@ -1,5 +1,6 @@ // 所有菜单路由 import systemRoutes from './system' +import patrolRoutes from './patrol' import type { Route } from '@/global' const Layout = () => import('@/layouts/index.vue') @@ -8,7 +9,7 @@ { path: '/home', component: Layout, - redirect: '/home/index', + redirect: '/patrol/navigation', name: 'Home', meta: { title: '首页', @@ -31,6 +32,8 @@ }, ], }, + // 巡检管理 + ...patrolRoutes, // 系统路由 ...systemRoutes, ] diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts new file mode 100644 index 0000000..8d6a735 --- /dev/null +++ b/src/router/modules/patrol.ts @@ -0,0 +1,46 @@ +// 巡检管理 +import type { Route } from '@/global' + +const Layout = () => import('@/layouts/index.vue') + +const routes: Route.recordRaw[] = [ + { + path: '/patrol', + component: Layout, + redirect: '/patrol', + name: 'Patrol', + meta: { + title: '巡检管理', + icon: 'ep:key', + auth: '/patrol', + }, + children: [ + { + path: 'manage', + name: 'PatrolManage', + component: () => import('@/views/patrol/manage/index.vue'), + meta: { + title: '巡检管理', + auth: '/patrol/manage', + sidebar: true, + breadcrumb: true, + activeMenu: '/patrol', + }, + }, + { + path: 'navigation', + name: 'PatrolNavigation', + component: () => import('@/views/patrol/navigation/index.vue'), + meta: { + title: '巡检导航', + auth: '/patrol/navigation', + sidebar: true, + breadcrumb: true, + activeMenu: '/patrol', + }, + }, + ], + }, +] + +export default routes diff --git a/.env.development b/.env.development index 3aaa28f..ba1ebf1 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 机器狗巡检平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 diff --git a/.env.production b/.env.production index 10cfdb7..da68e78 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ NODE_ENV = production # 页面标题 -VITE_APP_TITLE = 感知数据汇聚平台 +VITE_APP_TITLE = 巡检精灵综合管理平台 # 接口请求地址,会设置到 axios 的 baseURL 参数上 VITE_APP_API_BASEURL = http://111.198.10.15:11638 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 diff --git a/README.md b/README.md index baadcb1..1cc1ffa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -
机器狗巡检平台
+巡检精灵综合管理平台
## 简要说明
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array 机器狗巡检平台 巡检精灵综合管理平台
diff --git a/package.json b/package.json
index a6745d6..b8f7e9c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
+ "three": "^0.173.0",
"tinymce": "^6.2.0",
"vue": "^3.2.44",
"vue-pdf-embed": "^1.1.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 860f410..351badd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -57,6 +57,7 @@
stylelint-config-standard-vue: ^1.0.0
stylelint-scss: ^4.3.0
svgo: ^3.0.0
+ three: ^0.173.0
tinymce: ^6.2.0
typescript: ^4.8.4
unplugin-auto-import: ^0.11.4
@@ -107,6 +108,7 @@
print-js: 1.6.0
qrcode: 1.5.4
qs: 6.13.1
+ three: 0.173.0
tinymce: 6.8.5
vue: 3.5.13_typescript@4.9.5
vue-pdf-embed: 1.2.1_vue@3.5.13
@@ -8623,6 +8625,10 @@
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /three/0.173.0:
+ resolution: {integrity: sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==}
+ dev: false
+
/through/2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true
diff --git a/public/4.pcd b/public/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/public/4.pcd
Binary files differ
diff --git a/public/config/config.json b/public/config/config.json
index 0c02bb3..e5cba39 100644
--- a/public/config/config.json
+++ b/public/config/config.json
@@ -1,5 +1,5 @@
{
- "title":"燃气物联感知平台",
+ "title":"巡检精灵综合管理平台",
"baseUrl": "http://111.198.10.15:11645",
"securityJsCode": "56bf9671d4b3517d294caec4751889a1",
"JsKey": "40849e82b4e33f5255b17372520c954d",
diff --git a/public/finalCloud.pcd b/public/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/public/finalCloud.pcd
Binary files differ
diff --git a/src/assets/icons/icon-patrol.svg b/src/assets/icons/icon-patrol.svg
new file mode 100644
index 0000000..8619714
--- /dev/null
+++ b/src/assets/icons/icon-patrol.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/tempImages/2.jpg b/src/assets/tempImages/2.jpg
new file mode 100644
index 0000000..23e16e8
--- /dev/null
+++ b/src/assets/tempImages/2.jpg
Binary files differ
diff --git a/src/assets/tempImages/control.png b/src/assets/tempImages/control.png
new file mode 100644
index 0000000..27cb0a6
--- /dev/null
+++ b/src/assets/tempImages/control.png
Binary files differ
diff --git a/src/assets/tempImages/dog-arm.jpg b/src/assets/tempImages/dog-arm.jpg
new file mode 100644
index 0000000..53c25df
--- /dev/null
+++ b/src/assets/tempImages/dog-arm.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog-picture.jpg b/src/assets/tempImages/dog-picture.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/dog-picture.jpg
Binary files differ
diff --git a/src/assets/tempImages/dog.png b/src/assets/tempImages/dog.png
new file mode 100644
index 0000000..1672a81
--- /dev/null
+++ b/src/assets/tempImages/dog.png
Binary files differ
diff --git a/src/assets/tempImages/icon-link.svg b/src/assets/tempImages/icon-link.svg
new file mode 100644
index 0000000..28707bb
--- /dev/null
+++ b/src/assets/tempImages/icon-link.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/src/assets/tempImages/map.png b/src/assets/tempImages/map.png
new file mode 100644
index 0000000..0530d85
--- /dev/null
+++ b/src/assets/tempImages/map.png
Binary files differ
diff --git a/src/assets/tempImages/point.png b/src/assets/tempImages/point.png
new file mode 100644
index 0000000..3a8be1f
--- /dev/null
+++ b/src/assets/tempImages/point.png
Binary files differ
diff --git a/src/assets/tempImages/sgjc.jpg b/src/assets/tempImages/sgjc.jpg
new file mode 100644
index 0000000..a1c25e0
--- /dev/null
+++ b/src/assets/tempImages/sgjc.jpg
Binary files differ
diff --git a/src/assets/tempImages/tyx.jpg b/src/assets/tempImages/tyx.jpg
new file mode 100644
index 0000000..6d37211
--- /dev/null
+++ b/src/assets/tempImages/tyx.jpg
Binary files differ
diff --git a/src/assets/tempImages/yrg.jpg b/src/assets/tempImages/yrg.jpg
new file mode 100644
index 0000000..071a185
--- /dev/null
+++ b/src/assets/tempImages/yrg.jpg
Binary files differ
diff --git a/src/components.d.ts b/src/components.d.ts
index f651253..a0817c2 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -72,6 +72,7 @@
SvgIcon: typeof import('./components/SvgIcon/index.vue')['default']
SystemInfo: typeof import('./components/SystemInfo/index.vue')['default']
TableContainer: typeof import('./components/TableContainer/index.vue')['default']
+ Threejs: typeof import('./components/threejs/index.vue')['default']
Trend: typeof import('./components/Trend/index.vue')['default']
}
}
diff --git a/src/components/NormalTable/index.vue b/src/components/NormalTable/index.vue
index 63a2160..bf0b007 100644
--- a/src/components/NormalTable/index.vue
+++ b/src/components/NormalTable/index.vue
@@ -481,5 +481,10 @@
.el-radio__label {
display: none !important;
}
+ // 单元格样式
+ .el-table__cell {
+ position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
+ z-index: 99999999;
+ }
}
diff --git a/src/components/threejs/4.pcd b/src/components/threejs/4.pcd
new file mode 100644
index 0000000..a45a92e
--- /dev/null
+++ b/src/components/threejs/4.pcd
Binary files differ
diff --git a/src/components/threejs/finalCloud.pcd b/src/components/threejs/finalCloud.pcd
new file mode 100644
index 0000000..b07d7d8
--- /dev/null
+++ b/src/components/threejs/finalCloud.pcd
Binary files differ
diff --git a/src/components/threejs/index.vue b/src/components/threejs/index.vue
new file mode 100644
index 0000000..08b880c
--- /dev/null
+++ b/src/components/threejs/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/threejs/init.js b/src/components/threejs/init.js
new file mode 100644
index 0000000..87e4904
--- /dev/null
+++ b/src/components/threejs/init.js
@@ -0,0 +1,274 @@
+/**
+ * 初始化场景
+ */
+import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
+import * as THREE from 'three'
+import { PCDLoader } from 'three/examples/jsm/loaders/PCDLoader.js'
+
+// 类声明
+class SceneInit {
+ /**
+ * 构造函数,用来初始化
+ * @param dom dom
+ * @param cameraObj
+ */
+ constructor(dom, cameraObj) {
+ console.log('dom', dom)
+ console.log('cameraObj', cameraObj)
+
+ this.dom = dom // 创建dom属性
+ this.groupObj = { // 创建groupObj属性
+ gridHelperGroup: undefined,
+ }
+ // render前的回调函数集合
+ this.animateCallBackArray = []
+ this.init(cameraObj)
+ }
+
+ /**
+ * 初始化
+ */
+ init(cameraObj) {
+ // 初始化Renderer
+ this.initRenderer()
+ // 初始化摄像头
+ this.initCamera(cameraObj)
+ // 初始化场景
+ this.initScene()
+ // 初始化灯源
+ this.initLight()
+ // 摄像头控制器
+ this.initControls()
+ this.animateCallBackArray = []
+ // 动画
+ // setTimeout(() => {
+ this.animate()
+ this.resizeFun = this.updataWh.bind(this)
+ window.addEventListener('resize', this.resizeFun)
+ }
+
+ /**
+ * 初始化渲染器
+ */
+ initRenderer() {
+ this.renderer = new THREE.WebGLRenderer({
+ alpha: this.alpha, // 画布透明
+ depthTest: true, // 深度测试
+ antialias: true, // 是否开启抗锯齿效果,默认值为false。
+ logarithmicDepthBuffer: true, // 对数深度缓存
+ })
+ // width和height用来设置Three.js输出的Canvas画布尺寸(像素px)
+ this.width = this.dom.clientWidth // 窗口文档显示区的宽度作为画布宽度
+ this.height = this.dom.clientHeight // 窗口文档显示区的高度作为画布高度
+ this.renderer.localClippingEnabled = true // 启用局部裁剪
+ this.renderer.setSize(this.width, this.height) // 设置three.js渲染区域的尺寸(像素px)
+ this.renderer.shadowMap.enabled = true // 如果遇到阴影贴图 必须渲染
+ this.renderer.sortObjects = true // 用于控制three.js中物体的渲染顺序
+ this.renderer.setPixelRatio(window.devicePixelRatio * 1) // 用于设置设备的像素比 通过设置设备像素比,可以优化高分辨率设备上的渲染效果,确保图形在不同分辨率的设备上都能清晰显示。
+ this.renderer.domElement.style.position = 'absolute'
+ this.renderer.domElement.style.top = '0px'
+ this.renderer.domElement.style.left = '0px'
+ // three.js执行渲染命令会输出一个canvas画布,也就是一个HTML元素,你可以插入到web页面中
+ this.dom.appendChild(this.renderer.domElement)
+ this.renderer.domElement.classList.add('threeCanvas') // 设置画布的class,非必须
+ // this.renderer.outputEncoding = THREE.sRGBEncoding;
+ this.renderer.gammaFactor = 2.2
+ this.renderer.gammaOutPut = true
+ this.renderer.shadowMap.type = THREE.PCFSoftShadowMap
+
+ this.renderer.toneMappingExposure = 1.0
+ // 物理灯光
+ this.renderer.physicallyCorrectLights = true
+ }
+
+ /**
+ * 初始化摄像头
+ */
+
+ initCamera(cameraObj) {
+ if (!cameraObj) {
+ cameraObj = {
+ fov: 45, // 摄像机视锥体垂直视野角度。
+ aspect: this.width / this.height, // 摄像机视锥体长宽比。
+ near: 0.1, // 摄像机视锥体近端面。
+ far: 100000, // 摄像机视锥体远端面。
+ // position: [0, 50, 85],
+ // position: [62, 67, 20],
+ position: [0, 0, 12],
+ }
+ }
+ this.camera = new THREE.PerspectiveCamera(
+ cameraObj.fov,
+ this.width / this.height, // 摄像机视锥体长宽比。
+ // cameraObj.aspect,
+ cameraObj.near,
+ cameraObj.far,
+ )
+ this.camera.position.set(...cameraObj.position)
+ // this.camera.position.set([0, 50, 85])
+ }
+
+ /**
+ * 初始化场景
+ */
+ initScene() {
+ this.scene = new THREE.Scene()
+ }
+
+ /**
+ * 初始化灯源
+ */
+ initLight() {
+ // 默认环境光
+ const ambientLight = new THREE.AmbientLight(0xFFFFFF) // 环境光
+ this.scene.add(ambientLight)
+ ambientLight.intensity = 0.3 // 光照强度
+ const hemiLight = new THREE.HemisphereLight(0xFFFFBB, 0x080820, 1) // 模拟天空和地面的光照效果
+ this.scene.add(hemiLight)
+ }
+
+ /**
+ * 初始化控制器
+ */
+ initControls() {
+ this.controller = new OrbitControls(this.camera, this.renderer.domElement)
+ }
+
+ /**
+ *宽高变更时自动适配
+ */
+ updataWh() {
+ this.width = this.dom.clientWidth
+ this.height = this.dom.clientHeight
+ this.camera.aspect = this.width / this.height
+ this.camera.updateProjectionMatrix()
+ this.renderer.setSize(this.width, this.height)
+ }
+
+ /**
+ * 动画渲染
+ * threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。
+ **/
+ animate(time) {
+ // 请求动画帧window.requestAnimationFrame
+ // requestAnimationFrame实现周期性循环执行
+ // requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能
+ this.animateKey = requestAnimationFrame(this.animate.bind(this))
+ if (this.controller) {
+ this.controller.update()
+ }
+ // 额外回调
+ for (let i = 0; i < this.animateCallBackArray.length; i++) {
+ if (this.animateCallBackArray[i]) {
+ this.animateCallBackArray[i](time, this.renderer, this.scene)
+ }
+ }
+ this.renders()
+ }
+
+ /**
+ * 网格辅助线
+ */
+ grid() {
+ // 网格的大小(宽度和高度) 它定义了从中心到边缘的距离,整个网格的实际尺寸是2 * size
+ const size = 1000
+ // 网格的划分数量,即网格线上有多少个分割点
+ const divisions = 60
+ // 主要颜色,默认为0x444444(深灰色),用于主轴线
+ const colorMain = '0x444444'
+ // 次要颜色,默认为0x888888(浅灰色),用于其他线
+ const colorSecondary = '0x888888'
+ this.groupObj.gridHelperGroup = new THREE.GridHelper(
+ size,
+ divisions,
+ // colorMain,
+ // colorSecondary,
+ )
+ this.scene.add(this.groupObj.gridHelperGroup)
+ }
+
+ /**
+ * 渲染
+ */
+ renders() {
+ if (this.renderer) {
+ this.renderer.render(this.scene, this.camera)
+ }
+ }
+
+ /**
+ * 获取根对象,便于其它类使用公共场景变量
+ */
+ getRoot() {
+ return {
+ scene: this.scene,
+ renderer: this.renderer,
+ controller: this.controller,
+ camera: this.camera,
+ addAnimateCallBack: this.addAnimateCallBack,
+ removeAnimateCallBack: this.removeAnimateCallBack,
+ }
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ addAnimateCallBack = (fun) => {
+ const index = this.animateCallBackArray.length
+ this.animateCallBackArray.push(fun)
+ return index
+ }
+
+ /**
+ *
+ * 更新前的回调,暂用于模型矩阵变化动画
+ */
+ removeAnimateCallBack = (index) => {
+ this.animateCallBackArray[index] = false
+ }
+
+ /**
+ * 销毁,释放内存
+ */
+ destroy() {
+ cancelAnimationFrame(this.animateKey)
+ this.scene.traverse((child) => {
+ if (child instanceof THREE.Mesh) {
+ if (child.material) {
+ child.material.dispose && child.material.dispose()
+ }
+ if (child.geometry) {
+ child.geometry && child.geometry.dispose()
+ }
+
+ !!child.clear && child.clear()
+ child = null
+ }
+ })
+ this.scene.environment = null
+ this.scene.clear()
+ const dom = this.renderer.domElement
+ if (dom) {
+ dom.parentNode.removeChild(dom)
+ }
+ this.renderer.renderLists.dispose()
+ this.renderer.dispose()
+ this.renderer.forceContextLoss()
+ this.renderer.domElement = null
+ this.renderer.content = null
+ this.renderer = null
+ window.removeEventListener('resize', this.resizeFun)
+ }
+
+ // 加载点云
+ loadPCD(padPath) {
+ const loader = new PCDLoader()
+ loader.load(padPath, (points) => {
+ this.scene.add(points) // 直接将点云添加到场景中
+ this.animate()
+ })
+ }
+}
+
+export default SceneInit
diff --git a/src/router/index.ts b/src/router/index.ts
index e4760f5..9ce2c1b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -44,7 +44,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
@@ -151,7 +152,8 @@
// 如果已登录状态下,进入登录页会强制跳转到控制台页面
if (to.name === 'login') {
next({
- name: 'dashboard',
+ // name: 'dashboard',
+ name: 'PatrolManage',
replace: true,
})
}
diff --git a/src/router/modules/menus.ts b/src/router/modules/menus.ts
index 9aa7fe3..af35115 100644
--- a/src/router/modules/menus.ts
+++ b/src/router/modules/menus.ts
@@ -1,5 +1,6 @@
// 所有菜单路由
import systemRoutes from './system'
+import patrolRoutes from './patrol'
import type { Route } from '@/global'
const Layout = () => import('@/layouts/index.vue')
@@ -8,7 +9,7 @@
{
path: '/home',
component: Layout,
- redirect: '/home/index',
+ redirect: '/patrol/navigation',
name: 'Home',
meta: {
title: '首页',
@@ -31,6 +32,8 @@
},
],
},
+ // 巡检管理
+ ...patrolRoutes,
// 系统路由
...systemRoutes,
]
diff --git a/src/router/modules/patrol.ts b/src/router/modules/patrol.ts
new file mode 100644
index 0000000..8d6a735
--- /dev/null
+++ b/src/router/modules/patrol.ts
@@ -0,0 +1,46 @@
+// 巡检管理
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/patrol',
+ component: Layout,
+ redirect: '/patrol',
+ name: 'Patrol',
+ meta: {
+ title: '巡检管理',
+ icon: 'ep:key',
+ auth: '/patrol',
+ },
+ children: [
+ {
+ path: 'manage',
+ name: 'PatrolManage',
+ component: () => import('@/views/patrol/manage/index.vue'),
+ meta: {
+ title: '巡检管理',
+ auth: '/patrol/manage',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ {
+ path: 'navigation',
+ name: 'PatrolNavigation',
+ component: () => import('@/views/patrol/navigation/index.vue'),
+ meta: {
+ title: '巡检导航',
+ auth: '/patrol/navigation',
+ sidebar: true,
+ breadcrumb: true,
+ activeMenu: '/patrol',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/utils/structure.ts b/src/utils/structure.ts
index bc647d7..54507e9 100644
--- a/src/utils/structure.ts
+++ b/src/utils/structure.ts
@@ -130,7 +130,7 @@
* @param plainList 寻找列表中的父id
* @returns 父id列表
*/
-function findPid(plainList: Array机器狗巡检平台
+巡检精灵综合管理平台
-机器狗巡检平台
+巡检精灵综合管理平台
-机器狗巡检平台
+巡检精灵综合管理平台
-
+
+
+
+
+
+
+
+
机器狗巡检平台
+巡检精灵综合管理平台
-
+
+
+
+
+
+
+
+
+
+
机器狗巡检平台
+巡检精灵综合管理平台
-
+
+
+
+
+
+
+
+
+
+
机器狗巡检平台
+巡检精灵综合管理平台
-
+
+
+
+
+
+
+
+
+
+