From 02860644156b66f1e722067a60cc73f7323f472a Mon Sep 17 00:00:00 2001 From: zhanghao <774378400@qq.com> Date: Tue, 25 Aug 2026 10:23:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 15 +- .env.production | 9 +- .env.staging | 9 +- .github/FUNDING.yml | 1 + .gitignore | 5 +- README.md | 125 +- bin/build.bat | 12 + bin/package.bat | 12 + bin/run-web.bat | 12 + index.html | 2 +- package.json | 55 +- pnpm-lock.yaml | 6000 +++++++++++++++++ pnpm-workspace.yaml | 6 + public/models/dual_arm.urdf | 660 ++ public/models/left_arm.urdf | 281 + public/models/meshes/L_ELBOW_R_S.STL | Bin 0 -> 1907834 bytes public/models/meshes/L_SHOULDER_P_S.STL | Bin 0 -> 2659784 bytes public/models/meshes/L_SHOULDER_R_S.STL | Bin 0 -> 2366684 bytes public/models/meshes/L_SHOULDER_Y_S.STL | Bin 0 -> 2448284 bytes public/models/meshes/L_WRIST_P_S.STL | Bin 0 -> 6382434 bytes public/models/meshes/L_WRIST_R_S.STL | Bin 0 -> 4433284 bytes public/models/meshes/L_WRIST_Y_S.STL | Bin 0 -> 1100334 bytes public/models/meshes/NECK_P_S.STL | Bin 0 -> 1100334 bytes public/models/meshes/NECK_R_S.STL | Bin 0 -> 146584 bytes public/models/meshes/NECK_Y_S.STL | Bin 0 -> 6320234 bytes public/models/meshes/PELVIS_S.STL | Bin 0 -> 6022334 bytes public/models/meshes/R_ELBOW_R_S.STL | Bin 0 -> 1907834 bytes public/models/meshes/R_SHOULDER_P_S.STL | Bin 0 -> 2659784 bytes public/models/meshes/R_SHOULDER_R_S.STL | Bin 0 -> 2366684 bytes public/models/meshes/R_SHOULDER_Y_S.STL | Bin 0 -> 2448284 bytes public/models/meshes/R_WRIST_P_S.STL | Bin 0 -> 6382434 bytes public/models/meshes/R_WRIST_R_S.STL | Bin 0 -> 4062634 bytes public/models/meshes/R_WRIST_Y_S.STL | Bin 0 -> 1100334 bytes public/models/meshes/base_link.STL | Bin 0 -> 4517284 bytes public/models/meshes/index_force_sensor_1.STL | Bin 0 -> 359084 bytes public/models/meshes/index_force_sensor_2.STL | Bin 0 -> 371084 bytes public/models/meshes/index_force_sensor_3.STL | Bin 0 -> 87284 bytes .../models/meshes/little_force_sensor_1.STL | Bin 0 -> 359084 bytes .../models/meshes/little_force_sensor_2.STL | Bin 0 -> 397084 bytes .../models/meshes/little_force_sensor_3.STL | Bin 0 -> 81784 bytes .../models/meshes/middle_force_sensor_1.STL | Bin 0 -> 359084 bytes .../models/meshes/middle_force_sensor_2.STL | Bin 0 -> 326984 bytes .../models/meshes/middle_force_sensor_3.STL | Bin 0 -> 80384 bytes public/models/meshes/palm_force_sensor.STL | Bin 0 -> 1584484 bytes public/models/meshes/right_index_1.STL | Bin 0 -> 772784 bytes public/models/meshes/right_index_2.STL | Bin 0 -> 372484 bytes public/models/meshes/right_little_1.STL | Bin 0 -> 772784 bytes public/models/meshes/right_little_2.STL | Bin 0 -> 380384 bytes public/models/meshes/right_middle_1.STL | Bin 0 -> 772784 bytes public/models/meshes/right_middle_2.STL | Bin 0 -> 363384 bytes public/models/meshes/right_ring_1.STL | Bin 0 -> 772784 bytes public/models/meshes/right_ring_2.STL | Bin 0 -> 372484 bytes public/models/meshes/right_thumb_1.STL | Bin 0 -> 32184 bytes public/models/meshes/right_thumb_2.STL | Bin 0 -> 579884 bytes public/models/meshes/right_thumb_3.STL | Bin 0 -> 424684 bytes public/models/meshes/right_thumb_4.STL | Bin 0 -> 547584 bytes public/models/meshes/ring_force_sensor_1.STL | Bin 0 -> 359084 bytes public/models/meshes/ring_force_sensor_2.STL | Bin 0 -> 371084 bytes public/models/meshes/ring_force_sensor_3.STL | Bin 0 -> 87284 bytes public/models/meshes/thumb_force_sensor_1.STL | Bin 0 -> 359884 bytes public/models/meshes/thumb_force_sensor_2.STL | Bin 0 -> 126684 bytes public/models/meshes/thumb_force_sensor_3.STL | Bin 0 -> 294384 bytes public/models/meshes/thumb_force_sensor_4.STL | Bin 0 -> 64584 bytes public/models/right_arm.urdf | 322 + src/api/corpusManger/corpus.js | 46 + src/api/corpusManger/speech_synthesis.js | 69 + src/api/device/arm.js | 10 +- src/api/device/camera.js | 9 + src/api/device/profile.js | 45 - src/api/device/register.js | 146 - src/api/device/robot.js | 44 - src/api/device/system.js | 31 + src/api/device/terminal.js | 86 - src/api/{device => flow}/flow.js | 54 +- src/api/flow/nodeRed.js | 5 + src/api/inspection/map.js | 33 - src/api/inspection/point.js | 9 +- src/api/inspection/robot.js | 107 - src/api/inspection/runTask.js | 14 +- src/api/inspection/task.js | 9 +- src/api/intelligenceTest/runningTask.js | 17 +- src/api/intelligenceTest/taskManage.js | 9 +- src/api/intelligenceTest/testCase.js | 9 +- src/api/login.js | 9 + src/api/resource/device.js | 13 + src/api/resource/map.js | 24 + src/api/resource/robot.js | 77 + src/api/resource/terminal.js | 29 + src/api/system/dept.js | 9 + src/api/system/menu.js | 9 + src/api/system/notice.js | 37 +- src/api/system/user.js | 2 +- src/api/test/config.js | 7 + src/api/test/detect.js | 7 + src/api/test/log.js | 22 +- src/api/tts.js | 30 + src/assets/icons/svg/add.svg | 4 + src/assets/icons/svg/bell.svg | 1 + src/assets/icons/svg/consuming.svg | 1 + src/assets/icons/svg/enter.svg | 1 + src/assets/icons/svg/more-up.svg | 1 + src/assets/icons/svg/size.svg | 2 +- src/assets/icons/svg/task.svg | 5 + src/assets/icons/svg/timbre.svg | 4 + src/assets/styles/btn.scss | 2 +- src/assets/styles/index.scss | 15 +- src/assets/styles/legacy-layout.scss | 6 + src/assets/styles/sidebar.scss | 5 +- src/components/Breadcrumb/index.vue | 2 +- src/components/Crontab/day.vue | 2 +- src/components/Crontab/hour.vue | 6 +- src/components/Crontab/index.vue | 74 +- src/components/Crontab/min.vue | 2 +- src/components/Crontab/month.vue | 2 +- src/components/Crontab/result.vue | 376 +- src/components/Crontab/second.vue | 2 +- src/components/Crontab/week.vue | 2 +- src/components/Crontab/year.vue | 34 +- src/components/DictTag/index.vue | 29 +- src/components/Editor/index.vue | 99 +- src/components/ExcelImportDialog/index.vue | 137 + src/components/FileUpload/index.vue | 166 +- src/components/Hamburger/index.vue | 2 +- src/components/HeaderSearch/index.vue | 225 +- src/components/IPlayer/config.ts | 2 +- src/components/IPlayer/index.vue | 13 +- src/components/IconSelect/index.vue | 10 +- src/components/IconSelect/requireIcons.js | 6 +- src/components/ImagePreview/index.vue | 34 +- src/components/ImageUpload/index.vue | 176 +- src/components/Pagination/index.vue | 7 +- src/components/RightToolbar/index.vue | 179 +- src/components/RuoYi/Doc/index.vue | 2 +- src/components/RuoYi/Git/index.vue | 2 +- src/components/Screenfull/index.vue | 4 +- src/components/SizeSelect/index.vue | 20 +- src/components/SvgIcon/index.vue | 43 +- src/components/SvgIcon/svgicon.js | 14 +- src/components/TreePanel/index.vue | 756 +++ src/components/iFrame/index.vue | 8 +- src/controllers/FileHandler.js | 553 -- src/directive/common/copyText.js | 57 +- src/directive/permission/hasPermi.js | 3 +- src/directive/permission/hasRole.js | 3 +- src/layout/components/AppMain.vue | 19 +- src/layout/components/Copyright/index.vue | 31 + .../components/HeaderNotice/DetailView.vue | 326 + src/layout/components/HeaderNotice/index.vue | 184 + src/layout/components/IframeToggle/index.vue | 14 +- src/layout/components/InnerLink/index.vue | 17 +- src/layout/components/Navbar.vue | 140 +- src/layout/components/Settings/index.vue | 145 +- src/layout/components/Sidebar/Link.vue | 27 +- src/layout/components/Sidebar/Logo.vue | 26 +- src/layout/components/Sidebar/SidebarItem.vue | 12 +- src/layout/components/Sidebar/index.vue | 34 +- src/layout/components/TagsView/index.vue | 2 +- src/layout/components/TopBar/index.vue | 99 + src/layout/components/TopNav/index.vue | 220 + src/layout/index.vue | 27 +- src/main.js | 39 +- src/permission.js | 74 +- src/plugins/auth.js | 8 +- src/plugins/cache.js | 15 +- src/plugins/download.js | 28 +- src/plugins/modal.js | 6 +- src/plugins/tab.js | 36 +- src/plugins/websocket.js | 172 +- src/router/index.js | 180 +- src/settings.js | 34 +- src/store/index.js | 2 +- src/store/modules/app.js | 4 +- src/store/modules/dict.js | 20 +- src/store/modules/flow.js | 11 +- src/store/modules/lock.js | 27 + src/store/modules/permission.js | 70 +- src/store/modules/settings.js | 13 +- src/store/modules/tagsView.js | 44 + src/store/modules/user.js | 20 + src/utils/FileUtils.js | 144 - src/utils/actionQueue.js | 375 ++ src/utils/agvRuntimeStatus.js | 18 + src/utils/auth.js | 2 +- src/utils/convertNodeRedToLogicFlow.js | 105 - src/utils/convertNodeRedToVueFlow.js | 76 + src/utils/dict.js | 12 +- src/utils/dynamicTitle.js | 7 +- src/utils/flow.js | 81 +- src/utils/flowExecution.js | 120 + src/utils/flowResources.js | 500 ++ src/utils/generator/drawingDefault.js | 37 + src/utils/generator/html.js | 4 +- src/utils/index.js | 50 +- src/utils/pagedRequest.js | 45 + src/utils/passwordRule.js | 73 + src/utils/permission.js | 4 +- src/utils/request.js | 65 +- src/utils/robotDevice.js | 58 + src/utils/ruoyi.js | 150 +- src/utils/scroll-to.js | 6 +- src/utils/theme.js | 75 +- src/utils/validate.js | 7 +- src/views/device/profile/index.vue | 508 -- .../register/components/Camera/index.vue | 330 - .../register/components/ControlCard/index.vue | 36 - .../components/DexHand/LeftBottomHand.vue | 431 -- .../components/DexHand/LeftTopHand.vue | 270 - .../components/DexHand/RightBottomCharts.vue | 229 - .../components/DexHand/RightTopCharts.vue | 162 - .../register/components/DexHand/index.vue | 158 - .../device/register/components/Head/index.vue | 314 - .../MechanicalArm/components/JointControl.vue | 133 - .../MechanicalArm/components/UrdfViewer.vue | 394 -- .../components/MechanicalArm/index.vue | 350 - .../register/components/Microphone/index.vue | 225 - .../register/components/Motor/index.vue | 76 - .../register/components/Speaker/index.vue | 276 - .../SpeechSynthesis/AudioPlayer.vue | 108 - .../components/SpeechSynthesis/chat.vue | 699 -- .../components/SpeechSynthesis/img/ai.png | Bin 12001 -> 0 bytes .../components/SpeechSynthesis/img/user.png | Bin 11973 -> 0 bytes .../components/SpeechSynthesis/index.vue | 65 - .../SpeechSynthesis/soundRecording.vue | 115 - .../components/TouchInteraction/ai.png | Bin 12001 -> 0 bytes .../components/TouchInteraction/index.vue | 512 -- .../components/TouchInteraction/zsj.png | Bin 11973 -> 0 bytes src/views/device/register/components/index.js | 59 - src/views/device/register/index.vue | 414 -- src/views/device/robot/ContextMenu.vue | 89 - src/views/device/robot/TechButtonWithLine.vue | 547 -- src/views/device/robot/index.vue | 874 --- src/views/device/terminal/index.vue | 316 - src/views/error/401.vue | 82 - src/views/error/404.vue | 227 - src/views/flow/components/Aside.vue | 76 - .../flow/components/FormItemRecursive.vue | 221 - src/views/flow/components/NodeState.vue | 176 - src/views/flow/components/NodeTitle.vue | 271 - src/views/flow/components/OuterNode.vue | 43 - src/views/flow/components/ParamsDrawer.vue | 83 - src/views/flow/components/TestRun.vue | 146 - .../components/params/BasicNodeParams.vue | 348 - .../flow/components/params/CodeNodeParams.vue | 463 -- .../flow/components/params/HttpNodeParams.vue | 654 -- .../components/params/RecognizeNodeParams.vue | 356 - .../components/params/SdAgentNodeParams.vue | 360 - .../flow/components/params/StartParams.vue | 183 - src/views/flow/components/params/useQuote.js | 53 - src/views/flow/config.js | 794 --- src/views/flow/icon/audio.svg | 1 - src/views/flow/icon/awaken.svg | 1 - src/views/flow/icon/camera.svg | 1 - src/views/flow/icon/dialogue.svg | 1 - src/views/flow/icon/end.svg | 1 - src/views/flow/icon/expression.svg | 1 - src/views/flow/icon/group.svg | 3 - src/views/flow/icon/loop.svg | 1 - src/views/flow/icon/microphone.svg | 4 - src/views/flow/icon/plan.svg | 1 - src/views/flow/icon/sleep.svg | 1 - src/views/flow/icon/start.svg | 6 - src/views/flow/icon/stopLoop.svg | 1 - src/views/flow/icon/switch.svg | 7 - src/views/flow/icon/touch.svg | 1 - src/views/flow/icon/video.svg | 3 - src/views/flow/index.vue | 956 --- src/views/flow/nodes/common/endNode.js | 196 - src/views/flow/nodes/common/endNode.vue | 246 - src/views/flow/nodes/common/index.js | 11 - src/views/flow/nodes/common/selectAreaNode.js | 102 - .../flow/nodes/common/selectAreaNode.vue | 59 - src/views/flow/nodes/common/serviceNode.js | 213 - src/views/flow/nodes/common/serviceNode.vue | 144 - src/views/flow/nodes/common/startNode.js | 204 - src/views/flow/nodes/common/startNode.vue | 157 - src/views/flow/nodes/function/codeNode.js | 213 - src/views/flow/nodes/function/codeNode.vue | 139 - src/views/flow/nodes/function/currentLoop.vue | 256 - .../flow/nodes/function/currentLoopNode.js | 219 - src/views/flow/nodes/function/httpNode.js | 213 - src/views/flow/nodes/function/httpNode.vue | 141 - src/views/flow/nodes/function/index.js | 25 - src/views/flow/nodes/function/loop.js | 294 - src/views/flow/nodes/function/loop.vue | 116 - src/views/flow/nodes/function/recognize.js | 213 - src/views/flow/nodes/function/recognize.vue | 124 - src/views/flow/nodes/function/sdAgent.js | 213 - src/views/flow/nodes/function/sdAgent.vue | 124 - src/views/flow/nodes/function/sleep.js | 213 - src/views/flow/nodes/function/sleep.vue | 125 - src/views/flow/nodes/function/stopLoop.js | 191 - src/views/flow/nodes/function/stopLoop.vue | 197 - src/views/flow/nodes/function/subEnd.js | 186 - src/views/flow/nodes/function/subEnd.vue | 145 - src/views/flow/nodes/function/subStart.js | 185 - src/views/flow/nodes/function/subStart.vue | 106 - src/views/flow/nodes/function/switch.js | 318 - src/views/flow/nodes/function/switch.vue | 642 -- src/views/home/components/BarChart.vue | 117 - src/views/home/components/LineChart.vue | 118 - src/views/home/index.vue | 348 - src/views/index.vue | 14 - src/views/inspection/cockpit/canvasUtils.js | 15 +- .../ManualTakeover/DirectionControl.vue | 16 +- .../components/ManualTakeover/RoboticArm.vue | 26 +- .../ManualTakeover/VoiceConversation.vue | 35 +- .../components/ManualTakeover/index.vue | 134 +- .../cockpit/components/MapCanvas.vue | 150 +- .../cockpit/components/MapOverview.vue | 57 +- .../inspection/cockpit/components/Monitor.vue | 57 +- .../{ManualTakeover => }/UrdfView.vue | 174 +- src/views/inspection/map/index.vue | 580 -- src/views/inspection/point/index.vue | 26 +- src/views/inspection/robot/index.vue | 335 - src/views/inspection/runTask/index.vue | 351 +- src/views/inspection/runTask/task-log.vue | 510 +- src/views/inspection/runTask/task-steps.vue | 71 +- src/views/inspection/task/index.vue | 51 +- src/views/intelligenceTest/car/index.vue | 304 - .../intelligenceTest/mobilePhone/index.vue | 321 - .../intelligenceTest/runningTask/index.vue | 647 -- .../intelligenceTest/runningTask/task-log.vue | 71 - .../runningTask/task-steps.vue | 88 - .../intelligenceTest/taskManage/index.vue | 357 - src/views/intelligenceTest/testCase/index.vue | 330 - src/views/lock.vue | 374 + src/views/login.vue | 236 - src/views/monitor/cache/index.vue | 132 - src/views/monitor/cache/list.vue | 246 - src/views/monitor/druid/index.vue | 13 - src/views/monitor/job/index.vue | 501 -- src/views/monitor/job/log.vue | 283 - src/views/monitor/logininfor/index.vue | 233 - src/views/monitor/online/index.vue | 109 - src/views/monitor/operlog/index.vue | 310 - src/views/monitor/server/index.vue | 187 - src/views/redirect/index.vue | 14 - src/views/register.vue | 219 - src/views/system/config/index.vue | 316 - src/views/system/dept/index.vue | 283 - src/views/system/dict/data.vue | 362 - src/views/system/dict/index.vue | 420 -- src/views/system/file/index.vue | 350 - src/views/system/group/index.vue | 289 - src/views/system/menu/index.vue | 461 -- src/views/system/notice/index.vue | 292 - src/views/system/post/index.vue | 287 - src/views/system/role/authUser.vue | 179 - src/views/system/role/index.vue | 593 -- src/views/system/role/selectUser.vue | 144 - src/views/system/user/authRole.vue | 116 - src/views/system/user/index.vue | 547 -- src/views/system/user/profile/index.vue | 87 - src/views/system/user/profile/resetPwd.vue | 59 - src/views/system/user/profile/userAvatar.vue | 180 - src/views/system/user/profile/userInfo.vue | 67 - src/views/system/vehOper/index.vue | 349 - src/views/test/configs/Run.vue | 172 - src/views/test/configs/index.vue | 696 -- src/views/test/detect/index.vue | 477 -- src/views/test/log/index.vue | 450 -- src/views/test/params/index.vue | 431 -- src/views/tool/build/CodeTypeDialog.vue | 71 - src/views/tool/build/DraggableItem.vue | 68 - src/views/tool/build/IconsDialog.vue | 115 - src/views/tool/build/RightPanel.vue | 918 --- src/views/tool/build/TreeNodeDialog.vue | 93 - src/views/tool/build/index.vue | 653 -- src/views/tool/gen/basicInfoForm.vue | 48 - src/views/tool/gen/createTable.vue | 46 - src/views/tool/gen/editTable.vue | 200 - src/views/tool/gen/genInfoForm.vue | 306 - src/views/tool/gen/importTable.vue | 126 - src/views/tool/gen/index.vue | 310 - src/views/tool/swagger/index.vue | 9 - vite.config.js | 171 +- vite/plugins/auto-import.js | 20 +- vite/plugins/compression.js | 46 +- vite/plugins/index.js | 27 +- vite/plugins/setup-extend.js | 2 +- vite/plugins/svg-icon.js | 10 +- 381 files changed, 14889 insertions(+), 39055 deletions(-) create mode 100644 .github/FUNDING.yml create mode 100644 bin/build.bat create mode 100644 bin/package.bat create mode 100644 bin/run-web.bat create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 public/models/dual_arm.urdf create mode 100644 public/models/left_arm.urdf create mode 100644 public/models/meshes/L_ELBOW_R_S.STL create mode 100644 public/models/meshes/L_SHOULDER_P_S.STL create mode 100644 public/models/meshes/L_SHOULDER_R_S.STL create mode 100644 public/models/meshes/L_SHOULDER_Y_S.STL create mode 100644 public/models/meshes/L_WRIST_P_S.STL create mode 100644 public/models/meshes/L_WRIST_R_S.STL create mode 100644 public/models/meshes/L_WRIST_Y_S.STL create mode 100644 public/models/meshes/NECK_P_S.STL create mode 100644 public/models/meshes/NECK_R_S.STL create mode 100644 public/models/meshes/NECK_Y_S.STL create mode 100644 public/models/meshes/PELVIS_S.STL create mode 100644 public/models/meshes/R_ELBOW_R_S.STL create mode 100644 public/models/meshes/R_SHOULDER_P_S.STL create mode 100644 public/models/meshes/R_SHOULDER_R_S.STL create mode 100644 public/models/meshes/R_SHOULDER_Y_S.STL create mode 100644 public/models/meshes/R_WRIST_P_S.STL create mode 100644 public/models/meshes/R_WRIST_R_S.STL create mode 100644 public/models/meshes/R_WRIST_Y_S.STL create mode 100644 public/models/meshes/base_link.STL create mode 100644 public/models/meshes/index_force_sensor_1.STL create mode 100644 public/models/meshes/index_force_sensor_2.STL create mode 100644 public/models/meshes/index_force_sensor_3.STL create mode 100644 public/models/meshes/little_force_sensor_1.STL create mode 100644 public/models/meshes/little_force_sensor_2.STL create mode 100644 public/models/meshes/little_force_sensor_3.STL create mode 100644 public/models/meshes/middle_force_sensor_1.STL create mode 100644 public/models/meshes/middle_force_sensor_2.STL create mode 100644 public/models/meshes/middle_force_sensor_3.STL create mode 100644 public/models/meshes/palm_force_sensor.STL create mode 100644 public/models/meshes/right_index_1.STL create mode 100644 public/models/meshes/right_index_2.STL create mode 100644 public/models/meshes/right_little_1.STL create mode 100644 public/models/meshes/right_little_2.STL create mode 100644 public/models/meshes/right_middle_1.STL create mode 100644 public/models/meshes/right_middle_2.STL create mode 100644 public/models/meshes/right_ring_1.STL create mode 100644 public/models/meshes/right_ring_2.STL create mode 100644 public/models/meshes/right_thumb_1.STL create mode 100644 public/models/meshes/right_thumb_2.STL create mode 100644 public/models/meshes/right_thumb_3.STL create mode 100644 public/models/meshes/right_thumb_4.STL create mode 100644 public/models/meshes/ring_force_sensor_1.STL create mode 100644 public/models/meshes/ring_force_sensor_2.STL create mode 100644 public/models/meshes/ring_force_sensor_3.STL create mode 100644 public/models/meshes/thumb_force_sensor_1.STL create mode 100644 public/models/meshes/thumb_force_sensor_2.STL create mode 100644 public/models/meshes/thumb_force_sensor_3.STL create mode 100644 public/models/meshes/thumb_force_sensor_4.STL create mode 100644 public/models/right_arm.urdf create mode 100644 src/api/corpusManger/corpus.js create mode 100644 src/api/corpusManger/speech_synthesis.js create mode 100644 src/api/device/camera.js delete mode 100644 src/api/device/profile.js delete mode 100644 src/api/device/register.js delete mode 100644 src/api/device/robot.js create mode 100644 src/api/device/system.js delete mode 100644 src/api/device/terminal.js rename src/api/{device => flow}/flow.js (50%) create mode 100644 src/api/flow/nodeRed.js delete mode 100644 src/api/inspection/map.js delete mode 100644 src/api/inspection/robot.js create mode 100644 src/api/resource/device.js create mode 100644 src/api/resource/map.js create mode 100644 src/api/resource/robot.js create mode 100644 src/api/resource/terminal.js create mode 100644 src/api/tts.js create mode 100644 src/assets/icons/svg/add.svg create mode 100644 src/assets/icons/svg/bell.svg create mode 100644 src/assets/icons/svg/consuming.svg create mode 100644 src/assets/icons/svg/enter.svg create mode 100644 src/assets/icons/svg/more-up.svg create mode 100644 src/assets/icons/svg/task.svg create mode 100644 src/assets/icons/svg/timbre.svg create mode 100644 src/assets/styles/legacy-layout.scss create mode 100644 src/components/ExcelImportDialog/index.vue create mode 100644 src/components/TreePanel/index.vue delete mode 100644 src/controllers/FileHandler.js create mode 100644 src/layout/components/Copyright/index.vue create mode 100644 src/layout/components/HeaderNotice/DetailView.vue create mode 100644 src/layout/components/HeaderNotice/index.vue create mode 100644 src/layout/components/TopBar/index.vue create mode 100644 src/layout/components/TopNav/index.vue create mode 100644 src/store/modules/lock.js delete mode 100644 src/utils/FileUtils.js create mode 100644 src/utils/actionQueue.js create mode 100644 src/utils/agvRuntimeStatus.js delete mode 100644 src/utils/convertNodeRedToLogicFlow.js create mode 100644 src/utils/convertNodeRedToVueFlow.js create mode 100644 src/utils/flowExecution.js create mode 100644 src/utils/flowResources.js create mode 100644 src/utils/generator/drawingDefault.js create mode 100644 src/utils/pagedRequest.js create mode 100644 src/utils/passwordRule.js create mode 100644 src/utils/robotDevice.js delete mode 100644 src/views/device/profile/index.vue delete mode 100644 src/views/device/register/components/Camera/index.vue delete mode 100644 src/views/device/register/components/ControlCard/index.vue delete mode 100644 src/views/device/register/components/DexHand/LeftBottomHand.vue delete mode 100644 src/views/device/register/components/DexHand/LeftTopHand.vue delete mode 100644 src/views/device/register/components/DexHand/RightBottomCharts.vue delete mode 100644 src/views/device/register/components/DexHand/RightTopCharts.vue delete mode 100644 src/views/device/register/components/DexHand/index.vue delete mode 100644 src/views/device/register/components/Head/index.vue delete mode 100644 src/views/device/register/components/MechanicalArm/components/JointControl.vue delete mode 100644 src/views/device/register/components/MechanicalArm/components/UrdfViewer.vue delete mode 100644 src/views/device/register/components/MechanicalArm/index.vue delete mode 100644 src/views/device/register/components/Microphone/index.vue delete mode 100644 src/views/device/register/components/Motor/index.vue delete mode 100644 src/views/device/register/components/Speaker/index.vue delete mode 100644 src/views/device/register/components/SpeechSynthesis/AudioPlayer.vue delete mode 100644 src/views/device/register/components/SpeechSynthesis/chat.vue delete mode 100644 src/views/device/register/components/SpeechSynthesis/img/ai.png delete mode 100644 src/views/device/register/components/SpeechSynthesis/img/user.png delete mode 100644 src/views/device/register/components/SpeechSynthesis/index.vue delete mode 100644 src/views/device/register/components/SpeechSynthesis/soundRecording.vue delete mode 100644 src/views/device/register/components/TouchInteraction/ai.png delete mode 100644 src/views/device/register/components/TouchInteraction/index.vue delete mode 100644 src/views/device/register/components/TouchInteraction/zsj.png delete mode 100644 src/views/device/register/components/index.js delete mode 100644 src/views/device/register/index.vue delete mode 100644 src/views/device/robot/ContextMenu.vue delete mode 100644 src/views/device/robot/TechButtonWithLine.vue delete mode 100644 src/views/device/robot/index.vue delete mode 100644 src/views/device/terminal/index.vue delete mode 100644 src/views/error/401.vue delete mode 100644 src/views/error/404.vue delete mode 100644 src/views/flow/components/Aside.vue delete mode 100644 src/views/flow/components/FormItemRecursive.vue delete mode 100644 src/views/flow/components/NodeState.vue delete mode 100644 src/views/flow/components/NodeTitle.vue delete mode 100644 src/views/flow/components/OuterNode.vue delete mode 100644 src/views/flow/components/ParamsDrawer.vue delete mode 100644 src/views/flow/components/TestRun.vue delete mode 100644 src/views/flow/components/params/BasicNodeParams.vue delete mode 100644 src/views/flow/components/params/CodeNodeParams.vue delete mode 100644 src/views/flow/components/params/HttpNodeParams.vue delete mode 100644 src/views/flow/components/params/RecognizeNodeParams.vue delete mode 100644 src/views/flow/components/params/SdAgentNodeParams.vue delete mode 100644 src/views/flow/components/params/StartParams.vue delete mode 100644 src/views/flow/components/params/useQuote.js delete mode 100644 src/views/flow/config.js delete mode 100644 src/views/flow/icon/audio.svg delete mode 100644 src/views/flow/icon/awaken.svg delete mode 100644 src/views/flow/icon/camera.svg delete mode 100644 src/views/flow/icon/dialogue.svg delete mode 100644 src/views/flow/icon/end.svg delete mode 100644 src/views/flow/icon/expression.svg delete mode 100644 src/views/flow/icon/group.svg delete mode 100644 src/views/flow/icon/loop.svg delete mode 100644 src/views/flow/icon/microphone.svg delete mode 100644 src/views/flow/icon/plan.svg delete mode 100644 src/views/flow/icon/sleep.svg delete mode 100644 src/views/flow/icon/start.svg delete mode 100644 src/views/flow/icon/stopLoop.svg delete mode 100644 src/views/flow/icon/switch.svg delete mode 100644 src/views/flow/icon/touch.svg delete mode 100644 src/views/flow/icon/video.svg delete mode 100644 src/views/flow/index.vue delete mode 100644 src/views/flow/nodes/common/endNode.js delete mode 100644 src/views/flow/nodes/common/endNode.vue delete mode 100644 src/views/flow/nodes/common/index.js delete mode 100644 src/views/flow/nodes/common/selectAreaNode.js delete mode 100644 src/views/flow/nodes/common/selectAreaNode.vue delete mode 100644 src/views/flow/nodes/common/serviceNode.js delete mode 100644 src/views/flow/nodes/common/serviceNode.vue delete mode 100644 src/views/flow/nodes/common/startNode.js delete mode 100644 src/views/flow/nodes/common/startNode.vue delete mode 100644 src/views/flow/nodes/function/codeNode.js delete mode 100644 src/views/flow/nodes/function/codeNode.vue delete mode 100644 src/views/flow/nodes/function/currentLoop.vue delete mode 100644 src/views/flow/nodes/function/currentLoopNode.js delete mode 100644 src/views/flow/nodes/function/httpNode.js delete mode 100644 src/views/flow/nodes/function/httpNode.vue delete mode 100644 src/views/flow/nodes/function/index.js delete mode 100644 src/views/flow/nodes/function/loop.js delete mode 100644 src/views/flow/nodes/function/loop.vue delete mode 100644 src/views/flow/nodes/function/recognize.js delete mode 100644 src/views/flow/nodes/function/recognize.vue delete mode 100644 src/views/flow/nodes/function/sdAgent.js delete mode 100644 src/views/flow/nodes/function/sdAgent.vue delete mode 100644 src/views/flow/nodes/function/sleep.js delete mode 100644 src/views/flow/nodes/function/sleep.vue delete mode 100644 src/views/flow/nodes/function/stopLoop.js delete mode 100644 src/views/flow/nodes/function/stopLoop.vue delete mode 100644 src/views/flow/nodes/function/subEnd.js delete mode 100644 src/views/flow/nodes/function/subEnd.vue delete mode 100644 src/views/flow/nodes/function/subStart.js delete mode 100644 src/views/flow/nodes/function/subStart.vue delete mode 100644 src/views/flow/nodes/function/switch.js delete mode 100644 src/views/flow/nodes/function/switch.vue delete mode 100644 src/views/home/components/BarChart.vue delete mode 100644 src/views/home/components/LineChart.vue delete mode 100644 src/views/home/index.vue delete mode 100644 src/views/index.vue rename src/views/inspection/cockpit/components/{ManualTakeover => }/UrdfView.vue (54%) delete mode 100644 src/views/inspection/map/index.vue delete mode 100644 src/views/inspection/robot/index.vue delete mode 100644 src/views/intelligenceTest/car/index.vue delete mode 100644 src/views/intelligenceTest/mobilePhone/index.vue delete mode 100644 src/views/intelligenceTest/runningTask/index.vue delete mode 100644 src/views/intelligenceTest/runningTask/task-log.vue delete mode 100644 src/views/intelligenceTest/runningTask/task-steps.vue delete mode 100644 src/views/intelligenceTest/taskManage/index.vue delete mode 100644 src/views/intelligenceTest/testCase/index.vue create mode 100644 src/views/lock.vue delete mode 100644 src/views/login.vue delete mode 100644 src/views/monitor/cache/index.vue delete mode 100644 src/views/monitor/cache/list.vue delete mode 100644 src/views/monitor/druid/index.vue delete mode 100644 src/views/monitor/job/index.vue delete mode 100644 src/views/monitor/job/log.vue delete mode 100644 src/views/monitor/logininfor/index.vue delete mode 100644 src/views/monitor/online/index.vue delete mode 100644 src/views/monitor/operlog/index.vue delete mode 100644 src/views/monitor/server/index.vue delete mode 100644 src/views/redirect/index.vue delete mode 100644 src/views/register.vue delete mode 100644 src/views/system/config/index.vue delete mode 100644 src/views/system/dept/index.vue delete mode 100644 src/views/system/dict/data.vue delete mode 100644 src/views/system/dict/index.vue delete mode 100644 src/views/system/file/index.vue delete mode 100644 src/views/system/group/index.vue delete mode 100644 src/views/system/menu/index.vue delete mode 100644 src/views/system/notice/index.vue delete mode 100644 src/views/system/post/index.vue delete mode 100644 src/views/system/role/authUser.vue delete mode 100644 src/views/system/role/index.vue delete mode 100644 src/views/system/role/selectUser.vue delete mode 100644 src/views/system/user/authRole.vue delete mode 100644 src/views/system/user/index.vue delete mode 100644 src/views/system/user/profile/index.vue delete mode 100644 src/views/system/user/profile/resetPwd.vue delete mode 100644 src/views/system/user/profile/userAvatar.vue delete mode 100644 src/views/system/user/profile/userInfo.vue delete mode 100644 src/views/system/vehOper/index.vue delete mode 100644 src/views/test/configs/Run.vue delete mode 100644 src/views/test/configs/index.vue delete mode 100644 src/views/test/detect/index.vue delete mode 100644 src/views/test/log/index.vue delete mode 100644 src/views/test/params/index.vue delete mode 100644 src/views/tool/build/CodeTypeDialog.vue delete mode 100644 src/views/tool/build/DraggableItem.vue delete mode 100644 src/views/tool/build/IconsDialog.vue delete mode 100644 src/views/tool/build/RightPanel.vue delete mode 100644 src/views/tool/build/TreeNodeDialog.vue delete mode 100644 src/views/tool/build/index.vue delete mode 100644 src/views/tool/gen/basicInfoForm.vue delete mode 100644 src/views/tool/gen/createTable.vue delete mode 100644 src/views/tool/gen/editTable.vue delete mode 100644 src/views/tool/gen/genInfoForm.vue delete mode 100644 src/views/tool/gen/importTable.vue delete mode 100644 src/views/tool/gen/index.vue delete mode 100644 src/views/tool/swagger/index.vue diff --git a/.env.development b/.env.development index 3f2a973..368025f 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 招商车研AI测评机器人模拟测试平台 +VITE_APP_TITLE = 招商车研机器人智能测试管理系统 # 开发环境配置 VITE_APP_ENV = 'development' @@ -7,13 +7,8 @@ VITE_APP_ENV = 'development' # 招商车研物联网平台/开发环境 VITE_APP_BASE_API = '/dev-api' -VITE_API_URL = http://192.168.0.222:13080 -VITE_WS_URL = ws://192.168.0.222:13080/ws - -# explanation +VITE_API_URL = http://192.168.0.222:14080 +VITE_WS_URL = ws://192.168.0.222:14080/ws +VITE_PORT = 5174 VITE_INSPECTION_TYPE = "inspection" -VITE_INSPECTION_ARM_DEVICE_ID = "huayan_arm" -VITE_INSPECTION_AGV_DEVICE_ID = "src1100" -VITE_AUDIO_SERVER_URL = "ws://192.168.0.222:13080/ws/audio" -VITE_SPEAKER_DEVICE_ID = "spk1" -VITE_MIC_DEVICE_ID = "mic1" \ No newline at end of file +VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/" diff --git a/.env.production b/.env.production index 4c5aa50..6b82b87 100644 --- a/.env.production +++ b/.env.production @@ -1,5 +1,5 @@ # 页面标题 -VITE_APP_TITLE = 智能座舱测评AI机器人 +VITE_APP_TITLE = 招商车研机器人智能测试管理系统 # 生产环境配置 VITE_APP_ENV = 'production' @@ -10,11 +10,8 @@ VITE_APP_BASE_API = '/prod-api' # 是否在打包时开启压缩,支持 gzip 和 brotli VITE_BUILD_COMPRESS = gzip -#node-red 服务地址 VITE_NODE_RED_URL = 'http://10.148.108.59:13080' - VITE_API_URL = http://192.168.28.10:13080 VITE_WS_URL = ws://192.168.0.201:13080/ws - -# explanation -VITE_INSPECTION_TYPE = "inspection" \ No newline at end of file +VITE_INSPECTION_TYPE = "inspection" +VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/" diff --git a/.env.staging b/.env.staging index 66d8d56..bef0d90 100644 --- a/.env.staging +++ b/.env.staging @@ -1,13 +1,16 @@ # 页面标题 -VITE_APP_TITLE = 招商车研物联网平台管理系统 +VITE_APP_TITLE = 招商车研机器人智能测试管理系统 # 生产环境配置 VITE_APP_ENV = 'staging' -# 招商车研物联网平台管理系统/生产环境 +# 招商车研物联网平台/测试环境 VITE_APP_BASE_API = '/stage-api' # 是否在打包时开启压缩,支持 gzip 和 brotli VITE_BUILD_COMPRESS = gzip + VITE_API_URL = http://10.148.121.100:13080 -VITE_WS_URL = ws://192.168.0.201:13080/ws \ No newline at end of file +VITE_WS_URL = ws://192.168.0.201:13080/ws +VITE_INSPECTION_TYPE = "inspection" +VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/" diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..fbcab77 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: http://doc.ruoyi.vip/ruoyi-vue/other/donate.html diff --git a/.gitignore b/.gitignore index 57a04df..dc89b16 100644 --- a/.gitignore +++ b/.gitignore @@ -18,9 +18,8 @@ selenium-debug.log *.njsproj *.sln *.local -.history package-lock.json yarn.lock -bin/ -pnpm-lock.yaml + +.history diff --git a/README.md b/README.md index 5e715c1..107a327 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,102 @@ +# CMVR IoT 管理控制台 -## 前端运行 +招商车研物联网平台 Vue 3 管理端。项目以 RuoYi-Vue3 3.9.2 为新版基础框架,完整迁移原 `cmvr-iot-ui` 的业务页面、API、机器人模型和运行配置,并连接 `RuoYi-Vue-master` 中的 Spring Boot 4 后端。 + +旧前端仅作为迁移来源,不参与本项目构建。 + +## 功能范围 + +- 系统管理:用户、角色、部门、岗位、菜单、字典、参数、通知和文件。 +- 系统监控:在线用户、操作日志、登录日志、缓存、服务、Quartz 和 Druid。 +- 设备管理:设备注册、终端、机器人、相机、机械臂、灵巧手、机器人头部、麦克风、扬声器和电机。 +- 测试平台:测试项目、任务配置、任务编排、检测项、任务实例和执行流程。 +- 智能巡检:机器人、地图、点位、任务、执行实例、巡检结果、告警和驾驶舱。 +- 交互评价:语音交互、触控交互、评价指标、方案、项目和语料。 +- 智能座舱:车机界面、车辆配置、功能配置、流程编辑和执行评价。 +- 语料与媒体:语料管理、音频上传、图片预览、视频播放和 WebSocket 实时消息。 +- 开发工具:代码生成、表单构建和 Knife4j 接口文档。 + +## 技术栈 + +| 组件 | 版本 | +| --- | --- | +| Vue | 3.5.26 | +| Vite | 6.4.1 | +| Element Plus | 2.13.1 | +| Pinia | 3.0.4 | +| Vue Router | 4.6.4 | +| 可视化 | ECharts、Vue Flow、Three.js、Monaco Editor、XGPlayer | + +## 环境要求 + +- Node.js 20 LTS +- pnpm 10 +- 后端 `RuoYi-Vue-master/cmvr-iot-admin` + +## 开发运行 + +先启动后端,确认 `http://localhost:13080` 可以访问,然后执行: ```bash -# 安装依赖 -yarn --registry=https://registry.npmmirror.com - -# 启动服务 -yarn dev - -# 构建测试环境 yarn build:stage -# 构建生产环境 yarn build:prod -# 前端访问地址 http://localhost:80 +pnpm install +pnpm dev ``` -## 内置功能 +默认地址: -1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 -2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 -3. 岗位管理:配置系统用户所属担任职务。 -4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 -5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 -6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 -7. 参数管理:对系统动态配置常用参数。 -8. 通知公告:系统通知公告信息发布维护。 -9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 -10. 登录日志:系统登录日志记录查询包含登录异常。 -11. 在线用户:当前系统中活跃用户状态监控。 -12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 -13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 -14. 系统接口:根据业务代码自动生成相关的api接口文档。 -15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 -16. 缓存监控:对系统的缓存信息查询,命令统计等。 -17. 在线构建器:拖动表单元素生成相应的HTML代码。 -18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 +- 前端:`http://localhost:80` +- 后端:`http://localhost:13080` +- Knife4j:`http://localhost:13080/doc.html` + +开发配置位于 `.env.development`: + +```dotenv +VITE_APP_TITLE=招商车研物联网平台管理系统 +VITE_APP_BASE_API=/dev-api +VITE_API_URL=http://localhost:13080 +VITE_WS_URL=ws://localhost:13080/ws +VITE_PORT=80 +``` + +## 构建 + +```bash +pnpm build:dev +pnpm build:stage +pnpm build:prod +pnpm preview +``` + +生产构建输出到 `dist`。部署时需要由 Nginx 或网关转发 `/prod-api`,并支持 `/ws` WebSocket、文件上传和媒体请求。 + +## 目录说明 + +```text +public/models 机器人 URDF 和网格模型 +public/inspection 巡检机械臂模型 +src/adapters URDF/Xacro 模型适配 +src/api REST API 封装 +src/components 公共及业务组件 +src/router 公共路由和隐藏业务路由 +src/store Pinia 状态管理 +src/views/device 设备管理与设备控制 +src/views/test 测试业务 +src/views/flow 流程编排 +src/views/inspection 智能巡检 +src/views/evaluate 评价管理 +src/views/vi 语音交互 +src/views/is 智能座舱 +src/views/corpusManger 语料管理 +``` + +业务菜单由后端 `/getRouters` 动态返回。数据库菜单中的 `component` 必须与 `src/views` 下的实际页面路径一致,权限字符必须与后端控制器保持一致。 + +## 配置说明 + +- `.env.development`:本地开发地址。 +- `.env.staging`:测试环境地址。 +- `.env.production`:生产环境地址、Node-RED 和 MinIO。 +- `vite.config.js`:代理、端口、Monaco 和构建分包。 +- `src/settings.js`:布局、页签和版权配置。 + +生产密码、访问密钥和内部网络配置应通过部署环境注入,不要提交新的敏感信息。 diff --git a/bin/build.bat b/bin/build.bat new file mode 100644 index 0000000..ecbb454 --- /dev/null +++ b/bin/build.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [ÐÅϢ] ´ò°üWeb¹¤³̣¬Éú³ÉdistÎļþ¡£ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn build:prod + +pause \ No newline at end of file diff --git a/bin/package.bat b/bin/package.bat new file mode 100644 index 0000000..f5b24e0 --- /dev/null +++ b/bin/package.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [ÐÅϢ] °²װWeb¹¤³̣¬Éú³Énode_modulesÎļþ¡£ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn --registry=https://registry.npmmirror.com + +pause \ No newline at end of file diff --git a/bin/run-web.bat b/bin/run-web.bat new file mode 100644 index 0000000..d2fe397 --- /dev/null +++ b/bin/run-web.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [ÐÅϢ] ʹÓà Vite ÃüÁîÔËÐÐ Web ¹¤³̡£ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn dev + +pause \ No newline at end of file diff --git a/index.html b/index.html index ceebf89..17457d3 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ -