diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development
deleted file mode 100644
index 05a76d2..0000000
--- a/ruoyi-ui/.env.development
+++ /dev/null
@@ -1,17 +0,0 @@
-# 页面标题
-VITE_APP_TITLE = 招商车研物联网平台管理系统
-
-# 开发环境配置
-VITE_APP_ENV = 'development'
-
-# 招商车研物联网平台/开发环境
-VITE_APP_BASE_API = '/dev-api'
-
-VITE_API_URL = http://localhost:13080
-VITE_WS_URL = ws://localhost:13080/ws
-VITE_PORT = 80
-
-# explanation
-VITE_INSPECTION_TYPE = "inspection"
-
-VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/"
diff --git a/ruoyi-ui/.env.production b/ruoyi-ui/.env.production
deleted file mode 100644
index 7d4ac4f..0000000
--- a/ruoyi-ui/.env.production
+++ /dev/null
@@ -1,22 +0,0 @@
-# 页面标题
-VITE_APP_TITLE = 招商车研物联网平台管理系统
-
-# 生产环境配置
-VITE_APP_ENV = 'production'
-
-# 招商车研物联网平台/生产环境
-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"
-
-VITE_MINIO_URL = "http://192.168.28.10:9000/cmvr-iot/"
diff --git a/ruoyi-ui/.env.staging b/ruoyi-ui/.env.staging
deleted file mode 100644
index 66d8d56..0000000
--- a/ruoyi-ui/.env.staging
+++ /dev/null
@@ -1,13 +0,0 @@
-# 页面标题
-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
diff --git a/ruoyi-ui/.gitignore b/ruoyi-ui/.gitignore
deleted file mode 100644
index 57a04df..0000000
--- a/ruoyi-ui/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-.DS_Store
-node_modules/
-dist/
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-**/*.log
-
-tests/**/coverage/
-tests/e2e/reports
-selenium-debug.log
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.local
-.history
-
-package-lock.json
-yarn.lock
-bin/
-pnpm-lock.yaml
diff --git a/ruoyi-ui/Dockerfile b/ruoyi-ui/Dockerfile
deleted file mode 100644
index 4219e85..0000000
--- a/ruoyi-ui/Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM node:18
-
-WORKDIR /app
-
-COPY package*.json ./
-
-RUN npm install
-
-
-COPY . .
diff --git a/ruoyi-ui/Dockerfile.frontend b/ruoyi-ui/Dockerfile.frontend
deleted file mode 100644
index 28e0423..0000000
--- a/ruoyi-ui/Dockerfile.frontend
+++ /dev/null
@@ -1,17 +0,0 @@
-# 使用官方的 Node.js 镜像作为基础镜像
-FROM node:18
-
-# 设置工作目录
-WORKDIR /app
-
-# 复制 package.json 和 package-lock.json(如果存在)到工作目录
-COPY package*.json ./
-
-# 安装项目依赖
-RUN npm install
-
-# 复制项目文件到工作目录
-COPY . .
-
-# 构建项目
-RUN npm run build
diff --git a/ruoyi-ui/LICENSE b/ruoyi-ui/LICENSE
deleted file mode 100644
index 8564f29..0000000
--- a/ruoyi-ui/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2018 RuoYi
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/ruoyi-ui/README.md b/ruoyi-ui/README.md
deleted file mode 100644
index 2daf957..0000000
--- a/ruoyi-ui/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# CMVR IoT 管理控制台
-
-本目录是招商车研物联网平台的完整 Vue 3 前端,功能迁移自原 `cmvr-iot-ui`,旧前端目录保持不变。新前端继续使用原有 REST、WebSocket、文件和媒体接口,可直接连接本项目的 `cmvr-iot-admin`。
-
-## 功能范围
-
-- 系统管理:用户、角色、部门、岗位、菜单、字典、参数、通知和文件。
-- 系统监控:在线用户、操作日志、登录日志、缓存、服务、Quartz 和 Druid。
-- 设备管理:设备注册、终端、机器人、相机、机械臂、灵巧手、机器人头部、麦克风、扬声器和电机。
-- 测试平台:测试项目、任务配置、任务编排、检测项、任务实例和执行流程。
-- 智能巡检:机器人、地图、点位、任务、执行实例、巡检结果、告警和驾驶舱。
-- 交互评价:语音交互、触控交互、评价指标、方案、项目和语料。
-- 智能座舱:车机界面、车辆配置、功能配置、流程编辑和执行评价。
-- 语料与媒体:语料管理、音频上传、图片预览、视频播放和 WebSocket 实时消息。
-- 开发工具:代码生成、表单构建和 Knife4j 接口文档。
-
-## 技术栈
-
-- Vue 3.4
-- Vite 5.3
-- Element Plus 2.9
-- Pinia 2
-- Vue Router 4
-- Axios、ECharts、LogicFlow、Monaco Editor、Three.js、XGPlayer
-
-## 环境要求
-
-- Node.js 18 或 20 LTS
-- pnpm 9
-- 后端 `cmvr-iot-admin`,默认地址 `http://localhost:13080`
-
-## 开发运行
-
-先启动后端,再执行:
-
-```bash
-cd ruoyi-ui
-pnpm install
-pnpm dev
-```
-
-默认地址:
-
-- 前端:`http://localhost:80`
-- 后端:`http://localhost:13080`
-- 接口文档:`http://localhost:13080/doc.html`
-
-开发代理配置位于 `.env.development`:
-
-```dotenv
-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:staging
-pnpm build:prod
-```
-
-构建产物位于 `dist`。生产部署时需要由 Nginx 或网关转发 `/prod-api`,并正确处理 `/ws` WebSocket、文件上传和媒体请求。
-
-## 目录说明
-
-```text
-src/api REST API 封装
-src/assets 样式、图片和图标
-src/components 公共组件
-src/layout 管理端布局
-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` 实际路径。
-
diff --git a/ruoyi-ui/html/ie.html b/ruoyi-ui/html/ie.html
deleted file mode 100644
index 052ffcd..0000000
--- a/ruoyi-ui/html/ie.html
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
- 请升级您的浏览器
-
-
-
-
-
-
-请升级您的浏览器,以便我们更好的为您提供服务!
-您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。
-
-请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束
-自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明 。
-
-您可以选择更先进的浏览器
-推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/index.html b/ruoyi-ui/index.html
deleted file mode 100644
index ceebf89..0000000
--- a/ruoyi-ui/index.html
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
-
-
-
-
-
- 招商车研物联网平台管理系统
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
deleted file mode 100644
index 3a860f3..0000000
--- a/ruoyi-ui/package.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "cmvr-iot-ui",
- "version": "3.8.8",
- "description": "招商车研物联网平台管理系统前端",
- "author": "CMVR",
- "license": "MIT",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build:dev": "vite build --mode development",
- "build:prod": "vite build --mode production",
- "build:staging": "vite build --mode staging --verbose",
- "preview": "vite preview"
- },
- "dependencies": {
- "@element-plus/icons-vue": "2.3.1",
- "@logicflow/core": "^2.0.13",
- "@logicflow/extension": "^2.0.18",
- "@vueup/vue-quill": "1.2.0",
- "@vueuse/core": "10.11.0",
- "ace-builds": "^1.43.0",
- "autofit.js": "^3.2.8",
- "axios": "0.28.1",
- "clipboard": "2.0.11",
- "dayjs": "^1.11.13",
- "echarts": "5.5.1",
- "element-plus": "2.9.4",
- "file-saver": "2.0.5",
- "fuse.js": "6.6.2",
- "js-beautify": "1.14.11",
- "js-cookie": "3.0.5",
- "jsencrypt": "3.3.2",
- "json-editor-vue": "^0.18.1",
- "lodash": "^4.17.21",
- "mitt": "^3.0.1",
- "monaco-editor": "^0.55.1",
- "nprogress": "0.2.0",
- "pako": "^2.1.0",
- "pinia": "2.1.7",
- "pnpm": "^10.23.0",
- "socket.io-client": "^4.8.1",
- "sockjs-client": "^1.6.1",
- "splitpanes": "3.1.5",
- "three": "^0.181.2",
- "urdf-loader": "^0.12.6",
- "uuid": "^11.1.0",
- "vue": "3.4.31",
- "vue-cropper": "1.1.1",
- "vue-router": "4.4.0",
- "vue3-ace-editor": "^2.2.4",
- "vue3-json-viewer": "2.3.0",
- "vuedraggable": "4.1.0",
- "xacro-parser": "^0.3.11",
- "xgplayer": "^3.0.22"
- },
- "devDependencies": {
- "@vitejs/plugin-vue": "5.0.5",
- "file-loader": "^6.2.0",
- "sass": "1.77.5",
- "unplugin-auto-import": "0.17.6",
- "unplugin-vue-setup-extend-plus": "1.0.1",
- "vite": "5.3.2",
- "vite-plugin-compression": "0.5.1",
- "vite-plugin-monaco-editor": "^1.1.0",
- "vite-plugin-svg-icons": "2.0.1"
- },
- "packageManager": "pnpm@9.15.9+sha512.68046141893c66fad01c079231128e9afb89ef87e2691d69e4d40eee228988295fd4682181bae55b58418c3a253bde65a505ec7c5f9403ece5cc3cd37dcf2531"
-}
diff --git a/ruoyi-ui/pnpm-workspace.yaml b/ruoyi-ui/pnpm-workspace.yaml
deleted file mode 100644
index d1a954c..0000000
--- a/ruoyi-ui/pnpm-workspace.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-allowBuilds:
- core-js: true
- es5-ext: true
- esbuild: true
- json-editor-vue: true
- vue-demi: true
diff --git a/ruoyi-ui/public/bot.svg b/ruoyi-ui/public/bot.svg
deleted file mode 100644
index 808cb7b..0000000
--- a/ruoyi-ui/public/bot.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/public/favicon.ico b/ruoyi-ui/public/favicon.ico
deleted file mode 100644
index e263760..0000000
Binary files a/ruoyi-ui/public/favicon.ico and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/elfin10.urdf.xacro b/ruoyi-ui/public/inspection/elfin10/elfin10.urdf.xacro
deleted file mode 100644
index 4aa83c3..0000000
--- a/ruoyi-ui/public/inspection/elfin10/elfin10.urdf.xacro
+++ /dev/null
@@ -1,465 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/public/inspection/elfin10/elfin10_gazebo.xacro b/ruoyi-ui/public/inspection/elfin10/elfin10_gazebo.xacro
deleted file mode 100644
index 01581e9..0000000
--- a/ruoyi-ui/public/inspection/elfin10/elfin10_gazebo.xacro
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
-
-
-
- gazebo_ros2_control/GazeboSystem
- $(find elfin10_ros2_gazebo)/config/elfin_arm_controller.yaml
-
-
-
-
-
-
-
- elfin_hardware_interface/ElfinHWInterface
-
-
-
-
- fake_components/GenericSystem
-
-
-
- gazebo_ros2_control/GazeboSystem
-
-
-
-
-
-
-
- -3.14
- 3.14
-
-
- -1.57
- 1.57
-
-
-
-
-
-
- -2.35
- 2.35
-
-
- -1.57
- 1.57
-
-
-
-
-
-
- -2.61
- 2.61
-
-
- -1.57
- 1.57
-
-
-
-
-
-
- -3.14
- 3.14
-
-
- -1.57
- 1.57
-
-
-
-
-
-
- -2.56
- 2.56
-
-
- -1.57
- 1.57
-
-
-
-
-
-
- -3.14
- 3.14
-
-
- -1.57
- 1.57
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/public/inspection/elfin10/elfin10_transmission.xacro b/ruoyi-ui/public/inspection/elfin10/elfin10_transmission.xacro
deleted file mode 100644
index 12dffc7..0000000
--- a/ruoyi-ui/public/inspection/elfin10/elfin10_transmission.xacro
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_base.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_base.STL
deleted file mode 100644
index fa9dd2b..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_base.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_end_link.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_end_link.STL
deleted file mode 100644
index 8536f5d..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_end_link.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link1.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link1.STL
deleted file mode 100644
index ca0e111..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link2.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link2.STL
deleted file mode 100644
index e5a2628..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link3.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link3.STL
deleted file mode 100644
index bcefa4f..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link4.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link4.STL
deleted file mode 100644
index 565329d..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link4.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link5.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link5.STL
deleted file mode 100644
index a6d7816..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link5.STL and /dev/null differ
diff --git a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link6.STL b/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link6.STL
deleted file mode 100644
index 996d478..0000000
Binary files a/ruoyi-ui/public/inspection/elfin10/meshes/elfin10/elfin_link6.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/dual_arm.urdf b/ruoyi-ui/public/models/dual_arm.urdf
deleted file mode 100644
index 045c4ad..0000000
--- a/ruoyi-ui/public/models/dual_arm.urdf
+++ /dev/null
@@ -1,660 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/public/models/left_arm.urdf b/ruoyi-ui/public/models/left_arm.urdf
deleted file mode 100644
index d62639e..0000000
--- a/ruoyi-ui/public/models/left_arm.urdf
+++ /dev/null
@@ -1,281 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/public/models/meshes/L_ELBOW_R_S.STL b/ruoyi-ui/public/models/meshes/L_ELBOW_R_S.STL
deleted file mode 100644
index 17e4796..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_ELBOW_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_SHOULDER_P_S.STL b/ruoyi-ui/public/models/meshes/L_SHOULDER_P_S.STL
deleted file mode 100644
index 855e54e..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_SHOULDER_P_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_SHOULDER_R_S.STL b/ruoyi-ui/public/models/meshes/L_SHOULDER_R_S.STL
deleted file mode 100644
index 1652ea7..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_SHOULDER_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_SHOULDER_Y_S.STL b/ruoyi-ui/public/models/meshes/L_SHOULDER_Y_S.STL
deleted file mode 100644
index a966726..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_SHOULDER_Y_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_WRIST_P_S.STL b/ruoyi-ui/public/models/meshes/L_WRIST_P_S.STL
deleted file mode 100644
index 10e6156..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_WRIST_P_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_WRIST_R_S.STL b/ruoyi-ui/public/models/meshes/L_WRIST_R_S.STL
deleted file mode 100644
index 4255742..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_WRIST_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/L_WRIST_Y_S.STL b/ruoyi-ui/public/models/meshes/L_WRIST_Y_S.STL
deleted file mode 100644
index ae6a7f9..0000000
Binary files a/ruoyi-ui/public/models/meshes/L_WRIST_Y_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/NECK_P_S.STL b/ruoyi-ui/public/models/meshes/NECK_P_S.STL
deleted file mode 100644
index b294c7f..0000000
Binary files a/ruoyi-ui/public/models/meshes/NECK_P_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/NECK_R_S.STL b/ruoyi-ui/public/models/meshes/NECK_R_S.STL
deleted file mode 100644
index f9e097e..0000000
Binary files a/ruoyi-ui/public/models/meshes/NECK_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/NECK_Y_S.STL b/ruoyi-ui/public/models/meshes/NECK_Y_S.STL
deleted file mode 100644
index f1e1b9b..0000000
Binary files a/ruoyi-ui/public/models/meshes/NECK_Y_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/PELVIS_S.STL b/ruoyi-ui/public/models/meshes/PELVIS_S.STL
deleted file mode 100644
index 133cf46..0000000
Binary files a/ruoyi-ui/public/models/meshes/PELVIS_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_ELBOW_R_S.STL b/ruoyi-ui/public/models/meshes/R_ELBOW_R_S.STL
deleted file mode 100644
index 2fb7b53..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_ELBOW_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_SHOULDER_P_S.STL b/ruoyi-ui/public/models/meshes/R_SHOULDER_P_S.STL
deleted file mode 100644
index 8bfafb1..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_SHOULDER_P_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_SHOULDER_R_S.STL b/ruoyi-ui/public/models/meshes/R_SHOULDER_R_S.STL
deleted file mode 100644
index b14ad9b..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_SHOULDER_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_SHOULDER_Y_S.STL b/ruoyi-ui/public/models/meshes/R_SHOULDER_Y_S.STL
deleted file mode 100644
index aea9b41..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_SHOULDER_Y_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_WRIST_P_S.STL b/ruoyi-ui/public/models/meshes/R_WRIST_P_S.STL
deleted file mode 100644
index b48aa44..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_WRIST_P_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_WRIST_R_S.STL b/ruoyi-ui/public/models/meshes/R_WRIST_R_S.STL
deleted file mode 100644
index 70a997d..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_WRIST_R_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/R_WRIST_Y_S.STL b/ruoyi-ui/public/models/meshes/R_WRIST_Y_S.STL
deleted file mode 100644
index ef15308..0000000
Binary files a/ruoyi-ui/public/models/meshes/R_WRIST_Y_S.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/base_link.STL b/ruoyi-ui/public/models/meshes/base_link.STL
deleted file mode 100644
index f7dae5c..0000000
Binary files a/ruoyi-ui/public/models/meshes/base_link.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/index_force_sensor_1.STL b/ruoyi-ui/public/models/meshes/index_force_sensor_1.STL
deleted file mode 100644
index b271a2a..0000000
Binary files a/ruoyi-ui/public/models/meshes/index_force_sensor_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/index_force_sensor_2.STL b/ruoyi-ui/public/models/meshes/index_force_sensor_2.STL
deleted file mode 100644
index f056699..0000000
Binary files a/ruoyi-ui/public/models/meshes/index_force_sensor_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/index_force_sensor_3.STL b/ruoyi-ui/public/models/meshes/index_force_sensor_3.STL
deleted file mode 100644
index 7bf3a71..0000000
Binary files a/ruoyi-ui/public/models/meshes/index_force_sensor_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/little_force_sensor_1.STL b/ruoyi-ui/public/models/meshes/little_force_sensor_1.STL
deleted file mode 100644
index c4bffaf..0000000
Binary files a/ruoyi-ui/public/models/meshes/little_force_sensor_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/little_force_sensor_2.STL b/ruoyi-ui/public/models/meshes/little_force_sensor_2.STL
deleted file mode 100644
index c1d599d..0000000
Binary files a/ruoyi-ui/public/models/meshes/little_force_sensor_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/little_force_sensor_3.STL b/ruoyi-ui/public/models/meshes/little_force_sensor_3.STL
deleted file mode 100644
index f5d06b4..0000000
Binary files a/ruoyi-ui/public/models/meshes/little_force_sensor_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/middle_force_sensor_1.STL b/ruoyi-ui/public/models/meshes/middle_force_sensor_1.STL
deleted file mode 100644
index d42d830..0000000
Binary files a/ruoyi-ui/public/models/meshes/middle_force_sensor_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/middle_force_sensor_2.STL b/ruoyi-ui/public/models/meshes/middle_force_sensor_2.STL
deleted file mode 100644
index 2feead5..0000000
Binary files a/ruoyi-ui/public/models/meshes/middle_force_sensor_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/middle_force_sensor_3.STL b/ruoyi-ui/public/models/meshes/middle_force_sensor_3.STL
deleted file mode 100644
index bb35da1..0000000
Binary files a/ruoyi-ui/public/models/meshes/middle_force_sensor_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/palm_force_sensor.STL b/ruoyi-ui/public/models/meshes/palm_force_sensor.STL
deleted file mode 100644
index 60824bf..0000000
Binary files a/ruoyi-ui/public/models/meshes/palm_force_sensor.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_index_1.STL b/ruoyi-ui/public/models/meshes/right_index_1.STL
deleted file mode 100644
index c17ff30..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_index_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_index_2.STL b/ruoyi-ui/public/models/meshes/right_index_2.STL
deleted file mode 100644
index 3f5e462..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_index_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_little_1.STL b/ruoyi-ui/public/models/meshes/right_little_1.STL
deleted file mode 100644
index cc79788..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_little_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_little_2.STL b/ruoyi-ui/public/models/meshes/right_little_2.STL
deleted file mode 100644
index c42f6d7..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_little_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_middle_1.STL b/ruoyi-ui/public/models/meshes/right_middle_1.STL
deleted file mode 100644
index a6942b7..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_middle_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_middle_2.STL b/ruoyi-ui/public/models/meshes/right_middle_2.STL
deleted file mode 100644
index 0f3865f..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_middle_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_ring_1.STL b/ruoyi-ui/public/models/meshes/right_ring_1.STL
deleted file mode 100644
index 6fc79ca..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_ring_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_ring_2.STL b/ruoyi-ui/public/models/meshes/right_ring_2.STL
deleted file mode 100644
index a4cf458..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_ring_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_thumb_1.STL b/ruoyi-ui/public/models/meshes/right_thumb_1.STL
deleted file mode 100644
index a4f441c..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_thumb_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_thumb_2.STL b/ruoyi-ui/public/models/meshes/right_thumb_2.STL
deleted file mode 100644
index 0b29f9b..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_thumb_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_thumb_3.STL b/ruoyi-ui/public/models/meshes/right_thumb_3.STL
deleted file mode 100644
index cf5cab1..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_thumb_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/right_thumb_4.STL b/ruoyi-ui/public/models/meshes/right_thumb_4.STL
deleted file mode 100644
index bf147e0..0000000
Binary files a/ruoyi-ui/public/models/meshes/right_thumb_4.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/ring_force_sensor_1.STL b/ruoyi-ui/public/models/meshes/ring_force_sensor_1.STL
deleted file mode 100644
index 40d42a1..0000000
Binary files a/ruoyi-ui/public/models/meshes/ring_force_sensor_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/ring_force_sensor_2.STL b/ruoyi-ui/public/models/meshes/ring_force_sensor_2.STL
deleted file mode 100644
index 0e9e95b..0000000
Binary files a/ruoyi-ui/public/models/meshes/ring_force_sensor_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/ring_force_sensor_3.STL b/ruoyi-ui/public/models/meshes/ring_force_sensor_3.STL
deleted file mode 100644
index 32c799b..0000000
Binary files a/ruoyi-ui/public/models/meshes/ring_force_sensor_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/thumb_force_sensor_1.STL b/ruoyi-ui/public/models/meshes/thumb_force_sensor_1.STL
deleted file mode 100644
index 9993ba8..0000000
Binary files a/ruoyi-ui/public/models/meshes/thumb_force_sensor_1.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/thumb_force_sensor_2.STL b/ruoyi-ui/public/models/meshes/thumb_force_sensor_2.STL
deleted file mode 100644
index ee1fe22..0000000
Binary files a/ruoyi-ui/public/models/meshes/thumb_force_sensor_2.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/thumb_force_sensor_3.STL b/ruoyi-ui/public/models/meshes/thumb_force_sensor_3.STL
deleted file mode 100644
index 57f9055..0000000
Binary files a/ruoyi-ui/public/models/meshes/thumb_force_sensor_3.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/meshes/thumb_force_sensor_4.STL b/ruoyi-ui/public/models/meshes/thumb_force_sensor_4.STL
deleted file mode 100644
index 1842e2e..0000000
Binary files a/ruoyi-ui/public/models/meshes/thumb_force_sensor_4.STL and /dev/null differ
diff --git a/ruoyi-ui/public/models/right_arm.urdf b/ruoyi-ui/public/models/right_arm.urdf
deleted file mode 100644
index b270c08..0000000
--- a/ruoyi-ui/public/models/right_arm.urdf
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/App.vue b/ruoyi-ui/src/App.vue
deleted file mode 100644
index 498b169..0000000
--- a/ruoyi-ui/src/App.vue
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/adapters/URDFAdapter.js b/ruoyi-ui/src/adapters/URDFAdapter.js
deleted file mode 100644
index cbbfceb..0000000
--- a/ruoyi-ui/src/adapters/URDFAdapter.js
+++ /dev/null
@@ -1,461 +0,0 @@
-/**
- * URDF Adapter
- * Converts urdf-loaders result to unified model
- */
-import * as THREE from 'three';
-import { UnifiedRobotModel, Link, Joint, JointLimits, VisualGeometry, CollisionGeometry, InertialProperties } from '@/models/UnifiedRobotModel.js';
-
-export class URDFAdapter {
- /**
- * Convert urdf-loaders robot object to unified model
- * @param {THREE.Group} robot - Robot object returned by urdf-loaders
- * @param {string} urdfXML - Original URDF XML content (optional, for extracting inertial data)
- * @returns {UnifiedRobotModel}
- */
- static convert(robot, urdfXML = null) {
- const model = new UnifiedRobotModel();
- model.name = robot.name || 'robot';
- model.threeObject = robot;
-
- // Mark model type as URDF
- if (!robot.userData) robot.userData = {};
- robot.userData.type = 'urdf';
-
- if (!robot.links || !robot.joints) {
- console.warn('URDF model missing links or joints information');
- return model;
- }
-
- // If XML provided, parse inertial data
- let inertialData = {};
- if (urdfXML) {
- inertialData = this.parseInertialFromXML(urdfXML);
- }
-
- // Convert links
- Object.values(robot.links).forEach(urdfLink => {
- const link = this.convertLink(urdfLink);
-
- // If urdf-loader didn't parse inertial, get from XML
- if (!link.inertial && inertialData[urdfLink.name]) {
- link.inertial = inertialData[urdfLink.name];
- }
-
- model.addLink(link);
- });
-
- // Convert joints
- Object.values(robot.joints).forEach(urdfJoint => {
- const joint = this.convertJoint(urdfJoint);
- model.addJoint(joint);
- });
-
- // If XML provided, supplement effort and velocity from XML (urdf-loaders may not have parsed)
- if (urdfXML) {
- this.supplementJointLimitsFromXML(model, urdfXML);
- }
-
- // Find root link (link that is not a child of any joint)
- const allChildren = new Set(
- Array.from(model.joints.values()).map(j => j.child).filter(c => c)
- );
- const rootLinks = Array.from(model.links.keys()).filter(
- name => !allChildren.has(name)
- );
- if (rootLinks.length > 0) {
- model.rootLink = rootLinks[0];
- }
-
- // Enhance materials for better lighting (MuJoCo style)
- this.enhanceMaterials(robot);
-
- return model;
- }
-
- /**
- * Enhance materials for better lighting (MuJoCo style)
- * Applies consistent shininess and specular properties to all materials
- * Directly modifies materials in place to ensure changes persist
- */
- static enhanceMaterials(robotObject) {
- robotObject.traverse((child) => {
- if (child.isMesh && child.material) {
- // Handle material arrays
- if (Array.isArray(child.material)) {
- child.material = child.material.map(mat => {
- return this.enhanceSingleMaterial(mat);
- });
- } else {
- child.material = this.enhanceSingleMaterial(child.material);
- }
- }
- });
- }
-
- /**
- * Enhance a single material with better lighting properties
- * Returns enhanced material (may be cloned or modified in place)
- * Saves original properties for lighting toggle
- */
- static enhanceSingleMaterial(material) {
- if (material.isMeshPhongMaterial || material.isMeshStandardMaterial) {
- // Save original properties if not already saved (for lighting toggle)
- if (material.userData.originalShininess === undefined) {
- material.userData.originalShininess = material.shininess !== undefined ? material.shininess : 30;
- // IMPORTANT: Save original color to preserve URDF material colors
- if (!material.userData.originalColor && material.color) {
- material.userData.originalColor = material.color.clone();
- }
- // Save original specular - if material had no specular, save null
- if (!material.specular) {
- material.userData.originalSpecular = null;
- } else if (material.specular.isColor) {
- const spec = material.specular;
- if (spec.r < 0.1 && spec.g < 0.1 && spec.b < 0.1) {
- material.userData.originalSpecular = null; // Likely default
- } else {
- material.userData.originalSpecular = spec.clone();
- }
- } else if (typeof material.specular === 'number') {
- if (material.specular === 0x111111 || material.specular < 0x111111) {
- material.userData.originalSpecular = null;
- } else {
- material.userData.originalSpecular = new THREE.Color(material.specular);
- }
- } else {
- material.userData.originalSpecular = null;
- }
- }
-
- // IMPORTANT: Preserve original color from URDF material definitions
- // Do not modify material.color - urdf-loaders already sets the correct color
-
- // Apply enhanced lighting (default enabled)
- // Increase shininess for better highlights
- if (material.shininess === undefined || material.shininess < 50) {
- material.shininess = 50;
- }
-
- // Enhance specular reflection - ensure it's a Color object with proper values
- if (!material.specular) {
- material.specular = new THREE.Color(0.3, 0.3, 0.3);
- } else if (material.specular.isColor) {
- // If it's already a Color object, update values
- if (material.specular.r < 0.2 || material.specular.g < 0.2 || material.specular.b < 0.2) {
- material.specular.setRGB(0.3, 0.3, 0.3);
- }
- } else if (typeof material.specular === 'number') {
- // Convert number to Color object
- if (material.specular < 0x333333) {
- material.specular = new THREE.Color(0.3, 0.3, 0.3);
- } else {
- // Convert hex to Color
- material.specular = new THREE.Color(material.specular);
- if (material.specular.r < 0.2) {
- material.specular.setRGB(0.3, 0.3, 0.3);
- }
- }
- }
-
- // Mark material as needing update
- material.needsUpdate = true;
- return material;
- } else if (material.type === 'MeshBasicMaterial') {
- // Convert MeshBasicMaterial to MeshPhongMaterial
- const oldMaterial = material;
- const envMap = typeof window !== 'undefined' && window.app?.sceneManager?.environmentManager?.getEnvironmentMap();
- const newMaterial = new THREE.MeshPhongMaterial({
- color: oldMaterial.color,
- map: oldMaterial.map,
- transparent: oldMaterial.transparent,
- opacity: oldMaterial.opacity,
- side: oldMaterial.side,
- shininess: 50,
- specular: new THREE.Color(0.3, 0.3, 0.3),
- envMap: envMap || null,
- reflectivity: envMap ? 0.3 : 0
- });
- // Save original properties for lighting toggle
- newMaterial.userData.originalShininess = 30;
- newMaterial.userData.originalSpecular = null; // MeshBasicMaterial had no specular
- return newMaterial;
- }
-
- return material;
- }
-
- static convertLink(urdfLink) {
- const link = new Link(urdfLink.name);
- link.threeObject = urdfLink;
-
- // Convert inertial properties
- if (urdfLink.inertial) {
- link.inertial = this.convertInertial(urdfLink.inertial);
- }
-
- // Note: urdf-loaders has already converted visual and collision to Three.js objects
- // We mainly extract metadata, actual meshes are in threeObject
-
- return link;
- }
-
- static convertJoint(urdfJoint) {
- // URDF joint object has jointType property (not type)
- const jointType = urdfJoint.jointType || urdfJoint.type || 'fixed';
- const joint = new Joint(urdfJoint.name, jointType);
-
- // Extract parent name (urdf-loader returns Three.js object reference)
- joint.parent = urdfJoint.parent?.name || null;
-
- // child may not be in urdfJoint.child, but in Three.js children array
- // In Three.js scene graph, Joint is parent node, Child Link is Joint's child node
- if (urdfJoint.child && urdfJoint.child.name) {
- joint.child = urdfJoint.child.name;
- } else if (urdfJoint.children && urdfJoint.children.length > 0) {
- // Find Link object from children array
- const childLink = urdfJoint.children.find(child =>
- child.isURDFLink || child.type === 'URDFLink'
- );
- if (childLink) {
- joint.child = childLink.name;
- }
- }
-
- joint.threeObject = urdfJoint;
-
- // Convert origin
- if (urdfJoint.origin) {
- joint.origin = {
- xyz: urdfJoint.origin.xyz || [0, 0, 0],
- rpy: urdfJoint.origin.rpy || [0, 0, 0]
- };
- }
-
- // Convert axis
- if (urdfJoint.axis) {
- joint.axis = { xyz: urdfJoint.axis.xyz || [0, 0, 1] };
- }
-
- // Convert limits
- if (urdfJoint.limit) {
- joint.limits = this.convertLimits(urdfJoint.limit);
- }
-
- // Get current value
- if (urdfJoint.angle !== undefined) {
- joint.currentValue = urdfJoint.angle;
- } else if (urdfJoint.jointValue !== undefined) {
- joint.currentValue = urdfJoint.jointValue;
- }
-
- return joint;
- }
-
- static convertLimits(limit) {
- const limits = new JointLimits();
- if (limit.lower !== undefined) limits.lower = limit.lower;
- if (limit.upper !== undefined) limits.upper = limit.upper;
- if (limit.effort !== undefined) limits.effort = limit.effort;
- if (limit.velocity !== undefined) limits.velocity = limit.velocity;
- return limits;
- }
-
- /**
- * Supplement joint effort and velocity information from URDF XML
- * (because urdf-loaders may not have parsed these attributes)
- */
- static supplementJointLimitsFromXML(model, urdfXML) {
- try {
- const parser = new DOMParser();
- const doc = parser.parseFromString(urdfXML, 'text/xml');
-
- const jointElements = doc.querySelectorAll('joint');
- jointElements.forEach(jointEl => {
- const jointName = jointEl.getAttribute('name');
- const joint = model.joints.get(jointName);
-
- if (joint) {
- const limitEl = jointEl.querySelector('limit');
- if (limitEl) {
- if (!joint.limits) {
- joint.limits = new JointLimits();
- }
-
- // Read effort and velocity
- const effort = limitEl.getAttribute('effort');
- const velocity = limitEl.getAttribute('velocity');
-
- if (effort !== null) {
- joint.limits.effort = parseFloat(effort);
- }
- if (velocity !== null) {
- joint.limits.velocity = parseFloat(velocity);
- }
-
- // Also ensure lower and upper are correctly set
- const lower = limitEl.getAttribute('lower');
- const upper = limitEl.getAttribute('upper');
- if (lower !== null) {
- joint.limits.lower = parseFloat(lower);
- }
- if (upper !== null) {
- joint.limits.upper = parseFloat(upper);
- }
- }
- }
- });
- } catch (error) {
- console.error('Failed to supplement joint limit information from XML:', error);
- }
- }
-
- static convertInertial(inertial) {
- const props = new InertialProperties();
- if (inertial.mass !== undefined) props.mass = inertial.mass;
- if (inertial.origin) {
- props.origin = {
- xyz: inertial.origin.xyz || [0, 0, 0],
- rpy: inertial.origin.rpy || [0, 0, 0]
- };
- }
- if (inertial.ixx !== undefined) props.ixx = inertial.ixx;
- if (inertial.iyy !== undefined) props.iyy = inertial.iyy;
- if (inertial.izz !== undefined) props.izz = inertial.izz;
- if (inertial.ixy !== undefined) props.ixy = inertial.ixy;
- if (inertial.ixz !== undefined) props.ixz = inertial.ixz;
- if (inertial.iyz !== undefined) props.iyz = inertial.iyz;
- return props;
- }
-
- /**
- * Parse inertial data from URDF XML
- * @param {string} xmlContent - URDF XML content
- * @returns {Object} Mapping from link names to inertial data
- */
- static parseInertialFromXML(xmlContent) {
- const inertialData = {};
-
- try {
- const parser = new DOMParser();
- const xmlDoc = parser.parseFromString(xmlContent, 'text/xml');
-
- // Get all link elements
- const links = xmlDoc.getElementsByTagName('link');
-
- for (let i = 0; i < links.length; i++) {
- const linkElement = links[i];
- const linkName = linkElement.getAttribute('name');
-
- // Find inertial element
- const inertialElement = linkElement.getElementsByTagName('inertial')[0];
- if (!inertialElement) continue;
-
- const inertial = new InertialProperties();
-
- // Parse mass
- const massElement = inertialElement.getElementsByTagName('mass')[0];
- if (massElement) {
- inertial.mass = parseFloat(massElement.getAttribute('value'));
- }
-
- // Parse origin
- const originElement = inertialElement.getElementsByTagName('origin')[0];
- if (originElement) {
- const xyz = originElement.getAttribute('xyz');
- const rpy = originElement.getAttribute('rpy');
- inertial.origin = {
- xyz: xyz ? xyz.split(' ').map(parseFloat) : [0, 0, 0],
- rpy: rpy ? rpy.split(' ').map(parseFloat) : [0, 0, 0]
- };
- } else {
- inertial.origin = { xyz: [0, 0, 0], rpy: [0, 0, 0] };
- }
-
- // Parse inertia
- const inertiaElement = inertialElement.getElementsByTagName('inertia')[0];
- if (inertiaElement) {
- inertial.ixx = parseFloat(inertiaElement.getAttribute('ixx')) || 0;
- inertial.iyy = parseFloat(inertiaElement.getAttribute('iyy')) || 0;
- inertial.izz = parseFloat(inertiaElement.getAttribute('izz')) || 0;
- inertial.ixy = parseFloat(inertiaElement.getAttribute('ixy')) || 0;
- inertial.ixz = parseFloat(inertiaElement.getAttribute('ixz')) || 0;
- inertial.iyz = parseFloat(inertiaElement.getAttribute('iyz')) || 0;
- }
-
- inertialData[linkName] = inertial;
- }
- } catch (error) {
- console.error('Failed to parse URDF XML inertial data:', error);
- }
-
- return inertialData;
- }
-
- /**
- * Set joint angle (using urdf-loaders' setJointValue method)
- * Reference URDFClasses.js setJointValue implementation
- */
- static setJointAngle(joint, angle, ignoreLimits = false) {
- joint.currentValue = angle;
-
- // URDF format: use urdf-loader's setJointValue method
- if (joint.threeObject) {
- // If ignoring limits, temporarily modify URDF joint object's limit values
- let originalLimits = null;
- if (ignoreLimits && joint.threeObject.limit) {
- originalLimits = {
- lower: joint.threeObject.limit.lower,
- upper: joint.threeObject.limit.upper
- };
- joint.threeObject.limit.lower = -Math.PI * 2;
- joint.threeObject.limit.upper = Math.PI * 2;
- }
-
- // Prefer setJointValue method (urdf-loader's standard method)
- if (typeof joint.threeObject.setJointValue === 'function') {
- joint.threeObject.setJointValue(angle);
-
- // Restore original limits
- if (originalLimits && joint.threeObject.limit) {
- joint.threeObject.limit.lower = originalLimits.lower;
- joint.threeObject.limit.upper = originalLimits.upper;
- }
- return;
- } else if (typeof joint.threeObject.setAngle === 'function') {
- joint.threeObject.setAngle(angle);
-
- // Restore original limits
- if (originalLimits && joint.threeObject.limit) {
- joint.threeObject.limit.lower = originalLimits.lower;
- joint.threeObject.limit.upper = originalLimits.upper;
- }
- return;
- }
-
- // Restore original limits (if none of the above methods executed)
- if (originalLimits && joint.threeObject.limit) {
- joint.threeObject.limit.lower = originalLimits.lower;
- joint.threeObject.limit.upper = originalLimits.upper;
- }
-
- // If none available, manually set rotation
- // Note: For URDF, we usually shouldn't reach here, as urdf-loader should provide setJointValue
- console.warn(`Joint ${joint.name} has no setJointValue or setAngle method, attempting manual setup`);
- if (joint.type === 'revolute' || joint.type === 'continuous') {
- const axis = joint.axis ? new THREE.Vector3(...joint.axis.xyz).normalize() : new THREE.Vector3(0, 0, 1);
- // Note: joint.threeObject may not be a Three.js object, cannot directly set rotation
- if (joint.threeObject.rotation) {
- joint.threeObject.rotation.setFromAxisAngle(axis, angle);
- }
- } else if (joint.type === 'prismatic') {
- const axis = joint.axis ? new THREE.Vector3(...joint.axis.xyz).normalize() : new THREE.Vector3(1, 0, 0);
- if (joint.threeObject.position) {
- joint.threeObject.position.copy(axis.multiplyScalar(angle));
- }
- }
- } else {
- console.warn(`Joint ${joint.name} has no threeObject`);
- }
- }
-}
-
diff --git a/ruoyi-ui/src/adapters/XacroAdapter.js b/ruoyi-ui/src/adapters/XacroAdapter.js
deleted file mode 100644
index 97b4c56..0000000
--- a/ruoyi-ui/src/adapters/XacroAdapter.js
+++ /dev/null
@@ -1,616 +0,0 @@
-/**
- * Xacro Adapter
- *
- * Parses ROS Xacro files and converts them to URDF format using xacro-parser.
- *
- * Supported Features:
- * - Property definitions and substitutions (xacro:property)
- * - Macro definitions with parameters (xacro:macro)
- * - Conditional blocks (xacro:if, xacro:unless)
- * - File inclusions (xacro:include) with package:// and relative paths
- * - Python-style boolean constants (True/False)
- * - Arithmetic expressions and property evaluation
- *
- * Compatibility:
- * - ROS Jade and later (inOrder=true, requirePrefix=true, localProperties=true)
- * - Automatically injects True/False constants for compatibility with ROS xacro files
- *
- * Usage:
- * - Upload all related xacro files (main file and included files)
- * - The adapter automatically resolves file inclusions from the uploaded file map
- * - Mesh files are resolved using package:// paths or relative paths
- */
-import { XacroParser } from 'xacro-parser';
-import { URDFAdapter } from './URDFAdapter.js';
-
-export class XacroAdapter {
- /**
- * Parse xacro content and convert to unified model
- * @param {string} xacroContent - Xacro file content
- * @param {string} fileName - Xacro file name (for working path)
- * @param {Map} fileMap - File map (path -> File object)
- * @param {File} file - Original file object (optional)
- * @returns {Promise}
- */
- static async parse(xacroContent, fileName, fileMap = null, file = null) {
- try {
- // Create xacro parser
- const parser = new XacroParser();
-
- // Configure parser for ROS Jade and later (default settings)
- parser.inOrder = true;
- parser.requirePrefix = true;
- parser.localProperties = true;
-
- // Set working path (directory where xacro file is located)
- const workingPath = fileName.includes('/')
- ? fileName.substring(0, fileName.lastIndexOf('/') + 1)
- : '';
- parser.workingPath = workingPath;
-
- // Inject Python-style boolean constants as xacro properties
- // Some xacro files use True/False (capitalized) in conditions
- xacroContent = this.injectBooleanConstants(xacroContent);
-
- // Extract and set xacro arguments with their default values
- // Also add common ROS arguments that might be used without definition
- const xacroArgs = this.extractXacroArguments(xacroContent);
-
- // Add common ROS arguments with sensible defaults if not already defined
- if (!xacroArgs.hasOwnProperty('DEBUG')) {
- xacroArgs.DEBUG = 'false';
- }
- if (!xacroArgs.hasOwnProperty('SELF_COLLIDE')) {
- xacroArgs.SELF_COLLIDE = 'false';
- }
-
- parser.arguments = xacroArgs;
-
- // If fileMap provided, setup custom file loader
- if (fileMap) {
- parser.getFileContents = async (path) => {
- return await this.loadFileFromMap(path, fileMap, workingPath);
- };
- }
-
- // Parse xacro to URDF XML
- const urdfXML = await parser.parse(xacroContent);
-
-
- // Convert XMLDocument to string
- const serializer = new XMLSerializer();
- let urdfString = serializer.serializeToString(urdfXML);
-
- // Clean up the XML string - remove empty xmlns attributes that might cause issues
- urdfString = urdfString.replace(/\sxmlns=""/g, '');
-
- // Re-parse the URDF string with DOMParser to create a clean XMLDocument
- // This removes any xacro-specific nodes that urdf-loader might not handle
- const domParser = new DOMParser();
- const cleanUrdfXML = domParser.parseFromString(urdfString, 'text/xml');
-
- // Check for parsing errors
- const parseError = cleanUrdfXML.querySelector('parsererror');
- if (parseError) {
- throw new Error('Generated URDF has invalid XML: ' + parseError.textContent);
- }
-
- // Remove problematic elements that urdf-loader might not handle well
- // Remove gazebo elements (plugins, sensors, etc.)
- const gazeboElements = cleanUrdfXML.querySelectorAll('gazebo');
- gazeboElements.forEach(el => el.parentNode?.removeChild(el));
-
- // Remove transmission elements (these are for Gazebo/ROS control)
- const transmissionElements = cleanUrdfXML.querySelectorAll('transmission');
- transmissionElements.forEach(el => el.parentNode?.removeChild(el));
-
- // Remove visual/collision elements with empty geometry tags
- this.removeEmptyGeometry(cleanUrdfXML);
-
- // Clean up empty text nodes and comments that might cause issues
- this.cleanXMLNodes(cleanUrdfXML.documentElement);
-
- // Convert the clean XMLDocument back to string for URDFLoader
- const finalUrdfString = serializer.serializeToString(cleanUrdfXML);
-
- // Now use existing URDF loading infrastructure
- // Import URDFLoader dynamically
- const urdfModule = await import('urdf-loader');
- const URDFLoader = urdfModule.URDFLoader || urdfModule.default || urdfModule;
-
- return new Promise((resolve, reject) => {
- const loader = new URDFLoader();
- loader.parseCollision = true;
-
- // Extract directory where URDF file is located
- const urdfDir = workingPath;
-
- // If file map provided, setup resource loader (same as URDF loading)
- if (fileMap) {
- // Parse URDF content, find all used package names
- const packages = this.extractPackagesFromURDF(finalUrdfString);
-
- // Build package map
- const packageMap = {};
- packages.forEach(pkg => {
- packageMap[pkg] = pkg;
- });
- packageMap[''] = '';
-
- loader.packages = packageMap;
-
- // Set URL Modifier (same as URDF loading)
- const urlModifier = (url) => {
- // Handle blob URLs
- if (url.startsWith('blob:')) {
- const blobMatch = url.match(/^blob:https?:\/\/[^\/]+\/(.+)$/);
- if (blobMatch && blobMatch[1]) {
- const fileName = blobMatch[1];
- if (/\.(jpg|jpeg|png|gif|bmp|tga|tiff|webp|dae|stl|obj|gltf|glb)$/i.test(fileName)) {
- url = fileName;
- } else {
- return url;
- }
- } else {
- return url;
- }
- }
-
- const isTextureFile = /\.(jpg|jpeg|png|gif|bmp|tga|tiff|webp)$/i.test(url);
- const isMeshFile = /\.(dae|stl|obj|gltf|glb)$/i.test(url);
-
- let meshPath = url;
-
- // Remove http:// or https:// prefix
- if (meshPath.startsWith('http://') || meshPath.startsWith('https://')) {
- try {
- const urlObj = new URL(meshPath);
- meshPath = urlObj.pathname;
- if (meshPath.startsWith('/')) {
- meshPath = meshPath.substring(1);
- }
- } catch (e) {
- // Invalid URL, use as-is
- }
- }
-
- // Remove package:// prefix
- if (meshPath.startsWith('package://')) {
- meshPath = meshPath.replace(/^package:\/\//, '');
- const parts = meshPath.split('/');
- if (parts.length > 1) {
- meshPath = parts.slice(1).join('/');
- }
- }
-
- // Remove leading ./
- meshPath = meshPath.replace(/^\.\//, '');
-
- // Handle relative paths
- let normalizedPath = meshPath;
- if (meshPath.includes('../')) {
- const parts = meshPath.split('/');
- const resolvedParts = [];
- for (const part of parts) {
- if (part === '..') {
- resolvedParts.pop();
- } else if (part !== '.' && part !== '') {
- resolvedParts.push(part);
- }
- }
- normalizedPath = resolvedParts.join('/');
- }
-
- // Build full path
- const fullPath = urdfDir + normalizedPath;
- const altPath = urdfDir + meshPath;
-
- // Find file in fileMap
- let matchedFile = fileMap.get(fullPath);
-
- if (!matchedFile && altPath !== fullPath) {
- matchedFile = fileMap.get(altPath);
- }
-
- if (!matchedFile) {
- matchedFile = fileMap.get(normalizedPath);
- }
-
- if (!matchedFile) {
- matchedFile = fileMap.get(meshPath);
- }
-
- if (!matchedFile) {
- const targetFileName = normalizedPath.split('/').pop() || meshPath.split('/').pop();
- for (const [key, file] of fileMap.entries()) {
- const keyFileName = key.split('/').pop();
- if (keyFileName === targetFileName) {
- matchedFile = file;
- break;
- }
- }
- }
-
- if (matchedFile) {
- const bloburl = URL.createObjectURL(matchedFile);
- return bloburl;
- }
-
- return url;
- };
-
- loader.manager.setURLModifier(urlModifier);
-
- // Custom loadMeshCb (same as URDF loading)
- const originalLoadMeshCb = loader.loadMeshCb || loader.defaultMeshLoader.bind(loader);
- loader.loadMeshCb = (path, manager, done) => {
- this.findFileInMapByPath(path, fileMap, urdfDir).then(file => {
- if (file) {
- const ext = (file.name || path).toLowerCase().split('.').pop();
- this.loadMeshFileAsync(file, ext, manager).then(meshObject => {
- if (meshObject) {
- done(meshObject, null);
- } else {
- done(null, new Error(`Failed to load mesh file: ${path}`));
- }
- }).catch(err => {
- console.error(`Failed to load mesh: ${path}`, err);
- done(null, err);
- });
- } else {
- let stlPath = path
- stlPath = stlPath.replace('file:///', 'inspection/elfin10')
- originalLoadMeshCb(path, manager, done);
- }
- }).catch(error => {
- console.error(`Failed to find file: ${path}`, error);
- originalLoadMeshCb(path, manager, done);
- });
- };
- }
-
- // Create temporary URL for URDF content
- const blob = new Blob([finalUrdfString], { type: 'text/xml' });
- const url = URL.createObjectURL(blob);
-
- loader.load(url, (robot) => {
- URL.revokeObjectURL(url);
-
- // Convert to unified model using URDFAdapter
- try {
- const model = URDFAdapter.convert(robot, finalUrdfString);
- resolve(model);
- } catch (error) {
- console.error('[XacroAdapter] URDF conversion error:', error);
- reject(new Error('URDF conversion failed: ' + error.message));
- }
- }, undefined, (error) => {
- URL.revokeObjectURL(url);
- console.error('[XacroAdapter] URDF loading error:', error);
- reject(new Error('URDF loading failed: ' + (error.message || error)));
- });
- });
- } catch (error) {
- console.error('[XacroAdapter] Xacro parsing error:', error);
- throw new Error('Xacro parsing failed: ' + error.message);
- }
- }
-
- /**
- * Load file from fileMap for xacro includes
- * @param {string} path - File path
- * @param {Map} fileMap - File map
- * @param {string} workingPath - Working directory
- * @returns {Promise}
- */
- static async loadFileFromMap(path, fileMap, workingPath) {
- // Clean path - remove leading slash if present
- let cleanPath = path;
- // if (cleanPath.startsWith('/')) {
- // cleanPath = cleanPath.substring(1);
- // }
-
- // // Remove leading ./
- // cleanPath = cleanPath.replace(/^\.\//, '');
- cleanPath = cleanPath.split('///')[1];
- // Try different path combinations
- const possiblePaths = [
- cleanPath,
- workingPath + cleanPath,
- path,
- workingPath + path.replace(/^\/+/, ''),
- // Also try without the first directory component
- cleanPath.includes('/') ? cleanPath.substring(cleanPath.indexOf('/') + 1) : cleanPath,
- ];
-
- // Try each path
- for (const tryPath of possiblePaths) {
- const file = fileMap.get(tryPath);
- if (file) {
- const content = await file.text();
- return content;
- }
- }
-
- // Try filename only match
- const fileName = cleanPath.split('/').pop();
- for (const [key, file] of fileMap.entries()) {
- const keyFileName = key.split('/').pop();
- if (keyFileName === fileName) {
- const content = await file.text();
- return content;
- }
- }
-
- console.error('[XacroAdapter] Cannot find included file:', path);
- throw new Error(`Cannot find included file: ${path}`);
- }
-
- /**
- * Remove visual/collision elements with empty geometry tags
- * xacro-parser may not fully expand conditional geometry (xacro:if)
- * We'll just remove these empty visual elements rather than try to fix them
- * @param {XMLDocument} xmlDoc - XML document to clean
- */
- static removeEmptyGeometry(xmlDoc) {
- // Find all geometry elements
- const geometryElements = xmlDoc.querySelectorAll('geometry');
-
- geometryElements.forEach(geom => {
- // Check if geometry is empty (no child elements)
- if (!geom.children || geom.children.length === 0) {
- // Find the parent visual or collision element
- let parent = geom.parentNode;
- if (parent) {
- const grandParent = parent.parentNode;
- if (grandParent) {
- if (parent.nodeName === 'visual' || parent.nodeName === 'collision') {
- // Remove empty visual/collision elements
- grandParent.removeChild(parent);
- }
- }
- }
- }
- });
- }
-
- /**
- * Recursively clean XML nodes - remove empty text nodes and comments
- * @param {Element} element - Element to clean
- */
- static cleanXMLNodes(element) {
- if (!element || !element.childNodes) return;
-
- const nodesToRemove = [];
-
- // Collect nodes to remove
- for (let i = 0; i < element.childNodes.length; i++) {
- const node = element.childNodes[i];
-
- // Remove comments
- if (node.nodeType === Node.COMMENT_NODE) {
- nodesToRemove.push(node);
- }
- // Remove empty or whitespace-only text nodes
- else if (node.nodeType === Node.TEXT_NODE) {
- if (!node.nodeValue || node.nodeValue.trim() === '') {
- nodesToRemove.push(node);
- }
- }
- // Recursively clean element nodes
- else if (node.nodeType === Node.ELEMENT_NODE) {
- this.cleanXMLNodes(node);
- }
- }
-
- // Remove collected nodes
- nodesToRemove.forEach(node => {
- element.removeChild(node);
- });
- }
-
- /**
- * Extract package names from URDF content
- * @param {string} urdfContent - URDF content
- * @returns {Set}
- */
- static extractPackagesFromURDF(urdfContent) {
- const packages = new Set();
- const packageRegex = /package:\/\/([^\/]+)/g;
- let match;
- while ((match = packageRegex.exec(urdfContent)) !== null) {
- packages.add(match[1]);
- }
- return packages;
- }
-
- /**
- * Find file in fileMap by path
- * @param {string} path - File path
- * @param {Map} fileMap - File map
- * @param {string} urdfDir - URDF directory
- * @returns {Promise}
- */
- static async findFileInMapByPath(path, fileMap, urdfDir) {
- let meshPath = path;
-
- // Remove blob: prefix
- meshPath = meshPath.replace(/^blob:[^\/]+\//, '');
-
- // Remove package:// prefix
- if (meshPath.startsWith('package://')) {
- meshPath = meshPath.replace(/^package:\/\//, '');
- const parts = meshPath.split('/');
- if (parts.length > 1) {
- meshPath = parts.slice(1).join('/');
- }
- }
-
- // Remove leading ./
- meshPath = meshPath.replace(/^\.\//, '');
-
- // Build full path
- const fullPath = urdfDir + meshPath;
-
- // Try full path
- let file = fileMap.get(fullPath);
- if (file) return file;
-
- // Try path without directory
- file = fileMap.get(meshPath);
- if (file) return file;
-
- // Try filename match
- const targetFileName = meshPath.split('/').pop();
- for (const [key, f] of fileMap.entries()) {
- const keyFileName = key.split('/').pop();
- if (keyFileName === targetFileName) {
- return f;
- }
- }
-
- return null;
- }
-
- /**
- * Load mesh file asynchronously
- * @param {File} file - File object
- * @param {string} ext - File extension
- * @param {THREE.LoadingManager} manager - Loading manager
- * @returns {Promise}
- */
- static async loadMeshFileAsync(file, ext, manager) {
- const THREE = await import('three');
- const blobUrl = URL.createObjectURL(file);
-
- try {
- let meshObject = null;
-
- switch (ext) {
- case 'stl': {
- const { STLLoader } = await import('three/examples/jsm/loaders/STLLoader.js');
- const stlLoader = new STLLoader(manager);
- const stlGeometry = await new Promise((resolve, reject) => {
- stlLoader.load(blobUrl, resolve, undefined, reject);
- });
- const stlMaterial = new THREE.MeshPhongMaterial();
- meshObject = new THREE.Mesh(stlGeometry, stlMaterial);
- break;
- }
-
- case 'dae': {
- const { ColladaLoader } = await import('three/examples/jsm/loaders/ColladaLoader.js');
- const colladaLoader = new ColladaLoader(manager);
- const colladaModel = await new Promise((resolve, reject) => {
- colladaLoader.load(blobUrl, resolve, undefined, reject);
- });
- meshObject = colladaModel.scene;
-
- // Remove lights
- if (meshObject && meshObject.traverse) {
- const lightsToRemove = [];
- meshObject.traverse(child => {
- if (child.isLight) {
- lightsToRemove.push(child);
- }
- });
- lightsToRemove.forEach(light => {
- if (light.parent) {
- light.parent.remove(light);
- }
- });
- }
- break;
- }
-
- case 'obj': {
- const { OBJLoader } = await import('three/examples/jsm/loaders/OBJLoader.js');
- const objLoader = new OBJLoader(manager);
- meshObject = await new Promise((resolve, reject) => {
- objLoader.load(blobUrl, resolve, undefined, reject);
- });
- break;
- }
-
- case 'gltf':
- case 'glb': {
- const { GLTFLoader } = await import('three/examples/jsm/loaders/GLTFLoader.js');
- const gltfLoader = new GLTFLoader(manager);
- const gltfModel = await new Promise((resolve, reject) => {
- gltfLoader.load(blobUrl, resolve, undefined, reject);
- });
- meshObject = gltfModel.scene;
- break;
- }
-
- default:
- console.warn(`Unsupported file format: ${ext}`);
- URL.revokeObjectURL(blobUrl);
- return null;
- }
-
- URL.revokeObjectURL(blobUrl);
- return meshObject;
- } catch (error) {
- URL.revokeObjectURL(blobUrl);
- console.error(`Failed to load mesh file: ${file.name}`, error);
- throw error;
- }
- }
-
- /**
- * Inject Python-style boolean constants (True/False) into xacro content
- * Some xacro files use capitalized True/False in conditional expressions
- * The parameters are passed as strings ("True", "False") but compared to constants
- * We define the constants to match the string values for comparison to work
- * @param {string} xacroContent - Original xacro content
- * @returns {string} - Modified xacro content with boolean constants defined
- */
- static injectBooleanConstants(xacroContent) {
- // Find the robot tag opening
- const robotTagMatch = xacroContent.match(/(]*>)/);
- if (!robotTagMatch) {
- return xacroContent;
- }
-
- // Define True/False as string properties for comparison
- // When mirror_dae="True" is passed, it becomes the string "True"
- // We want ${mirror_dae == True} to work, so True must also be "True"
- const booleanProperties = `
-
-
-
-`;
-
- const insertPosition = robotTagMatch.index + robotTagMatch[0].length;
- return xacroContent.substring(0, insertPosition) +
- booleanProperties +
- xacroContent.substring(insertPosition);
- }
-
- /**
- * Extract xacro arguments and their default values from xacro content
- * Xacro files can define arguments using
- * These need to be provided to the parser via parser.arguments
- * @param {string} xacroContent - Xacro file content
- * @returns {Object} - Object with argument names as keys and default values
- */
- static extractXacroArguments(xacroContent) {
- const args = {};
-
- // Match
- // Also match (without xacro: prefix)
- const argPattern = /<(?:xacro:)?arg\s+name=["']([^"']+)["'](?:\s+default=["']([^"']*)["'])?/g;
-
- let match;
- while ((match = argPattern.exec(xacroContent)) !== null) {
- const argName = match[1];
- const defaultValue = match[2] || 'false'; // Default to 'false' if no default specified
- args[argName] = defaultValue;
- }
-
- return args;
- }
-}
-
-
diff --git a/ruoyi-ui/src/api/corpusManger/corpus.js b/ruoyi-ui/src/api/corpusManger/corpus.js
deleted file mode 100644
index 85b75ca..0000000
--- a/ruoyi-ui/src/api/corpusManger/corpus.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-export function addCategory(data) {
- return request({
- url: '/tts/corpus/category',
- method: 'post',
- data: data
- })
-}
-
-export function getCategoryTreeApi() {
- return request({
- url: '/tts/corpus/category/tree',
- method: 'get'
- })
-}
-
-export function updateCategoryTreeApi(data) {
- return request({
- url: '/tts/corpus/category',
- method: 'put',
- data: data
- })
-}
-
-export function deleteCategory(id) {
- return request({
- url: `/tts/corpus/category/${id}`,
- method: 'delete',
- })
-}
-
-export function getCorpusListApi(params) {
- return request({
- url: '/tts/corpus/list',
- method: 'get',
- params: params
- })
-}
-
-export function getDashboardApi() {
- return request({
- url: '/tts/corpus/dashboard/stats',
- method: 'get'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/corpusManger/speech_synthesis.js b/ruoyi-ui/src/api/corpusManger/speech_synthesis.js
deleted file mode 100644
index 8ed5277..0000000
--- a/ruoyi-ui/src/api/corpusManger/speech_synthesis.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import request from '@/utils/request'
-
-export function taskApi(data) {
- return request({
- url: '/tts/task',
- method: 'post',
- data: data
- })
-}
-
-export function taskListApi(params) {
- return request({
- url: '/tts/task/list',
- method: 'get',
- params: params
- })
-}
-
-export function getDashboardApi(params) {
- return request({
- url: '/tts/task/dashboard/stats',
- method: 'get'
- })
-}
-
-export function downloadWavApi(id) {
- return request({
- url: `/tts/task/audio/${id}`,
- method: 'get',
- responseType: 'blob'
- })
-}
-
-export function deleteTask(ids) {
- return request({
- url: `/tts/task/${ids}`,
- method: 'delete'
- })
-}
-
-export function regenerateApi(id) {
- return request({
- url: `/tts/task/regenerate/${id}`,
- method: 'post'
- })
-}
-
-export function generalizationApi(data) {
- return request({
- url: '/tts/task/llm/query',
- method: 'post',
- data: data
- })
-}
-
-export function batchTaskApi(data) {
- return request({
- url: '/tts/task/batch',
- method: 'post',
- data: data
- })
-}
-
-export function saveTaskApi(data) {
- return request({
- url: `/tts/task/save-to-corpus/${data.taskId}/${data.categoryId}`,
- method: 'post'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/arm.js b/ruoyi-ui/src/api/device/arm.js
deleted file mode 100644
index 00e859c..0000000
--- a/ruoyi-ui/src/api/device/arm.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import request from '@/utils/request'
-// 移动机械臂
-export function moveJ(data) {
- return request({
- url: '/api/humanoid/moveJ',
- method: 'post',
- data: data
- })
-}
-
-// 获取机械臂状态
-export function status(data) {
- return request({
- url: '/api/humanoid/status',
- method: 'post',
- data: data
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/dexHand.js b/ruoyi-ui/src/api/device/dexHand.js
deleted file mode 100644
index 0d8793d..0000000
--- a/ruoyi-ui/src/api/device/dexHand.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import request from '@/utils/request'
-
-// 获取灵巧手状态
-export function status(query) {
- return request({
- url: '/api/dexHand/status',
- method: 'get',
- params: query
- })
-}
-
-// 设置灵巧手弯曲角度
-export function setDexHandAngle(query) {
- return request({
- url: '/api/dexHand/angle',
- method: 'get',
- params: query
- })
-}
diff --git a/ruoyi-ui/src/api/device/flow.js b/ruoyi-ui/src/api/device/flow.js
deleted file mode 100644
index f309674..0000000
--- a/ruoyi-ui/src/api/device/flow.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import request from '@/utils/request'
-
-// 发布流程
-export function flowDeploy(data) {
- return request({
- url: '/flow/publish',
- method: 'post',
- data: data
- })
-}
-
-export function flowExecute(data) {
- return request({
- url: '/flow/execute',
- method: 'post',
- data: data
- })
-}
-
-export function flowAction(data) {
- return request({
- url: '/flow/action',
- method: 'post',
- data: data
- })
-}
-
-export function flowExecuteTrial(data) {
- return request({
- url: '/flow/executeTrial',
- method: 'post',
- data: data
- })
-}
-
-export function flowView(data) {
- return request({
- url: '/flow/view',
- method: 'post',
- data: data
- })
-}
-
-export function flowPause(instId) {
- return request({
- url: `/flow/pause/${instId}`,
- method: 'post'
- })
-}
-
-export function flowResume(instId) {
- return request({
- url: `/flow/resume/${instId}`,
- method: 'post'
- })
-}
-
-export function flowStop(instId) {
- return request({
- url: `/flow/stop/${instId}`,
- method: 'post'
- })
-}
-
-export function getArmStatus(params) {
- return request({
- url: '/api/arm/getPose',
- method: 'get',
- params: params
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/microphone.js b/ruoyi-ui/src/api/device/microphone.js
deleted file mode 100644
index d14002d..0000000
--- a/ruoyi-ui/src/api/device/microphone.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-// 开始录音
-export function startMicrophoneApi(data) {
- return request({
- url: '/api/Microphone/start',
- method: 'post',
- data: data
- })
-}
-
-// 暂停录音
-export function pauseMicrophoneApi(data) {
- return request({
- url: '/api/Microphone/pause',
- method: 'post',
- data: data
- })
-}
-
-// 恢复录音
-export function resumeMicrophoneApi(data) {
- return request({
- url: '/api/Microphone/resume',
- method: 'post',
- data: data
- })
-}
-
-// 停止录音
-export function stopMicrophoneApi(data) {
- return request({
- url: '/api/Microphone/stop',
- method: 'post',
- data: data
- })
-}
-
-// 播放音频
-export function playSpeaker(data) {
- return request({
- url: '/api/Speaker/play',
- method: 'post',
- data: data
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/profile.js b/ruoyi-ui/src/api/device/profile.js
deleted file mode 100644
index 8b88dc8..0000000
--- a/ruoyi-ui/src/api/device/profile.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import request from '@/utils/request'
-
-// 查询设备配置信息列表
-export function listProfile(query) {
- return request({
- url: '/device/profile/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询设备配置信息详细
-export function getProfile(query) {
- return request({
- url: '/device/profile/parameterInfo/',
- method: 'get',
- params: query
- })
-}
-
-// 新增设备配置信息
-export function addProfile(data) {
- return request({
- url: '/device/profile',
- method: 'post',
- data: data
- })
-}
-
-// 修改设备配置信息
-export function updateProfile(data) {
- return request({
- url: '/device/profile',
- method: 'put',
- data: data
- })
-}
-
-// 删除设备配置信息
-export function delProfile(id) {
- return request({
- url: '/device/profile/' + id,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/device/register.js b/ruoyi-ui/src/api/device/register.js
deleted file mode 100644
index 2234a78..0000000
--- a/ruoyi-ui/src/api/device/register.js
+++ /dev/null
@@ -1,146 +0,0 @@
-import request from '@/utils/request'
-
-// 查询设备注册列表
-export function listRegister(query) {
- return request({
- url: '/device/register/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询设备注册详细
-export function getRegister(id) {
- return request({
- url: '/device/register/' + id,
- method: 'get'
- })
-}
-
-// 新增设备注册
-export function addRegister(data) {
- return request({
- url: '/device/register',
- method: 'post',
- data: data
- })
-}
-
-// 修改设备注册
-export function updateRegister(data) {
- return request({
- url: '/device/register',
- method: 'put',
- data: data
- })
-}
-
-// 删除设备注册
-export function delRegister(id) {
- return request({
- url: '/device/register/' + id,
- method: 'delete'
- })
-}
-
-// 设备示教
-export function deviceTeach(id) {
- return request({
- url: '/device/profile/' + id,
- method: 'get',
- })
-}
-
-// 设备示教参数修改
-export function deviceUpdateProfile(data) {
- return request({
- url: '/device/profile/updateProfile',
- method: 'put',
- data: data,
- })
-}
-
-// 新增音色
-export function createTimbre(data) {
- return request({
- url: '/show/tts/create',
- method: 'post',
- headers: {
- 'Content-Type': 'multipart/form-data',
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- data: data,
- })
-}
-
-// 获取音色
-export function getTts() {
- return request({
- url: '/show/tts/query',
- headers: {
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- method: 'get',
- })
-}
-
-// 生产语料
-export function createCorpus(data) {
- return request({
- url: '/show/tts/corpus',
- headers: {
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- method: 'post',
- data: data
- })
-}
-
-export function getSynthesize(data, config = {}) {
- return request({
- url: '/show/tts/synthesize',
- headers: {
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- responseType: 'blob',
- method: 'post',
- data: data
- }, {
- ...config
- })
-}
-
-export function createAdvancedCorpus(data) {
- return request({
- url: '/show/tts/corpus/advanced',
- headers: {
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- method: 'post',
- data: data
- })
-}
-
-export function getAdvancedSynthesize(data, config = {}) {
- return request({
- url: '/show/tts/synthesize/advanced',
- headers: {
- Authorization: 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImFiNmEyY2Y0LWM3MjQtNDgyMy1hM2NiLTk4N2NhZWNmMzZiNCJ9.oq-JVRbQuq_ujQ2V0h2jXC3woHPdMQKhnYJ8ixRm-C6Ez4GqJWyHYgmnkw5dbDyhWGdIUH02uv6XT8UiboHD4g',
- isToken: false
- },
- responseType: 'blob',
- method: 'post',
- data: data
- }, {
- ...config
- })
-}
-
-export const getFlowById = (id) => {
- return request.get(import.meta.env.VITE_NODE_RED_URL + '/flow/' + id, {})
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/robot.js b/ruoyi-ui/src/api/device/robot.js
deleted file mode 100644
index b725429..0000000
--- a/ruoyi-ui/src/api/device/robot.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询机器人配置列表
-export function listRobot(query) {
- return request({
- url: '/device/robot/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询机器人配置详细
-export function getRobot(id) {
- return request({
- url: '/device/robot/' + id,
- method: 'get'
- })
-}
-
-// 新增机器人配置
-export function addRobot(data) {
- return request({
- url: '/device/robot',
- method: 'post',
- data: data
- })
-}
-
-// 修改机器人配置
-export function updateRobot(data) {
- return request({
- url: '/device/robot',
- method: 'put',
- data: data
- })
-}
-
-// 删除机器人配置
-export function delRobot(id) {
- return request({
- url: '/device/robot/' + id,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/device/speaker.js b/ruoyi-ui/src/api/device/speaker.js
deleted file mode 100644
index ec9e94e..0000000
--- a/ruoyi-ui/src/api/device/speaker.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import request from '@/utils/request'
-
-// 暂停播放
-export function pause(data) {
- return request({
- url: '/api/Speaker/pause',
- method: 'post',
- data: data
- })
-}
-
-// 播放音频
-export function play(data) {
- return request({
- url: '/api/Speaker/play',
- method: 'post',
- data: data
- })
-}
-
-// 恢复播放
-export function resume(data) {
- return request({
- url: '/api/Speaker/resume',
- method: 'post',
- data: data
- })
-}
-
-// 获取扬声器状态
-export function status(query) {
- return request({
- url: '/api/Speaker/status',
- method: 'get',
- params: query
- })
-}
-
-// 停止播放
-export function stop(data) {
- return request({
- url: '/api/Speaker/stop',
- method: 'post',
- data: data
- })
-}
-
-// 获取音量
-export function getVolume(query) {
- return request({
- url: '/api/Speaker/volume',
- method: 'get',
- params: query
- })
-}
-
-// 设置音量
-export function setVolume(data) {
- return request({
- url: '/api/Speaker/volume',
- method: 'post',
- data: data
- })
-}
-
-// 设置音量
-export function getAll() {
- return request({
- url: '/api/Speaker/getAll',
- method: 'get',
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/device/terminal.js b/ruoyi-ui/src/api/device/terminal.js
deleted file mode 100644
index f1d85a4..0000000
--- a/ruoyi-ui/src/api/device/terminal.js
+++ /dev/null
@@ -1,86 +0,0 @@
-import request from '@/utils/request'
-
-// 查询设备终端配置列表
-export function listTerminal(query) {
- return request({
- url: '/device/terminal/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询设备终端配置详细
-export function getTerminal(id) {
- return request({
- url: '/device/terminal/' + id,
- method: 'get'
- })
-}
-
-// 新增设备终端配置
-export function addTerminal(data) {
- return request({
- url: '/device/terminal',
- method: 'post',
- data: data
- })
-}
-
-// 修改设备终端配置
-export function updateTerminal(data) {
- return request({
- url: '/device/terminal',
- method: 'put',
- data: data
- })
-}
-
-// 删除设备终端配置
-export function delTerminal(id) {
- return request({
- url: '/device/terminal/' + id,
- method: 'delete'
- })
-}
-
-// 获取实例信息
-export function getInstInfo(id) {
- return request({
- url: '/test/inst/context/' + id,
- method: 'get'
- })
-}
-
-// 暂停任务
-export function pauseInst(id) {
- return request({
- url: `/test/inst/pause/${id}`,
- method: 'post'
- })
-}
-
-// 恢复任务
-export function resumeInst(id) {
- return request({
- url: `/test/inst/resume/${id}`,
- method: 'post'
- })
-}
-
-// 恢复任务
-export function stopInst(id) {
- return request({
- url: `/test/inst/stop/${id}`,
- method: 'post'
- })
-}
-
-export function getFlowParamsApi(taskId) {
- return request({
- url: '/test/orchestration',
- method: 'get',
- params: {
- taskId
- }
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/evaluate/indicator.js b/ruoyi-ui/src/api/evaluate/indicator.js
deleted file mode 100644
index ed9541a..0000000
--- a/ruoyi-ui/src/api/evaluate/indicator.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import request from "@/utils/request";
-
-// 查询根据层级指标库
-export function getIndicatorByParentId(parentId, type) {
- return request({
- url: '/evaluate/indicator/getIndicatorByParentId',
- method: "get",
- params: {
- parentId,
- type
- }
- });
-}
-
-/**
- * 新增指标
- * @param {*} data
- * @returns
- */
-export function addIndicator(data) {
- return request({
- url: `/evaluate/indicator/indicator/insert`,
- method: "post",
- data
- });
-}
-
-/**
- * 删除指标
- * @param {*} id
- * @returns
- */
-export function deleteIndicator(id) {
- return request({
- url: `/evaluate/indicator/${id}`,
- method: "delete",
- });
-}
-
-/**
- * 修改指标
- * @param {*} id
- * @returns
- */
-export function updateIndicator(data) {
- return request({
- url: `/evaluate/indicator`,
- method: "put",
- data
- });
-}
-
-/**
- * 获取指定层级的指标
- * @param {*} id
- * @returns
- */
-export function getChildrenByParentIdWithLevelLimitApi(parentId, maxLevel, type) {
- return request({
- url: `/evaluate/indicator/getChildrenByParentIdWithLevelLimit`,
- method: "get",
- params: {
- parentId,
- maxLevel,
- type
- }
- });
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/inspection/cockpit.js b/ruoyi-ui/src/api/inspection/cockpit.js
deleted file mode 100644
index 055c658..0000000
--- a/ruoyi-ui/src/api/inspection/cockpit.js
+++ /dev/null
@@ -1,97 +0,0 @@
-import request from '@/utils/request'
-
-export function getPoseApi(params) {
- return request({
- url: '/api/arm/getPose',
- method: 'get',
- params: params
- })
-}
-
-export function getJointStateApi(params) {
- return request({
- url: '/api/arm/getJointState',
- method: 'get',
- params: params
- })
-}
-
-export function speedLApi(data) {
- return request({
- url: '/api/arm/speedL',
- method: 'post',
- data: data
- })
-}
-
-export function moveJApi(data) {
- return request({
- url: '/api/arm/moveJ',
- method: 'post',
- data: data
- })
-}
-
-export function stopMotionApi(params) {
- return request({
- url: '/api/arm/stopMotion',
- method: 'get',
- params: params
- })
-}
-
-export function torqueOnApi(params) {
- return request({
- url: '/api/arm/torqueOn',
- method: 'get',
- params: params
- })
-}
-
-export function speedJApi(data) {
- return request({
- url: '/api/arm/speedJ',
- method: 'post',
- data: data
- })
-}
-
-export function clearFault(params) {
- return request({
- url: '/api/arm/clearFault',
- method: 'get',
- params: params
- })
-}
-
-export function getMicVolume(params) {
- return request({
- url: '/api/Microphone/volume',
- method: 'get',
- params: params
- })
-}
-
-export function setMicVolume(data) {
- return request({
- url: '/api/Microphone/volume',
- method: 'post',
- data: data
- })
-}
-
-export function getSpeakerVolume(params) {
- return request({
- url: '/api/Speaker/volume',
- method: 'get',
- params: params
- })
-}
-
-export function setSpeakerVolume(data) {
- return request({
- url: '/api/Speaker/volume',
- method: 'post',
- data: data
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/inspection/map.js b/ruoyi-ui/src/api/inspection/map.js
deleted file mode 100644
index ec8c562..0000000
--- a/ruoyi-ui/src/api/inspection/map.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import request from '@/utils/request'
-
-
-export function getMapList(params) {
- return request({
- url: '/inspection/map/list',
- method: 'get',
- params: params
- })
-}
-
-export function addMap(data) {
- return request({
- url: '/inspection/map',
- method: 'post',
- data: data
- })
-}
-
-export function updateMap(data) {
- return request({
- url: '/inspection/map',
- method: 'put',
- data: data
- })
-}
-
-export function deleteMap(id) {
- return request({
- url: `/inspection/map/${id}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/inspection/point.js b/ruoyi-ui/src/api/inspection/point.js
deleted file mode 100644
index 5f4b17e..0000000
--- a/ruoyi-ui/src/api/inspection/point.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '@/utils/request'
-
-export function getPointList(params) {
- return request({
- url: '/inspection/waypoint/list',
- method: 'get',
- params: params
- })
-}
-
-export function addPoint(data) {
- return request({
- url: '/inspection/waypoint',
- method: 'post',
- data: data
- })
-}
-
-export function updatePoint(data) {
- return request({
- url: '/inspection/waypoint',
- method: 'put',
- data: data
- })
-}
-
-export function deletePoint(id) {
- return request({
- url: `/inspection/waypoint/${id}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/inspection/result.js b/ruoyi-ui/src/api/inspection/result.js
deleted file mode 100644
index 4132315..0000000
--- a/ruoyi-ui/src/api/inspection/result.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import request from '@/utils/request'
-
-/**
- * 查询巡检结果列表。
- */
-export function getInspectionResultList(params) {
- return request({
- url: '/inspection/result/list',
- method: 'get',
- params
- })
-}
-
-/**
- * 提交人工复核结果。
- */
-export function reviewInspectionResult(id, data) {
- return request({
- url: `/inspection/result/${id}/review`,
- method: 'put',
- data
- })
-}
diff --git a/ruoyi-ui/src/api/inspection/robot.js b/ruoyi-ui/src/api/inspection/robot.js
deleted file mode 100644
index cde224d..0000000
--- a/ruoyi-ui/src/api/inspection/robot.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import request from '@/utils/request'
-
-export function getRobotList(params) {
- return request({
- url: '/inspection/robot/list',
- method: 'get',
- params: params
- })
-}
-
-export function addRobot(data) {
- return request({
- url: '/inspection/robot',
- method: 'post',
- data: data
- })
-}
-
-export function updateRobot(data) {
- return request({
- url: '/inspection/robot',
- method: 'put',
- data: data
- })
-}
-
-export function deleteRobot(id) {
- return request({
- url: `/inspection/robot/${id}`,
- method: 'delete'
- })
-}
-
-/**
- * 获取机器人地图
- * @param {*} robotId
- * @returns
- */
-export function getMapByRobot(robotId) {
- return request({
- url: `/inspection/robot/${robotId}/maps`,
- method: 'get'
- })
-}
-
-/**
- * 获取地图JSON数据
- * @param {*} params
- * @returns
- */
-export function getMapJson(params) {
- return request({
- url: `/inspection/robot/${params.robotId}/download-map`,
- method: 'get',
- params
- })
-}
-
-/**
- * 获取机器人位置
- * @param {*} robotId
- * @returns
- */
-export function getRobotLocation(robotId) {
- return request({
- url: `/inspection/robot/${robotId}/location`,
- method: 'get'
- })
-}
-
-/**
- * 获取机器人状态
- * @param {*} robotId
- * @returns
- */
-export function getRobotStatus(robotId) {
- return request({
- url: `/inspection/robot/{robotId}/sync-status`,
- method: 'get'
- })
-}
-
-/**
- * 机器人运动控制
- * @param {*} data
- * @returns
- */
-export function moveRobot(data) {
- return request({
- url: '/api/agv/setVelocity',
- method: 'post',
- data: data
- })
-}
-
-/**
- * 机器人停止运动
- * @param {*} data
- * @returns
- */
-export function stopRobot(data) {
- return request({
- url: '/api/agv/stopVelocityControl',
- method: 'post',
- data: data
- })
-}
diff --git a/ruoyi-ui/src/api/inspection/runTask.js b/ruoyi-ui/src/api/inspection/runTask.js
deleted file mode 100644
index fb2c8b4..0000000
--- a/ruoyi-ui/src/api/inspection/runTask.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import request from '@/utils/request'
-
-export function getRunTaskList(params) {
- return request({
- url: '/inspection/taskInstance/list',
- method: 'get',
- params: params
- })
-}
-
-export function getRunTaskDetail(id) {
- return request({
- url: `/inspection/taskInstance/${id}`,
- method: 'get'
- })
-}
-
-export function addRunTask(data) {
- return request({
- url: '/inspection/taskInstance',
- method: 'post',
- data: data
- })
-}
-
-export function updateRunTask(data) {
- return request({
- url: '/inspection/taskInstance',
- method: 'put',
- data: data
- })
-}
-
-export function deleteRunTask(id) {
- return request({
- url: `/inspection/taskInstance/${id}`,
- method: 'delete'
- })
-}
-
-export function startRunTask(id) {
- return request({
- url: `/inspection/taskInstance/start/${id}`,
- method: 'put'
- })
-}
-
-export function stopRunTask(id) {
- return request({
- url: `/inspection/taskInstance/stop/${id}`,
- method: 'put'
- })
-}
-
-export function pauseRunTask(id) {
- return request({
- url: `/inspection/taskInstance/pause/${id}`,
- method: 'put'
- })
-}
-
-export function resumeRunTask(id) {
- return request({
- url: `/inspection/taskInstance/resume/${id}`,
- method: 'put'
- })
-}
-
-export function getTaskLogListApi(params) {
- return request({
- url: '/inspection/taskLog/list',
- method: 'get',
- params: params
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/inspection/task.js b/ruoyi-ui/src/api/inspection/task.js
deleted file mode 100644
index 9a04f33..0000000
--- a/ruoyi-ui/src/api/inspection/task.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import request from '@/utils/request'
-
-export function getTaskList(params) {
- return request({
- url: '/inspection/task/list',
- method: 'get',
- params: params
- })
-}
-
-export function addTask(data) {
- return request({
- url: '/inspection/task',
- method: 'post',
- data: data
- })
-}
-
-export function updateTask(data) {
- return request({
- url: '/inspection/task',
- method: 'put',
- data: data
- })
-}
-
-export function deleteTask(id) {
- return request({
- url: `/inspection/task/${id}`,
- method: 'delete'
- })
-}
-
-export function getWaypointByTaskId(taskId) {
- return request({
- url: `/inspection/task/${taskId}/waypoints`,
- method: 'get'
- })
-}
-
-export function bindWaypointsToTask(taskId, waypointIds) {
- return request({
- url: `/inspection/task/${taskId}/waypoints`,
- method: 'post',
- data: waypointIds
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/intelligenceTest/car.js b/ruoyi-ui/src/api/intelligenceTest/car.js
deleted file mode 100644
index 5d8c25e..0000000
--- a/ruoyi-ui/src/api/intelligenceTest/car.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '@/utils/request'
-
-export function addVehicle(data) {
- return request({
- url: '/aima/vehicle',
- method: 'post',
- data: data
- })
-}
-
-export function getVehicleList(params) {
- return request({
- url: '/aima/vehicle/list',
- method: 'get',
- params: params
- })
-}
-
-export function updateVehicle(data) {
- return request({
- url: '/aima/vehicle',
- method: 'put',
- data: data
- })
-}
-
-export function deleteVehicle(ids) {
- return request({
- url: `/aima/vehicle/${ids}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/intelligenceTest/mobilePhone.js b/ruoyi-ui/src/api/intelligenceTest/mobilePhone.js
deleted file mode 100644
index b683fc2..0000000
--- a/ruoyi-ui/src/api/intelligenceTest/mobilePhone.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '@/utils/request'
-
-export function addPhone(data) {
- return request({
- url: '/aima/phone',
- method: 'post',
- data: data
- })
-}
-
-export function getPhoneList(params) {
- return request({
- url: '/aima/phone/list',
- method: 'get',
- params: params
- })
-}
-
-export function updatePhone(data) {
- return request({
- url: '/aima/phone',
- method: 'put',
- data: data
- })
-}
-
-export function deletePhone(ids) {
- return request({
- url: `/aima/phone/${ids}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/intelligenceTest/runningTask.js b/ruoyi-ui/src/api/intelligenceTest/runningTask.js
deleted file mode 100644
index adfd01e..0000000
--- a/ruoyi-ui/src/api/intelligenceTest/runningTask.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import request from '@/utils/request'
-import { method } from 'lodash'
-
-export function addTaskinstance(data) {
- return request({
- url: '/aima/taskinstance',
- method: 'post',
- data: data
- })
-}
-
-export function getTaskinstanceList(params) {
- return request({
- url: '/aima/taskinstance/list',
- method: 'get',
- params: params
- })
-}
-
-export function updateTaskinstance(data) {
- return request({
- url: '/aima/taskinstance',
- method: 'put',
- data: data
- })
-}
-
-export function deleteTaskinstance(ids) {
- return request({
- url: `/aima/taskinstance/{ids}`,
- method: 'delete'
- })
-}
-
-export function startTaskinstance(id) {
- return request({
- url: `/aima/taskinstance/start/${id}`,
- method: 'put'
- })
-}
-
-export function pauseTaskinstance(id) {
- return request({
- url: `/aima/taskinstance/pause/${id}`,
- method: 'put'
- })
-}
-
-export function stopTaskinstance(id) {
- return request({
- url: `/aima/taskinstance/stop/${id}`,
- method: 'put'
- })
-}
-
-export function resumeTaskinstance(id) {
- return request({
- url: `/aima/taskinstance/resume/${id}`,
- method: 'put'
- })
-}
-
-export function getTaskLogListApi(params) {
- return request({
- url: '/aima/testlog/list',
- method: 'get',
- params: params
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/intelligenceTest/taskManage.js b/ruoyi-ui/src/api/intelligenceTest/taskManage.js
deleted file mode 100644
index 457d33f..0000000
--- a/ruoyi-ui/src/api/intelligenceTest/taskManage.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import request from '@/utils/request'
-
-export function addTask(data) {
- return request({
- url: '/aima/task',
- method: 'post',
- data: data
- })
-}
-
-export function getTaskList(params) {
- return request({
- url: '/aima/task/list',
- method: 'get',
- params: params
- })
-}
-
-export function updateTask(data) {
- return request({
- url: '/aima/task',
- method: 'put',
- data: data
- })
-}
-
-export function deleteTask(ids) {
- return request({
- url: `/aima/task/${ids}`,
- method: 'delete'
- })
-}
-
-export function getTestCaseByTaskId(taskId) {
- return request({
- url: `/aima/task/testCases/${taskId}`,
- method: 'get',
- })
-}
-
-export function bindTastCase(taskId, ids) {
- return request({
- url: `/aima/task/bindTestCases/${taskId}`,
- method: 'post',
- data: ids
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/intelligenceTest/testCase.js b/ruoyi-ui/src/api/intelligenceTest/testCase.js
deleted file mode 100644
index 374ebe1..0000000
--- a/ruoyi-ui/src/api/intelligenceTest/testCase.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '@/utils/request'
-
-export function addTestCase(data) {
- return request({
- url: '/aima/testcase',
- method: 'post',
- data: data
- })
-}
-
-export function getTestCaseList(params) {
- return request({
- url: '/aima/testcase/list',
- method: 'get',
- params: params
- })
-}
-
-export function updateTestCase(data) {
- return request({
- url: '/aima/testcase',
- method: 'put',
- data: data
- })
-}
-
-export function deleteTestCase(ids) {
- return request({
- url: `/aima/testcase/${ids}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/is/func/index.js b/ruoyi-ui/src/api/is/func/index.js
deleted file mode 100644
index 0503469..0000000
--- a/ruoyi-ui/src/api/is/func/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import request from '@/utils/request'
-
-// 查询语音交互-方案列表
-export function getTreeDataApi() {
- return request({
- url: '/ti/config/list',
- method: 'get'
- })
-}
-
-export function postTreeData(data) {
- return request({
- url: '/ti/config',
- method: 'post',
- data
- })
-}
-
-export function updateTreeData(data) {
- return request({
- url: '/ti/config',
- method: 'put',
- data
- })
-}
-
-export function deleteTreeData(ids) {
- return request({
- url: `/ti/config/${ids}`,
- method: 'delete'
- })
-}
-
-export function addFunction(data) {
- return request({
- url: '/ti/function',
- method: 'post',
- data
- })
-}
-
-export function getFunction(params) {
- return request({
- url: '/ti/function/list',
- method: 'get',
- params
- })
-}
-
-export function updateFunction(data) {
- return request({
- url: '/ti/function',
- method: 'put',
- data
- })
-}
-
-export function deleteFunction(ids) {
- return request({
- url: `/ti/function/${ids}`,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/is/im/index.js b/ruoyi-ui/src/api/is/im/index.js
deleted file mode 100644
index 5cd060e..0000000
--- a/ruoyi-ui/src/api/is/im/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '@/utils/request'
-
-export function addUi(data) {
- return request({
- url: '/ti/ui',
- method: 'post',
- data
- })
-}
-
-export function getUiList(params) {
- return request({
- url: '/ti/ui/list',
- methods: 'get',
- params
- })
-}
-
-export function deleteUiList(ids) {
- return request({
- url: `/ti/ui/${ids}`,
- method: 'delete'
- })
-}
-
-export function updateUI(data) {
- return request({
- url: '/ti/ui',
- method: 'put',
- data
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/is/project/index.js b/ruoyi-ui/src/api/is/project/index.js
deleted file mode 100644
index 79e88c6..0000000
--- a/ruoyi-ui/src/api/is/project/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import request from '@/utils/request'
-
-export const getDictList = (params) => {
- return request({
- url: '/system/dict/data/list',
- method: 'get',
- params
- })
-}
-
-export const addProject = (data) => {
- return request({
- url: '/ti/project',
- method: 'post',
- data
- })
-}
-
-export const updateProject = (data) => {
- return request({
- url: '/ti/project',
- method: 'put',
- data
- })
-}
-
-export const getProjectList = (params) => {
- return request({
- url: '/ti/project/list',
- method: 'get',
- params
- })
-}
-
-export const deleteProject = (projectIds) => {
- return request({
- url: '/ti/project/' + projectIds,
- method: 'delete'
- })
-}
-
-export const getExecuteRunParams = (params) => {
- return request({
- url: '/ti/project/queryExecuteRunParams',
- method: 'get',
- params
- })
-}
-
-export const projectExecute = (data) => {
- return request({
- url: '/ti/project/execute',
- method: 'post',
- data
- })
-}
-
-export const executeProject = (data) => {
- return request({
- url: '/ti/project/evaluation',
- method: 'post',
- data
- })
-}
-
-/**
- * 获取评估
- * @param {*} projectId
- * @returns
- */
-export function getValuationProject(projectId) {
- return request({
- url: '/ti/project/evaluation/' + projectId,
- method: 'get'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js
deleted file mode 100644
index 7b7388f..0000000
--- a/ruoyi-ui/src/api/login.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import request from '@/utils/request'
-
-// 登录方法
-export function login(username, password, code, uuid) {
- const data = {
- username,
- password,
- code,
- uuid
- }
- return request({
- url: '/login',
- headers: {
- isToken: false,
- repeatSubmit: false
- },
- method: 'post',
- data: data
- })
-}
-
-// 注册方法
-export function register(data) {
- return request({
- url: '/register',
- headers: {
- isToken: false
- },
- method: 'post',
- data: data
- })
-}
-
-// 获取用户详细信息
-export function getInfo() {
- return request({
- url: '/getInfo',
- method: 'get'
- })
-}
-
-// 退出方法
-export function logout() {
- return request({
- url: '/logout',
- method: 'post'
- })
-}
-
-// 获取验证码
-export function getCodeImg() {
- return request({
- url: '/captchaImage',
- headers: {
- isToken: false
- },
- method: 'get',
- timeout: 20000
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/menu.js b/ruoyi-ui/src/api/menu.js
deleted file mode 100644
index faef101..0000000
--- a/ruoyi-ui/src/api/menu.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import request from '@/utils/request'
-
-// 获取路由
-export const getRouters = () => {
- return request({
- url: '/getRouters',
- method: 'get'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/monitor/cache.js b/ruoyi-ui/src/api/monitor/cache.js
deleted file mode 100644
index 72c5f6a..0000000
--- a/ruoyi-ui/src/api/monitor/cache.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import request from '@/utils/request'
-
-// 查询缓存详细
-export function getCache() {
- return request({
- url: '/monitor/cache',
- method: 'get'
- })
-}
-
-// 查询缓存名称列表
-export function listCacheName() {
- return request({
- url: '/monitor/cache/getNames',
- method: 'get'
- })
-}
-
-// 查询缓存键名列表
-export function listCacheKey(cacheName) {
- return request({
- url: '/monitor/cache/getKeys/' + cacheName,
- method: 'get'
- })
-}
-
-// 查询缓存内容
-export function getCacheValue(cacheName, cacheKey) {
- return request({
- url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey,
- method: 'get'
- })
-}
-
-// 清理指定名称缓存
-export function clearCacheName(cacheName) {
- return request({
- url: '/monitor/cache/clearCacheName/' + cacheName,
- method: 'delete'
- })
-}
-
-// 清理指定键名缓存
-export function clearCacheKey(cacheKey) {
- return request({
- url: '/monitor/cache/clearCacheKey/' + cacheKey,
- method: 'delete'
- })
-}
-
-// 清理全部缓存
-export function clearCacheAll() {
- return request({
- url: '/monitor/cache/clearCacheAll',
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/monitor/job.js b/ruoyi-ui/src/api/monitor/job.js
deleted file mode 100644
index 3815569..0000000
--- a/ruoyi-ui/src/api/monitor/job.js
+++ /dev/null
@@ -1,71 +0,0 @@
-import request from '@/utils/request'
-
-// 查询定时任务调度列表
-export function listJob(query) {
- return request({
- url: '/monitor/job/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询定时任务调度详细
-export function getJob(jobId) {
- return request({
- url: '/monitor/job/' + jobId,
- method: 'get'
- })
-}
-
-// 新增定时任务调度
-export function addJob(data) {
- return request({
- url: '/monitor/job',
- method: 'post',
- data: data
- })
-}
-
-// 修改定时任务调度
-export function updateJob(data) {
- return request({
- url: '/monitor/job',
- method: 'put',
- data: data
- })
-}
-
-// 删除定时任务调度
-export function delJob(jobId) {
- return request({
- url: '/monitor/job/' + jobId,
- method: 'delete'
- })
-}
-
-// 任务状态修改
-export function changeJobStatus(jobId, status) {
- const data = {
- jobId,
- status
- }
- return request({
- url: '/monitor/job/changeStatus',
- method: 'put',
- data: data
- })
-}
-
-
-// 定时任务立即执行一次
-export function runJob(jobId, jobGroup) {
- const data = {
- jobId,
- jobGroup
- }
- return request({
- url: '/monitor/job/run',
- method: 'put',
- data: data
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/monitor/jobLog.js b/ruoyi-ui/src/api/monitor/jobLog.js
deleted file mode 100644
index 6e0be61..0000000
--- a/ruoyi-ui/src/api/monitor/jobLog.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import request from '@/utils/request'
-
-// 查询调度日志列表
-export function listJobLog(query) {
- return request({
- url: '/monitor/jobLog/list',
- method: 'get',
- params: query
- })
-}
-
-// 删除调度日志
-export function delJobLog(jobLogId) {
- return request({
- url: '/monitor/jobLog/' + jobLogId,
- method: 'delete'
- })
-}
-
-// 清空调度日志
-export function cleanJobLog() {
- return request({
- url: '/monitor/jobLog/clean',
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/monitor/logininfor.js b/ruoyi-ui/src/api/monitor/logininfor.js
deleted file mode 100644
index 4d112b7..0000000
--- a/ruoyi-ui/src/api/monitor/logininfor.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import request from '@/utils/request'
-
-// 查询登录日志列表
-export function list(query) {
- return request({
- url: '/monitor/logininfor/list',
- method: 'get',
- params: query
- })
-}
-
-// 删除登录日志
-export function delLogininfor(infoId) {
- return request({
- url: '/monitor/logininfor/' + infoId,
- method: 'delete'
- })
-}
-
-// 解锁用户登录状态
-export function unlockLogininfor(userName) {
- return request({
- url: '/monitor/logininfor/unlock/' + userName,
- method: 'get'
- })
-}
-
-// 清空登录日志
-export function cleanLogininfor() {
- return request({
- url: '/monitor/logininfor/clean',
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/monitor/online.js b/ruoyi-ui/src/api/monitor/online.js
deleted file mode 100644
index bd22137..0000000
--- a/ruoyi-ui/src/api/monitor/online.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import request from '@/utils/request'
-
-// 查询在线用户列表
-export function list(query) {
- return request({
- url: '/monitor/online/list',
- method: 'get',
- params: query
- })
-}
-
-// 强退用户
-export function forceLogout(tokenId) {
- return request({
- url: '/monitor/online/' + tokenId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/monitor/operlog.js b/ruoyi-ui/src/api/monitor/operlog.js
deleted file mode 100644
index a04bca8..0000000
--- a/ruoyi-ui/src/api/monitor/operlog.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import request from '@/utils/request'
-
-// 查询操作日志列表
-export function list(query) {
- return request({
- url: '/monitor/operlog/list',
- method: 'get',
- params: query
- })
-}
-
-// 删除操作日志
-export function delOperlog(operId) {
- return request({
- url: '/monitor/operlog/' + operId,
- method: 'delete'
- })
-}
-
-// 清空操作日志
-export function cleanOperlog() {
- return request({
- url: '/monitor/operlog/clean',
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/monitor/server.js b/ruoyi-ui/src/api/monitor/server.js
deleted file mode 100644
index e1f9ca2..0000000
--- a/ruoyi-ui/src/api/monitor/server.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import request from '@/utils/request'
-
-// 获取服务信息
-export function getServer() {
- return request({
- url: '/monitor/server',
- method: 'get'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/config.js b/ruoyi-ui/src/api/system/config.js
deleted file mode 100644
index a404d82..0000000
--- a/ruoyi-ui/src/api/system/config.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import request from '@/utils/request'
-
-// 查询参数列表
-export function listConfig(query) {
- return request({
- url: '/system/config/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询参数详细
-export function getConfig(configId) {
- return request({
- url: '/system/config/' + configId,
- method: 'get'
- })
-}
-
-// 根据参数键名查询参数值
-export function getConfigKey(configKey) {
- return request({
- url: '/system/config/configKey/' + configKey,
- method: 'get'
- })
-}
-
-// 新增参数配置
-export function addConfig(data) {
- return request({
- url: '/system/config',
- method: 'post',
- data: data
- })
-}
-
-// 修改参数配置
-export function updateConfig(data) {
- return request({
- url: '/system/config',
- method: 'put',
- data: data
- })
-}
-
-// 删除参数配置
-export function delConfig(configId) {
- return request({
- url: '/system/config/' + configId,
- method: 'delete'
- })
-}
-
-// 刷新参数缓存
-export function refreshCache() {
- return request({
- url: '/system/config/refreshCache',
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/system/dept.js b/ruoyi-ui/src/api/system/dept.js
deleted file mode 100644
index fc943cd..0000000
--- a/ruoyi-ui/src/api/system/dept.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import request from '@/utils/request'
-
-// 查询部门列表
-export function listDept(query) {
- return request({
- url: '/system/dept/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询部门列表(排除节点)
-export function listDeptExcludeChild(deptId) {
- return request({
- url: '/system/dept/list/exclude/' + deptId,
- method: 'get'
- })
-}
-
-// 查询部门详细
-export function getDept(deptId) {
- return request({
- url: '/system/dept/' + deptId,
- method: 'get'
- })
-}
-
-// 新增部门
-export function addDept(data) {
- return request({
- url: '/system/dept',
- method: 'post',
- data: data
- })
-}
-
-// 修改部门
-export function updateDept(data) {
- return request({
- url: '/system/dept',
- method: 'put',
- data: data
- })
-}
-
-// 删除部门
-export function delDept(deptId) {
- return request({
- url: '/system/dept/' + deptId,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/dict/data.js b/ruoyi-ui/src/api/system/dict/data.js
deleted file mode 100644
index 6c9eb79..0000000
--- a/ruoyi-ui/src/api/system/dict/data.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import request from '@/utils/request'
-
-// 查询字典数据列表
-export function listData(query) {
- return request({
- url: '/system/dict/data/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询字典数据详细
-export function getData(dictCode) {
- return request({
- url: '/system/dict/data/' + dictCode,
- method: 'get'
- })
-}
-
-// 根据字典类型查询字典数据信息
-export function getDicts(dictType) {
- return request({
- url: '/system/dict/data/type/' + dictType,
- method: 'get'
- })
-}
-
-// 新增字典数据
-export function addData(data) {
- return request({
- url: '/system/dict/data',
- method: 'post',
- data: data
- })
-}
-
-// 修改字典数据
-export function updateData(data) {
- return request({
- url: '/system/dict/data',
- method: 'put',
- data: data
- })
-}
-
-// 删除字典数据
-export function delData(dictCode) {
- return request({
- url: '/system/dict/data/' + dictCode,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/system/dict/type.js b/ruoyi-ui/src/api/system/dict/type.js
deleted file mode 100644
index a0254ba..0000000
--- a/ruoyi-ui/src/api/system/dict/type.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import request from '@/utils/request'
-
-// 查询字典类型列表
-export function listType(query) {
- return request({
- url: '/system/dict/type/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询字典类型详细
-export function getType(dictId) {
- return request({
- url: '/system/dict/type/' + dictId,
- method: 'get'
- })
-}
-
-// 新增字典类型
-export function addType(data) {
- return request({
- url: '/system/dict/type',
- method: 'post',
- data: data
- })
-}
-
-// 修改字典类型
-export function updateType(data) {
- return request({
- url: '/system/dict/type',
- method: 'put',
- data: data
- })
-}
-
-// 删除字典类型
-export function delType(dictId) {
- return request({
- url: '/system/dict/type/' + dictId,
- method: 'delete'
- })
-}
-
-// 刷新字典缓存
-export function refreshCache() {
- return request({
- url: '/system/dict/type/refreshCache',
- method: 'delete'
- })
-}
-
-// 获取字典选择框列表
-export function optionselect() {
- return request({
- url: '/system/dict/type/optionselect',
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/api/system/file.js b/ruoyi-ui/src/api/system/file.js
deleted file mode 100644
index 9d254bf..0000000
--- a/ruoyi-ui/src/api/system/file.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询文件管理列表
-export function listFile(query) {
- return request({
- url: '/system/file/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询文件管理详细
-export function getFile(fileId) {
- return request({
- url: '/system/file/' + fileId,
- method: 'get'
- })
-}
-
-// 新增文件管理
-export function addFile(data) {
- return request({
- url: '/system/file',
- method: 'post',
- data: data
- })
-}
-
-// 修改文件管理
-export function updateFile(data) {
- return request({
- url: '/system/file',
- method: 'put',
- data: data
- })
-}
-
-// 删除文件管理
-export function delFile(fileId) {
- return request({
- url: '/system/file/' + fileId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/system/group.js b/ruoyi-ui/src/api/system/group.js
deleted file mode 100644
index 71defe0..0000000
--- a/ruoyi-ui/src/api/system/group.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询通用分组配置列表
-export function listGroup(query) {
- return request({
- url: '/system/group/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询通用分组配置详细
-export function getGroup(groupId) {
- return request({
- url: '/system/group/' + groupId,
- method: 'get'
- })
-}
-
-// 新增通用分组配置
-export function addGroup(data) {
- return request({
- url: '/system/group',
- method: 'post',
- data: data
- })
-}
-
-// 修改通用分组配置
-export function updateGroup(data) {
- return request({
- url: '/system/group',
- method: 'put',
- data: data
- })
-}
-
-// 删除通用分组配置
-export function delGroup(groupId) {
- return request({
- url: '/system/group/' + groupId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/system/menu.js b/ruoyi-ui/src/api/system/menu.js
deleted file mode 100644
index f6415c6..0000000
--- a/ruoyi-ui/src/api/system/menu.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import request from '@/utils/request'
-
-// 查询菜单列表
-export function listMenu(query) {
- return request({
- url: '/system/menu/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询菜单详细
-export function getMenu(menuId) {
- return request({
- url: '/system/menu/' + menuId,
- method: 'get'
- })
-}
-
-// 查询菜单下拉树结构
-export function treeselect() {
- return request({
- url: '/system/menu/treeselect',
- method: 'get'
- })
-}
-
-// 根据角色ID查询菜单下拉树结构
-export function roleMenuTreeselect(roleId) {
- return request({
- url: '/system/menu/roleMenuTreeselect/' + roleId,
- method: 'get'
- })
-}
-
-// 新增菜单
-export function addMenu(data) {
- return request({
- url: '/system/menu',
- method: 'post',
- data: data
- })
-}
-
-// 修改菜单
-export function updateMenu(data) {
- return request({
- url: '/system/menu',
- method: 'put',
- data: data
- })
-}
-
-// 删除菜单
-export function delMenu(menuId) {
- return request({
- url: '/system/menu/' + menuId,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/notice.js b/ruoyi-ui/src/api/system/notice.js
deleted file mode 100644
index c274ea5..0000000
--- a/ruoyi-ui/src/api/system/notice.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询公告列表
-export function listNotice(query) {
- return request({
- url: '/system/notice/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询公告详细
-export function getNotice(noticeId) {
- return request({
- url: '/system/notice/' + noticeId,
- method: 'get'
- })
-}
-
-// 新增公告
-export function addNotice(data) {
- return request({
- url: '/system/notice',
- method: 'post',
- data: data
- })
-}
-
-// 修改公告
-export function updateNotice(data) {
- return request({
- url: '/system/notice',
- method: 'put',
- data: data
- })
-}
-
-// 删除公告
-export function delNotice(noticeId) {
- return request({
- url: '/system/notice/' + noticeId,
- method: 'delete'
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/post.js b/ruoyi-ui/src/api/system/post.js
deleted file mode 100644
index 1a8e9ca..0000000
--- a/ruoyi-ui/src/api/system/post.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询岗位列表
-export function listPost(query) {
- return request({
- url: '/system/post/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询岗位详细
-export function getPost(postId) {
- return request({
- url: '/system/post/' + postId,
- method: 'get'
- })
-}
-
-// 新增岗位
-export function addPost(data) {
- return request({
- url: '/system/post',
- method: 'post',
- data: data
- })
-}
-
-// 修改岗位
-export function updatePost(data) {
- return request({
- url: '/system/post',
- method: 'put',
- data: data
- })
-}
-
-// 删除岗位
-export function delPost(postId) {
- return request({
- url: '/system/post/' + postId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/system/role.js b/ruoyi-ui/src/api/system/role.js
deleted file mode 100644
index f13e6f4..0000000
--- a/ruoyi-ui/src/api/system/role.js
+++ /dev/null
@@ -1,119 +0,0 @@
-import request from '@/utils/request'
-
-// 查询角色列表
-export function listRole(query) {
- return request({
- url: '/system/role/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询角色详细
-export function getRole(roleId) {
- return request({
- url: '/system/role/' + roleId,
- method: 'get'
- })
-}
-
-// 新增角色
-export function addRole(data) {
- return request({
- url: '/system/role',
- method: 'post',
- data: data
- })
-}
-
-// 修改角色
-export function updateRole(data) {
- return request({
- url: '/system/role',
- method: 'put',
- data: data
- })
-}
-
-// 角色数据权限
-export function dataScope(data) {
- return request({
- url: '/system/role/dataScope',
- method: 'put',
- data: data
- })
-}
-
-// 角色状态修改
-export function changeRoleStatus(roleId, status) {
- const data = {
- roleId,
- status
- }
- return request({
- url: '/system/role/changeStatus',
- method: 'put',
- data: data
- })
-}
-
-// 删除角色
-export function delRole(roleId) {
- return request({
- url: '/system/role/' + roleId,
- method: 'delete'
- })
-}
-
-// 查询角色已授权用户列表
-export function allocatedUserList(query) {
- return request({
- url: '/system/role/authUser/allocatedList',
- method: 'get',
- params: query
- })
-}
-
-// 查询角色未授权用户列表
-export function unallocatedUserList(query) {
- return request({
- url: '/system/role/authUser/unallocatedList',
- method: 'get',
- params: query
- })
-}
-
-// 取消用户授权角色
-export function authUserCancel(data) {
- return request({
- url: '/system/role/authUser/cancel',
- method: 'put',
- data: data
- })
-}
-
-// 批量取消用户授权角色
-export function authUserCancelAll(data) {
- return request({
- url: '/system/role/authUser/cancelAll',
- method: 'put',
- params: data
- })
-}
-
-// 授权用户选择
-export function authUserSelectAll(data) {
- return request({
- url: '/system/role/authUser/selectAll',
- method: 'put',
- params: data
- })
-}
-
-// 根据角色ID查询部门树结构
-export function deptTreeSelect(roleId) {
- return request({
- url: '/system/role/deptTree/' + roleId,
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/api/system/user.js b/ruoyi-ui/src/api/system/user.js
deleted file mode 100644
index 9b0211a..0000000
--- a/ruoyi-ui/src/api/system/user.js
+++ /dev/null
@@ -1,136 +0,0 @@
-import request from '@/utils/request'
-import { parseStrEmpty } from "@/utils/ruoyi";
-
-// 查询用户列表
-export function listUser(query) {
- return request({
- url: '/system/user/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询用户详细
-export function getUser(userId) {
- return request({
- url: '/system/user/' + parseStrEmpty(userId),
- method: 'get'
- })
-}
-
-// 新增用户
-export function addUser(data) {
- return request({
- url: '/system/user',
- method: 'post',
- data: data
- })
-}
-
-// 修改用户
-export function updateUser(data) {
- return request({
- url: '/system/user',
- method: 'put',
- data: data
- })
-}
-
-// 删除用户
-export function delUser(userId) {
- return request({
- url: '/system/user/' + userId,
- method: 'delete'
- })
-}
-
-// 用户密码重置
-export function resetUserPwd(userId, password) {
- const data = {
- userId,
- password
- }
- return request({
- url: '/system/user/resetPwd',
- method: 'put',
- data: data
- })
-}
-
-// 用户状态修改
-export function changeUserStatus(userId, status) {
- const data = {
- userId,
- status
- }
- return request({
- url: '/system/user/changeStatus',
- method: 'put',
- data: data
- })
-}
-
-// 查询用户个人信息
-export function getUserProfile() {
- return request({
- url: '/system/user/profile',
- method: 'get'
- })
-}
-
-// 修改用户个人信息
-export function updateUserProfile(data) {
- return request({
- url: '/system/user/profile',
- method: 'put',
- data: data
- })
-}
-
-// 用户密码重置
-export function updateUserPwd(oldPassword, newPassword) {
- const data = {
- oldPassword,
- newPassword
- }
- return request({
- url: '/system/user/profile/updatePwd',
- method: 'put',
- params: data
- })
-}
-
-// 用户头像上传
-export function uploadAvatar(data) {
- return request({
- url: '/system/user/profile/avatar',
- method: 'post',
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
- data: data
- })
-}
-
-// 查询授权角色
-export function getAuthRole(userId) {
- return request({
- url: '/system/user/authRole/' + userId,
- method: 'get'
- })
-}
-
-// 保存授权角色
-export function updateAuthRole(data) {
- return request({
- url: '/system/user/authRole',
- method: 'put',
- params: data
- })
-}
-
-// 查询部门下拉树结构
-export function deptTreeSelect() {
- return request({
- url: '/system/user/deptTree',
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/api/system/vehOper.js b/ruoyi-ui/src/api/system/vehOper.js
deleted file mode 100644
index 9c1170a..0000000
--- a/ruoyi-ui/src/api/system/vehOper.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询车机操作配置列表
-export function listVehOper(query) {
- return request({
- url: '/system/vehOper/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询车机操作配置详细
-export function getVehOper(configId) {
- return request({
- url: '/system/vehOper/' + configId,
- method: 'get'
- })
-}
-
-// 新增车机操作配置
-export function addVehOper(data) {
- return request({
- url: '/system/vehOper',
- method: 'post',
- data: data
- })
-}
-
-// 修改车机操作配置
-export function updateVehOper(data) {
- return request({
- url: '/system/vehOper',
- method: 'put',
- data: data
- })
-}
-
-// 删除车机操作配置
-export function delVehOper(configId) {
- return request({
- url: '/system/vehOper/' + configId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/test/config.js b/ruoyi-ui/src/api/test/config.js
deleted file mode 100644
index 5ec8531..0000000
--- a/ruoyi-ui/src/api/test/config.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import request from '@/utils/request'
-
-// 查询任务流程编排列表
-export function listConfig(query) {
- return request({
- url: '/test/config/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询任务流程编排详细
-export function getConfig(id) {
- return request({
- url: '/test/config/' + id,
- method: 'get'
- })
-}
-
-// 新增任务流程编排
-export function addConfig(data) {
- return request({
- url: '/test/config',
- method: 'post',
- data: data
- })
-}
-
-// 修改任务流程编排
-export function updateConfig(data) {
- return request({
- url: '/test/config',
- method: 'put',
- data: data
- })
-}
-
-// 删除任务流程编排
-export function delConfig(id) {
- return request({
- url: '/test/config/' + id,
- method: 'delete'
- })
-}
-
-// 流程编排
-export function taskConfig(data) {
- return request({
- url: '/test/orchestration',
- method: 'post',
- data: data
- })
-}
-
-// 流程编排查询
-export function getTaskConfig(params) {
- return request({
- url: `/test/orchestration`,
- method: 'get',
- params: params
- })
-}
-
-// 获取任务执行参数
-export function getTaskParamsById(id) {
- return request({
- url: `/test/param/query/${id}`,
- method: 'get',
- })
-}
-// 任务执行
-export function taskExecute(data) {
- return request({
- url: `/flow/execute`,
- method: 'post',
- data: data
- })
-}
diff --git a/ruoyi-ui/src/api/test/detect.js b/ruoyi-ui/src/api/test/detect.js
deleted file mode 100644
index 8cf79c2..0000000
--- a/ruoyi-ui/src/api/test/detect.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询检测项配置列表
-export function listDetect(query) {
- return request({
- url: '/test/detect/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询检测项配置详细
-export function getDetect(id) {
- return request({
- url: '/test/detect/' + id,
- method: 'get'
- })
-}
-
-// 新增检测项配置
-export function addDetect(data) {
- return request({
- url: '/test/detect',
- method: 'post',
- data: data
- })
-}
-
-// 修改检测项配置
-export function updateDetect(data) {
- return request({
- url: '/test/detect',
- method: 'put',
- data: data
- })
-}
-
-// 删除检测项配置
-export function delDetect(id) {
- return request({
- url: '/test/detect/' + id,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/test/log.js b/ruoyi-ui/src/api/test/log.js
deleted file mode 100644
index d357ed4..0000000
--- a/ruoyi-ui/src/api/test/log.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import request from '@/utils/request'
-
-// 查询检测项日志列表
-export function listLog(query) {
- return request({
- url: '/test/log/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询检测项日志详细
-export function getLog(id) {
- return request({
- url: '/test/log/' + id,
- method: 'get'
- })
-}
-
-// 新增检测项日志
-export function addLog(data) {
- return request({
- url: '/test/log',
- method: 'post',
- data: data
- })
-}
-
-// 修改检测项日志
-export function updateLog(data) {
- return request({
- url: '/test/log',
- method: 'put',
- data: data
- })
-}
-
-// 删除检测项日志
-export function delLog(id) {
- return request({
- url: '/test/log/' + id,
- method: 'delete'
- })
-}
-
-// 查询任务实例列表
-export function listInst(query) {
- return request({
- url: '/test/inst/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询任务实例日志
-export function getInst(query) {
- return request({
- url: '/test/inst/log/detail',
- method: 'get',
- params: query
- })
-}
-
-// 查询任务实例日志
-export function getLogicFlow(query) {
- return request({
- url: '/test/inst/log/query',
- method: 'get',
- params: query
- })
-}
-
diff --git a/ruoyi-ui/src/api/test/params.js b/ruoyi-ui/src/api/test/params.js
deleted file mode 100644
index 1cde454..0000000
--- a/ruoyi-ui/src/api/test/params.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import request from '@/utils/request'
-
-// 查询参数配置列表
-export function listParams(query) {
- return request({
- url: '/test/param/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询参数配置详细
-export function getParams(id) {
- return request({
- url: '/test/param/' + id,
- method: 'get'
- })
-}
-
-// 新增参数配置
-export function addParams(data) {
- return request({
- url: '/test/param',
- method: 'post',
- data: data
- })
-}
-
-// 修改参数配置
-export function updateParams(data) {
- return request({
- url: '/test/param',
- method: 'put',
- data: data
- })
-}
-
-// 删除参数配置
-export function delParams(id) {
- return request({
- url: '/test/param/' + id,
- method: 'delete'
- })
-}
-
-// 参数来源
-export function getParamSources(id) {
- return request({
- url: '/test/param/sources',
- method: 'get'
- })
-}
-
-// 参数类型
-export function getParamTypes(id) {
- return request({
- url: '/test/param/types',
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/api/tool/gen.js b/ruoyi-ui/src/api/tool/gen.js
deleted file mode 100644
index 2075677..0000000
--- a/ruoyi-ui/src/api/tool/gen.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import request from '@/utils/request'
-
-// 查询生成表数据
-export function listTable(query) {
- return request({
- url: '/tool/gen/list',
- method: 'get',
- params: query
- })
-}
-// 查询db数据库列表
-export function listDbTable(query) {
- return request({
- url: '/tool/gen/db/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询表详细信息
-export function getGenTable(tableId) {
- return request({
- url: '/tool/gen/' + tableId,
- method: 'get'
- })
-}
-
-// 修改代码生成信息
-export function updateGenTable(data) {
- return request({
- url: '/tool/gen',
- method: 'put',
- data: data
- })
-}
-
-// 导入表
-export function importTable(data) {
- return request({
- url: '/tool/gen/importTable',
- method: 'post',
- params: data
- })
-}
-
-// 创建表
-export function createTable(data) {
- return request({
- url: '/tool/gen/createTable',
- method: 'post',
- params: data
- })
-}
-
-// 预览生成代码
-export function previewTable(tableId) {
- return request({
- url: '/tool/gen/preview/' + tableId,
- method: 'get'
- })
-}
-
-// 删除表数据
-export function delTable(tableId) {
- return request({
- url: '/tool/gen/' + tableId,
- method: 'delete'
- })
-}
-
-// 生成代码(自定义路径)
-export function genCode(tableName) {
- return request({
- url: '/tool/gen/genCode/' + tableName,
- method: 'get'
- })
-}
-
-// 同步数据库
-export function synchDb(tableName) {
- return request({
- url: '/tool/gen/synchDb/' + tableName,
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/api/touch_interaction.js b/ruoyi-ui/src/api/touch_interaction.js
deleted file mode 100644
index 9182549..0000000
--- a/ruoyi-ui/src/api/touch_interaction.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import request from "@/utils/request.js";
-
-export function coordinateMarking(data) {
- return request({
- url: '/show/touch/coordinates',
- method: 'post',
- headers: {
- isToken: false,
- 'Content-Type': 'multipart/form-data',
- 'Authorization':'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImIzY2QwYjFjLWNlNjgtNDEwNy1hYzA1LTdmYTBlNmQ4NzJmNiJ9.2N9E9IDrFeCe-yRIBly60N0kYYmCscdrhyd8KHmhw2dxLi7B_A1i8bcWRTtx9YryFB3AhkvZkGauMx0CdZ0TDg'
- },
- data: data
- })
-}
diff --git a/ruoyi-ui/src/api/vi/corpus.js b/ruoyi-ui/src/api/vi/corpus.js
deleted file mode 100644
index f049e87..0000000
--- a/ruoyi-ui/src/api/vi/corpus.js
+++ /dev/null
@@ -1,77 +0,0 @@
-import request from "@/utils/request";
-import { method } from "lodash";
-
-// 查询语料库列表
-export function listCorpus(query) {
- return request({
- url: "/vi/corpus/single/list",
- method: "get",
- params: query,
- });
-}
-
-// 查询语料库详细
-export function getCorpus(corpusId) {
- return request({
- url: "/vi/corpus/" + corpusId,
- method: "get",
- });
-}
-
-// 新增语料库
-export function addCorpus(data) {
- return request({
- url: "/vi/corpus",
- method: "post",
- data: data,
- });
-}
-
-// 修改语料库
-export function updateCorpus(data) {
- return request({
- url: "/vi/corpus",
- method: "put",
- data: data,
- });
-}
-
-// 删除语料库
-export function delCorpus(corpusId) {
- return request({
- url: "/vi/corpus/" + corpusId,
- method: "delete",
- });
-}
-
-export function batchAddCorpus(data) {
- return request({
- url: "/vi/corpus/continuous/insert",
- method: "post",
- data: data,
- });
-}
-
-export function batchUpdateCorpus(data) {
- return request({
- url: "/vi/corpus/continuous/update",
- method: "post",
- data: data,
- });
-}
-
-export function getBatchCorpus(query) {
- return request({
- url: "/vi/corpus/continuous/list",
- method: "get",
- params: query,
- });
-}
-
-export function deleteBatchCorpus(corpusIds) {
- return request({
- url: `/vi/corpus/continuous`,
- method: "delete",
- data: corpusIds,
- });
-}
diff --git a/ruoyi-ui/src/api/vi/plan.js b/ruoyi-ui/src/api/vi/plan.js
deleted file mode 100644
index 73f0f0e..0000000
--- a/ruoyi-ui/src/api/vi/plan.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询语音交互-方案列表
-export function listScheme(query) {
- return request({
- url: '/vi/scheme/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询语音交互-方案详细
-export function getScheme(schemeId) {
- return request({
- url: '/vi/scheme/' + schemeId,
- method: 'get'
- })
-}
-
-// 新增语音交互-方案
-export function addScheme(data) {
- return request({
- url: '/vi/scheme',
- method: 'post',
- data: data
- })
-}
-
-// 修改语音交互-方案
-export function updateScheme(data) {
- return request({
- url: '/vi/scheme',
- method: 'put',
- data: data
- })
-}
-
-// 删除语音交互-方案
-export function delScheme(schemeId) {
- return request({
- url: '/vi/scheme/' + schemeId,
- method: 'delete'
- })
-}
diff --git a/ruoyi-ui/src/api/vi/project.js b/ruoyi-ui/src/api/vi/project.js
deleted file mode 100644
index 0b0397b..0000000
--- a/ruoyi-ui/src/api/vi/project.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import request from '@/utils/request'
-
-// 查询语音交互-项目列表
-export function listProject(query) {
- return request({
- url: '/vi/project/list',
- method: 'get',
- params: query
- })
-}
-
-// 查询语音交互-项目详细
-export function getProject(projectId) {
- return request({
- url: '/vi/project/' + projectId,
- method: 'get'
- })
-}
-
-// 新增语音交互-项目
-export function addProject(data) {
- return request({
- url: '/vi/project',
- method: 'post',
- data: data
- })
-}
-
-// 修改语音交互-项目
-export function updateProject(data) {
- return request({
- url: '/vi/project',
- method: 'put',
- data: data
- })
-}
-
-// 删除语音交互-项目
-export function delProject(projectId) {
- return request({
- url: '/vi/project/' + projectId,
- method: 'delete'
- })
-}
-
-export function getExecuteRunParams(projectId) {
- return request({
- url: '/vi/project/queryExecuteRunParams',
- method: 'get',
- params: {
- projectId
- }
- })
-}
-
-export function projectExecute(data) {
- return request({
- url: '/vi/project/execute',
- method: 'post',
- data
- })
-}
-
-export function queryExecuteInstId(projectId) {
- return request({
- url: `/vi/project/queryExecuteInstId/${projectId}`,
- method: 'get',
-
- })
-}
-
-
-/**
- * 获取评估
- * @param {*} projectId
- * @returns
- */
-export function getValuationProject(projectId) {
- return request({
- url: '/vi/project/evaluation/' + projectId,
- method: 'get'
- })
-}
diff --git a/ruoyi-ui/src/assets/401_images/401.gif b/ruoyi-ui/src/assets/401_images/401.gif
deleted file mode 100644
index cd6e0d9..0000000
Binary files a/ruoyi-ui/src/assets/401_images/401.gif and /dev/null differ
diff --git a/ruoyi-ui/src/assets/404_images/404.png b/ruoyi-ui/src/assets/404_images/404.png
deleted file mode 100644
index 3d8e230..0000000
Binary files a/ruoyi-ui/src/assets/404_images/404.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/404_images/404_cloud.png b/ruoyi-ui/src/assets/404_images/404_cloud.png
deleted file mode 100644
index c6281d0..0000000
Binary files a/ruoyi-ui/src/assets/404_images/404_cloud.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/icons/svg/404.svg b/ruoyi-ui/src/assets/icons/svg/404.svg
deleted file mode 100644
index 6df5019..0000000
--- a/ruoyi-ui/src/assets/icons/svg/404.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/add.svg b/ruoyi-ui/src/assets/icons/svg/add.svg
deleted file mode 100644
index 4069a57..0000000
--- a/ruoyi-ui/src/assets/icons/svg/add.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/bot.svg b/ruoyi-ui/src/assets/icons/svg/bot.svg
deleted file mode 100644
index 808cb7b..0000000
--- a/ruoyi-ui/src/assets/icons/svg/bot.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/bug.svg b/ruoyi-ui/src/assets/icons/svg/bug.svg
deleted file mode 100644
index 05a150d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/bug.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/build.svg b/ruoyi-ui/src/assets/icons/svg/build.svg
deleted file mode 100644
index 97c4688..0000000
--- a/ruoyi-ui/src/assets/icons/svg/build.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/button.svg b/ruoyi-ui/src/assets/icons/svg/button.svg
deleted file mode 100644
index 904fddc..0000000
--- a/ruoyi-ui/src/assets/icons/svg/button.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/cascader.svg b/ruoyi-ui/src/assets/icons/svg/cascader.svg
deleted file mode 100644
index e256024..0000000
--- a/ruoyi-ui/src/assets/icons/svg/cascader.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/chart.svg b/ruoyi-ui/src/assets/icons/svg/chart.svg
deleted file mode 100644
index 27728fb..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/checkbox.svg b/ruoyi-ui/src/assets/icons/svg/checkbox.svg
deleted file mode 100644
index 013fd3a..0000000
--- a/ruoyi-ui/src/assets/icons/svg/checkbox.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/chevron-down.svg b/ruoyi-ui/src/assets/icons/svg/chevron-down.svg
deleted file mode 100644
index 2d3b12a..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chevron-down.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/chevron-left.svg b/ruoyi-ui/src/assets/icons/svg/chevron-left.svg
deleted file mode 100644
index c07e6b1..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chevron-left.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/chevron-right.svg b/ruoyi-ui/src/assets/icons/svg/chevron-right.svg
deleted file mode 100644
index 29a2824..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chevron-right.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/chevron-stop.svg b/ruoyi-ui/src/assets/icons/svg/chevron-stop.svg
deleted file mode 100644
index 714f927..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chevron-stop.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/chevron-up.svg b/ruoyi-ui/src/assets/icons/svg/chevron-up.svg
deleted file mode 100644
index c981751..0000000
--- a/ruoyi-ui/src/assets/icons/svg/chevron-up.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/clipboard.svg b/ruoyi-ui/src/assets/icons/svg/clipboard.svg
deleted file mode 100644
index 90923ff..0000000
--- a/ruoyi-ui/src/assets/icons/svg/clipboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/code.svg b/ruoyi-ui/src/assets/icons/svg/code.svg
deleted file mode 100644
index 5f9c5ab..0000000
--- a/ruoyi-ui/src/assets/icons/svg/code.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/color.svg b/ruoyi-ui/src/assets/icons/svg/color.svg
deleted file mode 100644
index 44a81aa..0000000
--- a/ruoyi-ui/src/assets/icons/svg/color.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/component.svg b/ruoyi-ui/src/assets/icons/svg/component.svg
deleted file mode 100644
index 29c3458..0000000
--- a/ruoyi-ui/src/assets/icons/svg/component.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/consuming.svg b/ruoyi-ui/src/assets/icons/svg/consuming.svg
deleted file mode 100644
index 9d49ce5..0000000
--- a/ruoyi-ui/src/assets/icons/svg/consuming.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/cpu.svg b/ruoyi-ui/src/assets/icons/svg/cpu.svg
deleted file mode 100644
index 1b336d8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/cpu.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/dashboard.svg b/ruoyi-ui/src/assets/icons/svg/dashboard.svg
deleted file mode 100644
index 5317d37..0000000
--- a/ruoyi-ui/src/assets/icons/svg/dashboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/date-range.svg b/ruoyi-ui/src/assets/icons/svg/date-range.svg
deleted file mode 100644
index fda571e..0000000
--- a/ruoyi-ui/src/assets/icons/svg/date-range.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/date.svg b/ruoyi-ui/src/assets/icons/svg/date.svg
deleted file mode 100644
index 52dc73e..0000000
--- a/ruoyi-ui/src/assets/icons/svg/date.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/dict.svg b/ruoyi-ui/src/assets/icons/svg/dict.svg
deleted file mode 100644
index 4849377..0000000
--- a/ruoyi-ui/src/assets/icons/svg/dict.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/documentation.svg b/ruoyi-ui/src/assets/icons/svg/documentation.svg
deleted file mode 100644
index 7043122..0000000
--- a/ruoyi-ui/src/assets/icons/svg/documentation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/download.svg b/ruoyi-ui/src/assets/icons/svg/download.svg
deleted file mode 100644
index c896951..0000000
--- a/ruoyi-ui/src/assets/icons/svg/download.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/drag.svg b/ruoyi-ui/src/assets/icons/svg/drag.svg
deleted file mode 100644
index 4185d3c..0000000
--- a/ruoyi-ui/src/assets/icons/svg/drag.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/druid.svg b/ruoyi-ui/src/assets/icons/svg/druid.svg
deleted file mode 100644
index a2b4b4e..0000000
--- a/ruoyi-ui/src/assets/icons/svg/druid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/edit.svg b/ruoyi-ui/src/assets/icons/svg/edit.svg
deleted file mode 100644
index d26101f..0000000
--- a/ruoyi-ui/src/assets/icons/svg/edit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/education.svg b/ruoyi-ui/src/assets/icons/svg/education.svg
deleted file mode 100644
index 7bfb01d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/education.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/email.svg b/ruoyi-ui/src/assets/icons/svg/email.svg
deleted file mode 100644
index 74d25e2..0000000
--- a/ruoyi-ui/src/assets/icons/svg/email.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/example.svg b/ruoyi-ui/src/assets/icons/svg/example.svg
deleted file mode 100644
index 46f42b5..0000000
--- a/ruoyi-ui/src/assets/icons/svg/example.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/excel.svg b/ruoyi-ui/src/assets/icons/svg/excel.svg
deleted file mode 100644
index 74d97b8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/excel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg b/ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg
deleted file mode 100644
index 485c128..0000000
--- a/ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/eye-open.svg b/ruoyi-ui/src/assets/icons/svg/eye-open.svg
deleted file mode 100644
index 88dcc98..0000000
--- a/ruoyi-ui/src/assets/icons/svg/eye-open.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/eye.svg b/ruoyi-ui/src/assets/icons/svg/eye.svg
deleted file mode 100644
index 16ed2d8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/eye.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/form.svg b/ruoyi-ui/src/assets/icons/svg/form.svg
deleted file mode 100644
index dcbaa18..0000000
--- a/ruoyi-ui/src/assets/icons/svg/form.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/fullscreen.svg b/ruoyi-ui/src/assets/icons/svg/fullscreen.svg
deleted file mode 100644
index 0e86b6f..0000000
--- a/ruoyi-ui/src/assets/icons/svg/fullscreen.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/gamepad.svg b/ruoyi-ui/src/assets/icons/svg/gamepad.svg
deleted file mode 100644
index 37f522b..0000000
--- a/ruoyi-ui/src/assets/icons/svg/gamepad.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/github.svg b/ruoyi-ui/src/assets/icons/svg/github.svg
deleted file mode 100644
index db0a0d4..0000000
--- a/ruoyi-ui/src/assets/icons/svg/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/guide.svg b/ruoyi-ui/src/assets/icons/svg/guide.svg
deleted file mode 100644
index b271001..0000000
--- a/ruoyi-ui/src/assets/icons/svg/guide.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/icon.svg b/ruoyi-ui/src/assets/icons/svg/icon.svg
deleted file mode 100644
index 82be8ee..0000000
--- a/ruoyi-ui/src/assets/icons/svg/icon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/input.svg b/ruoyi-ui/src/assets/icons/svg/input.svg
deleted file mode 100644
index ab91381..0000000
--- a/ruoyi-ui/src/assets/icons/svg/input.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/international.svg b/ruoyi-ui/src/assets/icons/svg/international.svg
deleted file mode 100644
index e9b56ee..0000000
--- a/ruoyi-ui/src/assets/icons/svg/international.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/job.svg b/ruoyi-ui/src/assets/icons/svg/job.svg
deleted file mode 100644
index 2a93a25..0000000
--- a/ruoyi-ui/src/assets/icons/svg/job.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/language.svg b/ruoyi-ui/src/assets/icons/svg/language.svg
deleted file mode 100644
index ffee595..0000000
--- a/ruoyi-ui/src/assets/icons/svg/language.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/link.svg b/ruoyi-ui/src/assets/icons/svg/link.svg
deleted file mode 100644
index 48197ba..0000000
--- a/ruoyi-ui/src/assets/icons/svg/link.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/list.svg b/ruoyi-ui/src/assets/icons/svg/list.svg
deleted file mode 100644
index 20259ed..0000000
--- a/ruoyi-ui/src/assets/icons/svg/list.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/locate-fixed.svg b/ruoyi-ui/src/assets/icons/svg/locate-fixed.svg
deleted file mode 100644
index f6dc1bb..0000000
--- a/ruoyi-ui/src/assets/icons/svg/locate-fixed.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/lock.svg b/ruoyi-ui/src/assets/icons/svg/lock.svg
deleted file mode 100644
index 74fee54..0000000
--- a/ruoyi-ui/src/assets/icons/svg/lock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/log.svg b/ruoyi-ui/src/assets/icons/svg/log.svg
deleted file mode 100644
index d879d33..0000000
--- a/ruoyi-ui/src/assets/icons/svg/log.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/logininfor.svg b/ruoyi-ui/src/assets/icons/svg/logininfor.svg
deleted file mode 100644
index 267f844..0000000
--- a/ruoyi-ui/src/assets/icons/svg/logininfor.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/map.svg b/ruoyi-ui/src/assets/icons/svg/map.svg
deleted file mode 100644
index 1893335..0000000
--- a/ruoyi-ui/src/assets/icons/svg/map.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/message.svg b/ruoyi-ui/src/assets/icons/svg/message.svg
deleted file mode 100644
index 14ca817..0000000
--- a/ruoyi-ui/src/assets/icons/svg/message.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/money.svg b/ruoyi-ui/src/assets/icons/svg/money.svg
deleted file mode 100644
index c1580de..0000000
--- a/ruoyi-ui/src/assets/icons/svg/money.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/monitor.svg b/ruoyi-ui/src/assets/icons/svg/monitor.svg
deleted file mode 100644
index bc308cb..0000000
--- a/ruoyi-ui/src/assets/icons/svg/monitor.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/moon.svg b/ruoyi-ui/src/assets/icons/svg/moon.svg
deleted file mode 100644
index ec72d77..0000000
--- a/ruoyi-ui/src/assets/icons/svg/moon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/navigation.svg b/ruoyi-ui/src/assets/icons/svg/navigation.svg
deleted file mode 100644
index 819fd1b..0000000
--- a/ruoyi-ui/src/assets/icons/svg/navigation.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/nested.svg b/ruoyi-ui/src/assets/icons/svg/nested.svg
deleted file mode 100644
index 06713a8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/nested.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/number.svg b/ruoyi-ui/src/assets/icons/svg/number.svg
deleted file mode 100644
index ad5ce9a..0000000
--- a/ruoyi-ui/src/assets/icons/svg/number.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/online.svg b/ruoyi-ui/src/assets/icons/svg/online.svg
deleted file mode 100644
index 330a202..0000000
--- a/ruoyi-ui/src/assets/icons/svg/online.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/password.svg b/ruoyi-ui/src/assets/icons/svg/password.svg
deleted file mode 100644
index 6c64def..0000000
--- a/ruoyi-ui/src/assets/icons/svg/password.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/pause.svg b/ruoyi-ui/src/assets/icons/svg/pause.svg
deleted file mode 100644
index 0468653..0000000
--- a/ruoyi-ui/src/assets/icons/svg/pause.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/pdf.svg b/ruoyi-ui/src/assets/icons/svg/pdf.svg
deleted file mode 100644
index 957aa0c..0000000
--- a/ruoyi-ui/src/assets/icons/svg/pdf.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/people.svg b/ruoyi-ui/src/assets/icons/svg/people.svg
deleted file mode 100644
index 2bd54ae..0000000
--- a/ruoyi-ui/src/assets/icons/svg/people.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/peoples.svg b/ruoyi-ui/src/assets/icons/svg/peoples.svg
deleted file mode 100644
index aab852e..0000000
--- a/ruoyi-ui/src/assets/icons/svg/peoples.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/phone.svg b/ruoyi-ui/src/assets/icons/svg/phone.svg
deleted file mode 100644
index ab8e8c4..0000000
--- a/ruoyi-ui/src/assets/icons/svg/phone.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/post.svg b/ruoyi-ui/src/assets/icons/svg/post.svg
deleted file mode 100644
index 2922c61..0000000
--- a/ruoyi-ui/src/assets/icons/svg/post.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/qq.svg b/ruoyi-ui/src/assets/icons/svg/qq.svg
deleted file mode 100644
index ee13d4e..0000000
--- a/ruoyi-ui/src/assets/icons/svg/qq.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/question.svg b/ruoyi-ui/src/assets/icons/svg/question.svg
deleted file mode 100644
index cf75bd4..0000000
--- a/ruoyi-ui/src/assets/icons/svg/question.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/radio.svg b/ruoyi-ui/src/assets/icons/svg/radio.svg
deleted file mode 100644
index 0cde345..0000000
--- a/ruoyi-ui/src/assets/icons/svg/radio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/rate.svg b/ruoyi-ui/src/assets/icons/svg/rate.svg
deleted file mode 100644
index aa3b14d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/rate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/redis-list.svg b/ruoyi-ui/src/assets/icons/svg/redis-list.svg
deleted file mode 100644
index 98a15b2..0000000
--- a/ruoyi-ui/src/assets/icons/svg/redis-list.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/redis.svg b/ruoyi-ui/src/assets/icons/svg/redis.svg
deleted file mode 100644
index 2f1d62d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/redis.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/remove.svg b/ruoyi-ui/src/assets/icons/svg/remove.svg
deleted file mode 100644
index 808f25c..0000000
--- a/ruoyi-ui/src/assets/icons/svg/remove.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/row.svg b/ruoyi-ui/src/assets/icons/svg/row.svg
deleted file mode 100644
index 0780992..0000000
--- a/ruoyi-ui/src/assets/icons/svg/row.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/search.svg b/ruoyi-ui/src/assets/icons/svg/search.svg
deleted file mode 100644
index 84233dd..0000000
--- a/ruoyi-ui/src/assets/icons/svg/search.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/select.svg b/ruoyi-ui/src/assets/icons/svg/select.svg
deleted file mode 100644
index d628382..0000000
--- a/ruoyi-ui/src/assets/icons/svg/select.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/server.svg b/ruoyi-ui/src/assets/icons/svg/server.svg
deleted file mode 100644
index eb287e3..0000000
--- a/ruoyi-ui/src/assets/icons/svg/server.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/shopping.svg b/ruoyi-ui/src/assets/icons/svg/shopping.svg
deleted file mode 100644
index 87513e7..0000000
--- a/ruoyi-ui/src/assets/icons/svg/shopping.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/size.svg b/ruoyi-ui/src/assets/icons/svg/size.svg
deleted file mode 100644
index ddb25b8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/size.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/skill.svg b/ruoyi-ui/src/assets/icons/svg/skill.svg
deleted file mode 100644
index a3b7312..0000000
--- a/ruoyi-ui/src/assets/icons/svg/skill.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/slider.svg b/ruoyi-ui/src/assets/icons/svg/slider.svg
deleted file mode 100644
index fbe4f39..0000000
--- a/ruoyi-ui/src/assets/icons/svg/slider.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/star.svg b/ruoyi-ui/src/assets/icons/svg/star.svg
deleted file mode 100644
index 6cf86e6..0000000
--- a/ruoyi-ui/src/assets/icons/svg/star.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/start.svg b/ruoyi-ui/src/assets/icons/svg/start.svg
deleted file mode 100644
index 6c9ef5b..0000000
--- a/ruoyi-ui/src/assets/icons/svg/start.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/stop.svg b/ruoyi-ui/src/assets/icons/svg/stop.svg
deleted file mode 100644
index 47f964d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/stop.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/sunny.svg b/ruoyi-ui/src/assets/icons/svg/sunny.svg
deleted file mode 100644
index cc628bf..0000000
--- a/ruoyi-ui/src/assets/icons/svg/sunny.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/swagger.svg b/ruoyi-ui/src/assets/icons/svg/swagger.svg
deleted file mode 100644
index 05d4e7b..0000000
--- a/ruoyi-ui/src/assets/icons/svg/swagger.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/switch.svg b/ruoyi-ui/src/assets/icons/svg/switch.svg
deleted file mode 100644
index 0ba61e3..0000000
--- a/ruoyi-ui/src/assets/icons/svg/switch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/system.svg b/ruoyi-ui/src/assets/icons/svg/system.svg
deleted file mode 100644
index 5992593..0000000
--- a/ruoyi-ui/src/assets/icons/svg/system.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/tab.svg b/ruoyi-ui/src/assets/icons/svg/tab.svg
deleted file mode 100644
index b4b48e4..0000000
--- a/ruoyi-ui/src/assets/icons/svg/tab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/table.svg b/ruoyi-ui/src/assets/icons/svg/table.svg
deleted file mode 100644
index 0e3dc9d..0000000
--- a/ruoyi-ui/src/assets/icons/svg/table.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/task.svg b/ruoyi-ui/src/assets/icons/svg/task.svg
deleted file mode 100644
index 1028189..0000000
--- a/ruoyi-ui/src/assets/icons/svg/task.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/textarea.svg b/ruoyi-ui/src/assets/icons/svg/textarea.svg
deleted file mode 100644
index 2709f29..0000000
--- a/ruoyi-ui/src/assets/icons/svg/textarea.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/theme.svg b/ruoyi-ui/src/assets/icons/svg/theme.svg
deleted file mode 100644
index 5982a2f..0000000
--- a/ruoyi-ui/src/assets/icons/svg/theme.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/timbre.svg b/ruoyi-ui/src/assets/icons/svg/timbre.svg
deleted file mode 100644
index aa96de9..0000000
--- a/ruoyi-ui/src/assets/icons/svg/timbre.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/time-range.svg b/ruoyi-ui/src/assets/icons/svg/time-range.svg
deleted file mode 100644
index 13c1202..0000000
--- a/ruoyi-ui/src/assets/icons/svg/time-range.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/time.svg b/ruoyi-ui/src/assets/icons/svg/time.svg
deleted file mode 100644
index b376e32..0000000
--- a/ruoyi-ui/src/assets/icons/svg/time.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/tool.svg b/ruoyi-ui/src/assets/icons/svg/tool.svg
deleted file mode 100644
index 48e0e35..0000000
--- a/ruoyi-ui/src/assets/icons/svg/tool.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/tree-table.svg b/ruoyi-ui/src/assets/icons/svg/tree-table.svg
deleted file mode 100644
index 8aafdb8..0000000
--- a/ruoyi-ui/src/assets/icons/svg/tree-table.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/tree.svg b/ruoyi-ui/src/assets/icons/svg/tree.svg
deleted file mode 100644
index dd4b7dd..0000000
--- a/ruoyi-ui/src/assets/icons/svg/tree.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/upload.svg b/ruoyi-ui/src/assets/icons/svg/upload.svg
deleted file mode 100644
index bae49c0..0000000
--- a/ruoyi-ui/src/assets/icons/svg/upload.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/user.svg b/ruoyi-ui/src/assets/icons/svg/user.svg
deleted file mode 100644
index 0ba0716..0000000
--- a/ruoyi-ui/src/assets/icons/svg/user.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/validCode.svg b/ruoyi-ui/src/assets/icons/svg/validCode.svg
deleted file mode 100644
index cfb1021..0000000
--- a/ruoyi-ui/src/assets/icons/svg/validCode.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/wechat.svg b/ruoyi-ui/src/assets/icons/svg/wechat.svg
deleted file mode 100644
index c586e55..0000000
--- a/ruoyi-ui/src/assets/icons/svg/wechat.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/zip.svg b/ruoyi-ui/src/assets/icons/svg/zip.svg
deleted file mode 100644
index f806fc4..0000000
--- a/ruoyi-ui/src/assets/icons/svg/zip.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/icons/svg/zoom-in.svg b/ruoyi-ui/src/assets/icons/svg/zoom-in.svg
deleted file mode 100644
index ffa20bd..0000000
--- a/ruoyi-ui/src/assets/icons/svg/zoom-in.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/icons/svg/zoom-out.svg b/ruoyi-ui/src/assets/icons/svg/zoom-out.svg
deleted file mode 100644
index 451be83..0000000
--- a/ruoyi-ui/src/assets/icons/svg/zoom-out.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/ruoyi-ui/src/assets/images/arm.png b/ruoyi-ui/src/assets/images/arm.png
deleted file mode 100644
index 6b38d40..0000000
Binary files a/ruoyi-ui/src/assets/images/arm.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/dark.svg b/ruoyi-ui/src/assets/images/dark.svg
deleted file mode 100644
index f646bd7..0000000
--- a/ruoyi-ui/src/assets/images/dark.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/images/hand.png b/ruoyi-ui/src/assets/images/hand.png
deleted file mode 100644
index c3d1d36..0000000
Binary files a/ruoyi-ui/src/assets/images/hand.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/hand2.png b/ruoyi-ui/src/assets/images/hand2.png
deleted file mode 100644
index 1f8cafc..0000000
Binary files a/ruoyi-ui/src/assets/images/hand2.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/index-background.jpg b/ruoyi-ui/src/assets/images/index-background.jpg
deleted file mode 100644
index a93ee06..0000000
Binary files a/ruoyi-ui/src/assets/images/index-background.jpg and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/light.svg b/ruoyi-ui/src/assets/images/light.svg
deleted file mode 100644
index ab7cc08..0000000
--- a/ruoyi-ui/src/assets/images/light.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/images/login-background-back.jpg b/ruoyi-ui/src/assets/images/login-background-back.jpg
deleted file mode 100644
index 8a89eb8..0000000
Binary files a/ruoyi-ui/src/assets/images/login-background-back.jpg and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/login-background.jpg b/ruoyi-ui/src/assets/images/login-background.jpg
deleted file mode 100644
index 242ca39..0000000
Binary files a/ruoyi-ui/src/assets/images/login-background.jpg and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/pay.png b/ruoyi-ui/src/assets/images/pay.png
deleted file mode 100644
index bb8b967..0000000
Binary files a/ruoyi-ui/src/assets/images/pay.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/profile.jpg b/ruoyi-ui/src/assets/images/profile.jpg
deleted file mode 100644
index b3a940b..0000000
Binary files a/ruoyi-ui/src/assets/images/profile.jpg and /dev/null differ
diff --git a/ruoyi-ui/src/assets/images/robot.png b/ruoyi-ui/src/assets/images/robot.png
deleted file mode 100644
index 21d510f..0000000
Binary files a/ruoyi-ui/src/assets/images/robot.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/logo/logo.png b/ruoyi-ui/src/assets/logo/logo.png
deleted file mode 100644
index e263760..0000000
Binary files a/ruoyi-ui/src/assets/logo/logo.png and /dev/null differ
diff --git a/ruoyi-ui/src/assets/styles/btn.scss b/ruoyi-ui/src/assets/styles/btn.scss
deleted file mode 100644
index 3590d8d..0000000
--- a/ruoyi-ui/src/assets/styles/btn.scss
+++ /dev/null
@@ -1,99 +0,0 @@
-@import './variables.module.scss';
-
-@mixin colorBtn($color) {
- background: $color;
-
- &:hover {
- color: $color;
-
- &:before,
- &:after {
- background: $color;
- }
- }
-}
-
-.blue-btn {
- @include colorBtn($blue)
-}
-
-.light-blue-btn {
- @include colorBtn($light-blue)
-}
-
-.red-btn {
- @include colorBtn($red)
-}
-
-.pink-btn {
- @include colorBtn($pink)
-}
-
-.green-btn {
- @include colorBtn($green)
-}
-
-.tiffany-btn {
- @include colorBtn($tiffany)
-}
-
-.yellow-btn {
- @include colorBtn($yellow)
-}
-
-.pan-btn {
- font-size: 14px;
- color: #fff;
- padding: 14px 36px;
- border-radius: 8px;
- border: none;
- outline: none;
- transition: 600ms ease all;
- position: relative;
- display: inline-block;
-
- &:hover {
- background: #fff;
-
- &:before,
- &:after {
- width: 100%;
- transition: 600ms ease all;
- }
- }
-
- &:before,
- &:after {
- content: '';
- position: absolute;
- top: 0;
- right: 0;
- height: 2px;
- width: 0;
- transition: 400ms ease all;
- }
-
- &::after {
- right: inherit;
- top: inherit;
- left: 0;
- bottom: 0;
- }
-}
-
-.custom-button {
- display: inline-block;
- line-height: 1;
- white-space: nowrap;
- cursor: pointer;
- background: #fff;
- color: #fff;
- -webkit-appearance: none;
- text-align: center;
- box-sizing: border-box;
- outline: 0;
- margin: 0;
- padding: 10px 15px;
- font-size: 14px;
- border-radius: 4px;
-}
diff --git a/ruoyi-ui/src/assets/styles/element-ui.scss b/ruoyi-ui/src/assets/styles/element-ui.scss
deleted file mode 100644
index 0f175f2..0000000
--- a/ruoyi-ui/src/assets/styles/element-ui.scss
+++ /dev/null
@@ -1,96 +0,0 @@
-// cover some element-ui styles
-
-.el-breadcrumb__inner,
-.el-breadcrumb__inner a {
- font-weight: 400 !important;
-}
-
-.el-upload {
- input[type="file"] {
- display: none !important;
- }
-}
-
-.el-upload__input {
- display: none;
-}
-
-.cell {
- .el-tag {
- margin-right: 0px;
- }
-}
-
-.small-padding {
- .cell {
- padding-left: 5px;
- padding-right: 5px;
- }
-}
-
-.fixed-width {
- .el-button--mini {
- padding: 7px 10px;
- width: 60px;
- }
-}
-
-.status-col {
- .cell {
- padding: 0 10px;
- text-align: center;
-
- .el-tag {
- margin-right: 0px;
- }
- }
-}
-
-// to fixed https://github.com/ElemeFE/element/issues/2461
-.el-dialog {
- transform: none;
- left: 0;
- position: relative;
- margin: 0 auto;
-}
-
-// refine element ui upload
-.upload-container {
- .el-upload {
- width: 100%;
-
- .el-upload-dragger {
- width: 100%;
- height: 200px;
- }
- }
-}
-
-// dropdown
-.el-dropdown-menu {
- a {
- display: block
- }
-}
-
-// fix date-picker ui bug in filter-item
-.el-range-editor.el-input__inner {
- display: inline-flex !important;
-}
-
-// to fix el-date-picker css style
-.el-range-separator {
- box-sizing: content-box;
-}
-
-.el-menu--collapse
- > div
- > .el-submenu
- > .el-submenu__title
- .el-submenu__icon-arrow {
- display: none;
-}
-
-.el-dropdown .el-dropdown-link{
- color: var(--el-color-primary) !important;
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/assets/styles/index.scss b/ruoyi-ui/src/assets/styles/index.scss
deleted file mode 100644
index dbc678a..0000000
--- a/ruoyi-ui/src/assets/styles/index.scss
+++ /dev/null
@@ -1,187 +0,0 @@
-@import './variables.module.scss';
-@import './mixin.scss';
-@import './transition.scss';
-@import './element-ui.scss';
-@import './sidebar.scss';
-@import './btn.scss';
-@import './ruoyi.scss';
-
-body {
- height: 100%;
- margin: 0;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: antialiased;
- text-rendering: optimizeLegibility;
- font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
-}
-
-label {
- font-weight: 700;
-}
-
-html {
- height: 100%;
- box-sizing: border-box;
-}
-
-#app {
- height: 100%;
-}
-
-*,
-*:before,
-*:after {
- box-sizing: inherit;
-}
-
-.no-padding {
- padding: 0px !important;
-}
-
-.padding-content {
- padding: 4px 0;
-}
-
-a:focus,
-a:active {
- outline: none;
-}
-
-a,
-a:focus,
-a:hover {
- cursor: pointer;
- color: inherit;
- text-decoration: none;
-}
-
-div:focus {
- outline: none;
-}
-
-.fr {
- float: right;
-}
-
-.fl {
- float: left;
-}
-
-.pr-5 {
- padding-right: 5px;
-}
-
-.pl-5 {
- padding-left: 5px;
-}
-
-.block {
- display: block;
-}
-
-.pointer {
- cursor: pointer;
-}
-
-.inlineBlock {
- display: block;
-}
-
-.clearfix {
- &:after {
- visibility: hidden;
- display: block;
- font-size: 0;
- content: " ";
- clear: both;
- height: 0;
- }
-}
-
-aside {
- background: #eef1f6;
- padding: 8px 24px;
- margin-bottom: 20px;
- border-radius: 2px;
- display: block;
- line-height: 32px;
- font-size: 16px;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
- color: #2c3e50;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-
- a {
- color: #337ab7;
- cursor: pointer;
-
- &:hover {
- color: rgb(32, 160, 255);
- }
- }
-}
-
-//main-container全局样式
-.app-container {
- width: 100%;
- padding: 20px;
- background-color: var(--el-bg-color);
- border-radius: 4px;
-}
-
-.components-container {
- margin: 30px 50px;
- position: relative;
-}
-
-.pagination-container {
- margin-top: 30px;
-}
-
-.text-center {
- text-align: center
-}
-
-.sub-navbar {
- height: 50px;
- line-height: 50px;
- position: relative;
- width: 100%;
- text-align: right;
- padding-right: 20px;
- transition: 600ms ease position;
- background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
-
- .subtitle {
- font-size: 20px;
- color: #fff;
- }
-
- &.draft {
- background: #d0d0d0;
- }
-
- &.deleted {
- background: #d0d0d0;
- }
-}
-
-.link-type,
-.link-type:focus {
- color: #337ab7;
- cursor: pointer;
-
- &:hover {
- color: rgb(32, 160, 255);
- }
-}
-
-.filter-container {
- padding-bottom: 10px;
-
- .filter-item {
- display: inline-block;
- vertical-align: middle;
- margin-bottom: 10px;
- }
-}
diff --git a/ruoyi-ui/src/assets/styles/mixin.scss b/ruoyi-ui/src/assets/styles/mixin.scss
deleted file mode 100644
index 06fa061..0000000
--- a/ruoyi-ui/src/assets/styles/mixin.scss
+++ /dev/null
@@ -1,66 +0,0 @@
-@mixin clearfix {
- &:after {
- content: "";
- display: table;
- clear: both;
- }
-}
-
-@mixin scrollBar {
- &::-webkit-scrollbar-track-piece {
- background: #d3dce6;
- }
-
- &::-webkit-scrollbar {
- width: 6px;
- }
-
- &::-webkit-scrollbar-thumb {
- background: #99a9bf;
- border-radius: 20px;
- }
-}
-
-@mixin relative {
- position: relative;
- width: 100%;
- height: 100%;
-}
-
-@mixin pct($pct) {
- width: #{$pct};
- position: relative;
- margin: 0 auto;
-}
-
-@mixin triangle($width, $height, $color, $direction) {
- $width: $width/2;
- $color-border-style: $height solid $color;
- $transparent-border-style: $width solid transparent;
- height: 0;
- width: 0;
-
- @if $direction==up {
- border-bottom: $color-border-style;
- border-left: $transparent-border-style;
- border-right: $transparent-border-style;
- }
-
- @else if $direction==right {
- border-left: $color-border-style;
- border-top: $transparent-border-style;
- border-bottom: $transparent-border-style;
- }
-
- @else if $direction==down {
- border-top: $color-border-style;
- border-left: $transparent-border-style;
- border-right: $transparent-border-style;
- }
-
- @else if $direction==left {
- border-right: $color-border-style;
- border-top: $transparent-border-style;
- border-bottom: $transparent-border-style;
- }
-}
diff --git a/ruoyi-ui/src/assets/styles/ruoyi.scss b/ruoyi-ui/src/assets/styles/ruoyi.scss
deleted file mode 100644
index 252be35..0000000
--- a/ruoyi-ui/src/assets/styles/ruoyi.scss
+++ /dev/null
@@ -1,301 +0,0 @@
-/**
- * 通用css样式布局处理
- * Copyright (c) 2019 ruoyi
- */
-
- /** 基础通用 **/
-.pt5 {
- padding-top: 5px;
-}
-.pr5 {
- padding-right: 5px;
-}
-.pb5 {
- padding-bottom: 5px;
-}
-.mt5 {
- margin-top: 5px;
-}
-.mr5 {
- margin-right: 5px;
-}
-.mb5 {
- margin-bottom: 5px;
-}
-.mb8 {
- margin-bottom: 8px;
-}
-.ml5 {
- margin-left: 5px;
-}
-.mt10 {
- margin-top: 10px;
-}
-.mr10 {
- margin-right: 10px;
-}
-.mb10 {
- margin-bottom: 10px;
-}
-.ml10 {
- margin-left: 10px;
-}
-.mt20 {
- margin-top: 20px;
-}
-.mr20 {
- margin-right: 20px;
-}
-.mb20 {
- margin-bottom: 20px;
-}
-.ml20 {
- margin-left: 20px;
-}
-
-.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
- font-family: inherit;
- font-weight: 500;
- line-height: 1.1;
- color: inherit;
-}
-
-.el-form .el-form-item__label {
- font-weight: 700;
-}
-.el-dialog:not(.is-fullscreen) {
- margin-top: 6vh !important;
-}
-
-.el-dialog.scrollbar .el-dialog__body {
- overflow: auto;
- overflow-x: hidden;
- max-height: 70vh;
- padding: 10px 20px 0;
-}
-
-.el-table {
- .el-table__header-wrapper, .el-table__fixed-header-wrapper {
- th {
- word-break: break-word;
- background-color: #f8f8f9 !important;
- color: #515a6e;
- height: 40px !important;
- font-size: 13px;
- }
- }
- .el-table__body-wrapper {
- .el-button [class*="el-icon-"] + span {
- margin-left: 1px;
- }
- }
-}
-
-/** 表单布局 **/
-.form-header {
- font-size:15px;
- color:#6379bb;
- border-bottom:1px solid #ddd;
- margin:8px 10px 25px 10px;
- padding-bottom:5px
-}
-
-/** 表格布局 **/
-.pagination-container {
- position: relative;
- height: 25px;
- margin-bottom: 10px;
- margin-top: 15px;
- padding: 10px 20px !important;
- background-color: transparent !important;
-}
-
-/* 分页器定位 */
-.pagination-container .el-pagination {
- position: absolute;
- right: 0;
- top: 0;
-}
-
-/* 弹窗中的分页器 */
-.el-dialog .pagination-container {
- position: static !important;
- margin: 10px 0 0 0;
- padding: 0 !important;
-
- .el-pagination {
- position: static;
- }
-}
-
-/* 移动端适配 */
-@media (max-width: 768px) {
- .pagination-container {
- .el-pagination {
- > .el-pagination__jump {
- display: none !important;
- }
- > .el-pagination__sizes {
- display: none !important;
- }
- }
- }
-}
-
-/* tree border */
-.tree-border {
- margin-top: 5px;
- border: 1px solid var(--el-border-color-light, #e5e6e7);
- background: var(--el-bg-color, #FFFFFF) none;
- border-radius:4px;
- width: 100%;
-}
-
-.el-table .fixed-width .el-button--small {
- padding-left: 0;
- padding-right: 0;
- width: inherit;
-}
-
-/** 表格更多操作下拉样式 */
-.el-table .el-dropdown-link {
- cursor: pointer;
- color: #409EFF;
- margin-left: 10px;
-}
-
-.el-table .el-dropdown, .el-icon-arrow-down {
- font-size: 12px;
-}
-
-.el-tree-node__content > .el-checkbox {
- margin-right: 8px;
-}
-
-.list-group-striped > .list-group-item {
- border-left: 0;
- border-right: 0;
- border-radius: 0;
- padding-left: 0;
- padding-right: 0;
-}
-
-.list-group {
- padding-left: 0px;
- list-style: none;
-}
-
-.list-group-item {
- border-bottom: 1px solid #e7eaec;
- border-top: 1px solid #e7eaec;
- margin-bottom: -1px;
- padding: 11px 0px;
- font-size: 13px;
-}
-
-.pull-right {
- float: right !important;
-}
-
-.el-card__header {
- padding: 14px 15px 7px !important;
- min-height: 40px;
-}
-
-.el-card__body {
- padding: 15px 20px 20px 20px !important;
-}
-
-.card-box {
- padding-right: 15px;
- padding-left: 15px;
- margin-bottom: 10px;
-}
-
-/* button color */
-.el-button--cyan.is-active,
-.el-button--cyan:active {
- background: #20B2AA;
- border-color: #20B2AA;
- color: #FFFFFF;
-}
-
-.el-button--cyan:focus,
-.el-button--cyan:hover {
- background: #48D1CC;
- border-color: #48D1CC;
- color: #FFFFFF;
-}
-
-.el-button--cyan {
- background-color: #20B2AA;
- border-color: #20B2AA;
- color: #FFFFFF;
-}
-
-/* text color */
-.text-navy {
- color: #1ab394;
-}
-
-.text-primary {
- color: inherit;
-}
-
-.text-success {
- color: #1c84c6;
-}
-
-.text-info {
- color: #23c6c8;
-}
-
-.text-warning {
- color: #f8ac59;
-}
-
-.text-danger {
- color: #ed5565;
-}
-
-.text-muted {
- color: #888888;
-}
-
-/* image */
-.img-circle {
- border-radius: 50%;
-}
-
-.img-lg {
- width: 120px;
- height: 120px;
-}
-
-.avatar-upload-preview {
- position: absolute;
- top: 50%;
- transform: translate(50%, -50%);
- width: 200px;
- height: 200px;
- border-radius: 50%;
- box-shadow: 0 0 4px #ccc;
- overflow: hidden;
-}
-
-/* 拖拽列样式 */
-.sortable-ghost{
- opacity: .8;
- color: #fff!important;
- background: #42b983!important;
-}
-
-/* 表格右侧工具栏样式 */
-.top-right-btn {
- margin-left: auto;
-}
-
-/* 分割面板样式 */
-.splitpanes.default-theme .splitpanes__pane {
- background-color: var(--splitpanes-default-bg) !important;
-}
diff --git a/ruoyi-ui/src/assets/styles/sidebar.scss b/ruoyi-ui/src/assets/styles/sidebar.scss
deleted file mode 100644
index 1f62deb..0000000
--- a/ruoyi-ui/src/assets/styles/sidebar.scss
+++ /dev/null
@@ -1,237 +0,0 @@
-#app {
-
- .main-container {
- // min-height: 100%;
- height: 100%;
- transition: margin-left .28s;
- margin-left: $base-sidebar-width;
- position: relative;
- }
-
- .sidebarHide {
- margin-left: 0!important;
- }
-
- .sidebar-container {
- transition: width 0.28s;
- width: $base-sidebar-width !important;
- height: 100%;
- position: fixed;
- font-size: 0px;
- top: 0;
- bottom: 0;
- left: 0;
- z-index: 1001;
- overflow: hidden;
- -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
- box-shadow: 2px 0 6px rgba(0,21,41,.35);
-
- // reset element-ui css
- .horizontal-collapse-transition {
- transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
- }
-
- .scrollbar-wrapper {
- overflow-x: hidden !important;
- }
-
- .el-scrollbar__bar.is-vertical {
- right: 0px;
- }
-
- .el-scrollbar {
- height: 100%;
- }
-
- &.has-logo {
- .el-scrollbar {
- height: calc(100% - 50px);
- }
- }
-
- .is-horizontal {
- display: none;
- }
-
- a {
- display: inline-block;
- width: 100%;
- overflow: hidden;
- }
-
- .svg-icon {
- margin-right: 16px;
- }
-
- .el-menu {
- border: none;
- height: 100%;
- width: 100% !important;
- }
-
- .el-menu-item, .menu-title {
- overflow: hidden !important;
- text-overflow: ellipsis !important;
- white-space: nowrap !important;
- }
-
- .el-menu-item .el-menu-tooltip__trigger {
- display: inline-block !important;
- }
-
- // menu hover
- .sub-menu-title-noDropdown,
- .el-sub-menu__title {
- &:hover {
- background-color: rgba(0, 0, 0, 0.06) !important;
- }
- }
-
- & .theme-dark .is-active > .el-sub-menu__title {
- color: $base-menu-color-active !important;
- }
-
- & .nest-menu .el-sub-menu>.el-sub-menu__title,
- & .el-sub-menu .el-menu-item {
- min-width: $base-sidebar-width !important;
-
- &:hover {
- background-color: rgba(0, 0, 0, 0.06) !important;
- }
- }
-
- & .theme-dark .nest-menu .el-sub-menu>.el-sub-menu__title,
- & .theme-dark .el-sub-menu .el-menu-item {
- background-color: $base-sub-menu-background;
-
- &:hover {
- background-color: $base-sub-menu-hover !important;
- }
- }
- }
-
- .hideSidebar {
- .sidebar-container {
- width: 54px !important;
- }
-
- .main-container {
- margin-left: 54px;
- }
-
- .sub-menu-title-noDropdown {
- padding: 0 !important;
- position: relative;
-
- .el-tooltip {
- padding: 0 !important;
-
- .svg-icon {
- margin-left: 20px;
- }
- }
- }
-
- .el-sub-menu {
- overflow: hidden;
-
- &>.el-sub-menu__title {
- padding: 0 !important;
-
- .svg-icon {
- margin-left: 20px;
- }
-
- }
- }
-
- .el-menu--collapse {
- .el-sub-menu {
- &>.el-sub-menu__title {
- &>span {
- height: 0;
- width: 0;
- overflow: hidden;
- visibility: hidden;
- display: inline-block;
- }
- &>i {
- height: 0;
- width: 0;
- overflow: hidden;
- visibility: hidden;
- display: inline-block;
- }
- }
- }
- }
- }
-
- .el-menu--collapse .el-menu .el-sub-menu {
- min-width: $base-sidebar-width !important;
- }
-
- // mobile responsive
- .mobile {
- .main-container {
- margin-left: 0px;
- }
-
- .sidebar-container {
- transition: transform .28s;
- width: $base-sidebar-width !important;
- }
-
- &.hideSidebar {
- .sidebar-container {
- pointer-events: none;
- transition-duration: 0.3s;
- transform: translate3d(-$base-sidebar-width, 0, 0);
- }
- }
- }
-
- .withoutAnimation {
-
- .main-container,
- .sidebar-container {
- transition: none;
- }
- }
-}
-
-// when menu collapsed
-.el-menu--vertical {
- &>.el-menu {
- .svg-icon {
- margin-right: 16px;
- }
- }
-
- .nest-menu .el-sub-menu>.el-sub-menu__title,
- .el-menu-item {
- &:hover {
- // you can use $sub-menuHover
- background-color: rgba(0, 0, 0, 0.06) !important;
- }
- }
-
- // the scroll bar appears when the sub-menu is too long
- >.el-menu--popup {
- max-height: 100vh;
- overflow-y: auto;
-
- &::-webkit-scrollbar-track-piece {
- background: #d3dce6;
- }
-
- &::-webkit-scrollbar {
- width: 6px;
- }
-
- &::-webkit-scrollbar-thumb {
- background: #99a9bf;
- border-radius: 20px;
- }
- }
-}
diff --git a/ruoyi-ui/src/assets/styles/transition.scss b/ruoyi-ui/src/assets/styles/transition.scss
deleted file mode 100644
index 073f8c6..0000000
--- a/ruoyi-ui/src/assets/styles/transition.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-// global transition css
-
-/* fade */
-.fade-enter-active,
-.fade-leave-active {
- transition: opacity 0.28s;
-}
-
-.fade-enter,
-.fade-leave-active {
- opacity: 0;
-}
-
-/* fade-transform */
-.fade-transform--move,
-.fade-transform-leave-active,
-.fade-transform-enter-active {
- transition: all .5s;
-}
-
-.fade-transform-enter {
- opacity: 0;
- transform: translateX(-30px);
-}
-
-.fade-transform-leave-to {
- opacity: 0;
- transform: translateX(30px);
-}
-
-/* breadcrumb transition */
-.breadcrumb-enter-active,
-.breadcrumb-leave-active {
- transition: all .5s;
-}
-
-.breadcrumb-enter,
-.breadcrumb-leave-active {
- opacity: 0;
- transform: translateX(20px);
-}
-
-.breadcrumb-move {
- transition: all .5s;
-}
-
-.breadcrumb-leave-active {
- position: absolute;
-}
diff --git a/ruoyi-ui/src/assets/styles/variables.module.scss b/ruoyi-ui/src/assets/styles/variables.module.scss
deleted file mode 100644
index 98c265a..0000000
--- a/ruoyi-ui/src/assets/styles/variables.module.scss
+++ /dev/null
@@ -1,286 +0,0 @@
-// base color
-$blue: #324157;
-$light-blue: #333c46;
-$red: #c03639;
-$pink: #e65d6e;
-$green: #30b08f;
-$tiffany: #4ab7bd;
-$yellow: #fec171;
-$panGreen: #30b08f;
-
-// 默认主题变量
-$menuText: #bfcbd9;
-$menuActiveText: #409eff;
-$menuBg: #304156;
-$menuHover: #263445;
-
-// 浅色主题theme-light
-$menuLightBg: #ffffff;
-$menuLightHover: #f0f1f5;
-$menuLightText: #303133;
-$menuLightActiveText: #409eff;
-
-// 基础变量
-$base-sidebar-width: 200px;
-$sideBarWidth: 200px;
-
-// 菜单暗色变量
-$base-menu-color: #bfcbd9;
-$base-menu-color-active: #f4f4f5;
-$base-menu-background: #304156;
-$base-sub-menu-background: #1f2d3d;
-$base-sub-menu-hover: #001528;
-
-// 组件变量
-$--color-primary: #409eff;
-$--color-success: #67c23a;
-$--color-warning: #e6a23c;
-$--color-danger: #f56c6c;
-$--color-info: #909399;
-
-:export {
- menuText: $menuText;
- menuActiveText: $menuActiveText;
- menuBg: $menuBg;
- menuHover: $menuHover;
- menuLightBg: $menuLightBg;
- menuLightHover: $menuLightHover;
- menuLightText: $menuLightText;
- menuLightActiveText: $menuLightActiveText;
- sideBarWidth: $sideBarWidth;
- // 导出基础颜色
- blue: $blue;
- lightBlue: $light-blue;
- red: $red;
- pink: $pink;
- green: $green;
- tiffany: $tiffany;
- yellow: $yellow;
- panGreen: $panGreen;
- // 导出组件颜色
- colorPrimary: $--color-primary;
- colorSuccess: $--color-success;
- colorWarning: $--color-warning;
- colorDanger: $--color-danger;
- colorInfo: $--color-info;
-}
-
-// CSS变量定义
-:root {
- /* 亮色模式变量 */
- --sidebar-bg: #{$menuBg};
- --sidebar-text: #{$menuText};
- --menu-hover: #{$menuHover};
-
- --navbar-bg: #ffffff;
- --navbar-text: #303133;
-
- /* splitpanes default-theme 变量 */
- --splitpanes-default-bg: #ffffff;
-
- --main-fill-bg: rgb(242, 243, 245);
-}
-
-// 暗黑模式变量
-html.dark {
- --main-fill-bg: rgba(255, 255, 255, 0.08);
- /* 默认通用 */
- --el-bg-color: #141414;
- --el-bg-color-overlay: #1d1e1f;
- --el-text-color-primary: #ffffff;
- --el-text-color-regular: #d0d0d0;
- --el-border-color: #434343;
- --el-border-color-light: #434343;
-
- /* 侧边栏 */
- --sidebar-bg: #141414;
- --sidebar-text: #ffffff;
- --menu-hover: #2d2d2d;
- --menu-active-text: #{$menuActiveText};
-
- /* 顶部导航栏 */
- --navbar-bg: #141414;
- --navbar-text: #ffffff;
- --navbar-hover: #141414;
-
- /* 标签栏 */
- --tags-bg: #141414;
- --tags-item-bg: #1d1e1f;
- --tags-item-border: #303030;
- --tags-item-text: #d0d0d0;
- --tags-item-hover: #2d2d2d;
- --tags-close-hover: #64666a;
-
- /* splitpanes 组件暗黑模式变量 */
- --splitpanes-bg: #141414;
- --splitpanes-border: #303030;
- --splitpanes-splitter-bg: #1d1e1f;
- --splitpanes-splitter-hover-bg: #2d2d2d;
-
- /* blockquote 暗黑模式变量 */
- --blockquote-bg: #1d1e1f;
- --blockquote-border: #303030;
- --blockquote-text: #d0d0d0;
-
- /* Cron 时间表达式 模式变量 */
- --cron-border: #303030;
-
- /* splitpanes default-theme 暗黑模式变量 */
- --splitpanes-default-bg: #141414;
-
- /* 侧边栏菜单覆盖 */
- .sidebar-container {
- .el-menu-item,
- .menu-title {
- color: var(--el-text-color-regular);
- }
- & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title,
- & .theme-dark .el-sub-menu .el-menu-item {
- background-color: var(--el-bg-color) !important;
- }
- }
-
- /* 顶部栏栏菜单覆盖 */
- .el-menu--horizontal {
- .el-menu-item {
- &:not(.is-disabled) {
- &:hover,
- &:focus {
- background-color: var(--navbar-hover) !important;
- }
- }
- }
- }
-
- /* 分割窗格覆盖 */
- .splitpanes {
- background-color: var(--splitpanes-bg);
-
- .splitpanes__pane {
- background-color: var(--splitpanes-bg);
- border-color: var(--splitpanes-border);
- }
-
- .splitpanes__splitter {
- background-color: var(--splitpanes-splitter-bg);
- border-color: var(--splitpanes-border);
-
- &:hover {
- background-color: var(--splitpanes-splitter-hover-bg);
- }
-
- &:before,
- &:after {
- background-color: var(--splitpanes-border);
- }
- }
- }
-
- /* 表格样式覆盖 */
- .el-table {
- --el-table-header-bg-color: var(--el-bg-color-overlay) !important;
- --el-table-header-text-color: var(--el-text-color-regular) !important;
- --el-table-border-color: var(--el-border-color-light) !important;
- --el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important;
-
- .el-table__header-wrapper,
- .el-table__fixed-header-wrapper {
- th {
- background-color: var(--el-bg-color-overlay, #f8f8f9) !important;
- color: var(--el-text-color-regular, #515a6e);
- }
- }
- }
-
- /* 树组件高亮样式覆盖 */
- .el-tree {
- .el-tree-node.is-current > .el-tree-node__content {
- background-color: var(--el-bg-color-overlay) !important;
- color: var(--el-color-primary);
- }
-
- .el-tree-node__content:hover {
- background-color: var(--el-bg-color-overlay);
- }
- }
-
- /* 下拉菜单样式覆盖 */
- .el-dropdown-menu__item:not(.is-disabled):focus,
- .el-dropdown-menu__item:not(.is-disabled):hover {
- background-color: var(--navbar-hover) !important;
- }
-
- /* blockquote样式覆盖 */
- blockquote {
- background-color: var(--blockquote-bg) !important;
- border-left-color: var(--blockquote-border) !important;
- color: var(--blockquote-text) !important;
- }
-
- /* 时间表达式标题样式覆盖 */
- .popup-result .title {
- background: var(--cron-border);
- }
-
- .el-aside {
- background: #4d4d4d;
- }
-
- .el-header {
- border-bottom: 1px solid #282828 !important;
- }
-
- .el-collapse {
- --el-collapse-header-bg-color: #000;
-
- .collapseItem {
- .el-collapse-item__wrap {
- background-color: #3c3c3c;
-
- .node {
- background-color: #000;
-
- .title_container {
- color: #fff;
- }
-
- .node_desc {
- color: #f7f7f7;
- }
- }
- }
- }
- }
-
- .node__container {
- background: #000;
- // border: 2px solid #000;
-
- .subTitle {
- color: #fbfbfb !important;
- }
- }
-
- .node__box {
- background: #000;
- border: 2px solid #000;
-
- .subTitle {
- color: #fbfbfb !important;
- }
-
- .input__container {
- background: #2d2d2d;
-
- .title {
- .text {
- color: #fbfbfb !important;
- }
- }
- }
- }
-
- .lf-canvas-overlay {
- background: #3e3e3e !important;
- }
-}
diff --git a/ruoyi-ui/src/components/Breadcrumb/index.vue b/ruoyi-ui/src/components/Breadcrumb/index.vue
deleted file mode 100644
index 20cb850..0000000
--- a/ruoyi-ui/src/components/Breadcrumb/index.vue
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
- {{ item.meta.title }}
- {{ item.meta.title }}
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/day.vue b/ruoyi-ui/src/components/Crontab/day.vue
deleted file mode 100644
index 8f67324..0000000
--- a/ruoyi-ui/src/components/Crontab/day.vue
+++ /dev/null
@@ -1,174 +0,0 @@
-
-
-
-
- 日,允许的通配符[, - * ? / L W]
-
-
-
-
-
- 不指定
-
-
-
-
-
- 周期从
- -
- 日
-
-
-
-
-
- 从
- 号开始,每
- 日执行一次
-
-
-
-
-
- 每月
- 号最近的那个工作日
-
-
-
-
-
- 本月最后一天
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/hour.vue b/ruoyi-ui/src/components/Crontab/hour.vue
deleted file mode 100644
index c6f9a13..0000000
--- a/ruoyi-ui/src/components/Crontab/hour.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
- 小时,允许的通配符[, - * /]
-
-
-
-
-
- 周期从
- -
- 时
-
-
-
-
-
- 从
- 时开始,每
- 小时执行一次
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/index.vue b/ruoyi-ui/src/components/Crontab/index.vue
deleted file mode 100644
index ef0fe97..0000000
--- a/ruoyi-ui/src/components/Crontab/index.vue
+++ /dev/null
@@ -1,309 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 确定
- 重置
- 取消
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/min.vue b/ruoyi-ui/src/components/Crontab/min.vue
deleted file mode 100644
index 21de620..0000000
--- a/ruoyi-ui/src/components/Crontab/min.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
- 分钟,允许的通配符[, - * /]
-
-
-
-
-
- 周期从
- -
- 分钟
-
-
-
-
-
- 从
- 分钟开始, 每
- 分钟执行一次
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/month.vue b/ruoyi-ui/src/components/Crontab/month.vue
deleted file mode 100644
index 45e9d0f..0000000
--- a/ruoyi-ui/src/components/Crontab/month.vue
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
-
-
- 月,允许的通配符[, - * /]
-
-
-
-
-
- 周期从
- -
- 月
-
-
-
-
-
- 从
- 月开始,每
- 月月执行一次
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/result.vue b/ruoyi-ui/src/components/Crontab/result.vue
deleted file mode 100644
index 0c18922..0000000
--- a/ruoyi-ui/src/components/Crontab/result.vue
+++ /dev/null
@@ -1,540 +0,0 @@
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/second.vue b/ruoyi-ui/src/components/Crontab/second.vue
deleted file mode 100644
index 1a47424..0000000
--- a/ruoyi-ui/src/components/Crontab/second.vue
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
- 秒,允许的通配符[, - * /]
-
-
-
-
-
- 周期从
- -
- 秒
-
-
-
-
-
- 从
- 秒开始,每
- 秒执行一次
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/week.vue b/ruoyi-ui/src/components/Crontab/week.vue
deleted file mode 100644
index 669d781..0000000
--- a/ruoyi-ui/src/components/Crontab/week.vue
+++ /dev/null
@@ -1,197 +0,0 @@
-
-
-
-
- 周,允许的通配符[, - * ? / L #]
-
-
-
-
-
- 不指定
-
-
-
-
-
- 周期从
-
- {{item.value}}
-
- -
-
- {{item.value}}
-
-
-
-
-
-
- 第
- 周的
-
-
-
-
-
-
-
-
- 本月最后一个
-
-
-
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Crontab/year.vue b/ruoyi-ui/src/components/Crontab/year.vue
deleted file mode 100644
index 3a47aec..0000000
--- a/ruoyi-ui/src/components/Crontab/year.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
- 不填,允许的通配符[, - * /]
-
-
-
-
-
- 每年
-
-
-
-
-
- 周期从
- -
-
-
-
-
-
-
- 从
- 年开始,每
- 年执行一次
-
-
-
-
-
-
- 指定
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/DictTag/index.vue b/ruoyi-ui/src/components/DictTag/index.vue
deleted file mode 100644
index 19e24e4..0000000
--- a/ruoyi-ui/src/components/DictTag/index.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
- {{ item.label + " " }}
- {{ item.label + " " }}
-
-
-
- {{ unmatchArray | handleArray }}
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/EditTable/index.vue b/ruoyi-ui/src/components/EditTable/index.vue
deleted file mode 100644
index e111423..0000000
--- a/ruoyi-ui/src/components/EditTable/index.vue
+++ /dev/null
@@ -1,299 +0,0 @@
-
-
-
-
- | 执行顺序 |
- 检测项 |
- 参数中文名 |
- 参数英文名 |
- 操作类型 |
- 参数来源 |
- 参数值 |
- 是否必填 |
- 备注 |
- 操作 |
-
-
-
-
-
- |
- ⋮⋮
- |
-
-
-
-
-
-
- {{ element.paramEnName }}
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ element.paramCnName }}
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
- 是
- 否
-
- |
-
-
-
-
-
-
-
- |
-
-
- 保存
-
- 取消
-
-
- 编辑
-
-
- |
-
-
-
-
-
- 添加参数
- 查看
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue
deleted file mode 100644
index 1bd01ed..0000000
--- a/ruoyi-ui/src/components/Editor/index.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
-
-
-
-
- $emit('update:modelValue', content)"
- :options="options"
- :style="styles"
- />
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/ruoyi-ui/src/components/FileUpload/index.vue
deleted file mode 100644
index 8aaef5c..0000000
--- a/ruoyi-ui/src/components/FileUpload/index.vue
+++ /dev/null
@@ -1,213 +0,0 @@
-
-
-
-
- 选取文件
-
-
-
- 请上传
- 大小不超过 {{ fileSize }}MB
- 格式为 {{ fileType.join("/") }}
- 的文件
-
-
-
-
-
- {{ getFileName(file.name) }}
-
-
- 删除
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Hamburger/index.vue b/ruoyi-ui/src/components/Hamburger/index.vue
deleted file mode 100644
index 02d58e9..0000000
--- a/ruoyi-ui/src/components/Hamburger/index.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/HeaderSearch/index.vue b/ruoyi-ui/src/components/HeaderSearch/index.vue
deleted file mode 100644
index 4728f6a..0000000
--- a/ruoyi-ui/src/components/HeaderSearch/index.vue
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/IPlayer/config.ts b/ruoyi-ui/src/components/IPlayer/config.ts
deleted file mode 100644
index 3048428..0000000
--- a/ruoyi-ui/src/components/IPlayer/config.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export const conf = {
- /**
- * 基础功能配置
- * */
- autoplay: false, // 是否自动播放,不自动播放,浏览器有限制规则
- autoplayMuted: false, // 是否自动播放(静音播放)
- videoInit: true, // 是否默认初始化video,默认初始化,默认true
- playsinline: true, // 是否启用内联播放模式,仅移动端生效
- defaultPlaybackRate: 1, // 默认播放速度(可选:0.5/0.75/1/1.5/2等)
- volume: 0.72, // 播放音量(可选:0 ~ 1)
- loop: false, // 是否循环播放,默认不循环播放
- startTime: 0, // 点播模式下,初始起播时间
- videoAttributes: {}, // video扩展属性,暂且不配置
- lang: 'zh-cn', // 播放器初始显示语言,设置为中文
- fluid: true, // 是否流式布局(宽高优先于流失布局,默认16:9)注掉上方宽高看效果
- fitVideoSize: 'fixed', // 保持容器宽/高,不做适配,按照容器来
- videoFillMode: 'auto', // 宽高不够自动底色填充(fill拉伸填充等...)
- seekedStatus: 'play', // 跳转后继续播放
- // 播放器进度条故事点信息数组
- progressDot: [
- {
- id: 0, // 唯一标识,用于删除的时候索引
- time: 30, // 展示的时间点,例子为在播放到10s钟的时候展示
- text: '进度条信息提示...', // hover的时候展示文案,可以为空
- duration: 1, // 展示时间跨度,单位为s
- style: { // 指定样式
- backgroundColor: 'white'
- }
- },
- ],
- thumbnail: null, // 进度条预览图配置,普通业务用不到
- marginControls: false, // 是否开启画面和控制栏分离模式,不开启空间多一些
- domEventType: 'default', // 响应的事件类型,不用指定,用默认的即可
- /**
- * 交互功能配置(一般使用默认即可)
- * */
- /**
- * 插件配置,根据需求自选
- * */
- icons: {}, // 使用默认的icon图标
- i18n: [], // 使用默认的中文
- // 自定义一些颜色
- commonStyle: {
- progressColor: 'green', // 整个进度条颜色
- playedColor: 'chocolate', // 已播放的进度条颜色
- volumeColor: 'pink', // 音量大小竖向滑块颜色
- },
- controls: true, // 是否使用底部控制栏,默认使用
- miniprogress: true, // 是否使用mini进度条(当底部控制栏隐藏时生效)
- screenShot: false, // 关闭截图功能
- rotate: true, // 是否使用视频旋转插件,默认不使用
- download: true, // 是否使用下载按钮,一般不用,一般自定义控制
- pip: true, // 使用使用画中画模式,默认不用
- mini: true, // 是否使用小屏幕控件
- cssFullscreen: true, // 是否使用网页样式全屏按钮开关
- playbackRate: [0.5, 1, 1.5, 2, 3], //传入倍速可选数组
- // playbackRate: true, //false,禁用倍速播放(即控制栏不显示)
- keyShortcut: false, // 是否开启快捷键模式
-}
diff --git a/ruoyi-ui/src/components/IPlayer/index.vue b/ruoyi-ui/src/components/IPlayer/index.vue
deleted file mode 100644
index 55be899..0000000
--- a/ruoyi-ui/src/components/IPlayer/index.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/IconSelect/index.vue b/ruoyi-ui/src/components/IconSelect/index.vue
deleted file mode 100644
index f2c2aa3..0000000
--- a/ruoyi-ui/src/components/IconSelect/index.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/IconSelect/requireIcons.js b/ruoyi-ui/src/components/IconSelect/requireIcons.js
deleted file mode 100644
index ac22fd7..0000000
--- a/ruoyi-ui/src/components/IconSelect/requireIcons.js
+++ /dev/null
@@ -1,8 +0,0 @@
-let icons = []
-const modules = import.meta.glob('./../../assets/icons/svg/*.svg');
-for (const path in modules) {
- const p = path.split('assets/icons/svg/')[1].split('.svg')[0];
- icons.push(p);
-}
-
-export default icons
\ No newline at end of file
diff --git a/ruoyi-ui/src/components/ImagePreview/index.vue b/ruoyi-ui/src/components/ImagePreview/index.vue
deleted file mode 100644
index 7e3d2b6..0000000
--- a/ruoyi-ui/src/components/ImagePreview/index.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue
deleted file mode 100644
index 3cf43e3..0000000
--- a/ruoyi-ui/src/components/ImageUpload/index.vue
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
-
-
-
-
-
- 请上传
-
- 大小不超过 {{ fileSize }}MB
-
-
- 格式为 {{ fileType.join("/") }}
-
- 的文件
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Pagination/index.vue b/ruoyi-ui/src/components/Pagination/index.vue
deleted file mode 100644
index 3b29fe4..0000000
--- a/ruoyi-ui/src/components/Pagination/index.vue
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/ParentView/index.vue b/ruoyi-ui/src/components/ParentView/index.vue
deleted file mode 100644
index 7bf6148..0000000
--- a/ruoyi-ui/src/components/ParentView/index.vue
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/ruoyi-ui/src/components/RightToolbar/index.vue b/ruoyi-ui/src/components/RightToolbar/index.vue
deleted file mode 100644
index 99387f6..0000000
--- a/ruoyi-ui/src/components/RightToolbar/index.vue
+++ /dev/null
@@ -1,134 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/RuoYi/Doc/index.vue b/ruoyi-ui/src/components/RuoYi/Doc/index.vue
deleted file mode 100644
index cd0389d..0000000
--- a/ruoyi-ui/src/components/RuoYi/Doc/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/RuoYi/Git/index.vue b/ruoyi-ui/src/components/RuoYi/Git/index.vue
deleted file mode 100644
index b4459f3..0000000
--- a/ruoyi-ui/src/components/RuoYi/Git/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Screenfull/index.vue b/ruoyi-ui/src/components/Screenfull/index.vue
deleted file mode 100644
index 9c9f980..0000000
--- a/ruoyi-ui/src/components/Screenfull/index.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/SizeSelect/index.vue b/ruoyi-ui/src/components/SizeSelect/index.vue
deleted file mode 100644
index a8e09ce..0000000
--- a/ruoyi-ui/src/components/SizeSelect/index.vue
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/SvgIcon/index.vue b/ruoyi-ui/src/components/SvgIcon/index.vue
deleted file mode 100644
index ec10049..0000000
--- a/ruoyi-ui/src/components/SvgIcon/index.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/SvgIcon/svgicon.js b/ruoyi-ui/src/components/SvgIcon/svgicon.js
deleted file mode 100644
index 4431719..0000000
--- a/ruoyi-ui/src/components/SvgIcon/svgicon.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import * as components from '@element-plus/icons-vue'
-
-export default {
- install: (app) => {
- for (const key in components) {
- const componentConfig = components[key];
- app.component(componentConfig.name, componentConfig);
- }
- },
-};
diff --git a/ruoyi-ui/src/components/TableSearch/index.vue b/ruoyi-ui/src/components/TableSearch/index.vue
deleted file mode 100644
index 6bb4556..0000000
--- a/ruoyi-ui/src/components/TableSearch/index.vue
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
- {{ formData.search ? "收起" : "展开" }}
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/TableTags/index.vue b/ruoyi-ui/src/components/TableTags/index.vue
deleted file mode 100644
index 5d161f7..0000000
--- a/ruoyi-ui/src/components/TableTags/index.vue
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- {{ item.label }}
-
-
-
-
diff --git a/ruoyi-ui/src/components/TopNav/index.vue b/ruoyi-ui/src/components/TopNav/index.vue
deleted file mode 100644
index cf67821..0000000
--- a/ruoyi-ui/src/components/TopNav/index.vue
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
-
-
-
- {{ item.meta.title }}
-
-
-
-
-
- 更多菜单
-
-
-
- {{ item.meta.title }}
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/components/Video/index.vue b/ruoyi-ui/src/components/Video/index.vue
deleted file mode 100644
index 5ed53a4..0000000
--- a/ruoyi-ui/src/components/Video/index.vue
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/components/iFrame/index.vue b/ruoyi-ui/src/components/iFrame/index.vue
deleted file mode 100644
index 091b1a2..0000000
--- a/ruoyi-ui/src/components/iFrame/index.vue
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/directive/common/copyText.js b/ruoyi-ui/src/directive/common/copyText.js
deleted file mode 100644
index 7063df8..0000000
--- a/ruoyi-ui/src/directive/common/copyText.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
-* v-copyText 复制文本内容
-* Copyright (c) 2022 ruoyi
-*/
-
-export default {
- beforeMount(el, { value, arg }) {
- if (arg === "callback") {
- el.$copyCallback = value;
- } else {
- el.$copyValue = value;
- const handler = () => {
- copyTextToClipboard(el.$copyValue);
- if (el.$copyCallback) {
- el.$copyCallback(el.$copyValue);
- }
- };
- el.addEventListener("click", handler);
- el.$destroyCopy = () => el.removeEventListener("click", handler);
- }
- }
-}
-
-function copyTextToClipboard(input, { target = document.body } = {}) {
- const element = document.createElement('textarea');
- const previouslyFocusedElement = document.activeElement;
-
- element.value = input;
-
- // Prevent keyboard from showing on mobile
- element.setAttribute('readonly', '');
-
- element.style.contain = 'strict';
- element.style.position = 'absolute';
- element.style.left = '-9999px';
- element.style.fontSize = '12pt'; // Prevent zooming on iOS
-
- const selection = document.getSelection();
- const originalRange = selection.rangeCount > 0 && selection.getRangeAt(0);
-
- target.append(element);
- element.select();
-
- // Explicit selection workaround for iOS
- element.selectionStart = 0;
- element.selectionEnd = input.length;
-
- let isSuccess = false;
- try {
- isSuccess = document.execCommand('copy');
- } catch { }
-
- element.remove();
-
- if (originalRange) {
- selection.removeAllRanges();
- selection.addRange(originalRange);
- }
-
- // Get the focus back on the previously focused element, if any
- if (previouslyFocusedElement) {
- previouslyFocusedElement.focus();
- }
-
- return isSuccess;
-}
diff --git a/ruoyi-ui/src/directive/index.js b/ruoyi-ui/src/directive/index.js
deleted file mode 100644
index 86b8f88..0000000
--- a/ruoyi-ui/src/directive/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import hasRole from './permission/hasRole'
-import hasPermi from './permission/hasPermi'
-import copyText from './common/copyText'
-
-export default function directive(app){
- app.directive('hasRole', hasRole)
- app.directive('hasPermi', hasPermi)
- app.directive('copyText', copyText)
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/directive/permission/hasPermi.js b/ruoyi-ui/src/directive/permission/hasPermi.js
deleted file mode 100644
index 44ef3f8..0000000
--- a/ruoyi-ui/src/directive/permission/hasPermi.js
+++ /dev/null
@@ -1,28 +0,0 @@
- /**
- * v-hasPermi 操作权限处理
- * Copyright (c) 2019 ruoyi
- */
-
-import useUserStore from '@/store/modules/user'
-
-export default {
- mounted(el, binding, vnode) {
- const { value } = binding
- const all_permission = "*:*:*";
- const permissions = useUserStore().permissions
-
- if (value && value instanceof Array && value.length > 0) {
- const permissionFlag = value
-
- const hasPermissions = permissions.some(permission => {
- return all_permission === permission || permissionFlag.includes(permission)
- })
-
- if (!hasPermissions) {
- el.parentNode && el.parentNode.removeChild(el)
- }
- } else {
- throw new Error(`请设置操作权限标签值`)
- }
- }
-}
diff --git a/ruoyi-ui/src/directive/permission/hasRole.js b/ruoyi-ui/src/directive/permission/hasRole.js
deleted file mode 100644
index 8774bdd..0000000
--- a/ruoyi-ui/src/directive/permission/hasRole.js
+++ /dev/null
@@ -1,28 +0,0 @@
- /**
- * v-hasRole 角色权限处理
- * Copyright (c) 2019 ruoyi
- */
-
-import useUserStore from '@/store/modules/user'
-
-export default {
- mounted(el, binding, vnode) {
- const { value } = binding
- const super_admin = "admin";
- const roles = useUserStore().roles
-
- if (value && value instanceof Array && value.length > 0) {
- const roleFlag = value
-
- const hasRole = roles.some(role => {
- return super_admin === role || roleFlag.includes(role)
- })
-
- if (!hasRole) {
- el.parentNode && el.parentNode.removeChild(el)
- }
- } else {
- throw new Error(`请设置角色权限标签值`)
- }
- }
-}
diff --git a/ruoyi-ui/src/enum/index.js b/ruoyi-ui/src/enum/index.js
deleted file mode 100644
index cbfc14a..0000000
--- a/ruoyi-ui/src/enum/index.js
+++ /dev/null
@@ -1,110 +0,0 @@
-export const controlPageList = [
- "/mechanical_arm",
- "/Motor",
- "/Camera"
-]
-export const controlModuleList = [
- {
- label: "机械臂",
- value: "mechanical_arm"
- },
- {
- label: "电机",
- value: "motor"
- },
- {
- label: "舵机",
- value: "servo"
- },
- {
- label: "执行器",
- value: "executor"
- },
- {
- label: "麦克风",
- value: "microphone"
- },
- {
- label: "扬声器",
- value: "speaker"
- },
- {
- label: "摄像头",
- value: "Camera"
- },
- {
- label: "电源",
- value: "power"
- },
- {
- label: "灵巧手",
- value: "hand"
- },
- {
- label: "人工头",
- value: "head"
- }
-]
-
-export const fileType = [
- {
- label: "普通文件",
- value: 0
- },
- {
- label: "图片",
- value: 1
- },
- {
- label: "音频",
- value: 2
- },
- {
- label: "视频",
- value: 3
- }
-]
-
-//0:普通文件、1:图片、2:音频、3:视频
-export const supportType = [
- //json
- {label: "application/json", value: 0},
- {label: "text/plain", value: 0},
- {label: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", value: 0},
- {label: "image/jpeg", value: 1},
- {label: "image/png", value: 1},
- {label: "audio/mpeg", value: 2},
- {label: "video/mp4", value: 3},
-]
-
-export const deviceParamsMap = {
- "mechanical_arm": [
- {
- "label": "工作模式", "key": "workModule", "value": "1", "formType": "select", "options": [
- {
- "label": "真实机械臂",
- "value": "1"
- },
- {
- "label": "仿真机械臂",
- "value": "2"
- }
- ]
- },
- {"label": "位置步长", "key": "posStep", "value": 0, "formType": "input_number"},
- {"label": "姿态步长", "key": "postureStep", "value": 0, "formType": "input_number"},
- {"label": "关节步长", "key": "jointStep", "value": 0, "formType": "input_number"},
- {"label": "位置( X )", "key": "x", "value": 0, "formType": "input_number"},
- {"label": "位置( y )", "key": "y", "value": 0, "formType": "input_number"},
- {"label": "位置( z )", "key": "z", "value": 0, "formType": "input_number"},
- {"label": "姿态( rx )", "key": "rx", "value": 0, "formType": "input_number"},
- {"label": "姿态( ry )", "key": "ry", "value": 0, "formType": "input_number"},
- {"label": "姿态( rz )", "key": "rz", "value": 0, "formType": "input_number"},
- {"label": "关节1( deg )", "key": "joint1", "value": 0, "formType": "input_number"},
- {"label": "关节2( deg )", "key": "joint2", "value": 0, "formType": "input_number"},
- {"label": "关节3( deg )", "key": "joint3", "value": 0, "formType": "input_number"},
- {"label": "关节4( deg )", "key": "joint4", "value": 0, "formType": "input_number"},
- {"label": "关节5( deg )", "key": "joint5", "value": 0, "formType": "input_number"},
- {"label": "关节6( deg )", "key": "joint6", "value": 0, "formType": "input_number"},
- ],
-}
diff --git a/ruoyi-ui/src/hooks/tableHeight.ts b/ruoyi-ui/src/hooks/tableHeight.ts
deleted file mode 100644
index f254147..0000000
--- a/ruoyi-ui/src/hooks/tableHeight.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { useElementSize } from '@vueuse/core'
-import { computed } from 'vue'
-
-/**
- * 监听容器高度变化的hook
- * @param {Ref} containerRef - 容器的ref引用
- * @param {boolean} [immediate=true] - 是否立即执行一次
- * @returns {Ref} 容器的高度
- */
-export function useContainerHeight(containerRef, immediate = true) {
- // 存储容器高度的响应式变量
-
- const { height } = useElementSize(containerRef)
- const containerHeight = computed(() => {
- let offset = height.value + 84
- return { height: `calc(100% - ${offset}px)` }
- })
-
-
- return containerHeight;
-}
diff --git a/ruoyi-ui/src/hooks/usePlayAudio.ts b/ruoyi-ui/src/hooks/usePlayAudio.ts
deleted file mode 100644
index 3e3675e..0000000
--- a/ruoyi-ui/src/hooks/usePlayAudio.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { computed } from "vue";
-
-/**
- * 播放音频
- */
-export function usePlayAudio() {
- let audio: HTMLAudioElement | null = new Audio();
- // 播放结束后自动清理
- // 先定义cleanup,再绑定事件(避免作用域问题)
- let cleanup: any;
- cleanup = () => {
- // 1. 先移除所有事件监听器,切断循环触发链路
- audio!.removeEventListener("ended", cleanup);
- audio!.removeEventListener("error", cleanup);
- // 2. 停止播放(而非清空src),避免触发新error
- audio!.pause();
- // 可选:解除引用,帮助GC(若后续无其他引用)
- audio = null;
- console.log("音频资源已清理");
- };
-
- audio.addEventListener("ended", cleanup);
-
- // 播放错误时也清理
- audio.addEventListener("error", cleanup);
-
- const playAudio = (url: string) => {
- audio!.src = url
- audio!.play().catch((error) => {
- console.error("播放失败:", error);
- cleanup();
- });
- };
-
- return {
- playAudio
- }
-}
diff --git a/ruoyi-ui/src/layout/components/AppMain.vue b/ruoyi-ui/src/layout/components/AppMain.vue
deleted file mode 100644
index c52ebb3..0000000
--- a/ruoyi-ui/src/layout/components/AppMain.vue
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/IframeToggle/index.vue b/ruoyi-ui/src/layout/components/IframeToggle/index.vue
deleted file mode 100644
index a407b74..0000000
--- a/ruoyi-ui/src/layout/components/IframeToggle/index.vue
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/InnerLink/index.vue b/ruoyi-ui/src/layout/components/InnerLink/index.vue
deleted file mode 100644
index 53a903c..0000000
--- a/ruoyi-ui/src/layout/components/InnerLink/index.vue
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/ruoyi-ui/src/layout/components/Navbar.vue
deleted file mode 100644
index 5b15602..0000000
--- a/ruoyi-ui/src/layout/components/Navbar.vue
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Settings/index.vue b/ruoyi-ui/src/layout/components/Settings/index.vue
deleted file mode 100644
index cc1a377..0000000
--- a/ruoyi-ui/src/layout/components/Settings/index.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-
-
-
-
主题风格设置
-
-
-
-

-
-
-
-

-
-
-
-
- 主题颜色
-
-
-
-
-
-
- 系统布局配置
-
-
- 开启 TopNav
-
-
-
-
-
-
- 开启 Tags-Views
-
-
-
-
-
-
- 固定 Header
-
-
-
-
-
-
- 显示 Logo
-
-
-
-
-
-
- 动态标题
-
-
-
-
-
-
-
- 保存配置
- 重置配置
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Link.vue b/ruoyi-ui/src/layout/components/Sidebar/Link.vue
deleted file mode 100644
index 53793ca..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/Link.vue
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
deleted file mode 100644
index c23c92a..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue b/ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
deleted file mode 100644
index b43bca7..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/Sidebar/index.vue b/ruoyi-ui/src/layout/components/Sidebar/index.vue
deleted file mode 100644
index f0fdf88..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/index.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue b/ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
deleted file mode 100644
index f4fc81b..0000000
--- a/ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/TagsView/index.vue b/ruoyi-ui/src/layout/components/TagsView/index.vue
deleted file mode 100644
index 5844331..0000000
--- a/ruoyi-ui/src/layout/components/TagsView/index.vue
+++ /dev/null
@@ -1,365 +0,0 @@
-
-
-
-
- {{ tag.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/layout/components/index.js b/ruoyi-ui/src/layout/components/index.js
deleted file mode 100644
index fd57731..0000000
--- a/ruoyi-ui/src/layout/components/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as AppMain } from './AppMain'
-export { default as Navbar } from './Navbar'
-export { default as Settings } from './Settings'
-export { default as TagsView } from './TagsView/index.vue'
diff --git a/ruoyi-ui/src/layout/index.vue b/ruoyi-ui/src/layout/index.vue
deleted file mode 100644
index de92549..0000000
--- a/ruoyi-ui/src/layout/index.vue
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js
deleted file mode 100644
index 8be21ea..0000000
--- a/ruoyi-ui/src/main.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import { createApp } from 'vue'
-
-import Cookies from 'js-cookie'
-
-import ElementPlus from 'element-plus'
-import 'element-plus/dist/index.css'
-import 'element-plus/theme-chalk/dark/css-vars.css'
-import locale from 'element-plus/es/locale/lang/zh-cn'
-
-import '@/assets/styles/index.scss' // global css
-
-import App from './App'
-import store from './store'
-import router from './router'
-import directive from './directive' // directive
-import WebSocketPlugin from './plugins/websocket';
-
-// 注册指令
-import plugins from './plugins' // plugins
-import { download } from '@/utils/request'
-
-// svg图标
-import 'virtual:svg-icons-register'
-import SvgIcon from '@/components/SvgIcon'
-import elementIcons from '@/components/SvgIcon/svgicon'
-
-import './permission' // permission control
-
-import { useDict } from '@/utils/dict'
-import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi'
-
-// 分页组件
-import Pagination from '@/components/Pagination'
-// 自定义表格工具组件
-import RightToolbar from '@/components/RightToolbar'
-// 富文本组件
-import Editor from "@/components/Editor"
-// 文件上传组件
-import FileUpload from "@/components/FileUpload"
-// 图片上传组件
-import ImageUpload from "@/components/ImageUpload"
-// 图片预览组件
-import ImagePreview from "@/components/ImagePreview"
-// 字典标签组件
-import DictTag from '@/components/DictTag'
-
-// ace.config.js(独立配置文件)
-import ace from 'ace-builds';
-import modeJsonUrl from 'ace-builds/src-noconflict/mode-json?url';
-ace.config.setModuleUrl('ace/mode/json', modeJsonUrl); // 动态绑定语法模块路径
-
-const app = createApp(App)
-
-// 全局方法挂载
-app.config.globalProperties.useDict = useDict
- app.config.globalProperties.download = download
-app.config.globalProperties.parseTime = parseTime
-app.config.globalProperties.resetForm = resetForm
-app.config.globalProperties.handleTree = handleTree
-app.config.globalProperties.addDateRange = addDateRange
-app.config.globalProperties.selectDictLabel = selectDictLabel
-app.config.globalProperties.selectDictLabels = selectDictLabels
-
-// 全局组件挂载
-app.component('DictTag', DictTag)
-app.component('Pagination', Pagination)
-app.component('FileUpload', FileUpload)
-app.component('ImageUpload', ImageUpload)
-app.component('ImagePreview', ImagePreview)
-app.component('RightToolbar', RightToolbar)
-app.component('Editor', Editor)
-
-app.use(router)
-app.use(store)
-app.use(plugins)
-app.use(elementIcons)
-app.component('svg-icon', SvgIcon)
-
-directive(app)
-
-// 使用element-plus 并且设置全局的大小
-app.use(ElementPlus, {
- locale: locale,
- // 支持 large、default、small
- size: Cookies.get('size') || 'default'
-})
-
-
-app.use(WebSocketPlugin, {
- url: import.meta.env.VITE_WS_URL,
- // url: 'ws://192.168.0.201:13080/ws',
- userId: 'your_user_id'
-});
-
-app.mount('#app')
diff --git a/ruoyi-ui/src/models/UnifiedRobotModel.js b/ruoyi-ui/src/models/UnifiedRobotModel.js
deleted file mode 100644
index 1ef44f8..0000000
--- a/ruoyi-ui/src/models/UnifiedRobotModel.js
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- * Unified robot model data interface
- * All formats (URDF, MJCF, USD) are converted to this unified format
- */
-export class UnifiedRobotModel {
- constructor() {
- this.name = '';
- this.links = new Map(); // Map
- this.joints = new Map(); // Map
- this.materials = new Map(); // Map
- this.constraints = new Map(); // Map - for parallel mechanism constraints
- this.rootLink = null; // Root link name
- this.threeObject = null; // Three.js object (if available)
- }
-
- addLink(link) {
- this.links.set(link.name, link);
- }
-
- addJoint(joint) {
- this.joints.set(joint.name, joint);
- }
-
- addConstraint(constraint) {
- this.constraints.set(constraint.name, constraint);
- }
-
- getLink(name) {
- return this.links.get(name);
- }
-
- getJoint(name) {
- return this.joints.get(name);
- }
-
- getConstraint(name) {
- return this.constraints.get(name);
- }
-}
-
-/**
- * Link interface
- */
-export class Link {
- constructor(name) {
- this.name = name;
- this.visuals = []; // VisualGeometry[]
- this.collisions = []; // CollisionGeometry[]
- this.inertial = null; // InertialProperties
- this.threeObject = null; // Three.js object
- this.userData = {}; // User-defined data (for adapters to store additional information)
- }
-}
-
-/**
- * VisualGeometry interface
- */
-export class VisualGeometry {
- constructor() {
- this.name = '';
- this.origin = { xyz: [0, 0, 0], rpy: [0, 0, 0] };
- this.geometry = null; // GeometryType
- this.material = null; // Material
- this.threeObject = null; // Three.js Mesh
- }
-}
-
-/**
- * CollisionGeometry interface
- */
-export class CollisionGeometry {
- constructor() {
- this.name = '';
- this.origin = { xyz: [0, 0, 0], rpy: [0, 0, 0] };
- this.geometry = null; // GeometryType
- this.threeObject = null; // Three.js Mesh
- }
-}
-
-/**
- * GeometryType interface
- */
-export class GeometryType {
- constructor(type) {
- this.type = type; // 'box' | 'sphere' | 'cylinder' | 'mesh'
- this.size = null; // Size parameters (varies by type)
- this.filename = null; // Mesh file path (if mesh type)
- }
-
- clone() {
- const cloned = new GeometryType(this.type);
- cloned.size = this.size ? { ...this.size } : null;
- cloned.filename = this.filename;
- return cloned;
- }
-}
-
-/**
- * InertialProperties interface
- */
-export class InertialProperties {
- constructor() {
- this.mass = 0;
- this.origin = { xyz: [0, 0, 0], rpy: [0, 0, 0] };
- this.ixx = 0;
- this.iyy = 0;
- this.izz = 0;
- this.ixy = 0;
- this.ixz = 0;
- this.iyz = 0;
- }
-}
-
-/**
- * Joint interface
- */
-export class Joint {
- constructor(name, type) {
- this.name = name;
- this.type = type; // 'revolute' | 'prismatic' | 'fixed' | 'continuous'
- this.parent = null; // Parent link name
- this.child = null; // Child link name
- this.origin = { xyz: [0, 0, 0], rpy: [0, 0, 0] };
- this.axis = { xyz: [0, 0, 1] }; // Default z-axis
- this.limits = null; // JointLimits
- this.currentValue = 0; // Current joint value
- this.threeObject = null; // Three.js object (if available)
- }
-}
-
-/**
- * JointLimits interface
- */
-export class JointLimits {
- constructor() {
- this.lower = -Math.PI;
- this.upper = Math.PI;
- this.effort = null;
- this.velocity = null;
- }
-}
-
-/**
- * Material interface
- */
-export class Material {
- constructor(name) {
- this.name = name;
- this.color = { r: 0.8, g: 0.8, b: 0.8 };
- this.texture = null;
- }
-}
-
-/**
- * Constraint interface - for describing closed-chain constraints of parallel mechanisms
- * Supports MuJoCo equality constraint types
- */
-export class Constraint {
- constructor(name, type) {
- this.name = name;
- this.type = type; // 'connect' | 'weld' | 'joint' | 'tendon' | 'distance'
-
- // Constraint objects (may be body, geom, joint, etc. depending on type)
- this.body1 = null;
- this.body2 = null;
- this.anchor = null; // Connection point coordinates
- this.torquescale = null; // Torque scale
-
- // Joint constraint specific properties
- this.joint1 = null;
- this.joint2 = null;
- this.polycoef = null; // Polynomial coefficients [a0, a1, a2, a3, a4]
-
- // Visualization object
- this.threeObject = null; // Three.js object for displaying constraint
-
- // Original data (for debugging)
- this.userData = {};
- }
-}
-
diff --git a/ruoyi-ui/src/permission.js b/ruoyi-ui/src/permission.js
deleted file mode 100644
index c9cbd87..0000000
--- a/ruoyi-ui/src/permission.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import router from './router'
-import { ElMessage } from 'element-plus'
-import NProgress from 'nprogress'
-import 'nprogress/nprogress.css'
-import { getToken } from '@/utils/auth'
-import { isHttp, isPathMatch } from '@/utils/validate'
-import { isRelogin } from '@/utils/request'
-import useUserStore from '@/store/modules/user'
-import useSettingsStore from '@/store/modules/settings'
-import usePermissionStore from '@/store/modules/permission'
-
-NProgress.configure({ showSpinner: false })
-
-const whiteList = ['/login', '/register']
-
-const isWhiteList = (path) => {
- return whiteList.some(pattern => isPathMatch(pattern, path))
-}
-
-router.beforeEach((to, from, next) => {
- if (to.meta?.noLogin) {
- next()
- return
- }
- NProgress.start()
- if (getToken()) {
- to.meta.title && useSettingsStore().setTitle(to.meta.title)
- /* has token*/
- if (to.path === '/login') {
- next({ path: '/' })
- NProgress.done()
- } else if (isWhiteList(to.path)) {
- next()
- } else {
- if (useUserStore().roles.length === 0) {
- isRelogin.show = true
- // 判断当前用户是否已拉取完user_info信息
- useUserStore().getInfo().then(() => {
- isRelogin.show = false
- usePermissionStore().generateRoutes().then(accessRoutes => {
- console.log('accessRoutes', accessRoutes)
- // 根据roles权限生成可访问的路由表
- accessRoutes.forEach(route => {
- if (!isHttp(route.path)) {
- router.addRoute(route) // 动态添加可访问路由表
- }
- })
- console.log('router', router)
- next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
- })
- }).catch(err => {
- useUserStore().logOut().then(() => {
- ElMessage.error(err)
- next({ path: '/' })
- })
- })
- } else {
- next()
- }
- }
- } else {
- // 没有token
- if (isWhiteList(to.path)) {
- // 在免登录白名单,直接进入
- next()
- } else {
- next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
- NProgress.done()
- }
- }
-})
-
-router.afterEach(() => {
- NProgress.done()
-})
diff --git a/ruoyi-ui/src/plugins/auth.js b/ruoyi-ui/src/plugins/auth.js
deleted file mode 100644
index 5e8c28d..0000000
--- a/ruoyi-ui/src/plugins/auth.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import useUserStore from '@/store/modules/user'
-
-function authPermission(permission) {
- const all_permission = "*:*:*";
- const permissions = useUserStore().permissions
- if (permission && permission.length > 0) {
- return permissions.some(v => {
- return all_permission === v || v === permission
- })
- } else {
- return false
- }
-}
-
-function authRole(role) {
- const super_admin = "admin";
- const roles = useUserStore().roles
- if (role && role.length > 0) {
- return roles.some(v => {
- return super_admin === v || v === role
- })
- } else {
- return false
- }
-}
-
-export default {
- // 验证用户是否具备某权限
- hasPermi(permission) {
- return authPermission(permission);
- },
- // 验证用户是否含有指定权限,只需包含其中一个
- hasPermiOr(permissions) {
- return permissions.some(item => {
- return authPermission(item)
- })
- },
- // 验证用户是否含有指定权限,必须全部拥有
- hasPermiAnd(permissions) {
- return permissions.every(item => {
- return authPermission(item)
- })
- },
- // 验证用户是否具备某角色
- hasRole(role) {
- return authRole(role);
- },
- // 验证用户是否含有指定角色,只需包含其中一个
- hasRoleOr(roles) {
- return roles.some(item => {
- return authRole(item)
- })
- },
- // 验证用户是否含有指定角色,必须全部拥有
- hasRoleAnd(roles) {
- return roles.every(item => {
- return authRole(item)
- })
- }
-}
diff --git a/ruoyi-ui/src/plugins/cache.js b/ruoyi-ui/src/plugins/cache.js
deleted file mode 100644
index b67d453..0000000
--- a/ruoyi-ui/src/plugins/cache.js
+++ /dev/null
@@ -1,79 +0,0 @@
-const sessionCache = {
- set (key, value) {
- if (!sessionStorage) {
- return
- }
- if (key != null && value != null) {
- sessionStorage.setItem(key, value)
- }
- },
- get (key) {
- if (!sessionStorage) {
- return null
- }
- if (key == null) {
- return null
- }
- return sessionStorage.getItem(key)
- },
- setJSON (key, jsonValue) {
- if (jsonValue != null) {
- this.set(key, JSON.stringify(jsonValue))
- }
- },
- getJSON (key) {
- const value = this.get(key)
- if (value != null) {
- return JSON.parse(value)
- }
- return null
- },
- remove (key) {
- sessionStorage.removeItem(key);
- }
-}
-const localCache = {
- set (key, value) {
- if (!localStorage) {
- return
- }
- if (key != null && value != null) {
- localStorage.setItem(key, value)
- }
- },
- get (key) {
- if (!localStorage) {
- return null
- }
- if (key == null) {
- return null
- }
- return localStorage.getItem(key)
- },
- setJSON (key, jsonValue) {
- if (jsonValue != null) {
- this.set(key, JSON.stringify(jsonValue))
- }
- },
- getJSON (key) {
- const value = this.get(key)
- if (value != null) {
- return JSON.parse(value)
- }
- return null
- },
- remove (key) {
- localStorage.removeItem(key);
- }
-}
-
-export default {
- /**
- * 会话级缓存
- */
- session: sessionCache,
- /**
- * 本地缓存
- */
- local: localCache
-}
diff --git a/ruoyi-ui/src/plugins/download.js b/ruoyi-ui/src/plugins/download.js
deleted file mode 100644
index 1a89efd..0000000
--- a/ruoyi-ui/src/plugins/download.js
+++ /dev/null
@@ -1,79 +0,0 @@
-import axios from 'axios'
-import { ElLoading, ElMessage } from 'element-plus'
-import { saveAs } from 'file-saver'
-import { getToken } from '@/utils/auth'
-import errorCode from '@/utils/errorCode'
-import { blobValidate } from '@/utils/ruoyi'
-
-const baseURL = import.meta.env.VITE_APP_BASE_API
-let downloadLoadingInstance;
-
-export default {
- name(name, isDelete = true) {
- var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete
- axios({
- method: 'get',
- url: url,
- responseType: 'blob',
- headers: { 'Authorization': 'Bearer ' + getToken() }
- }).then((res) => {
- const isBlob = blobValidate(res.data);
- if (isBlob) {
- const blob = new Blob([res.data])
- this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
- } else {
- this.printErrMsg(res.data);
- }
- })
- },
- resource(resource) {
- var url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource);
- axios({
- method: 'get',
- url: url,
- responseType: 'blob',
- headers: { 'Authorization': 'Bearer ' + getToken() }
- }).then((res) => {
- const isBlob = blobValidate(res.data);
- if (isBlob) {
- const blob = new Blob([res.data])
- this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
- } else {
- this.printErrMsg(res.data);
- }
- })
- },
- zip(url, name) {
- var url = baseURL + url
- downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", })
- axios({
- method: 'get',
- url: url,
- responseType: 'blob',
- headers: { 'Authorization': 'Bearer ' + getToken() }
- }).then((res) => {
- const isBlob = blobValidate(res.data);
- if (isBlob) {
- const blob = new Blob([res.data], { type: 'application/zip' })
- this.saveAs(blob, name)
- } else {
- this.printErrMsg(res.data);
- }
- downloadLoadingInstance.close();
- }).catch((r) => {
- console.error(r)
- ElMessage.error('下载文件出现错误,请联系管理员!')
- downloadLoadingInstance.close();
- })
- },
- saveAs(text, name, opts) {
- saveAs(text, name, opts);
- },
- async printErrMsg(data) {
- const resText = await data.text();
- const rspObj = JSON.parse(resText);
- const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
- ElMessage.error(errMsg);
- }
-}
-
diff --git a/ruoyi-ui/src/plugins/index.js b/ruoyi-ui/src/plugins/index.js
deleted file mode 100644
index 47d1b41..0000000
--- a/ruoyi-ui/src/plugins/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import tab from './tab'
-import auth from './auth'
-import cache from './cache'
-import modal from './modal'
-import download from './download'
-
-export default function installPlugins(app){
- // 页签操作
- app.config.globalProperties.$tab = tab
- // 认证对象
- app.config.globalProperties.$auth = auth
- // 缓存对象
- app.config.globalProperties.$cache = cache
- // 模态框对象
- app.config.globalProperties.$modal = modal
- // 下载文件
- app.config.globalProperties.$download = download
-}
diff --git a/ruoyi-ui/src/plugins/modal.js b/ruoyi-ui/src/plugins/modal.js
deleted file mode 100644
index b59e14d..0000000
--- a/ruoyi-ui/src/plugins/modal.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus'
-
-let loadingInstance;
-
-export default {
- // 消息提示
- msg(content) {
- ElMessage.info(content)
- },
- // 错误消息
- msgError(content) {
- ElMessage.error(content)
- },
- // 成功消息
- msgSuccess(content) {
- ElMessage.success(content)
- },
- // 警告消息
- msgWarning(content) {
- ElMessage.warning(content)
- },
- // 弹出提示
- alert(content) {
- ElMessageBox.alert(content, "系统提示")
- },
- // 错误提示
- alertError(content) {
- ElMessageBox.alert(content, "系统提示", { type: 'error' })
- },
- // 成功提示
- alertSuccess(content) {
- ElMessageBox.alert(content, "系统提示", { type: 'success' })
- },
- // 警告提示
- alertWarning(content) {
- ElMessageBox.alert(content, "系统提示", { type: 'warning' })
- },
- // 通知提示
- notify(content) {
- ElNotification.info(content)
- },
- // 错误通知
- notifyError(content) {
- ElNotification.error(content);
- },
- // 成功通知
- notifySuccess(content) {
- ElNotification.success(content)
- },
- // 警告通知
- notifyWarning(content) {
- ElNotification.warning(content)
- },
- // 确认窗体
- confirm(content) {
- return ElMessageBox.confirm(content, "系统提示", {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: "warning",
- })
- },
- // 提交内容
- prompt(content) {
- return ElMessageBox.prompt(content, "系统提示", {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: "warning",
- })
- },
- // 打开遮罩层
- loading(content) {
- loadingInstance = ElLoading.service({
- lock: true,
- text: content,
- background: "rgba(0, 0, 0, 0.7)",
- })
- },
- // 关闭遮罩层
- closeLoading() {
- loadingInstance.close();
- }
-}
diff --git a/ruoyi-ui/src/plugins/tab.js b/ruoyi-ui/src/plugins/tab.js
deleted file mode 100644
index 7b51cf5..0000000
--- a/ruoyi-ui/src/plugins/tab.js
+++ /dev/null
@@ -1,69 +0,0 @@
-import useTagsViewStore from '@/store/modules/tagsView'
-import router from '@/router'
-
-export default {
- // 刷新当前tab页签
- refreshPage(obj) {
- const { path, query, matched } = router.currentRoute.value;
- if (obj === undefined) {
- matched.forEach((m) => {
- if (m.components && m.components.default && m.components.default.name) {
- if (!['Layout', 'ParentView'].includes(m.components.default.name)) {
- obj = { name: m.components.default.name, path: path, query: query };
- }
- }
- });
- }
- return useTagsViewStore().delCachedView(obj).then(() => {
- const { path, query } = obj
- router.replace({
- path: '/redirect' + path,
- query: query
- })
- })
- },
- // 关闭当前tab页签,打开新页签
- closeOpenPage(obj) {
- useTagsViewStore().delView(router.currentRoute.value);
- if (obj !== undefined) {
- return router.push(obj);
- }
- },
- // 关闭指定tab页签
- closePage(obj) {
- if (obj === undefined) {
- return useTagsViewStore().delView(router.currentRoute.value).then(({ visitedViews }) => {
- const latestView = visitedViews.slice(-1)[0]
- if (latestView) {
- return router.push(latestView.fullPath)
- }
- return router.push('/');
- });
- }
- return useTagsViewStore().delView(obj);
- },
- // 关闭所有tab页签
- closeAllPage() {
- return useTagsViewStore().delAllViews();
- },
- // 关闭左侧tab页签
- closeLeftPage(obj) {
- return useTagsViewStore().delLeftTags(obj || router.currentRoute.value);
- },
- // 关闭右侧tab页签
- closeRightPage(obj) {
- return useTagsViewStore().delRightTags(obj || router.currentRoute.value);
- },
- // 关闭其他tab页签
- closeOtherPage(obj) {
- return useTagsViewStore().delOthersViews(obj || router.currentRoute.value);
- },
- // 打开tab页签
- openPage(url) {
- return router.push(url);
- },
- // 修改tab页签
- updatePage(obj) {
- return useTagsViewStore().updateVisitedView(obj);
- }
-}
diff --git a/ruoyi-ui/src/plugins/websocket.js b/ruoyi-ui/src/plugins/websocket.js
deleted file mode 100644
index 338a2ae..0000000
--- a/ruoyi-ui/src/plugins/websocket.js
+++ /dev/null
@@ -1,183 +0,0 @@
-import { fa } from 'element-plus/es/locale/index.mjs';
-import { throttle } from 'lodash';
-
-class WebSocketManager {
- constructor(url, userId) {
- this.url = url;
- this.userId = userId;
- this.ws = null;
- this.events = {};
- this.reconnectTimer = null;
- this.heartbeatTimer = null;
- this.isManualClose = false;
- this.messageQueue = [];
- this.maxQueueSize = 1;
- this.status = false;
- }
-
- connect() {
- if (!window.WebSocket) {
- console.error('浏览器不支持 WebSocket');
- return;
- }
-
- this.ws = new WebSocket(`${this.url}?userId=${this.userId}`, [], { perMessageDeflate: true });
- this.ws.binaryType = 'arraybuffer'; // 确保接收 ArrayBuffer
-
- this.ws.onopen = () => {
- console.log('WebSocket 已连接');
- this.status = true;
- this.startHeartbeat();
- this.processMessageQueue();
- };
-
- this.ws.onmessage = (event) => {
- if (this.messageQueue.length < this.maxQueueSize) {
- this.messageQueue.push(event);
- this.processMessageQueue();
- } else {
- console.warn('消息队列已满,丢弃消息');
- }
- };
-
- this.ws.onclose = () => {
- console.log('WebSocket 断开');
- this.status = false;
- this.stopHeartbeat();
- if (!this.isManualClose) {
- this.reconnect();
- }
- };
-
- this.ws.onerror = (err) => {
- console.error('WebSocket 错误:', err);
- };
- }
-
- async processMessageQueue() {
- if (!this.ws || this.messageQueue.length === 0) return;
-
- const event = this.messageQueue.shift();
- try {
- // 处理消息数据
- console.log('收到消息数据类型:', event.data.constructor.name);
- let compressedData;
-
- // 处理 Blob 或 ArrayBuffer
- if (event.data instanceof Blob) {
- console.log('处理 Blob 数据,大小:', event.data.size);
- compressedData = new Uint8Array(await event.data.arrayBuffer());
- } else if (event.data instanceof ArrayBuffer) {
- console.log('处理 ArrayBuffer 数据,大小:', event.data.byteLength);
- compressedData = new Uint8Array(event.data);
- } else {
- throw new Error('不支持的数据类型: ' + event.data.constructor.name);
- }
-
- // 使用 DecompressionStream 解压 GZIP 数据
- const decompressionStream = new DecompressionStream('gzip');
- const writer = decompressionStream.writable.getWriter();
- writer.write(compressedData);
- writer.close();
-
- const decompressedStream = decompressionStream.readable;
- const reader = decompressedStream.getReader();
- let decompressedData = new Uint8Array(0);
-
- while (true) {
- const { done, value } = await reader.read();
- if (done) break;
- const newData = new Uint8Array(decompressedData.length + value.length);
- newData.set(decompressedData);
- newData.set(value, decompressedData.length);
- decompressedData = newData;
- }
-
- // 将解压后的数据转换为字符串
- const textDecoder = new TextDecoder();
- const decompressedString = textDecoder.decode(decompressedData);
- console.log('解压后的数据:', JSON.parse(decompressedString));
-
- // 解析 JSON
- const { type, channel, payload,timestamp } = JSON.parse(decompressedString);
- console.log('后端到前端延迟:', ((new Date()).getTime() - timestamp));
-
- if (channel && this.events[channel]) {
- this.events[channel].forEach(callback => callback(payload));
- } else if (type && this.events[type]) {
- this.events[type].forEach(callback => callback(payload));
- }
- setTimeout(() => this.processMessageQueue(), 0);
- } catch (err) {
- console.error('WebSocket 消息解析失败:', err);
- console.error('错误堆栈:', err.stack);
- console.error('原始数据类型:', event.data.constructor.name);
- console.error('原始数据大小:', event.data instanceof Blob ? event.data.size : event.data.byteLength || '未知');
- }
- }
-
- on(eventName, callback) {
- if (!this.events[eventName]) {
- this.events[eventName] = [];
- }
- this.events[eventName].push(callback);
- }
-
- off(eventName, callback) {
- if (this.events[eventName]) {
- const index = this.events[eventName].indexOf(callback);
- if (index !== -1) {
- this.events[eventName].splice(index, 1);
- }
- }
- }
-
- send(payload) {
- if (this.ws && this.ws.readyState === 1) {
- this.ws.send(JSON.stringify(payload));
- } else {
- console.warn('WebSocket 未连接,消息发送失败');
- }
- }
-
- close() {
- this.isManualClose = true;
- this.status = false;
- this.stopHeartbeat();
- if (this.ws) {
- this.ws.close();
- }
- }
-
- reconnect() {
- clearTimeout(this.reconnectTimer);
- this.reconnectTimer = setTimeout(() => {
- console.log('尝试重新连接 WebSocket...');
- this.connect();
- }, 5000);
- }
-
- startHeartbeat() {
- this.heartbeatTimer = setInterval(() => {
- this.send({ type: 'heartbeat' });
- }, 30000);
- }
-
- stopHeartbeat() {
- clearInterval(this.heartbeatTimer);
- }
-
- status() {
- return this.status;
- }
-}
-
-export default {
- install(app, options) {
- const { url, userId } = options;
- const wsManager = new WebSocketManager(url, userId);
- wsManager.connect();
- app.config.globalProperties.$ws = wsManager;
- app.provide('ws', wsManager);
- }
-};
\ No newline at end of file
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
deleted file mode 100644
index cf65917..0000000
--- a/ruoyi-ui/src/router/index.js
+++ /dev/null
@@ -1,316 +0,0 @@
-import { createWebHistory, createRouter } from "vue-router";
-/* Layout */
-import Layout from "@/layout";
-import path from "path";
-
-/**
- * Note: 路由配置项
- *
- * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
- * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
- * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
- * // 若你想不管路由下面的 children 声明的个数都显示你的根路由
- * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
- * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
- * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题
- * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
- * roles: ['admin', 'common'] // 访问路由的角色权限
- * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
- * meta : {
- noCache: true // 如果设置为true,则不会被 缓存(默认 false)
- title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
- icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
- breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
- activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
- }
- */
-
-// 公共路由
-export const constantRoutes = [
- {
- path: "/redirect",
- component: Layout,
- hidden: true,
- children: [
- {
- path: "/redirect/:path(.*)",
- component: () => import("@/views/redirect/index.vue"),
- },
- ],
- },
- {
- path: "/login",
- component: () => import("@/views/login"),
- hidden: true,
- },
- {
- path: "/register",
- component: () => import("@/views/register"),
- hidden: true,
- },
- {
- path: "/:pathMatch(.*)*",
- component: () => import("@/views/error/404"),
- hidden: true,
- },
- {
- path: "/401",
- component: () => import("@/views/error/401"),
- hidden: true,
- },
- {
- path: "/device",
- component: Layout,
- children: [
- {
- path: "mechanical_arm/:id",
- component: () =>
- import("@/views/device/register/components/MechanicalArm/index.vue"),
- name: "机械臂示教",
- meta: { title: "机械臂详情" },
- hidden: true,
- },
- {
- path: "camera/:id",
- component: () =>
- import("@/views/device/register/components/Camera/index.vue"),
- name: "摄像头示教",
- meta: { title: "摄像头详情" },
- hidden: true,
- },
- {
- path: "head/:id",
- component: () =>
- import("@/views/device/register/components/Head/index.vue"),
- name: "人工头示教",
- meta: { title: "人工头详情" },
- hidden: true,
- },
- {
- path: "speaker/:id",
- component: () =>
- import("@/views/device/register/components/Speaker/index.vue"),
- name: "扬声器示教",
- meta: { title: "扬声器详情" },
- hidden: true,
- },
- {
- path: "hand/:id",
- component: () =>
- import("@/views/device/register/components/DexHand/index.vue"),
- name: "灵巧手示教",
- meta: { title: "灵巧手详情" },
- hidden: true,
- },{
- path: "microphone/:id",
- component: () =>
- import("@/views/device/register/components/Microphone/index.vue"),
- name: "麦克风示教",
- meta: { title: "麦克风详情" },
- hidden: true,
- }
- ],
- },
- {
- //语音合成
- path: "/speech_synthesis",
- component: () =>
- import("@/views/device/register/components/SpeechSynthesis/index.vue"),
- meta: { title: "语音合成", noLogin: true },
- hidden: true,
- },
- {
- //触摸交互
- path: "/touch_interaction",
- component: () =>
- import("@/views/device/register/components/TouchInteraction/index.vue"),
- meta: { title: "触摸交互", noLogin: true },
- hidden: true,
- },
- {
- //cockpit
- path: "/inspection/cockpit",
- component: () =>
- import("@/views/inspection/cockpit/index.vue"),
- meta: { title: "logicFlow", noLogin: true },
- hidden: true,
- },
- {
- //logicFlow
- path: "/logic_flow",
- component: () =>
- import("@/views/device/register/components/LogicFlow/index.vue"),
- meta: { title: "logicFlow", noLogin: true },
- hidden: true,
- },
- {
- //logicFlow
- path: "/flow",
- component: () => import("@/views/flow/index.vue"),
- meta: { title: "flow", noLogin: true },
- hidden: true,
- },
- {
- //电机路由
- path: "/Motor/:id",
- component: () =>
- import("@/views/device/register/components/Motor/index.vue"),
- hidden: true,
- },
- {
- path: "",
- component: Layout,
- redirect: "/index",
- children: [
- {
- path: "/index",
- component: () => import("@/views/index"),
- name: "Index",
- meta: { title: "首页", icon: "dashboard", affix: true },
- },
- ],
- },
-];
-
-// 动态路由,基于用户权限动态去加载
-export const dynamicRoutes = [
- {
- path: "/system/user-auth",
- component: Layout,
- hidden: true,
- permissions: ["system:user:edit"],
- children: [
- {
- path: "role/:userId(\\d+)",
- component: () => import("@/views/system/user/authRole"),
- name: "AuthRole",
- meta: { title: "分配角色", activeMenu: "/system/user" },
- },
- ],
- },
- {
- path: "/system/role-auth",
- component: Layout,
- hidden: true,
- permissions: ["system:role:edit"],
- children: [
- {
- path: "user/:roleId(\\d+)",
- component: () => import("@/views/system/role/authUser"),
- name: "AuthUser",
- meta: { title: "分配用户", activeMenu: "/system/role" },
- },
- ],
- },
- {
- path: "/system/dict-data",
- component: Layout,
- hidden: true,
- permissions: ["system:dict:list"],
- children: [
- {
- path: "index/:dictId(\\d+)",
- component: () => import("@/views/system/dict/data"),
- name: "Data",
- meta: { title: "字典数据", activeMenu: "/system/dict" },
- },
- ],
- },
- {
- path: "/vi/plan",
- component: Layout,
- hidden: true,
- permissions: ["vi:testProject:list"],
- children: [
- {
- path: "index/:id",
- component: () => import("@/views/vi/testProject/plan/index"),
- name: "Plan",
- meta: { title: "方案管理", activeMenu: "/vi/testProject" },
- },
- ],
- },
- {
- path: "/is/plan",
- component: Layout,
- hidden: true,
- permissions: ["is:project:list"],
- children: [
- {
- path: "index/:id",
- component: () => import("@/views/is/project/plan/index"),
- name: "ProjectPlan",
- meta: { title: "项目方案", activeMenu: "/is/plan" },
- },
- ],
- },
- {
- path: "/is/evaluate",
- component: Layout,
- hidden: true,
- permissions: ["is:project:list"],
- children: [
- {
- path: "index/:id",
- component: () => import("@/views/is/project/evaluate/index"),
- name: "isProjectEvaluate",
- meta: { title: "触控评价", activeMenu: "/is/evaluate" },
- },
- ],
- },
- {
- path: "/vi/evaluate",
- component: Layout,
- hidden: true,
- permissions: ["is:project:list"],
- children: [
- {
- path: "index/:id",
- component: () => import("@/views/vi/testProject/evaluate/index"),
- name: "viProjectEvaluate",
- meta: { title: "语音评价", activeMenu: "/vi/evaluate" },
- },
- ],
- },
- {
- path: "/monitor/job-log",
- component: Layout,
- hidden: true,
- permissions: ["monitor:job:list"],
- children: [
- {
- path: "index/:jobId(\\d+)",
- component: () => import("@/views/monitor/job/log"),
- name: "JobLog",
- meta: { title: "调度日志", activeMenu: "/monitor/job" },
- },
- ],
- },
- {
- path: "/tool/gen-edit",
- component: Layout,
- hidden: true,
- permissions: ["tool:gen:edit"],
- children: [
- {
- path: "index/:tableId(\\d+)",
- component: () => import("@/views/tool/gen/editTable"),
- name: "GenEdit",
- meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
- },
- ],
- },
-];
-
-const router = createRouter({
- history: createWebHistory(),
- routes: constantRoutes,
- scrollBehavior(to, from, savedPosition) {
- if (savedPosition) {
- return savedPosition;
- }
- return { top: 0 };
- },
-});
-
-export default router;
diff --git a/ruoyi-ui/src/settings.js b/ruoyi-ui/src/settings.js
deleted file mode 100644
index 08a0108..0000000
--- a/ruoyi-ui/src/settings.js
+++ /dev/null
@@ -1,47 +0,0 @@
-export default {
- /**
- * 网页标题
- */
- title: import.meta.env.VITE_APP_TITLE,
- /**
- * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
- */
- sideTheme: 'theme-dark',
- /**
- * 是否系统布局配置
- */
- showSettings: true,
-
- /**
- * 是否显示顶部导航
- */
- topNav: false,
-
- /**
- * 是否显示 tagsView
- */
- tagsView: true,
-
- /**
- * 是否固定头部
- */
- fixedHeader: false,
-
- /**
- * 是否显示logo
- */
- sidebarLogo: true,
-
- /**
- * 是否显示动态标题
- */
- dynamicTitle: false,
-
- /**
- * @type {string | array} 'production' | ['production', 'development']
- * @description Need show err logs component.
- * The default is only used in the production env
- * If you want to also use it in dev, you can pass ['production', 'development']
- */
- errorLog: 'production'
-}
diff --git a/ruoyi-ui/src/store/index.js b/ruoyi-ui/src/store/index.js
deleted file mode 100644
index f10f389..0000000
--- a/ruoyi-ui/src/store/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const store = createPinia()
-
-export default store
\ No newline at end of file
diff --git a/ruoyi-ui/src/store/modules/app.js b/ruoyi-ui/src/store/modules/app.js
deleted file mode 100644
index 0b57159..0000000
--- a/ruoyi-ui/src/store/modules/app.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import Cookies from 'js-cookie'
-
-const useAppStore = defineStore(
- 'app',
- {
- state: () => ({
- sidebar: {
- opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
- withoutAnimation: false,
- hide: false
- },
- device: 'desktop',
- size: Cookies.get('size') || 'default'
- }),
- actions: {
- toggleSideBar(withoutAnimation) {
- if (this.sidebar.hide) {
- return false;
- }
- this.sidebar.opened = !this.sidebar.opened
- this.sidebar.withoutAnimation = withoutAnimation
- if (this.sidebar.opened) {
- Cookies.set('sidebarStatus', 1)
- } else {
- Cookies.set('sidebarStatus', 0)
- }
- },
- closeSideBar({ withoutAnimation }) {
- Cookies.set('sidebarStatus', 0)
- this.sidebar.opened = false
- this.sidebar.withoutAnimation = withoutAnimation
- },
- toggleDevice(device) {
- this.device = device
- },
- setSize(size) {
- this.size = size;
- Cookies.set('size', size)
- },
- toggleSideBarHide(status) {
- this.sidebar.hide = status
- }
- }
- })
-
-export default useAppStore
diff --git a/ruoyi-ui/src/store/modules/dict.js b/ruoyi-ui/src/store/modules/dict.js
deleted file mode 100644
index 27fc308..0000000
--- a/ruoyi-ui/src/store/modules/dict.js
+++ /dev/null
@@ -1,57 +0,0 @@
-const useDictStore = defineStore(
- 'dict',
- {
- state: () => ({
- dict: new Array()
- }),
- actions: {
- // 获取字典
- getDict(_key) {
- if (_key == null && _key == "") {
- return null;
- }
- try {
- for (let i = 0; i < this.dict.length; i++) {
- if (this.dict[i].key == _key) {
- return this.dict[i].value;
- }
- }
- } catch (e) {
- return null;
- }
- },
- // 设置字典
- setDict(_key, value) {
- if (_key !== null && _key !== "") {
- this.dict.push({
- key: _key,
- value: value
- });
- }
- },
- // 删除字典
- removeDict(_key) {
- var bln = false;
- try {
- for (let i = 0; i < this.dict.length; i++) {
- if (this.dict[i].key == _key) {
- this.dict.splice(i, 1);
- return true;
- }
- }
- } catch (e) {
- bln = false;
- }
- return bln;
- },
- // 清空字典
- cleanDict() {
- this.dict = new Array();
- },
- // 初始字典
- initDict() {
- }
- }
- })
-
-export default useDictStore
diff --git a/ruoyi-ui/src/store/modules/flow.js b/ruoyi-ui/src/store/modules/flow.js
deleted file mode 100644
index 287ae45..0000000
--- a/ruoyi-ui/src/store/modules/flow.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { defineStore } from 'pinia'
-
-export const useFlowStore = defineStore('flow', {
- state: () => ({
- disableForm: false,
- deviceList: []
- }),
- actions: {
- updateDisableForm(value) {
- this.disableForm = value
- },
-
- async getDeviceList() {
- const data = await new Promise((resolve, reject) => {
- resolve( ['cam1', 'cam2', 'cam3', 'cam4'])
- })
- this.deviceList = data
- return data
- }
- }
-}
-)
diff --git a/ruoyi-ui/src/store/modules/inspection.js b/ruoyi-ui/src/store/modules/inspection.js
deleted file mode 100644
index 08efa03..0000000
--- a/ruoyi-ui/src/store/modules/inspection.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import { update } from 'lodash'
-import { defineStore } from 'pinia'
-
-export const useInspectionStore = defineStore('inspection', {
- state: () => ({
- gridOffscreen: null, // 栅格图像(离屏Canvas)
- hoveredElement: null, // 当前悬停的元素 {kind, index}
- animationTimeSeconds: 0, // 全局动画时间戳(秒),用于脉冲动画效果
- camera: { // 相机参数
- centerX: 0, // 相机中心的世界坐标 X
- centerY: 0, // 相机中心的世界坐标 Y
- pixelsPerMeter: 20, // 缩放:每米对应的屏幕像素数
- },
- canvasWidthPx: 0, // Canvas CSS 逻辑宽度(像素)
- canvasHeightPx: 0, // Canvas CSS 逻辑高度(像素)
- devicePixelRatio: 1, // 设备像素比(高DPI屏幕 > 1)
- }),
- actions: {
- updateCamera(value) {
- this.camera = { ...this.camera, ...value }
- },
- updateCanvasSize(width, height) {
- this.canvasWidthPx = width
- this.canvasHeightPx = height
- this.devicePixelRatio = window.devicePixelRatio || 1
- },
- async getCanvasWH() {
- const data = {
- canvasWidthPx: this.canvasWidthPx,
- canvasHeightPx: this.canvasHeightPx,
- devicePixelRatio: this.devicePixelRatio,
- }
- return data
- }
- }
-}
-)
diff --git a/ruoyi-ui/src/store/modules/permission.js b/ruoyi-ui/src/store/modules/permission.js
deleted file mode 100644
index 958fe63..0000000
--- a/ruoyi-ui/src/store/modules/permission.js
+++ /dev/null
@@ -1,142 +0,0 @@
-import auth from '@/plugins/auth'
-import router, { constantRoutes, dynamicRoutes } from '@/router'
-import { getRouters } from '@/api/menu'
-import Layout from '@/layout/index'
-import ParentView from '@/components/ParentView'
-import InnerLink from '@/layout/components/InnerLink'
-
-// 匹配views里面所有的.vue文件
-const modules = import.meta.glob('./../../views/**/*.vue')
-
-const usePermissionStore = defineStore(
- 'permission',
- {
- state: () => ({
- routes: [],
- addRoutes: [],
- defaultRoutes: [],
- topbarRouters: [],
- sidebarRouters: []
- }),
- actions: {
- setRoutes(routes) {
- this.addRoutes = routes
- this.routes = constantRoutes.concat(routes)
- },
- setDefaultRoutes(routes) {
- this.defaultRoutes = constantRoutes.concat(routes)
- },
- setTopbarRoutes(routes) {
- this.topbarRouters = routes
- },
- setSidebarRouters(routes) {
- this.sidebarRouters = routes
- },
- generateRoutes(roles) {
- return new Promise(resolve => {
- // 向后端请求路由数据
- getRouters().then(res => {
- const sdata = JSON.parse(JSON.stringify(res.data))
- const rdata = JSON.parse(JSON.stringify(res.data))
- const defaultData = JSON.parse(JSON.stringify(res.data))
- const sidebarRoutes = filterAsyncRouter(sdata)
- const rewriteRoutes = filterAsyncRouter(rdata, false, true)
- const defaultRoutes = filterAsyncRouter(defaultData)
- const asyncRoutes = filterDynamicRoutes(dynamicRoutes)
- asyncRoutes.forEach(route => { router.addRoute(route) })
- this.setRoutes(rewriteRoutes)
- this.setSidebarRouters(constantRoutes.concat(sidebarRoutes))
- this.setDefaultRoutes(sidebarRoutes)
- this.setTopbarRoutes(defaultRoutes)
- resolve(rewriteRoutes)
- })
- })
- }
- }
- })
-
-// 遍历后台传来的路由字符串,转换为组件对象
-function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
- return asyncRouterMap.filter(route => {
- if (type && route.children) {
- route.children = filterChildren(route.children)
- }
- if (route.component) {
- // Layout ParentView 组件特殊处理
- if (route.component === 'Layout') {
- route.component = Layout
- } else if (route.component === 'ParentView') {
- route.component = ParentView
- } else if (route.component === 'InnerLink') {
- route.component = InnerLink
- } else {
- route.component = loadView(route.component)
- }
- }
- if (route.children != null && route.children && route.children.length) {
- route.children = filterAsyncRouter(route.children, route, type)
- } else {
- delete route['children']
- delete route['redirect']
- }
- return true
- })
-}
-
-function filterChildren(childrenMap, lastRouter = false) {
- var children = []
- childrenMap.forEach((el, index) => {
- if (el.children && el.children.length) {
- if (el.component === 'ParentView' && !lastRouter) {
- el.children.forEach(c => {
- c.path = el.path + '/' + c.path
- if (c.children && c.children.length) {
- children = children.concat(filterChildren(c.children, c))
- return
- }
- children.push(c)
- })
- return
- }
- }
- if (lastRouter) {
- el.path = lastRouter.path + '/' + el.path
- if (el.children && el.children.length) {
- children = children.concat(filterChildren(el.children, el))
- return
- }
- }
- children = children.concat(el)
- })
- return children
-}
-
-// 动态路由遍历,验证是否具备权限
-export function filterDynamicRoutes(routes) {
- const res = []
- routes.forEach(route => {
- if (route.permissions) {
- if (auth.hasPermiOr(route.permissions)) {
- res.push(route)
- }
- } else if (route.roles) {
- if (auth.hasRoleOr(route.roles)) {
- res.push(route)
- }
- }
- })
- return res
-}
-
-export const loadView = (view) => {
- let res;
- for (const path in modules) {
- const dir = path.split('views/')[1].split('.vue')[0];
- if (dir === view) {
- res = () => modules[path]();
- }
- }
- return res;
-}
-
-export default usePermissionStore
diff --git a/ruoyi-ui/src/store/modules/settings.js b/ruoyi-ui/src/store/modules/settings.js
deleted file mode 100644
index 194d678..0000000
--- a/ruoyi-ui/src/store/modules/settings.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import defaultSettings from '@/settings'
-import { useDark, useToggle } from '@vueuse/core'
-import { useDynamicTitle } from '@/utils/dynamicTitle'
-
-const isDark = useDark()
-const toggleDark = useToggle(isDark)
-
-const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings
-
-const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
-
-const useSettingsStore = defineStore(
- 'settings',
- {
- state: () => ({
- title: '',
- theme: storageSetting.theme || '#409EFF',
- sideTheme: storageSetting.sideTheme || sideTheme,
- showSettings: showSettings,
- topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
- tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView,
- fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader,
- sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo,
- dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle,
- isDark: isDark.value
- }),
- actions: {
- // 修改布局设置
- changeSetting(data) {
- const { key, value } = data
- if (this.hasOwnProperty(key)) {
- this[key] = value
- }
- },
- // 设置网页标题
- setTitle(title) {
- this.title = title
- useDynamicTitle()
- },
- // 切换暗黑模式
- toggleTheme() {
- this.isDark = !this.isDark
- toggleDark()
- }
- }
- })
-
-export default useSettingsStore
diff --git a/ruoyi-ui/src/store/modules/tagsView.js b/ruoyi-ui/src/store/modules/tagsView.js
deleted file mode 100644
index 9d07f33..0000000
--- a/ruoyi-ui/src/store/modules/tagsView.js
+++ /dev/null
@@ -1,182 +0,0 @@
-const useTagsViewStore = defineStore(
- 'tags-view',
- {
- state: () => ({
- visitedViews: [],
- cachedViews: [],
- iframeViews: []
- }),
- actions: {
- addView(view) {
- this.addVisitedView(view)
- this.addCachedView(view)
- },
- addIframeView(view) {
- if (this.iframeViews.some(v => v.path === view.path)) return
- this.iframeViews.push(
- Object.assign({}, view, {
- title: view.meta.title || 'no-name'
- })
- )
- },
- addVisitedView(view) {
- if (this.visitedViews.some(v => v.path === view.path)) return
- this.visitedViews.push(
- Object.assign({}, view, {
- title: view.meta.title || 'no-name'
- })
- )
- },
- addCachedView(view) {
- if (this.cachedViews.includes(view.name)) return
- if (!view.meta.noCache) {
- this.cachedViews.push(view.name)
- }
- },
- delView(view) {
- return new Promise(resolve => {
- this.delVisitedView(view)
- this.delCachedView(view)
- resolve({
- visitedViews: [...this.visitedViews],
- cachedViews: [...this.cachedViews]
- })
- })
- },
- delVisitedView(view) {
- return new Promise(resolve => {
- for (const [i, v] of this.visitedViews.entries()) {
- if (v.path === view.path) {
- this.visitedViews.splice(i, 1)
- break
- }
- }
- this.iframeViews = this.iframeViews.filter(item => item.path !== view.path)
- resolve([...this.visitedViews])
- })
- },
- delIframeView(view) {
- return new Promise(resolve => {
- this.iframeViews = this.iframeViews.filter(item => item.path !== view.path)
- resolve([...this.iframeViews])
- })
- },
- delCachedView(view) {
- return new Promise(resolve => {
- const index = this.cachedViews.indexOf(view.name)
- index > -1 && this.cachedViews.splice(index, 1)
- resolve([...this.cachedViews])
- })
- },
- delOthersViews(view) {
- return new Promise(resolve => {
- this.delOthersVisitedViews(view)
- this.delOthersCachedViews(view)
- resolve({
- visitedViews: [...this.visitedViews],
- cachedViews: [...this.cachedViews]
- })
- })
- },
- delOthersVisitedViews(view) {
- return new Promise(resolve => {
- this.visitedViews = this.visitedViews.filter(v => {
- return v.meta.affix || v.path === view.path
- })
- this.iframeViews = this.iframeViews.filter(item => item.path === view.path)
- resolve([...this.visitedViews])
- })
- },
- delOthersCachedViews(view) {
- return new Promise(resolve => {
- const index = this.cachedViews.indexOf(view.name)
- if (index > -1) {
- this.cachedViews = this.cachedViews.slice(index, index + 1)
- } else {
- this.cachedViews = []
- }
- resolve([...this.cachedViews])
- })
- },
- delAllViews(view) {
- return new Promise(resolve => {
- this.delAllVisitedViews(view)
- this.delAllCachedViews(view)
- resolve({
- visitedViews: [...this.visitedViews],
- cachedViews: [...this.cachedViews]
- })
- })
- },
- delAllVisitedViews(view) {
- return new Promise(resolve => {
- const affixTags = this.visitedViews.filter(tag => tag.meta.affix)
- this.visitedViews = affixTags
- this.iframeViews = []
- resolve([...this.visitedViews])
- })
- },
- delAllCachedViews(view) {
- return new Promise(resolve => {
- this.cachedViews = []
- resolve([...this.cachedViews])
- })
- },
- updateVisitedView(view) {
- for (let v of this.visitedViews) {
- if (v.path === view.path) {
- v = Object.assign(v, view)
- break
- }
- }
- },
- delRightTags(view) {
- return new Promise(resolve => {
- const index = this.visitedViews.findIndex(v => v.path === view.path)
- if (index === -1) {
- return
- }
- this.visitedViews = this.visitedViews.filter((item, idx) => {
- if (idx <= index || (item.meta && item.meta.affix)) {
- return true
- }
- const i = this.cachedViews.indexOf(item.name)
- if (i > -1) {
- this.cachedViews.splice(i, 1)
- }
- if(item.meta.link) {
- const fi = this.iframeViews.findIndex(v => v.path === item.path)
- this.iframeViews.splice(fi, 1)
- }
- return false
- })
- resolve([...this.visitedViews])
- })
- },
- delLeftTags(view) {
- return new Promise(resolve => {
- const index = this.visitedViews.findIndex(v => v.path === view.path)
- if (index === -1) {
- return
- }
- this.visitedViews = this.visitedViews.filter((item, idx) => {
- if (idx >= index || (item.meta && item.meta.affix)) {
- return true
- }
- const i = this.cachedViews.indexOf(item.name)
- if (i > -1) {
- this.cachedViews.splice(i, 1)
- }
- if(item.meta.link) {
- const fi = this.iframeViews.findIndex(v => v.path === item.path)
- this.iframeViews.splice(fi, 1)
- }
- return false
- })
- resolve([...this.visitedViews])
- })
- }
- }
- })
-
-export default useTagsViewStore
diff --git a/ruoyi-ui/src/store/modules/user.js b/ruoyi-ui/src/store/modules/user.js
deleted file mode 100644
index 1e59417..0000000
--- a/ruoyi-ui/src/store/modules/user.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
-import { isHttp, isEmpty } from "@/utils/validate"
-import defAva from '@/assets/images/profile.jpg'
-
-const useUserStore = defineStore(
- 'user',
- {
- state: () => ({
- token: getToken(),
- id: '',
- name: '',
- avatar: '',
- roles: [],
- permissions: []
- }),
- actions: {
- // 登录
- login(userInfo) {
- const username = userInfo.username.trim()
- const password = userInfo.password
- const code = userInfo.code
- const uuid = userInfo.uuid
- return new Promise((resolve, reject) => {
- login(username, password, code, uuid).then(res => {
- setToken(res.token)
- this.token = res.token
- resolve()
- }).catch(error => {
- reject(error)
- })
- })
- },
- // 获取用户信息
- getInfo() {
- return new Promise((resolve, reject) => {
- getInfo().then(res => {
- const user = res.user
- let avatar = user.avatar || ""
- if (!isHttp(avatar)) {
- avatar = (isEmpty(avatar)) ? defAva : import.meta.env.VITE_APP_BASE_API + avatar
- }
- if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
- this.roles = res.roles
- this.permissions = res.permissions
- } else {
- this.roles = ['ROLE_DEFAULT']
- }
- this.id = user.userId
- this.name = user.userName
- this.avatar = avatar
- resolve(res)
- }).catch(error => {
- reject(error)
- })
- })
- },
- // 退出系统
- logOut() {
- return new Promise((resolve, reject) => {
- logout(this.token).then(() => {
- this.token = ''
- this.roles = []
- this.permissions = []
- removeToken()
- resolve()
- }).catch(error => {
- reject(error)
- })
- })
- }
- }
- })
-
-export default useUserStore
diff --git a/ruoyi-ui/src/style/variable.scss b/ruoyi-ui/src/style/variable.scss
deleted file mode 100644
index 5d8b52f..0000000
--- a/ruoyi-ui/src/style/variable.scss
+++ /dev/null
@@ -1,71 +0,0 @@
-$br: 1px solid #e4e7ed;
-$brdeg: 8px;
-@mixin br6 {
- border: $br;
- border-radius: $brdeg;
-}
-
-.p10 {
- padding: 10px;
- height: 100%;
-}
-
-.mb10 {
- margin-bottom: 10px;
- user-select: none;
-}
-
-.mb5 {
- margin-bottom: 5px;
-}
-
-.flex {
- display: flex;
-}
-
-.flex1 {
- flex: 1
-}
-
-.align-center {
- align-items: center;
-}
-
-.flex-col {
- flex-direction: column;
-}
-
-.between {
- justify-content: space-between;
-}
-
-.justify-content-center {
- justify-content: center;
-}
-
-.bg {
- background-color: #409eff;
-}
-
-.scrollable {
- //scrollbar-gutter: stable;
- scrollbar-color: rgba(0, 0, 0, .8) transparent;
- transition: scrollbar-color .1s ease-out
-}
-
-.scrollable:hover {
- scrollbar-color: rgba(0, 0, 0, .15) transparent
-}
-
-.scrollable::-webkit-scrollbar {
- background-color: transparent
-}
-
-.scrollable::-webkit-scrollbar-thumb {
- background-color: rgba(0, 0, 0, .8)
-}
-
-.scrollable::-webkit-scrollbar-track {
- background-color: transparent
-}
-
diff --git a/ruoyi-ui/src/utils/auth.js b/ruoyi-ui/src/utils/auth.js
deleted file mode 100644
index 08a43d6..0000000
--- a/ruoyi-ui/src/utils/auth.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import Cookies from 'js-cookie'
-
-const TokenKey = 'Admin-Token'
-
-export function getToken() {
- return Cookies.get(TokenKey)
-}
-
-export function setToken(token) {
- return Cookies.set(TokenKey, token)
-}
-
-export function removeToken() {
- return Cookies.remove(TokenKey)
-}
diff --git a/ruoyi-ui/src/utils/convertNodeRedToLogicFlow.js b/ruoyi-ui/src/utils/convertNodeRedToLogicFlow.js
deleted file mode 100644
index b79ffbd..0000000
--- a/ruoyi-ui/src/utils/convertNodeRedToLogicFlow.js
+++ /dev/null
@@ -1,105 +0,0 @@
-
-import { getFlowById } from '@/api/device/register'
-
-const filterNodeRedData = async (id) => {
- let nodeRedData = []
- const data = await getFlowById(id)
- if (data.nodes) {
- nodeRedData = data.nodes
- } else {
- console.error('请求失败')
- }
- return nodeRedData
-}
-
-const mapNodeType = (nodeRedType) => {
- const typeMap = {
- 'group': 'customGroup', // Node-RED的inject节点转为圆形
- // 'inject': 'circle', // Node-RED的inject节点转为圆形
- // 'debug': 'diamond', // debug节点转为菱形
- // 'function': 'rect' // 函数节点转为矩形
- };
- return typeMap[nodeRedType] || 'CustomNode'; // 默认矩形
-}
-
-export const convertNodeRedToLogicFlow = async (id) => {
- const nodeRedData = await filterNodeRedData(id)
- // 节点数据
- const nodes = nodeRedData.map((node) => {
- return {
- id: node.id, // 或生成新ID:`node-${index}`
- type: mapNodeType(node.type), // 映射节点类型
- x: node.x * 2,
- y: node.y * 2,
- text: node.name || node.type, // 使用节点名称或类型作为文本
- children: node.type === 'group' ? node.nodes : null,
- properties: {
- ...node,
- state: 'unexecuted',
- }
- };
- });
-
- const edges = []
- // 连线数据
- nodeRedData.forEach((item) => {
- if (item.wires && item.wires.length > 0) {
- item.wires.forEach((w, index) => {
- w.forEach((id) => {
- const obj = {
- id: `edge-${item.id}-${id}`, // 或使用唯一标识生成方式
- type: 'bezier',
- sourceNodeId: item.id,
- targetNodeId: id,
- sourceAnchorId: item.id + '_1',
- targetAnchorId: id + '_3'
- }
- edges.push(obj)
- })
- })
- }
- })
- return { nodes, edges }
-}
-
-export const recursiveFilter = (data, id, result = [], type = 'customGroup') => {
- data.forEach((item) => {
- if (item.type === type && item.properties.nodes && item.properties.nodes.includes(id)) {
- result.push(item)
- recursiveFilter(data, item.id, result)
- }
- });
- return result
-}
-
-export const changeOtherNodeState = (nodes, lf) => {
- const filterArr = ['inject', 'cmvrLoop', 'startCamera', 'getImage', 'stopCamera', 'startVideo', 'stopVideo', 'end']
- const loopNodes = nodes.filter(item => {
- return !filterArr.includes(item.properties.type)
- })
- loopNodes.forEach(l => {
- nodes.forEach(n => {
- if (l.properties.wires[0].includes(n.id)) {
- const { state } = lf.getProperties(n.id)
- if (state !== 'unexecuted') {
- lf.setProperties(l.id, {
- state: 'success'
- })
- }
- }
-
- if (l.properties?.wires[1]?.includes(n.id)) {
- const { state } = lf.getProperties(n.id)
- if (state !== 'failed') {
- lf.setProperties(l.id, {
- state: 'running'
- })
- } else {
- lf.setProperties(l.id, {
- state: 'failed'
- })
- }
- }
- })
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/dict.js b/ruoyi-ui/src/utils/dict.js
deleted file mode 100644
index 9648f14..0000000
--- a/ruoyi-ui/src/utils/dict.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import useDictStore from '@/store/modules/dict'
-import { getDicts } from '@/api/system/dict/data'
-
-/**
- * 获取字典数据
- */
-export function useDict(...args) {
- const res = ref({});
- return (() => {
- args.forEach((dictType, index) => {
- res.value[dictType] = [];
- const dicts = useDictStore().getDict(dictType);
- if (dicts) {
- res.value[dictType] = dicts;
- } else {
- getDicts(dictType).then(resp => {
- res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
- useDictStore().setDict(dictType, res.value[dictType]);
- })
- }
- })
- return toRefs(res.value);
- })()
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/dynamicTitle.js b/ruoyi-ui/src/utils/dynamicTitle.js
deleted file mode 100644
index 64404b2..0000000
--- a/ruoyi-ui/src/utils/dynamicTitle.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import store from '@/store'
-import defaultSettings from '@/settings'
-import useSettingsStore from '@/store/modules/settings'
-
-/**
- * 动态修改标题
- */
-export function useDynamicTitle() {
- const settingsStore = useSettingsStore();
- if (settingsStore.dynamicTitle) {
- document.title = settingsStore.title + ' - ' + defaultSettings.title;
- } else {
- document.title = defaultSettings.title;
- }
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/errorCode.js b/ruoyi-ui/src/utils/errorCode.js
deleted file mode 100644
index d2111ee..0000000
--- a/ruoyi-ui/src/utils/errorCode.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- '401': '认证失败,无法访问系统资源',
- '403': '当前操作没有权限',
- '404': '访问资源不存在',
- 'default': '系统未知错误,请反馈给管理员'
-}
diff --git a/ruoyi-ui/src/utils/eventBus.js b/ruoyi-ui/src/utils/eventBus.js
deleted file mode 100644
index 48c05ea..0000000
--- a/ruoyi-ui/src/utils/eventBus.js
+++ /dev/null
@@ -1,3 +0,0 @@
-
-import mitt from 'mitt';
-export const emitter = mitt();
diff --git a/ruoyi-ui/src/utils/flow.js b/ruoyi-ui/src/utils/flow.js
deleted file mode 100644
index 103e613..0000000
--- a/ruoyi-ui/src/utils/flow.js
+++ /dev/null
@@ -1,438 +0,0 @@
-export const getInput = (nodeId, isStrict = true) => {
- const data = lf.getGraphData();
- // let flag = false
- // if (isStrict) {
- // data.edges.forEach(item => {
- // if (item.targetNodeId === nodeId) {
- // flag = true
- // }
- // });
- // } else {
- // flag = true
- // }
-
- // if (flag) {
- const arr = []
- const filterNodes = ['sleep', 'stopLoop', 'subEnd', 'subStart', 'branch', 'end']
- data.nodes.forEach(item => {
- if (item.id === nodeId) {
- return
- }
-
- if (filterNodes.includes(item.type)) {
- return
- }
-
- const obj = {
- value: item.id,
- label: item.properties.name,
- children: [{
- value: 'input',
- label: '输入',
- type: 'input',
- children: []
- }, {
- value: 'output',
- label: '输出',
- type: 'output',
- children: []
- }]
- }
-
- if (item.properties.inputParams) {
- transformTree(item.properties.inputParams, obj.children[0].children, 'input')
- }
- if (item.properties.nodeParams) {
- transformTree(item.properties.nodeParams, obj.children[0].children, 'input')
- }
- if (item.properties.outputParams) {
- transformTree(item.properties.outputParams, obj.children[1].children, 'output')
- }
- arr.push(obj)
- })
- return arr
- // }
- // return flag
-}
-
-const transformTree = (arr, parent = [], type) => {
- arr.forEach(item => {
- const currentNode = {
- value: item.name,
- label: item.name,
- type,
- children: []
- };
- parent.push(currentNode);
-
- if (item.children?.length > 0) {
- transformTree(item.children, currentNode.children, type);
- } else {
- delete currentNode.children
- }
- });
- return parent;
-};
-
-export const getStartNodeFormData = () => {
- const flowData = lf.getGraphData();
- const startNode = flowData.nodes.find(item => item.type === 'start')
- const data = addValueProperty(startNode.properties?.inputParams || [])
- return data
-}
-
-export const addValueProperty = (data, schemeId = '') => {
- // 处理单个对象或对象数组
- const processItem = (item, index, path) => {
- // 根据类型设置默认值
- item.value = item.name === 'schemeId' ? schemeId : item.type.includes('array') ? '[0]' : item.type === 'number' ? 0 : item.type === 'boolean' ? false : '';
- item.propPath = `${path}.${index}.`
- // if (item.type.includes('array') && !item.type.includes('object')) {
- // const type = item.type.match(/<([^>]+)>/)[1]
- // item.children = [{ name: 'Array Item', type, value: '', propPath: item.propPath + '.0'}]
- // }
- // 递归处理子项
- if (item.children && item.children.length > 0) {
- item.children = item.children.map((cItem, cIndex) => {
- return processItem(cItem, cIndex , item.propPath + 'children')
- });
- }
-
- return item;
- };
-
- // 如果传入的是数组,处理每个元素;否则处理单个对象
- return Array.isArray(data) ? data.map((item, index) => processItem(item, index, '')) : processItem(data, 0, '')
-}
-
-export const recursiveFilter = (data, id, type = ['loop', 'customGroup'], result = []) => {
- data.forEach((item) => {
- if (type.includes(item.type) && item.children && item.children.includes(id)) {
- result.push(item)
- recursiveFilter(data, item.id, type, result)
- }
- });
- return result
-}
-
-export const formatTableData = (arr, data = {}) => {
- arr.forEach(item => {
- data[item.name] = item.value
- if (item?.children && item.children.length > 0) {
- data[item.name] = {}
- formatTableData(item.children, data[item.name])
- }
- })
- return data
-}
-
-export const addNewEdge = (nodeId) => {
- const { edges } = lf.getGraphData();
- const ttt = edges.slice(); // 浅拷贝(比 JSON 深拷贝高效 10x+)
-
- const edgesToDelete = ttt.filter(_edge =>
- _edge.sourceNodeId === nodeId || _edge.targetNodeId === nodeId
- );
-
- edgesToDelete.forEach(edge => lf.deleteEdge(edge.id));
-
- if (window.addNewEdgeTimer) {
- clearTimeout(window.addNewEdgeTimer); // 清理上一次未执行的定时器
- }
-
- window.addNewEdgeTimer = setTimeout(() => {
- edgesToDelete.forEach(item => {
- lf.addEdge({
- type: "bezier",
- sourceNodeId: item.sourceNodeId,
- targetNodeId: item.targetNodeId,
- sourceAnchorId: item.sourceAnchorId,
- targetAnchorId: item.targetAnchorId
- });
- })
- delete window.addNewEdgeTimer;
- }, 50)
-}
-
-export const newEdge = (nodeId) => {
- const { edges } = lf.getGraphData();
- const arr = JSON.parse(JSON.stringify(edges))
- arr.forEach(_edge => {
- const { sourceNodeId, targetNodeId, sourceAnchorId, targetAnchorId } = _edge
- if (sourceNodeId === nodeId || targetNodeId === nodeId) {
- lf.deleteEdge(_edge.id);
- lf.addEdge({
- type: "bezier",
- sourceNodeId: sourceNodeId,
- targetNodeId: targetNodeId,
- sourceAnchorId: sourceAnchorId,
- targetAnchorId: targetAnchorId
- });
- }
- })
-}
-
-export const initNodeZoom = (modelId, nodeZoom, className, init=false) => {
- const nodes = document.getElementsByClassName(modelId)
- if (nodes.length > 0) {
- const node = nodes[0]
- const parent = node.closest(className);
- if (nodeZoom) {
- parent.style.width = '680px'
- } else {
- parent.style.width = '380px'
- }
- if (!init) {
- addNewEdge(modelId)
- }
- }
-}
-
-export const getInputNumber = (nodeId) => {
- const data = lf.getGraphData();
- let flag = false
- data.edges.forEach(item => {
- if (item.targetNodeId === nodeId) {
- flag = true
- }
- });
- if (flag) {
- const arr = []
- data.nodes.forEach(item => {
- if (item.properties.inputParams) {
- item.properties.inputParams.forEach(item => {
- if (item.type === 'number') {
- arr.push(item)
- }
- })
- }
- })
- return arr
- }
- return flag
-}
-
-export const removeSwitchEdge = (nodeId, sourceAnchorId) => {
- const { edges } = lf.getGraphData();
- const edge = edges.find(item => {
- return item.sourceNodeId === nodeId && item.sourceAnchorId === sourceAnchorId
- })
-
- if (edge) {
- lf.deleteEdge(edge.id);
- }
-}
-
-export const convertToTree = (data) => {
- // 创建 id 到节点的映射
- const nodeMap = new Map();
- data.forEach(node => {
- nodeMap.set(node.id, { ...node, name: node.properties.name || '' }); // 浅拷贝节点
- });
-
- // 标记非根节点(被其他节点引用的节点)
- const nonRootIds = new Set();
- data.forEach(node => {
- if (node.children) {
- node.children.forEach(childId => {
- nonRootIds.add(childId);
- });
- }
- });
-
- // 构建树形结构
- const result = [];
- data.forEach(node => {
- // 只处理根节点(未被引用的节点)
- if (!nonRootIds.has(node.id)) {
- const rootNode = nodeMap.get(node.id);
- // 递归处理子节点
- const processNode = (currentNode) => {
- if (currentNode.children) {
- currentNode.children = currentNode.children.map(childId => {
- const childNode = nodeMap.get(childId);
- processNode(childNode); // 递归处理子节点
- return childNode;
- });
- }
- return currentNode;
- };
-
- result.push(processNode(rootNode));
- }
- });
-
- return result;
-}
-
-
-export const filterEmptyName = (obj) => {
- // 1. 如果是数组,遍历每一项递归处理
- if (Array.isArray(obj)) {
- return obj
- .map(item => filterEmptyName(item)) // 先递归处理子项
- .filter(item => item !== null); // 过滤掉被剔除的空项
- }
-
- // 2. 如果是对象,先检查 name 是否为空,为空直接返回 null(剔除)
- if (typeof obj === 'object' && obj !== null) {
- // 核心:name 为空字符串 → 直接剔除这个对象
- if (obj.name === '') {
- return null;
- }
-
- // 创建新对象,保留原有属性
- const newObj = { ...obj };
-
- // 如果有 children,递归过滤子节点
- if (newObj.children && Array.isArray(newObj.children)) {
- newObj.children = filterEmptyName(newObj.children);
- }
-
- return newObj;
- }
-
- // 基础类型直接返回
- return obj;
-}
-
-/**
- * 将原始表单配置数组 转换为 目标对象格式
- * @param {Array} source - 原始数据数组
- * @returns {Object} 转换后的目标格式对象
- */
-export const transformHttpNodeData = (source) => {
- // 初始化结果对象
- const result = {};
-
- // 遍历每一个顶级节点
- source.forEach(item => {
- const { name, children } = item;
- if (!name) return; // 过滤无name的无效节点
-
- // 处理普通节点(config/headers/params):直接取 children 数组
- if (name !== 'body') {
- result[name] = children || [];
- return;
- }
-
- // 专门处理 body 节点(特殊结构)
- if (name === 'body') {
- const bodyObj = {
- type: '',
- json: '',
- formData: []
- };
-
- // 遍历body的子项,赋值到对应字段
- children?.forEach(child => {
- const childName = child.name;
- if (childName === 'bodyType') {
- bodyObj.type = child.input;
- }
- if (childName === 'json') {
- bodyObj.json = child.input;
- }
- if (childName === 'formData') {
- bodyObj.formData = child.children || [];
- }
- });
-
- result.body = bodyObj;
- }
- });
-
- return result;
-}
-
-export const transformSdAgentNodeData = (source) => {
- // 初始化结果对象
- const result = {};
-
- // 遍历每一个顶级节点
- source.forEach(item => {
- const { name, children } = item;
- if (!name) return; // 过滤无name的无效节点
-
- // 处理普通节点(config/headers/params):直接取 children 数组
- if (name !== 'invokeTts') {
- result[name] = children || [];
- return;
- }
-
- // 专门处理 tts 节点(特殊结构)
- if (name === 'invokeTts') {
- result.invokeTts = item.input;
- }
- });
-
- return result;
-}
-
-export const transformRecognizeNodeData = (source) => {
- // 初始化结果对象
- const result = {
- nodeParams: [],
- alarmRules: []
- };
-
- // 遍历每一个顶级节点
- source.forEach(item => {
- const { name, children } = item;
- if (!name) return; // 过滤无name的无效节点
-
- // 处理普通节点(config/headers/params):直接取 children 数组
- if (name !== 'alarmRules') {
- result['nodeParams'].push(item);
- return;
- }
-
- if (name === 'alarmRules') {
- if (Array.isArray(item.input)) {
- result[name] = item.input;
- return;
- }
-
- // 兼容旧数据:旧结构把 level/operator/threshold/message
- // 作为 alarmRules.children 中的字段描述保存。
- const legacyRule = Object.fromEntries(
- (children || [])
- .filter(child => ['level', 'operator', 'threshold', 'message'].includes(child.name))
- .map(child => [child.name, child.input])
- );
- result[name] = Object.keys(legacyRule).length ? [legacyRule] : [];
- return;
- }
-
- // 专门处理 tts 节点(特殊结构)
- // if (name === 'alarmRules') {
- // const bodyObj = {
- // level: '',
- // operator: '',
- // threshold: '',
- // message: ''
- // };
-
- // // 遍历body的子项,赋值到对应字段
- // children?.forEach(child => {
- // const childName = child.name;
- // if (childName === 'level') {
- // bodyObj.level = child.input;
- // }
- // if (childName === 'operator') {
- // bodyObj.operator = child.input;
- // }
- // if (childName === 'threshold') {
- // bodyObj.threshold = child.input;
- // }
- // if (childName === 'message') {
- // bodyObj.message = child.input;
- // }
- // });
-
- // result.alarmRules = bodyObj;
- // }
- });
-
- return result;
-}
diff --git a/ruoyi-ui/src/utils/fn.js b/ruoyi-ui/src/utils/fn.js
deleted file mode 100644
index f2963bc..0000000
--- a/ruoyi-ui/src/utils/fn.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * 防抖函数(在指定时间内,如果事件被频繁触发,则只有在最后一次触发后指定的时间间隔内没有再次触发时,才执行函数)
- */
-export function debounce(func, delay) {
- let timer; // 用于存储定时器的标识符
- return function (...args) {
- // 每次触发事件时,清除之前的定时器
- clearTimeout(timer);
- // 设置新的定时器
- timer = setTimeout(() => {
- func.apply(this, args); // 执行目标函数
- }, delay);
- };
-}
-
-/**
- * 节流函数(在指定时间内,无论事件触发多少次,只执行一次函数)
- */
-export function throttle(func, limit) {
- let inThrottle;
- return function (...args) {
- if (!inThrottle) {
- func.apply(this, args);
- inThrottle = true;
- setTimeout(() => {
- inThrottle = false;
- }, limit);
- }
- };
-}
-
-/*
-* 找出两个对象之间的不同点
-* */
-export function findDifferences(oldData, newData) {
- // 创建一个结果对象来存储不同的键值对
- const differences = {};
-
- // 获取两个对象的所有键
- const keys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);
-
- // 遍历所有键
- keys.forEach((key) => {
- // 检查两个对象中该键的值是否不同
- if (oldData[key] !== newData[key]) {
- differences[key] = newData[key];
- }
- });
- return differences;
-}
-
-/*
-* 将对象中的数值转换为字符串
-* */
-export function convertNumbersToStringAndRemoveNulls(obj) {
- const result = {};
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- const value = obj[key];
- // 如果值为 null,跳过该属性
- if (value === null) {
- continue;
- }
- // 检查值是否为数字
- if (typeof value === 'number') {
- result[key] = value.toString();
- } else {
- result[key] = value;
- }
- }
- }
- return result;
-}
-
-/*
-* 参数编码拼接
-* */
-export function appendParamsToPath(path, params) {
- // 创建一个 URLSearchParams 对象
- const searchParams = new URLSearchParams();
-
- // 遍历参数对象,将每个键值对添加到 URLSearchParams 中
- for (const key in params) {
- if (params.hasOwnProperty(key)) {
- const value = params[key];
- // 对值进行编码
- searchParams.append(key, encodeURIComponent(value));
- }
- }
-
- // 将查询字符串拼接到路径后面
- const queryString = searchParams.toString();
- return `${path}?${queryString}`;
-}
diff --git a/ruoyi-ui/src/utils/generator/config.js b/ruoyi-ui/src/utils/generator/config.js
deleted file mode 100644
index 449715f..0000000
--- a/ruoyi-ui/src/utils/generator/config.js
+++ /dev/null
@@ -1,452 +0,0 @@
-export const formConf = {
- formRef: 'formRef',
- formModel: 'formData',
- size: 'default',
- labelPosition: 'right',
- labelWidth: 100,
- formRules: 'rules',
- gutter: 15,
- disabled: false,
- span: 24,
- formBtns: true,
-}
-
-export const inputComponents = [
- {
- label: '单行文本',
- tag: 'el-input',
- tagIcon: 'input',
- type: 'text',
- placeholder: '请输入',
- defaultValue: undefined,
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- clearable: true,
- prepend: '',
- append: '',
- 'prefix-icon': '',
- 'suffix-icon': '',
- maxlength: null,
- 'show-word-limit': false,
- readonly: false,
- disabled: false,
- required: true,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/input',
- },
- {
- label: '多行文本',
- tag: 'el-input',
- tagIcon: 'textarea',
- type: 'textarea',
- placeholder: '请输入',
- defaultValue: undefined,
- span: 24,
- labelWidth: null,
- autosize: {
- minRows: 4,
- maxRows: 4,
- },
- style: { width: '100%' },
- maxlength: null,
- 'show-word-limit': false,
- readonly: false,
- disabled: false,
- required: true,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/input',
- },
- {
- label: '密码',
- tag: 'el-input',
- tagIcon: 'password',
- type: 'password',
- placeholder: '请输入',
- defaultValue: undefined,
- span: 24,
- 'show-password': true,
- labelWidth: null,
- style: { width: '100%' },
- clearable: true,
- prepend: '',
- append: '',
- 'prefix-icon': '',
- 'suffix-icon': '',
- maxlength: null,
- 'show-word-limit': false,
- readonly: false,
- disabled: false,
- required: true,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/input',
- },
- {
- label: '计数器',
- tag: 'el-input-number',
- tagIcon: 'number',
- placeholder: '',
- defaultValue: undefined,
- span: 24,
- labelWidth: null,
- min: undefined,
- max: undefined,
- step: undefined,
- 'step-strictly': false,
- precision: undefined,
- 'controls-position': '',
- disabled: false,
- required: true,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/input-number',
- },
-]
-
-export const selectComponents = [
- {
- label: '下拉选择',
- tag: 'el-select',
- tagIcon: 'select',
- placeholder: '请选择',
- defaultValue: undefined,
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- clearable: true,
- disabled: false,
- required: true,
- filterable: false,
- multiple: false,
- options: [
- {
- label: '选项一',
- value: 1,
- },
- {
- label: '选项二',
- value: 2,
- },
- ],
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/select',
- },
- {
- label: '级联选择',
- tag: 'el-cascader',
- tagIcon: 'cascader',
- placeholder: '请选择',
- defaultValue: [],
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- props: {
- props: {
- multiple: false,
- },
- },
- 'show-all-levels': true,
- disabled: false,
- clearable: true,
- filterable: false,
- required: true,
- options: [
- {
- id: 1,
- value: 1,
- label: '选项1',
- children: [
- {
- id: 2,
- value: 2,
- label: '选项1-1',
- },
- ],
- },
- ],
- dataType: 'dynamic',
- labelKey: 'label',
- valueKey: 'value',
- childrenKey: 'children',
- separator: '/',
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/cascader',
- },
- {
- label: '单选框组',
- tag: 'el-radio-group',
- tagIcon: 'radio',
- defaultValue: 0,
- span: 24,
- labelWidth: null,
- style: {},
- optionType: 'default',
- border: false,
- size: 'default',
- disabled: false,
- required: true,
- options: [
- {
- label: '选项一',
- value: 1,
- },
- {
- label: '选项二',
- value: 2,
- },
- ],
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/radio',
- },
- {
- label: '多选框组',
- tag: 'el-checkbox-group',
- tagIcon: 'checkbox',
- defaultValue: [],
- span: 24,
- labelWidth: null,
- style: {},
- optionType: 'default',
- border: false,
- size: 'default',
- disabled: false,
- required: true,
- options: [
- {
- label: '选项一',
- value: 1,
- },
- {
- label: '选项二',
- value: 2,
- },
- ],
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/checkbox',
- },
- {
- label: '开关',
- tag: 'el-switch',
- tagIcon: 'switch',
- defaultValue: false,
- span: 24,
- labelWidth: null,
- style: {},
- disabled: false,
- required: true,
- 'active-text': '',
- 'inactive-text': '',
- 'active-color': null,
- 'inactive-color': null,
- 'active-value': true,
- 'inactive-value': false,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/switch',
- },
- {
- label: '滑块',
- tag: 'el-slider',
- tagIcon: 'slider',
- defaultValue: null,
- span: 24,
- labelWidth: null,
- disabled: false,
- required: true,
- min: 0,
- max: 100,
- step: 1,
- 'show-stops': false,
- range: false,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/slider',
- },
- {
- label: '时间选择',
- tag: 'el-time-picker',
- tagIcon: 'time',
- placeholder: '请选择',
- defaultValue: '',
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- disabled: false,
- clearable: true,
- required: true,
- format: 'HH:mm:ss',
- 'value-format': 'HH:mm:ss',
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/time-picker',
- },
- {
- label: '时间范围',
- tag: 'el-time-picker',
- tagIcon: 'time-range',
- defaultValue: null,
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- disabled: false,
- clearable: true,
- required: true,
- 'is-range': true,
- 'range-separator': '至',
- 'start-placeholder': '开始时间',
- 'end-placeholder': '结束时间',
- format: 'HH:mm:ss',
- 'value-format': 'HH:mm:ss',
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/time-picker',
- },
- {
- label: '日期选择',
- tag: 'el-date-picker',
- tagIcon: 'date',
- placeholder: '请选择',
- defaultValue: null,
- type: 'date',
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- disabled: false,
- clearable: true,
- required: true,
- format: 'YYYY-MM-DD',
- 'value-format': 'YYYY-MM-DD',
- readonly: false,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/date-picker',
- },
- {
- label: '日期范围',
- tag: 'el-date-picker',
- tagIcon: 'date-range',
- defaultValue: null,
- span: 24,
- labelWidth: null,
- style: { width: '100%' },
- type: 'daterange',
- 'range-separator': '至',
- 'start-placeholder': '开始日期',
- 'end-placeholder': '结束日期',
- disabled: false,
- clearable: true,
- required: true,
- format: 'YYYY-MM-DD',
- 'value-format': 'YYYY-MM-DD',
- readonly: false,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/date-picker',
- },
- {
- label: '评分',
- tag: 'el-rate',
- tagIcon: 'rate',
- defaultValue: 0,
- span: 24,
- labelWidth: null,
- style: {},
- max: 5,
- 'allow-half': false,
- 'show-text': false,
- 'show-score': false,
- disabled: false,
- required: true,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/rate',
- },
- {
- label: '颜色选择',
- tag: 'el-color-picker',
- tagIcon: 'color',
- defaultValue: null,
- labelWidth: null,
- 'show-alpha': false,
- 'color-format': '',
- disabled: false,
- required: true,
- size: 'default',
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/color-picker',
- },
- {
- label: '上传',
- tag: 'el-upload',
- tagIcon: 'upload',
- action: 'https://jsonplaceholder.typicode.com/posts/',
- defaultValue: null,
- labelWidth: null,
- disabled: false,
- required: true,
- accept: '',
- name: 'file',
- 'auto-upload': true,
- showTip: false,
- buttonText: '点击上传',
- fileSize: 2,
- sizeUnit: 'MB',
- 'list-type': 'text',
- multiple: false,
- regList: [],
- changeTag: true,
- document: 'https://element-plus.org/zh-CN/component/upload',
- tip: '只能上传不超过 2MB 的文件',
- style: { width: '100%' },
- },
-]
-
-export const layoutComponents = [
- {
- layout: 'rowFormItem',
- tagIcon: 'row',
- type: 'default',
- justify: 'start',
- align: 'top',
- label: '行容器',
- layoutTree: true,
- children: [],
- document: 'https://element-plus.org/zh-CN/component/layout',
- },
- {
- layout: 'colFormItem',
- label: '按钮',
- changeTag: true,
- labelWidth: null,
- tag: 'el-button',
- tagIcon: 'button',
- span: 24,
- default: '主要按钮',
- type: 'primary',
- icon: 'Search',
- size: 'default',
- disabled: false,
- document: 'https://element-plus.org/zh-CN/component/button',
- },
-]
-
-// 组件rule的触发方式,无触发方式的组件不生成rule
-export const trigger = {
- 'el-input': 'blur',
- 'el-input-number': 'blur',
- 'el-select': 'change',
- 'el-radio-group': 'change',
- 'el-checkbox-group': 'change',
- 'el-cascader': 'change',
- 'el-time-picker': 'change',
- 'el-date-picker': 'change',
- 'el-rate': 'change',
-}
diff --git a/ruoyi-ui/src/utils/generator/css.js b/ruoyi-ui/src/utils/generator/css.js
deleted file mode 100644
index c1c62e6..0000000
--- a/ruoyi-ui/src/utils/generator/css.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const styles = {
- 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',
- 'el-upload': '.el-upload__tip{line-height: 1.2;}'
-}
-
-function addCss(cssList, el) {
- const css = styles[el.tag]
- css && cssList.indexOf(css) === -1 && cssList.push(css)
- if (el.children) {
- el.children.forEach(el2 => addCss(cssList, el2))
- }
-}
-
-export function makeUpCss(conf) {
- const cssList = []
- conf.fields.forEach(el => addCss(cssList, el))
- return cssList.join('\n')
-}
diff --git a/ruoyi-ui/src/utils/generator/drawingDefalut.js b/ruoyi-ui/src/utils/generator/drawingDefalut.js
deleted file mode 100644
index 1105c28..0000000
--- a/ruoyi-ui/src/utils/generator/drawingDefalut.js
+++ /dev/null
@@ -1,29 +0,0 @@
-export default [
- {
- layout: 'colFormItem',
- tagIcon: 'input',
- label: '手机号',
- vModel: 'mobile',
- formId: 6,
- tag: 'el-input',
- placeholder: '请输入手机号',
- defaultValue: '',
- span: 24,
- style: { width: '100%' },
- clearable: true,
- prepend: '',
- append: '',
- 'prefix-icon': 'Cellphone',
- 'suffix-icon': '',
- maxlength: 11,
- 'show-word-limit': true,
- readonly: false,
- disabled: false,
- required: true,
- changeTag: true,
- regList: [{
- pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',
- message: '手机号格式错误'
- }]
- }
-]
diff --git a/ruoyi-ui/src/utils/generator/html.js b/ruoyi-ui/src/utils/generator/html.js
deleted file mode 100644
index bf2e40a..0000000
--- a/ruoyi-ui/src/utils/generator/html.js
+++ /dev/null
@@ -1,359 +0,0 @@
-/* eslint-disable max-len */
-import { trigger } from './config'
-
-let confGlobal
-let someSpanIsNot24
-
-export function dialogWrapper(str) {
- return `
- ${str}
-
- 取消
- 确定
-
- `
-}
-
-export function vueTemplate(str) {
- return `
-
- ${str}
-
- `
-}
-
-export function vueScript(str) {
- return ``
-}
-
-export function cssStyle(cssStr) {
- return ``
-}
-
-function buildFormTemplate(conf, child, type) {
- let labelPosition = ''
- if (conf.labelPosition !== 'right') {
- labelPosition = `label-position="${conf.labelPosition}"`
- }
- const disabled = conf.disabled ? `:disabled="${conf.disabled}"` : ''
- let str = `
- ${child}
- ${buildFromBtns(conf, type)}
- `
- if (someSpanIsNot24) {
- str = `
- ${str}
- `
- }
- return str
-}
-
-function buildFromBtns(conf, type) {
- let str = ''
- if (conf.formBtns && type === 'file') {
- str = `
- 提交
- 重置
- `
- if (someSpanIsNot24) {
- str = `
- ${str}
- `
- }
- }
- return str
-}
-
-// span不为24的用el-col包裹
-function colWrapper(element, str) {
- if (someSpanIsNot24 || element.span !== 24) {
- return `
- ${str}
- `
- }
- return str
-}
-
-const layouts = {
- colFormItem(element) {
- let labelWidth = ''
- if (element.labelWidth && element.labelWidth !== confGlobal.labelWidth) {
- labelWidth = `label-width="${element.labelWidth}px"`
- }
- const required = !trigger[element.tag] && element.required ? 'required' : ''
- const tagDom = tags[element.tag] ? tags[element.tag](element) : null
- let str = `
- ${tagDom}
- `
- str = colWrapper(element, str)
- return str
- },
- rowFormItem(element) {
- const type = element.type === 'default' ? '' : `type="${element.type}"`
- const justify = element.type === 'default' ? '' : `justify="${element.justify}"`
- const align = element.type === 'default' ? '' : `align="${element.align}"`
- const gutter = element.gutter ? `gutter="${element.gutter}"` : ''
- const children = element.children.map(el => layouts[el.layout](el))
- let str = `
- ${children.join('\n')}
- `
- str = colWrapper(element, str)
- return str
- }
-}
-
-const tags = {
- 'el-button': el => {
- const {
- tag, disabled
- } = attrBuilder(el)
- const type = el.type ? `type="${el.type}"` : ''
- const icon = el.icon ? `icon="${el.icon}"` : ''
- const size = el.size ? `size="${el.size}"` : ''
- let child = buildElButtonChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${type} ${icon} ${size} ${disabled}>${child}${el.tag}>`
- },
- 'el-input': el => {
- const {
- disabled, vModel, clearable, placeholder, width
- } = attrBuilder(el)
- const maxlength = el.maxlength ? `:maxlength="${el.maxlength}"` : ''
- const showWordLimit = el['show-word-limit'] ? 'show-word-limit' : ''
- const readonly = el.readonly ? 'readonly' : ''
- const prefixIcon = el['prefix-icon'] ? `prefix-icon='${el['prefix-icon']}'` : ''
- const suffixIcon = el['suffix-icon'] ? `suffix-icon='${el['suffix-icon']}'` : ''
- const showPassword = el['show-password'] ? 'show-password' : ''
- const type = el.type ? `type="${el.type}"` : ''
- const autosize = el.autosize && el.autosize.minRows
- ? `:autosize="{minRows: ${el.autosize.minRows}, maxRows: ${el.autosize.maxRows}}"`
- : ''
- let child = buildElInputChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${vModel} ${type} ${placeholder} ${maxlength} ${showWordLimit} ${readonly} ${disabled} ${clearable} ${prefixIcon} ${suffixIcon} ${showPassword} ${autosize} ${width}>${child}${el.tag}>`
- },
- 'el-input-number': el => {
- const { disabled, vModel, placeholder } = attrBuilder(el)
- const controlsPosition = el['controls-position'] ? `controls-position=${el['controls-position']}` : ''
- const min = el.min ? `:min='${el.min}'` : ''
- const max = el.max ? `:max='${el.max}'` : ''
- const step = el.step ? `:step='${el.step}'` : ''
- const stepStrictly = el['step-strictly'] ? 'step-strictly' : ''
- const precision = el.precision ? `:precision='${el.precision}'` : ''
-
- return `<${el.tag} ${vModel} ${placeholder} ${step} ${stepStrictly} ${precision} ${controlsPosition} ${min} ${max} ${disabled}>${el.tag}>`
- },
- 'el-select': el => {
- const {
- disabled, vModel, clearable, placeholder, width
- } = attrBuilder(el)
- const filterable = el.filterable ? 'filterable' : ''
- const multiple = el.multiple ? 'multiple' : ''
- let child = buildElSelectChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${vModel} ${placeholder} ${disabled} ${multiple} ${filterable} ${clearable} ${width}>${child}${el.tag}>`
- },
- 'el-radio-group': el => {
- const { disabled, vModel } = attrBuilder(el)
- const size = `size="${el.size}"`
- let child = buildElRadioGroupChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${vModel} ${size} ${disabled}>${child}${el.tag}>`
- },
- 'el-checkbox-group': el => {
- const { disabled, vModel } = attrBuilder(el)
- const size = `size="${el.size}"`
- const min = el.min ? `:min="${el.min}"` : ''
- const max = el.max ? `:max="${el.max}"` : ''
- let child = buildElCheckboxGroupChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${vModel} ${min} ${max} ${size} ${disabled}>${child}${el.tag}>`
- },
- 'el-switch': el => {
- const { disabled, vModel } = attrBuilder(el)
- const activeText = el['active-text'] ? `active-text="${el['active-text']}"` : ''
- const inactiveText = el['inactive-text'] ? `inactive-text="${el['inactive-text']}"` : ''
- const activeColor = el['active-color'] ? `active-color="${el['active-color']}"` : ''
- const inactiveColor = el['inactive-color'] ? `inactive-color="${el['inactive-color']}"` : ''
- const activeValue = el['active-value'] !== true ? `:active-value='${JSON.stringify(el['active-value'])}'` : ''
- const inactiveValue = el['inactive-value'] !== false ? `:inactive-value='${JSON.stringify(el['inactive-value'])}'` : ''
-
- return `<${el.tag} ${vModel} ${activeText} ${inactiveText} ${activeColor} ${inactiveColor} ${activeValue} ${inactiveValue} ${disabled}>${el.tag}>`
- },
- 'el-cascader': el => {
- const {
- disabled, vModel, clearable, placeholder, width
- } = attrBuilder(el)
- const options = el.options ? `:options="${el.vModel}Options"` : ''
- const props = el.props ? `:props="${el.vModel}Props"` : ''
- const showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels="false"'
- const filterable = el.filterable ? 'filterable' : ''
- const separator = el.separator === '/' ? '' : `separator="${el.separator}"`
-
- return `<${el.tag} ${vModel} ${options} ${props} ${width} ${showAllLevels} ${placeholder} ${separator} ${filterable} ${clearable} ${disabled}>${el.tag}>`
- },
- 'el-slider': el => {
- const { disabled, vModel } = attrBuilder(el)
- const min = el.min ? `:min='${el.min}'` : ''
- const max = el.max ? `:max='${el.max}'` : ''
- const step = el.step ? `:step='${el.step}'` : ''
- const range = el.range ? 'range' : ''
- const showStops = el['show-stops'] ? `:show-stops="${el['show-stops']}"` : ''
-
- return `<${el.tag} ${min} ${max} ${step} ${vModel} ${range} ${showStops} ${disabled}>${el.tag}>`
- },
- 'el-time-picker': el => {
- const {
- disabled, vModel, clearable, placeholder, width
- } = attrBuilder(el)
- const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
- const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
- const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
- const isRange = el['is-range'] ? 'is-range' : ''
- const format = el.format ? `format="${el.format}"` : ''
- const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
- const pickerOptions = el['picker-options'] ? `:picker-options='${JSON.stringify(el['picker-options'])}'` : ''
-
- return `<${el.tag} ${vModel} ${isRange} ${format} ${valueFormat} ${pickerOptions} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${disabled}>${el.tag}>`
- },
- 'el-date-picker': el => {
- const {
- disabled, vModel, clearable, placeholder, width
- } = attrBuilder(el)
- const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : ''
- const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : ''
- const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : ''
- const format = el.format ? `format="${el.format}"` : ''
- const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : ''
- const type = el.type === 'date' ? '' : `type="${el.type}"`
- const readonly = el.readonly ? 'readonly' : ''
-
- return `<${el.tag} ${type} ${vModel} ${format} ${valueFormat} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${readonly} ${disabled}>${el.tag}>`
- },
- 'el-rate': el => {
- const { disabled, vModel } = attrBuilder(el)
- const max = el.max ? `:max='${el.max}'` : ''
- const allowHalf = el['allow-half'] ? 'allow-half' : ''
- const showText = el['show-text'] ? 'show-text' : ''
- const showScore = el['show-score'] ? 'show-score' : ''
-
- return `<${el.tag} ${vModel} ${allowHalf} ${showText} ${showScore} ${disabled}>${el.tag}>`
- },
- 'el-color-picker': el => {
- const { disabled, vModel } = attrBuilder(el)
- const size = `size="${el.size}"`
- const showAlpha = el['show-alpha'] ? 'show-alpha' : ''
- const colorFormat = el['color-format'] ? `color-format="${el['color-format']}"` : ''
-
- return `<${el.tag} ${vModel} ${size} ${showAlpha} ${colorFormat} ${disabled}>${el.tag}>`
- },
- 'el-upload': el => {
- const disabled = el.disabled ? ':disabled=\'true\'' : ''
- const action = el.action ? `:action="${el.vModel}Action"` : ''
- const multiple = el.multiple ? 'multiple' : ''
- const listType = el['list-type'] !== 'text' ? `list-type="${el['list-type']}"` : ''
- const accept = el.accept ? `accept="${el.accept}"` : ''
- const name = el.name !== 'file' ? `name="${el.name}"` : ''
- const autoUpload = el['auto-upload'] === false ? ':auto-upload="false"' : ''
- const beforeUpload = `:before-upload="${el.vModel}BeforeUpload"`
- const fileList = `:file-list="${el.vModel}fileList"`
- const ref = `ref="${el.vModel}"`
- let child = buildElUploadChild(el)
-
- if (child) child = `\n${child}\n` // 换行
- return `<${el.tag} ${ref} ${fileList} ${action} ${autoUpload} ${multiple} ${beforeUpload} ${listType} ${accept} ${name} ${disabled}>${child}${el.tag}>`
- }
-}
-
-function attrBuilder(el) {
- return {
- vModel: `v-model="${confGlobal.formModel}.${el.vModel}"`,
- clearable: el.clearable ? 'clearable' : '',
- placeholder: el.placeholder ? `placeholder="${el.placeholder}"` : '',
- width: el.style && el.style.width ? ':style="{width: \'100%\'}"' : '',
- disabled: el.disabled ? ':disabled=\'true\'' : ''
- }
-}
-
-// el-buttin 子级
-function buildElButtonChild(conf) {
- const children = []
- if (conf.default) {
- children.push(conf.default)
- }
- return children.join('\n')
-}
-
-// el-input innerHTML
-function buildElInputChild(conf) {
- const children = []
- if (conf.prepend) {
- children.push(`${conf.prepend}`)
- }
- if (conf.append) {
- children.push(`${conf.append}`)
- }
- return children.join('\n')
-}
-
-function buildElSelectChild(conf) {
- const children = []
- if (conf.options && conf.options.length) {
- children.push(``)
- }
- return children.join('\n')
-}
-
-function buildElRadioGroupChild(conf) {
- const children = []
- if (conf.options && conf.options.length) {
- const tag = conf.optionType === 'button' ? 'el-radio-button' : 'el-radio'
- const border = conf.border ? 'border' : ''
- children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}${tag}>`)
- }
- return children.join('\n')
-}
-
-function buildElCheckboxGroupChild(conf) {
- const children = []
- if (conf.options && conf.options.length) {
- const tag = conf.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox'
- const border = conf.border ? 'border' : ''
- children.push(`<${tag} v-for="(item, index) in ${conf.vModel}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}${tag}>`)
- }
- return children.join('\n')
-}
-
-function buildElUploadChild(conf) {
- const list = []
- if (conf['list-type'] === 'picture-card') list.push('')
- else list.push(`${conf.buttonText}`)
- if (conf.showTip) list.push(`只能上传不超过 ${conf.fileSize}${conf.sizeUnit} 的${conf.accept}文件
`)
- return list.join('\n')
-}
-
-export function makeUpHtml(conf, type) {
- const htmlList = []
- confGlobal = conf
- someSpanIsNot24 = conf.fields.some(item => item.span !== 24)
- conf.fields.forEach(el => {
- htmlList.push(layouts[el.layout](el))
- })
- const htmlStr = htmlList.join('\n')
-
- let temp = buildFormTemplate(conf, htmlStr, type)
- if (type === 'dialog') {
- temp = dialogWrapper(temp)
- }
- confGlobal = null
- return temp
-}
diff --git a/ruoyi-ui/src/utils/generator/icon.json b/ruoyi-ui/src/utils/generator/icon.json
deleted file mode 100644
index 2d9999a..0000000
--- a/ruoyi-ui/src/utils/generator/icon.json
+++ /dev/null
@@ -1 +0,0 @@
-["platform-eleme","eleme","delete-solid","delete","s-tools","setting","user-solid","user","phone","phone-outline","more","more-outline","star-on","star-off","s-goods","goods","warning","warning-outline","question","info","remove","circle-plus","success","error","zoom-in","zoom-out","remove-outline","circle-plus-outline","circle-check","circle-close","s-help","help","minus","plus","check","close","picture","picture-outline","picture-outline-round","upload","upload2","download","camera-solid","camera","video-camera-solid","video-camera","message-solid","bell","s-cooperation","s-order","s-platform","s-fold","s-unfold","s-operation","s-promotion","s-home","s-release","s-ticket","s-management","s-open","s-shop","s-marketing","s-flag","s-comment","s-finance","s-claim","s-custom","s-opportunity","s-data","s-check","s-grid","menu","share","d-caret","caret-left","caret-right","caret-bottom","caret-top","bottom-left","bottom-right","back","right","bottom","top","top-left","top-right","arrow-left","arrow-right","arrow-down","arrow-up","d-arrow-left","d-arrow-right","video-pause","video-play","refresh","refresh-right","refresh-left","finished","sort","sort-up","sort-down","rank","loading","view","c-scale-to-original","date","edit","edit-outline","folder","folder-opened","folder-add","folder-remove","folder-delete","folder-checked","tickets","document-remove","document-delete","document-copy","document-checked","document","document-add","printer","paperclip","takeaway-box","search","monitor","attract","mobile","scissors","umbrella","headset","brush","mouse","coordinate","magic-stick","reading","data-line","data-board","pie-chart","data-analysis","collection-tag","film","suitcase","suitcase-1","receiving","collection","files","notebook-1","notebook-2","toilet-paper","office-building","school","table-lamp","house","no-smoking","smoking","shopping-cart-full","shopping-cart-1","shopping-cart-2","shopping-bag-1","shopping-bag-2","sold-out","sell","present","box","bank-card","money","coin","wallet","discount","price-tag","news","guide","male","female","thumb","cpu","link","connection","open","turn-off","set-up","chat-round","chat-line-round","chat-square","chat-dot-round","chat-dot-square","chat-line-square","message","postcard","position","turn-off-microphone","microphone","close-notification","bangzhu","time","odometer","crop","aim","switch-button","full-screen","copy-document","mic","stopwatch","medal-1","medal","trophy","trophy-1","first-aid-kit","discover","place","location","location-outline","location-information","add-location","delete-location","map-location","alarm-clock","timer","watch-1","watch","lock","unlock","key","service","mobile-phone","bicycle","truck","ship","basketball","football","soccer","baseball","wind-power","light-rain","lightning","heavy-rain","sunrise","sunrise-1","sunset","sunny","cloudy","partly-cloudy","cloudy-and-sunny","moon","moon-night","dish","dish-1","food","chicken","fork-spoon","knife-fork","burger","tableware","sugar","dessert","ice-cream","hot-water","water-cup","coffee-cup","cold-drink","goblet","goblet-full","goblet-square","goblet-square-full","refrigerator","grape","watermelon","cherry","apple","pear","orange","coffee","ice-tea","ice-drink","milk-tea","potato-strips","lollipop","ice-cream-square","ice-cream-round"]
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/generator/js.js b/ruoyi-ui/src/utils/generator/js.js
deleted file mode 100644
index dc38bfe..0000000
--- a/ruoyi-ui/src/utils/generator/js.js
+++ /dev/null
@@ -1,370 +0,0 @@
-import { titleCase } from '@/utils/index'
-import { trigger } from './config'
-// 文件大小设置
-const units = {
- KB: '1024',
- MB: '1024 / 1024',
- GB: '1024 / 1024 / 1024',
-}
-/**
- * @name: 生成js需要的数据
- * @description: 生成js需要的数据
- * @param {*} conf
- * @param {*} type 弹窗或表单
- * @return {*}
- */
-export function makeUpJs(conf, type) {
- conf = JSON.parse(JSON.stringify(conf))
- const dataList = []
- const ruleList = []
- const optionsList = []
- const propsList = []
- const methodList = []
- const uploadVarList = []
-
- conf.fields.forEach((el) => {
- buildAttributes(
- el,
- dataList,
- ruleList,
- optionsList,
- methodList,
- propsList,
- uploadVarList
- )
- })
-
- const script = buildexport(
- conf,
- type,
- dataList.join('\n'),
- ruleList.join('\n'),
- optionsList.join('\n'),
- uploadVarList.join('\n'),
- propsList.join('\n'),
- methodList.join('\n')
- )
-
- return script
-}
-/**
- * @name: 生成参数
- * @description: 生成参数,包括表单数据表单验证数据,多选选项数据,上传数据等
- * @return {*}
- */
-function buildAttributes(
- el,
- dataList,
- ruleList,
- optionsList,
- methodList,
- propsList,
- uploadVarList
-){
- buildData(el, dataList)
- buildRules(el, ruleList)
-
- if (el.options && el.options.length) {
- buildOptions(el, optionsList)
- if (el.dataType === 'dynamic') {
- const model = `${el.vModel}Options`
- const options = titleCase(model)
- buildOptionMethod(`get${options}`, model, methodList)
- }
- }
-
- if (el.props && el.props.props) {
- buildProps(el, propsList)
- }
-
- if (el.action && el.tag === 'el-upload') {
- uploadVarList.push(
- `
- // 上传请求路径
- const ${el.vModel}Action = ref('${el.action}')
- // 上传文件列表
- const ${el.vModel}fileList = ref([])`
- )
- methodList.push(buildBeforeUpload(el))
- if (!el['auto-upload']) {
- methodList.push(buildSubmitUpload(el))
- }
- }
-
- if (el.children) {
- el.children.forEach((el2) => {
- buildAttributes(
- el2,
- dataList,
- ruleList,
- optionsList,
- methodList,
- propsList,
- uploadVarList
- )
- })
- }
-}
-/**
- * @name: 生成表单数据formData
- * @description: 生成表单数据formData
- * @param {*} conf
- * @param {*} dataList 数据列表
- * @return {*}
- */
-function buildData(conf, dataList) {
- if (conf.vModel === undefined) return
- let defaultValue
- if (typeof conf.defaultValue === 'string' && !conf.multiple) {
- defaultValue = `'${conf.defaultValue}'`
- } else {
- defaultValue = `${JSON.stringify(conf.defaultValue)}`
- }
- dataList.push(`${conf.vModel}: ${defaultValue},`)
-}
-/**
- * @name: 生成表单验证数据rule
- * @description: 生成表单验证数据rule
- * @param {*} conf
- * @param {*} ruleList 验证数据列表
- * @return {*}
- */
-function buildRules(conf, ruleList) {
- if (conf.vModel === undefined) return
- const rules = []
- if (trigger[conf.tag]) {
- if (conf.required) {
- const type = Array.isArray(conf.defaultValue) ? "type: 'array'," : ''
- let message = Array.isArray(conf.defaultValue)
- ? `请至少选择一个${conf.vModel}`
- : conf.placeholder
- if (message === undefined) message = `${conf.label}不能为空`
- rules.push(
- `{ required: true, ${type} message: '${message}', trigger: '${
- trigger[conf.tag]
- }' }`
- )
- }
- if (conf.regList && Array.isArray(conf.regList)) {
- conf.regList.forEach((item) => {
- if (item.pattern) {
- rules.push(
- `{ pattern: new RegExp(${item.pattern}), message: '${
- item.message
- }', trigger: '${trigger[conf.tag]}' }`
- )
- }
- })
- }
- ruleList.push(`${conf.vModel}: [${rules.join(',')}],`)
- }
-}
-/**
- * @name: 生成选项数据
- * @description: 生成选项数据,单选多选下拉等
- * @param {*} conf
- * @param {*} optionsList 选项数据列表
- * @return {*}
- */
-function buildOptions(conf, optionsList) {
- if (conf.vModel === undefined) return
- if (conf.dataType === 'dynamic') {
- conf.options = []
- }
- const str = `const ${conf.vModel}Options = ref(${JSON.stringify(conf.options)})`
- optionsList.push(str)
-}
-/**
- * @name: 生成方法
- * @description: 生成方法
- * @param {*} methodName 方法名
- * @param {*} model
- * @param {*} methodList 方法列表
- * @return {*}
- */
-function buildOptionMethod(methodName, model, methodList) {
- const str = `function ${methodName}() {
- // TODO 发起请求获取数据
- ${model}.value
- }`
- methodList.push(str)
-}
-/**
- * @name: 生成表单组件需要的props设置
- * @description: 生成表单组件需要的props设置,如;级联组件
- * @param {*} conf
- * @param {*} propsList
- * @return {*}
- */
-function buildProps(conf, propsList) {
- if (conf.dataType === 'dynamic') {
- conf.valueKey !== 'value' && (conf.props.props.value = conf.valueKey)
- conf.labelKey !== 'label' && (conf.props.props.label = conf.labelKey)
- conf.childrenKey !== 'children' &&
- (conf.props.props.children = conf.childrenKey)
- }
- const str = `
- // props设置
- const ${conf.vModel}Props = ref(${JSON.stringify(conf.props.props)})`
- propsList.push(str)
-}
-/**
- * @name: 生成上传组件的相关内容
- * @description: 生成上传组件的相关内容
- * @param {*} conf
- * @return {*}
- */
-function buildBeforeUpload(conf) {
- const unitNum = units[conf.sizeUnit]
- let rightSizeCode = ''
- let acceptCode = ''
- const returnList = []
- if (conf.fileSize) {
- rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${conf.fileSize}
- if(!isRightSize){
- proxy.$modal.msgError('文件大小超过 ${conf.fileSize}${conf.sizeUnit}')
- }`
- returnList.push('isRightSize')
- }
- if (conf.accept) {
- acceptCode = `let isAccept = new RegExp('${conf.accept}').test(file.type)
- if(!isAccept){
- proxy.$modal.msgError('应该选择${conf.accept}类型的文件')
- }`
- returnList.push('isAccept')
- }
- const str = `
- /**
- * @name: 上传之前的文件判断
- * @description: 上传之前的文件判断,判断文件大小文件类型等
- * @param {*} file
- * @return {*}
- */
- function ${conf.vModel}BeforeUpload(file) {
- ${rightSizeCode}
- ${acceptCode}
- return ${returnList.join('&&')}
- }`
- return returnList.length ? str : ''
-}
-/**
- * @name: 生成提交表单方法
- * @description: 生成提交表单方法
- * @param {Object} conf vModel 表单ref
- * @return {*}
- */
-function buildSubmitUpload(conf) {
- const str = `function submitUpload() {
- this.$refs['${conf.vModel}'].submit()
- }`
- return str
-}
-/**
- * @name: 组装js代码
- * @description: 组装js代码方法
- * @return {*}
- */
-function buildexport(
- conf,
- type,
- data,
- rules,
- selectOptions,
- uploadVar,
- props,
- methods
-) {
- let str = `
- const { proxy } = getCurrentInstance()
- const ${conf.formRef} = ref()
- const data = reactive({
- ${conf.formModel}: {
- ${data}
- },
- ${conf.formRules}: {
- ${rules}
- }
- })
-
- const {${conf.formModel}, ${conf.formRules}} = toRefs(data)
-
- ${selectOptions}
-
- ${uploadVar}
-
- ${props}
-
- ${methods}
- `
-
- if(type === 'dialog') {
- str += `
- // 弹窗设置
- const dialogVisible = defineModel()
- // 弹窗确认回调
- const emit = defineEmits(['confirm'])
- /**
- * @name: 弹窗打开后执行
- * @description: 弹窗打开后执行方法
- * @return {*}
- */
- function onOpen(){
-
- }
- /**
- * @name: 弹窗关闭时执行
- * @description: 弹窗关闭方法,重置表单
- * @return {*}
- */
- function onClose(){
- ${conf.formRef}.value.resetFields()
- }
- /**
- * @name: 弹窗取消
- * @description: 弹窗取消方法
- * @return {*}
- */
- function close(){
- dialogVisible.value = false
- }
- /**
- * @name: 弹窗表单提交
- * @description: 弹窗表单提交方法
- * @return {*}
- */
- function handelConfirm(){
- ${conf.formRef}.value.validate((valid) => {
- if (!valid) return
- // TODO 提交表单
-
- close()
- // 回调父级组件
- emit('confirm')
- })
- }
- `
- } else {
- str += `
- /**
- * @name: 表单提交
- * @description: 表单提交方法
- * @return {*}
- */
- function submitForm() {
- ${conf.formRef}.value.validate((valid) => {
- if (!valid) return
- // TODO 提交表单
- })
- }
- /**
- * @name: 表单重置
- * @description: 表单重置方法
- * @return {*}
- */
- function resetForm() {
- ${conf.formRef}.value.resetFields()
- }
- `
- }
- return str
-}
diff --git a/ruoyi-ui/src/utils/generator/render.js b/ruoyi-ui/src/utils/generator/render.js
deleted file mode 100644
index d6d4414..0000000
--- a/ruoyi-ui/src/utils/generator/render.js
+++ /dev/null
@@ -1,156 +0,0 @@
-import { defineComponent, h } from 'vue'
-import { makeMap } from '@/utils/index'
-
-const isAttr = makeMap(
- 'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' +
- 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' +
- 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,' +
- 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,' +
- 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,' +
- 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' +
- 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
- 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
- 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +
- 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' +
- 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' +
- 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' +
- 'target,title,type,usemap,value,width,wrap' + 'prefix-icon'
-)
-const isNotProps = makeMap(
- 'layout,prepend,regList,tag,document,changeTag,defaultValue'
-)
-
-function useVModel(props, emit) {
- return {
- modelValue: props.defaultValue,
- 'onUpdate:modelValue': (val) => emit('update:modelValue', val),
- }
-}
-const componentChild = {
- 'el-button': {
- default(h, conf, key) {
- return conf[key]
- },
- },
- 'el-select': {
- options(h, conf, key) {
- return conf.options.map(item => h(resolveComponent('el-option'), {
- label: item.label,
- value: item.value,
- }))
- }
- },
- 'el-radio-group': {
- options(h, conf, key) {
- return conf.optionType === 'button' ? conf.options.map(item => h(resolveComponent('el-checkbox-button'), {
- label: item.value,
- }, () => item.label)) : conf.options.map(item => h(resolveComponent('el-radio'), {
- label: item.value,
- border: conf.border,
- }, () => item.label))
- }
- },
- 'el-checkbox-group': {
- options(h, conf, key) {
- return conf.optionType === 'button' ? conf.options.map(item => h(resolveComponent('el-checkbox-button'), {
- label: item.value,
- }, () => item.label)) : conf.options.map(item => h(resolveComponent('el-checkbox'), {
- label: item.value,
- border: conf.border,
- }, () => item.label))
- }
- },
- 'el-upload': {
- 'list-type': (h, conf, key) => {
- const option = {}
- // if (conf.showTip) {
- // tip = h('div', {
- // class: "el-upload__tip"
- // }, () => '只能上传不超过' + conf.fileSize + conf.sizeUnit + '的' + conf.accept + '文件')
- // }
- if (conf['list-type'] === 'picture-card') {
- return h(resolveComponent('el-icon'), option, () => h(resolveComponent('Plus')))
- } else {
- // option.size = "small"
- option.type = "primary"
- option.icon = "Upload"
- return h(resolveComponent('el-button'), option, () => conf.buttonText)
- }
- },
-
- }
-}
-const componentSlot = {
- 'el-upload': {
- 'tip': (h, conf, key) => {
- if (conf.showTip) {
- return () => h('div', {
- class: "el-upload__tip"
- }, '只能上传不超过' + conf.fileSize + conf.sizeUnit + '的' + conf.accept + '文件')
- }
- },
- }
-}
-export default defineComponent({
-
- // 使用 render 函数
- render() {
- const dataObject = {
- attrs: {},
- props: {},
- on: {},
- style: {}
- }
- const confClone = JSON.parse(JSON.stringify(this.conf))
- const children = []
- const slot = {}
- const childObjs = componentChild[confClone.tag]
- if (childObjs) {
- Object.keys(childObjs).forEach(key => {
- const childFunc = childObjs[key]
- if (confClone[key]) {
- children.push(childFunc(h, confClone, key))
- }
- })
- }
- const slotObjs = componentSlot[confClone.tag]
- if (slotObjs) {
- Object.keys(slotObjs).forEach(key => {
- const childFunc = slotObjs[key]
- if (confClone[key]) {
- slot[key] = childFunc(h, confClone, key)
- }
- })
- }
- Object.keys(confClone).forEach(key => {
- const val = confClone[key]
- if (dataObject[key]) {
- dataObject[key] = val
- } else if (isAttr(key)) {
- dataObject.attrs[key] = val
- } else if (!isNotProps(key)) {
- dataObject.props[key] = val
- }
- })
- if(children.length > 0){
- slot.default = () => children
- }
-
- return h(resolveComponent(this.conf.tag),
- {
- modelValue: this.$attrs.modelValue,
- ...dataObject.props,
- ...dataObject.attrs,
- style: {
- ...dataObject.style
- },
- }
- , slot ?? null)
- },
- props: {
- conf: {
- type: Object,
- required: true,
- },
- }
-})
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/index.js b/ruoyi-ui/src/utils/index.js
deleted file mode 100644
index 407d990..0000000
--- a/ruoyi-ui/src/utils/index.js
+++ /dev/null
@@ -1,407 +0,0 @@
-import { parseTime } from './ruoyi'
-
-/**
- * 表格时间格式化
- */
-export function formatDate(cellValue) {
- if (cellValue == null || cellValue == "") return "";
- var date = new Date(cellValue)
- var year = date.getFullYear()
- var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
- var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
- var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
- var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
- var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
- return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
-}
-
-/**
- * @param {number} time
- * @param {string} option
- * @returns {string}
- */
-export function formatTime(time, option) {
- if (('' + time).length === 10) {
- time = parseInt(time) * 1000
- } else {
- time = +time
- }
- const d = new Date(time)
- const now = Date.now()
-
- const diff = (now - d) / 1000
-
- if (diff < 30) {
- return '刚刚'
- } else if (diff < 3600) {
- // less 1 hour
- return Math.ceil(diff / 60) + '分钟前'
- } else if (diff < 3600 * 24) {
- return Math.ceil(diff / 3600) + '小时前'
- } else if (diff < 3600 * 24 * 2) {
- return '1天前'
- }
- if (option) {
- return parseTime(time, option)
- } else {
- return (
- d.getMonth() +
- 1 +
- '月' +
- d.getDate() +
- '日' +
- d.getHours() +
- '时' +
- d.getMinutes() +
- '分'
- )
- }
-}
-
-/**
- * @param {string} url
- * @returns {Object}
- */
-export function getQueryObject(url) {
- url = url == null ? window.location.href : url
- const search = url.substring(url.lastIndexOf('?') + 1)
- const obj = {}
- const reg = /([^?&=]+)=([^?&=]*)/g
- search.replace(reg, (rs, $1, $2) => {
- const name = decodeURIComponent($1)
- let val = decodeURIComponent($2)
- val = String(val)
- obj[name] = val
- return rs
- })
- return obj
-}
-
-/**
- * @param {string} input value
- * @returns {number} output value
- */
-export function byteLength(str) {
- // returns the byte length of an utf8 string
- let s = str.length
- for (var i = str.length - 1; i >= 0; i--) {
- const code = str.charCodeAt(i)
- if (code > 0x7f && code <= 0x7ff) s++
- else if (code > 0x7ff && code <= 0xffff) s += 2
- if (code >= 0xDC00 && code <= 0xDFFF) i--
- }
- return s
-}
-
-/**
- * @param {Array} actual
- * @returns {Array}
- */
-export function cleanArray(actual) {
- const newArray = []
- for (let i = 0; i < actual.length; i++) {
- if (actual[i]) {
- newArray.push(actual[i])
- }
- }
- return newArray
-}
-
-/**
- * @param {Object} json
- * @returns {Array}
- */
-export function param(json) {
- if (!json) return ''
- return cleanArray(
- Object.keys(json).map(key => {
- if (json[key] === undefined) return ''
- return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
- })
- ).join('&')
-}
-
-/**
- * @param {string} url
- * @returns {Object}
- */
-export function param2Obj(url) {
- const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
- if (!search) {
- return {}
- }
- const obj = {}
- const searchArr = search.split('&')
- searchArr.forEach(v => {
- const index = v.indexOf('=')
- if (index !== -1) {
- const name = v.substring(0, index)
- const val = v.substring(index + 1, v.length)
- obj[name] = val
- }
- })
- return obj
-}
-
-/**
- * @param {string} val
- * @returns {string}
- */
-export function html2Text(val) {
- const div = document.createElement('div')
- div.innerHTML = val
- return div.textContent || div.innerText
-}
-
-/**
- * Merges two objects, giving the last one precedence
- * @param {Object} target
- * @param {(Object|Array)} source
- * @returns {Object}
- */
-export function objectMerge(target, source) {
- if (typeof target !== 'object') {
- target = {}
- }
- if (Array.isArray(source)) {
- return source.slice()
- }
- Object.keys(source).forEach(property => {
- const sourceProperty = source[property]
- if (typeof sourceProperty === 'object') {
- target[property] = objectMerge(target[property], sourceProperty)
- } else {
- target[property] = sourceProperty
- }
- })
- return target
-}
-
-/**
- * @param {HTMLElement} element
- * @param {string} className
- */
-export function toggleClass(element, className) {
- if (!element || !className) {
- return
- }
- let classString = element.className
- const nameIndex = classString.indexOf(className)
- if (nameIndex === -1) {
- classString += '' + className
- } else {
- classString =
- classString.substr(0, nameIndex) +
- classString.substr(nameIndex + className.length)
- }
- element.className = classString
-}
-
-/**
- * @param {string} type
- * @returns {Date}
- */
-export function getTime(type) {
- if (type === 'start') {
- return new Date().getTime() - 3600 * 1000 * 24 * 90
- } else {
- return new Date(new Date().toDateString())
- }
-}
-
-/**
- * @param {Function} func
- * @param {number} wait
- * @param {boolean} immediate
- * @return {*}
- */
-export function debounce(func, wait, immediate) {
- let timeout, args, context, timestamp, result
-
- const later = function() {
- // 据上一次触发时间间隔
- const last = +new Date() - timestamp
-
- // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
- if (last < wait && last > 0) {
- timeout = setTimeout(later, wait - last)
- } else {
- timeout = null
- // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
- if (!immediate) {
- result = func.apply(context, args)
- if (!timeout) context = args = null
- }
- }
- }
-
- return function(...args) {
- context = this
- timestamp = +new Date()
- const callNow = immediate && !timeout
- // 如果延时不存在,重新设定延时
- if (!timeout) timeout = setTimeout(later, wait)
- if (callNow) {
- result = func.apply(context, args)
- context = args = null
- }
-
- return result
- }
-}
-
-/**
- * This is just a simple version of deep copy
- * Has a lot of edge cases bug
- * If you want to use a perfect deep copy, use lodash's _.cloneDeep
- * @param {Object} source
- * @returns {Object}
- */
-export function deepClone(source) {
- if (!source && typeof source !== 'object') {
- throw new Error('error arguments', 'deepClone')
- }
- const targetObj = source.constructor === Array ? [] : {}
- Object.keys(source).forEach(keys => {
- if (source[keys] && typeof source[keys] === 'object') {
- targetObj[keys] = deepClone(source[keys])
- } else {
- targetObj[keys] = source[keys]
- }
- })
- return targetObj
-}
-
-/**
- * @param {Array} arr
- * @returns {Array}
- */
-export function uniqueArr(arr) {
- return Array.from(new Set(arr))
-}
-
-/**
- * @returns {string}
- */
-export function createUniqueString() {
- const timestamp = +new Date() + ''
- const randomNum = parseInt((1 + Math.random()) * 65536) + ''
- return (+(randomNum + timestamp)).toString(32)
-}
-
-/**
- * Check if an element has a class
- * @param {HTMLElement} elm
- * @param {string} cls
- * @returns {boolean}
- */
-export function hasClass(ele, cls) {
- return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
-}
-
-/**
- * Add class to element
- * @param {HTMLElement} elm
- * @param {string} cls
- */
-export function addClass(ele, cls) {
- if (!hasClass(ele, cls)) ele.className += ' ' + cls
-}
-
-/**
- * Remove class from element
- * @param {HTMLElement} elm
- * @param {string} cls
- */
-export function removeClass(ele, cls) {
- if (hasClass(ele, cls)) {
- const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
- ele.className = ele.className.replace(reg, ' ')
- }
-}
-
-export function makeMap(str, expectsLowerCase) {
- const map = Object.create(null)
- const list = str.split(',')
- for (let i = 0; i < list.length; i++) {
- map[list[i]] = true
- }
- return expectsLowerCase
- ? val => map[val.toLowerCase()]
- : val => map[val]
-}
-
-export const exportDefault = 'export default '
-
-export const beautifierConf = {
- html: {
- indent_size: '2',
- indent_char: ' ',
- max_preserve_newlines: '-1',
- preserve_newlines: false,
- keep_array_indentation: false,
- break_chained_methods: false,
- indent_scripts: 'separate',
- brace_style: 'end-expand',
- space_before_conditional: true,
- unescape_strings: false,
- jslint_happy: false,
- end_with_newline: true,
- wrap_line_length: '110',
- indent_inner_html: true,
- comma_first: false,
- e4x: true,
- indent_empty_lines: true
- },
- js: {
- indent_size: '2',
- indent_char: ' ',
- max_preserve_newlines: '-1',
- preserve_newlines: false,
- keep_array_indentation: false,
- break_chained_methods: false,
- indent_scripts: 'normal',
- brace_style: 'end-expand',
- space_before_conditional: true,
- unescape_strings: false,
- jslint_happy: true,
- end_with_newline: true,
- wrap_line_length: '110',
- indent_inner_html: true,
- comma_first: false,
- e4x: true,
- indent_empty_lines: true
- }
-}
-
-// 首字母大小
-export function titleCase(str) {
- return str.replace(/( |^)[a-z]/g, L => L.toUpperCase())
-}
-
-// 下划转驼峰
-export function camelCase(str) {
- return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase())
-}
-
-export function isNumberStr(str) {
- return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
-}
-
-export function isAudioByMimeType(mimeType) {
- const audioMimeTypes = [
- 'audio/mpeg',
- 'audio/wav',
- 'audio/x-wav',
- 'audio/flac',
- 'audio/aac',
- 'audio/ogg',
- 'audio/mp4',
- 'audio/webm',
- 'audio/x-m4a',
- 'audio/amr',
- 'audio/midi'
- ];
-
- return audioMimeTypes.includes(mimeType.toLowerCase());
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/jsencrypt.js b/ruoyi-ui/src/utils/jsencrypt.js
deleted file mode 100644
index 78d9523..0000000
--- a/ruoyi-ui/src/utils/jsencrypt.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
-
-// 密钥对生成 http://web.chacuo.net/netrsakeypair
-
-const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
- 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
-
-const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
- '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
- 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
- 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
- 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
- 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
- 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
- 'UP8iWi1Qw0Y='
-
-// 加密
-export function encrypt(txt) {
- const encryptor = new JSEncrypt()
- encryptor.setPublicKey(publicKey) // 设置公钥
- return encryptor.encrypt(txt) // 对数据进行加密
-}
-
-// 解密
-export function decrypt(txt) {
- const encryptor = new JSEncrypt()
- encryptor.setPrivateKey(privateKey) // 设置私钥
- return encryptor.decrypt(txt) // 对数据进行解密
-}
-
diff --git a/ruoyi-ui/src/utils/permission.js b/ruoyi-ui/src/utils/permission.js
deleted file mode 100644
index 93fee87..0000000
--- a/ruoyi-ui/src/utils/permission.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import useUserStore from '@/store/modules/user'
-
-/**
- * 字符权限校验
- * @param {Array} value 校验值
- * @returns {Boolean}
- */
-export function checkPermi(value) {
- if (value && value instanceof Array && value.length > 0) {
- const permissions = useUserStore().permissions
- const permissionDatas = value
- const all_permission = "*:*:*";
-
- const hasPermission = permissions.some(permission => {
- return all_permission === permission || permissionDatas.includes(permission)
- })
-
- if (!hasPermission) {
- return false
- }
- return true
- } else {
- console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
- return false
- }
-}
-
-/**
- * 角色权限校验
- * @param {Array} value 校验值
- * @returns {Boolean}
- */
-export function checkRole(value) {
- if (value && value instanceof Array && value.length > 0) {
- const roles = useUserStore().roles
- const permissionRoles = value
- const super_admin = "admin";
-
- const hasRole = roles.some(role => {
- return super_admin === role || permissionRoles.includes(role)
- })
-
- if (!hasRole) {
- return false
- }
- return true
- } else {
- console.error(`need roles! Like checkRole="['admin','editor']"`)
- return false
- }
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js
deleted file mode 100644
index 399c977..0000000
--- a/ruoyi-ui/src/utils/request.js
+++ /dev/null
@@ -1,152 +0,0 @@
-import axios from 'axios'
-import { ElNotification , ElMessageBox, ElMessage, ElLoading } from 'element-plus'
-import { getToken } from '@/utils/auth'
-import errorCode from '@/utils/errorCode'
-import { tansParams, blobValidate } from '@/utils/ruoyi'
-import cache from '@/plugins/cache'
-import { saveAs } from 'file-saver'
-import useUserStore from '@/store/modules/user'
-
-let downloadLoadingInstance;
-// 是否显示重新登录
-export let isRelogin = { show: false };
-
-axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
-// 创建axios实例
-const service = axios.create({
- // axios中请求配置有baseURL选项,表示请求URL公共部分
- baseURL: import.meta.env.VITE_APP_BASE_API,
- // 超时
- timeout: 10000
-})
-
-// request拦截器
-service.interceptors.request.use(config => {
- // 是否需要设置 token
- const isToken = (config.headers || {}).isToken === false
- // 是否需要防止数据重复提交
- const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
- if (getToken() && !isToken) {
- config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
- }
- // get请求映射params参数
- if (config.method === 'get' && config.params) {
- let url = config.url + '?' + tansParams(config.params);
- url = url.slice(0, -1);
- config.params = {};
- config.url = url;
- }
- if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
- const requestObj = {
- url: config.url,
- data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
- time: new Date().getTime()
- }
- const requestSize = Object.keys(JSON.stringify(requestObj)).length; // 请求数据大小
- const limitSize = 5 * 1024 * 1024; // 限制存放数据5M
- if (requestSize >= limitSize) {
- console.warn(`[${config.url}]: ` + '请求数据大小超出允许的5M限制,无法进行防重复提交验证。')
- return config;
- }
- const sessionObj = cache.session.getJSON('sessionObj')
- if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
- cache.session.setJSON('sessionObj', requestObj)
- } else {
- const s_url = sessionObj.url; // 请求地址
- const s_data = sessionObj.data; // 请求数据
- const s_time = sessionObj.time; // 请求时间
- const interval = 500; // 间隔时间(ms),小于此时间视为重复提交
- if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
- const message = '数据正在处理,请勿重复提交';
- console.warn(`[${s_url}]: ` + message)
- return Promise.reject(new Error(message))
- } else {
- cache.session.setJSON('sessionObj', requestObj)
- }
- }
- }
- return config
-}, error => {
- console.log(error)
- Promise.reject(error)
-})
-
-// 响应拦截器
-service.interceptors.response.use(res => {
- // 未设置状态码则默认成功状态
- const code = res.data.code || 200;
- // 获取错误信息
- const msg = errorCode[code] || res.data.msg || errorCode['default']
- // 二进制数据则直接返回
- if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
- return res.data
- }
- if (code === 401) {
- if (!isRelogin.show) {
- isRelogin.show = true;
- ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
- isRelogin.show = false;
- useUserStore().logOut().then(() => {
- location.href = '/index';
- })
- }).catch(() => {
- isRelogin.show = false;
- });
- }
- return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
- } else if (code === 500) {
- ElMessage({ message: msg, grouping: true, type: 'error' })
- return Promise.reject(new Error(msg))
- } else if (code === 601) {
- ElMessage({ message: msg, type: 'warning' })
- return Promise.reject(new Error(msg))
- } else if (code !== 200) {
- ElNotification.error({ title: msg })
- return Promise.reject('error')
- } else {
- return Promise.resolve(res.data)
- }
- },
- error => {
- console.log('err' + error)
- let { message } = error;
- if (message == "Network Error") {
- message = "后端接口连接异常";
- } else if (message.includes("timeout")) {
- message = "系统接口请求超时";
- } else if (message.includes("Request failed with status code")) {
- message = "系统接口" + message.substr(message.length - 3) + "异常";
- }
- ElMessage({ message: message, type: 'error', grouping: true, duration: 5 * 1000 })
- return Promise.reject(error)
- }
-)
-
-// 通用下载方法
-export function download(url, params, filename, config) {
- downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", })
- return service.post(url, params, {
- transformRequest: [(params) => { return tansParams(params) }],
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
- responseType: 'blob',
- ...config
- }).then(async (data) => {
- const isBlob = blobValidate(data);
- if (isBlob) {
- const blob = new Blob([data])
- saveAs(blob, filename)
- } else {
- const resText = await data.text();
- const rspObj = JSON.parse(resText);
- const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
- ElMessage.error(errMsg);
- }
- downloadLoadingInstance.close();
- }).catch((r) => {
- console.error(r)
- ElMessage.error('下载文件出现错误,请联系管理员!')
- downloadLoadingInstance.close();
- })
-}
-
-export default service
diff --git a/ruoyi-ui/src/utils/requestController.js b/ruoyi-ui/src/utils/requestController.js
deleted file mode 100644
index b14a4cf..0000000
--- a/ruoyi-ui/src/utils/requestController.js
+++ /dev/null
@@ -1,94 +0,0 @@
-export class ConcurrentRequestController {
- constructor(maxConcurrency = 5) {
- this.maxConcurrency = maxConcurrency;
- this.activeCount = 0;
- this.queue = [];
- this.abortControllers = new Map();
- this.isCancelled = false;
- }
-
- // 添加请求到控制器
- addRequest(requestFn) {
- if (this.isCancelled) {
- return Promise.reject(new Error('请求控制器已被取消'));
- }
-
- const abortController = new AbortController();
- const signal = abortController.signal;
-
- return new Promise((resolve, reject) => {
- const task = () => {
- if (this.isCancelled) {
- reject(new Error('请求控制器已被取消'));
- return;
- }
- const taskId = Date.now() + '_' + Math.random().toString(36);
- this.abortControllers.set(taskId, abortController);
- this.activeCount++;
- requestFn(signal)
- .then(result => {
- if (!this.isCancelled) {
- resolve(result);
- }
- })
- .catch(error => {
- if (!this.isCancelled || error.name !== 'AbortError') {
- reject(error);
- }
- })
- .finally(() => {
- this.activeCount--;
- this.abortControllers.delete(taskId);
- this._processQueue();
- });
- };
-
- // 如果当前活跃请求数小于最大并发数,立即执行
- if (this.activeCount < this.maxConcurrency) {
- task();
- } else {
- // 否则加入队列等待
- this.queue.push(task);
- }
- });
- }
-
- // 处理等待队列中的任务
- _processQueue() {
- if (this.queue.length > 0 && this.activeCount < this.maxConcurrency && !this.isCancelled) {
- const nextTask = this.queue.shift();
- nextTask();
- }
- }
-
- // 取消所有请求(已开始和未开始的)
- cancelAll() {
- if (this.isCancelled) {
- return
- };
-
- this.isCancelled = true;
-
- // 取消所有正在进行的请求
- this.abortControllers.forEach(controller => {
- controller.abort();
- });
-
- // 清空等待队列
- this.queue = [];
- this.activeCount = 0;
- this.isCancelled = false;
- this.abortControllers.clear();
- console.log('所有请求已取消');
- }
-
- // 获取当前状态
- getStatus() {
- return {
- activeCount: this.activeCount,
- queueLength: this.queue.length,
- maxConcurrency: this.maxConcurrency,
- isCancelled: this.isCancelled
- };
- }
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/utils/ruoyi.js b/ruoyi-ui/src/utils/ruoyi.js
deleted file mode 100644
index 4efca08..0000000
--- a/ruoyi-ui/src/utils/ruoyi.js
+++ /dev/null
@@ -1,246 +0,0 @@
-
-
-/**
- * 通用js方法封装处理
- * Copyright (c) 2019 ruoyi
- */
-
-// 日期格式化
-export function parseTime(time, pattern) {
- if (arguments.length === 0 || !time) {
- return null
- }
- const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
- let date
- if (typeof time === 'object') {
- date = time
- } else {
- if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
- time = parseInt(time)
- } else if (typeof time === 'string') {
- time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
- }
- if ((typeof time === 'number') && (time.toString().length === 10)) {
- time = time * 1000
- }
- date = new Date(time)
- }
- const formatObj = {
- y: date.getFullYear(),
- m: date.getMonth() + 1,
- d: date.getDate(),
- h: date.getHours(),
- i: date.getMinutes(),
- s: date.getSeconds(),
- a: date.getDay()
- }
- const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
- let value = formatObj[key]
- // Note: getDay() returns 0 on Sunday
- if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
- if (result.length > 0 && value < 10) {
- value = '0' + value
- }
- return value || 0
- })
- return time_str
-}
-
-// 表单重置
-export function resetForm(refName) {
- if (this.$refs[refName]) {
- this.$refs[refName].resetFields();
- }
-}
-
-// 添加日期范围
-export function addDateRange(params, dateRange, propName) {
- let search = params;
- search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
- dateRange = Array.isArray(dateRange) ? dateRange : [];
- if (typeof (propName) === 'undefined') {
- search.params['beginTime'] = dateRange[0];
- search.params['endTime'] = dateRange[1];
- } else {
- search.params['begin' + propName] = dateRange[0];
- search.params['end' + propName] = dateRange[1];
- }
- return search;
-}
-
-// 回显数据字典
-export function selectDictLabel(datas, value) {
- if (value === undefined) {
- return "";
- }
- var actions = [];
- Object.keys(datas).some((key) => {
- if (datas[key].value == ('' + value)) {
- actions.push(datas[key].label);
- return true;
- }
- })
- if (actions.length === 0) {
- actions.push(value);
- }
- return actions.join('');
-}
-
-// 回显数据字典(字符串数组)
-export function selectDictLabels(datas, value, separator) {
- if (value === undefined || value.length ===0) {
- return "";
- }
- if (Array.isArray(value)) {
- value = value.join(",");
- }
- var actions = [];
- var currentSeparator = undefined === separator ? "," : separator;
- var temp = value.split(currentSeparator);
- Object.keys(value.split(currentSeparator)).some((val) => {
- var match = false;
- Object.keys(datas).some((key) => {
- if (datas[key].value == ('' + temp[val])) {
- actions.push(datas[key].label + currentSeparator);
- match = true;
- }
- })
- if (!match) {
- actions.push(temp[val] + currentSeparator);
- }
- })
- return actions.join('').substring(0, actions.join('').length - 1);
-}
-
-// 字符串格式化(%s )
-export function sprintf(str) {
- var args = arguments, flag = true, i = 1;
- str = str.replace(/%s/g, function () {
- var arg = args[i++];
- if (typeof arg === 'undefined') {
- flag = false;
- return '';
- }
- return arg;
- });
- return flag ? str : '';
-}
-
-// 转换字符串,undefined,null等转化为""
-export function parseStrEmpty(str) {
- if (!str || str == "undefined" || str == "null") {
- return "";
- }
- return str;
-}
-
-// 数据合并
-export function mergeRecursive(source, target) {
- for (var p in target) {
- try {
- if (target[p].constructor == Object) {
- source[p] = mergeRecursive(source[p], target[p]);
- } else {
- source[p] = target[p];
- }
- } catch (e) {
- source[p] = target[p];
- }
- }
- return source;
-};
-
-/**
- * 构造树型结构数据
- * @param {*} data 数据源
- * @param {*} id id字段 默认 'id'
- * @param {*} parentId 父节点字段 默认 'parentId'
- * @param {*} children 孩子节点字段 默认 'children'
- */
-export function handleTree(data, id, parentId, children) {
- let config = {
- id: id || 'id',
- parentId: parentId || 'parentId',
- childrenList: children || 'children'
- };
-
- var childrenListMap = {};
- var nodeIds = {};
- var tree = [];
-
- for (let d of data) {
- let parentId = d[config.parentId];
- if (childrenListMap[parentId] == null) {
- childrenListMap[parentId] = [];
- }
- nodeIds[d[config.id]] = d;
- childrenListMap[parentId].push(d);
- }
-
- for (let d of data) {
- let parentId = d[config.parentId];
- if (nodeIds[parentId] == null) {
- tree.push(d);
- }
- }
-
- for (let t of tree) {
- adaptToChildrenList(t);
- }
-
- function adaptToChildrenList(o) {
- if (childrenListMap[o[config.id]] !== null) {
- o[config.childrenList] = childrenListMap[o[config.id]];
- }
- if (o[config.childrenList]) {
- for (let c of o[config.childrenList]) {
- adaptToChildrenList(c);
- }
- }
- }
- return tree;
-}
-
-/**
-* 参数处理
-* @param {*} params 参数
-*/
-export function tansParams(params) {
- let result = ''
- for (const propName of Object.keys(params)) {
- const value = params[propName];
- var part = encodeURIComponent(propName) + "=";
- if (value !== null && value !== "" && typeof (value) !== "undefined") {
- if (typeof value === 'object') {
- for (const key of Object.keys(value)) {
- if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
- let params = propName + '[' + key + ']';
- var subPart = encodeURIComponent(params) + "=";
- result += subPart + encodeURIComponent(value[key]) + "&";
- }
- }
- } else {
- result += part + encodeURIComponent(value) + "&";
- }
- }
- }
- return result
-}
-
-
-// 返回项目路径
-export function getNormalPath(p) {
- if (p.length === 0 || !p || p == 'undefined') {
- return p
- };
- let res = p.replace('//', '/')
- if (res[res.length - 1] === '/') {
- return res.slice(0, res.length - 1)
- }
- return res;
-}
-
-// 验证是否为blob格式
-export function blobValidate(data) {
- return data.type !== 'application/json'
-}
diff --git a/ruoyi-ui/src/utils/scroll-to.js b/ruoyi-ui/src/utils/scroll-to.js
deleted file mode 100644
index c5d8e04..0000000
--- a/ruoyi-ui/src/utils/scroll-to.js
+++ /dev/null
@@ -1,58 +0,0 @@
-Math.easeInOutQuad = function(t, b, c, d) {
- t /= d / 2
- if (t < 1) {
- return c / 2 * t * t + b
- }
- t--
- return -c / 2 * (t * (t - 2) - 1) + b
-}
-
-// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
-var requestAnimFrame = (function() {
- return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }
-})()
-
-/**
- * Because it's so fucking difficult to detect the scrolling element, just move them all
- * @param {number} amount
- */
-function move(amount) {
- document.documentElement.scrollTop = amount
- document.body.parentNode.scrollTop = amount
- document.body.scrollTop = amount
-}
-
-function position() {
- return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
-}
-
-/**
- * @param {number} to
- * @param {number} duration
- * @param {Function} callback
- */
-export function scrollTo(to, duration, callback) {
- const start = position()
- const change = to - start
- const increment = 20
- let currentTime = 0
- duration = (typeof (duration) === 'undefined') ? 500 : duration
- var animateScroll = function() {
- // increment the time
- currentTime += increment
- // find the value with the quadratic in-out easing function
- var val = Math.easeInOutQuad(currentTime, start, change, duration)
- // move the document.body
- move(val)
- // do the animation unless its over
- if (currentTime < duration) {
- requestAnimFrame(animateScroll)
- } else {
- if (callback && typeof (callback) === 'function') {
- // the animation is done so lets callback
- callback()
- }
- }
- }
- animateScroll()
-}
diff --git a/ruoyi-ui/src/utils/theme.js b/ruoyi-ui/src/utils/theme.js
deleted file mode 100644
index f4badc6..0000000
--- a/ruoyi-ui/src/utils/theme.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// 处理主题样式
-export function handleThemeStyle(theme) {
- document.documentElement.style.setProperty('--el-color-primary', theme)
- for (let i = 1; i <= 9; i++) {
- document.documentElement.style.setProperty(`--el-color-primary-light-${i}`, `${getLightColor(theme, i / 10)}`)
- }
- for (let i = 1; i <= 9; i++) {
- document.documentElement.style.setProperty(`--el-color-primary-dark-${i}`, `${getDarkColor(theme, i / 10)}`)
- }
-}
-
-// hex颜色转rgb颜色
-export function hexToRgb(str) {
- str = str.replace('#', '')
- let hexs = str.match(/../g)
- for (let i = 0; i < 3; i++) {
- hexs[i] = parseInt(hexs[i], 16)
- }
- return hexs
-}
-
-// rgb颜色转Hex颜色
-export function rgbToHex(r, g, b) {
- let hexs = [r.toString(16), g.toString(16), b.toString(16)]
- for (let i = 0; i < 3; i++) {
- if (hexs[i].length == 1) {
- hexs[i] = `0${hexs[i]}`
- }
- }
- return `#${hexs.join('')}`
-}
-
-// 变浅颜色值
-export function getLightColor(color, level) {
- let rgb = hexToRgb(color)
- for (let i = 0; i < 3; i++) {
- rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i])
- }
- return rgbToHex(rgb[0], rgb[1], rgb[2])
-}
-
-// 变深颜色值
-export function getDarkColor(color, level) {
- let rgb = hexToRgb(color)
- for (let i = 0; i < 3; i++) {
- rgb[i] = Math.floor(rgb[i] * (1 - level))
- }
- return rgbToHex(rgb[0], rgb[1], rgb[2])
-}
diff --git a/ruoyi-ui/src/utils/validate.js b/ruoyi-ui/src/utils/validate.js
deleted file mode 100644
index 6a4c0c5..0000000
--- a/ruoyi-ui/src/utils/validate.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * 路径匹配器
- * @param {string} pattern
- * @param {string} path
- * @returns {Boolean}
- */
-export function isPathMatch(pattern, path) {
- const regexPattern = pattern.replace(/\//g, '\\/').replace(/\*\*/g, '.*').replace(/\*/g, '[^\\/]*')
- const regex = new RegExp(`^${regexPattern}$`)
- return regex.test(path)
-}
-
-/**
- * 判断value字符串是否为空
- * @param {string} value
- * @returns {Boolean}
- */
-export function isEmpty(value) {
- if (value == null || value == "" || value == undefined || value == "undefined") {
- return true
- }
- return false
-}
-
-/**
- * 判断url是否是http或https
- * @param {string} url
- * @returns {Boolean}
- */
-export function isHttp(url) {
- return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1
-}
-
-/**
- * 判断path是否为外链
- * @param {string} path
- * @returns {Boolean}
- */
-export function isExternal(path) {
- return /^(https?:|mailto:|tel:)/.test(path)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validUsername(str) {
- const valid_map = ['admin', 'editor']
- return valid_map.indexOf(str.trim()) >= 0
-}
-
-/**
- * @param {string} url
- * @returns {Boolean}
- */
-export function validURL(url) {
- const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
- return reg.test(url)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validLowerCase(str) {
- const reg = /^[a-z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validUpperCase(str) {
- const reg = /^[A-Z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function validAlphabets(str) {
- const reg = /^[A-Za-z]+$/
- return reg.test(str)
-}
-
-/**
- * @param {string} email
- * @returns {Boolean}
- */
-export function validEmail(email) {
- const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
- return reg.test(email)
-}
-
-/**
- * @param {string} str
- * @returns {Boolean}
- */
-export function isString(str) {
- return typeof str === 'string' || str instanceof String
-}
-
-/**
- * @param {Array} arg
- * @returns {Boolean}
- */
-export function isArray(arg) {
- if (typeof Array.isArray === 'undefined') {
- return Object.prototype.toString.call(arg) === '[object Array]'
- }
- return Array.isArray(arg)
-}
diff --git a/ruoyi-ui/src/views/corpusManger/corpus/components/CategoryTree.vue b/ruoyi-ui/src/views/corpusManger/corpus/components/CategoryTree.vue
deleted file mode 100644
index 111002c..0000000
--- a/ruoyi-ui/src/views/corpusManger/corpus/components/CategoryTree.vue
+++ /dev/null
@@ -1,291 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
{{ data.categoryName }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 确定
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/corpus/components/CorpusList.vue b/ruoyi-ui/src/views/corpusManger/corpus/components/CorpusList.vue
deleted file mode 100644
index bb2ccc3..0000000
--- a/ruoyi-ui/src/views/corpusManger/corpus/components/CorpusList.vue
+++ /dev/null
@@ -1,331 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 播放
- 下载
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 选取文件
-
-
- 支持格式:'wav'
-
-
-
-
-
-
-
-
- 取消
- 确定
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/corpus/components/StatCards.vue b/ruoyi-ui/src/views/corpusManger/corpus/components/StatCards.vue
deleted file mode 100644
index 32bdb07..0000000
--- a/ruoyi-ui/src/views/corpusManger/corpus/components/StatCards.vue
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
-
-
-
-
-
-
-
{{ item.label }}
-
{{ item.value }}
-
- 较昨日{{ item.trend }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/corpus/index.vue b/ruoyi-ui/src/views/corpusManger/corpus/index.vue
deleted file mode 100644
index 4f0cce9..0000000
--- a/ruoyi-ui/src/views/corpusManger/corpus/index.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/AudioPlayer.vue b/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/AudioPlayer.vue
deleted file mode 100644
index 9be64cb..0000000
--- a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/AudioPlayer.vue
+++ /dev/null
@@ -1,353 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ formatTime(currentTime) }}
-
-
-
-
-
-
-
-
-
-
-
- {{ formatTime(hoverTime) }}
-
-
-
-
-
{{ formatTime(duration) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/MainWorkspace.vue b/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/MainWorkspace.vue
deleted file mode 100644
index 27b38f9..0000000
--- a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/MainWorkspace.vue
+++ /dev/null
@@ -1,389 +0,0 @@
-
-
-
-
-
泛化语料
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 开始泛化
-
-
- 清空
-
-
-
-
- 泛化语料列表
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 文本与参数配置
-
-
-
-
-
- {{ tag }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 开始合成
-
-
- 清空
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/StatCards.vue b/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/StatCards.vue
deleted file mode 100644
index dd4656b..0000000
--- a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/StatCards.vue
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-
-
-
-
-
-
-
{{ item.label }}
-
{{ item.value }}
-
- 较昨日{{ item.trend }}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/TaskList.vue b/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/TaskList.vue
deleted file mode 100644
index e8f2345..0000000
--- a/ruoyi-ui/src/views/corpusManger/speech_synthesis/components/TaskList.vue
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-
- 合成任务列表
-
-
-
-
- {{ tab.label }}
-
-
-
-
-
-
-
-
-
-
- {{ row.statusName }}
-
-
-
-
-
- {{ formatTime(scope.row.audioDuration) }}
-
-
-
-
- 播放
- 删除
-
-
-
- ...
-
-
-
-
- 下载
-
-
- 保存
-
-
- 重新生成
-
-
-
-
-
-
-
-
- 共 {{ totalTasks }} 条
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 确定
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/corpusManger/speech_synthesis/index.vue b/ruoyi-ui/src/views/corpusManger/speech_synthesis/index.vue
deleted file mode 100644
index 4b9dac6..0000000
--- a/ruoyi-ui/src/views/corpusManger/speech_synthesis/index.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/profile/index.vue b/ruoyi-ui/src/views/device/profile/index.vue
deleted file mode 100644
index 34443c3..0000000
--- a/ruoyi-ui/src/views/device/profile/index.vue
+++ /dev/null
@@ -1,508 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 新增
-
-
-
- 修改
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ controlModuleList.find(item => item.value === scope.row.deviceModel)?.label }}
-
-
-
-
-
-
- 修改
-
- 删除
-
-
-
-
-
-
-
-
-
edit=false"
- @open="getDeviceList">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/Camera/index.vue b/ruoyi-ui/src/views/device/register/components/Camera/index.vue
deleted file mode 100644
index 466ccb9..0000000
--- a/ruoyi-ui/src/views/device/register/components/Camera/index.vue
+++ /dev/null
@@ -1,330 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/ControlCard/index.vue b/ruoyi-ui/src/views/device/register/components/ControlCard/index.vue
deleted file mode 100644
index 1590fb4..0000000
--- a/ruoyi-ui/src/views/device/register/components/ControlCard/index.vue
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
{{ props.title }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/DexHand/LeftBottomHand.vue b/ruoyi-ui/src/views/device/register/components/DexHand/LeftBottomHand.vue
deleted file mode 100644
index 27d3d37..0000000
--- a/ruoyi-ui/src/views/device/register/components/DexHand/LeftBottomHand.vue
+++ /dev/null
@@ -1,431 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/DexHand/LeftTopHand.vue b/ruoyi-ui/src/views/device/register/components/DexHand/LeftTopHand.vue
deleted file mode 100644
index 5efda72..0000000
--- a/ruoyi-ui/src/views/device/register/components/DexHand/LeftTopHand.vue
+++ /dev/null
@@ -1,270 +0,0 @@
-
-
-
- {{ isCopied ? '完成' : '复制' }}
-
-

-
- {{ slider.value }}
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/DexHand/RightBottomCharts.vue b/ruoyi-ui/src/views/device/register/components/DexHand/RightBottomCharts.vue
deleted file mode 100644
index bc42122..0000000
--- a/ruoyi-ui/src/views/device/register/components/DexHand/RightBottomCharts.vue
+++ /dev/null
@@ -1,229 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/DexHand/RightTopCharts.vue b/ruoyi-ui/src/views/device/register/components/DexHand/RightTopCharts.vue
deleted file mode 100644
index 09cae93..0000000
--- a/ruoyi-ui/src/views/device/register/components/DexHand/RightTopCharts.vue
+++ /dev/null
@@ -1,162 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/DexHand/index.vue b/ruoyi-ui/src/views/device/register/components/DexHand/index.vue
deleted file mode 100644
index fd33381..0000000
--- a/ruoyi-ui/src/views/device/register/components/DexHand/index.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/Head/index.vue b/ruoyi-ui/src/views/device/register/components/Head/index.vue
deleted file mode 100644
index 3142033..0000000
--- a/ruoyi-ui/src/views/device/register/components/Head/index.vue
+++ /dev/null
@@ -1,314 +0,0 @@
-
-
-
人工头舵机控制
-
-
-
-
Yaw 预设位(左右转头)
-
- 位 {{ index + 1 }}
-
-
-
应用当前 Yaw
-
-
-
-
-

-
-
- {{ index + 1 }}
-
-
-
-
-
-
Pitch 预设位(上下点头)
-
- 位 {{ index + 1 }}
-
-
-
应用当前 Pitch
-
-
-
-
-
-
- 当前 Yaw:
- {{ servo1.toFixed(2) }}
-
-
- 当前 Pitch:
- {{ servo2.toFixed(2) }}
-
-
立即下发舵机值
-
复位到中心 (0.50, 0.50)
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/CustomGroup.js b/ruoyi-ui/src/views/device/register/components/LogicFlow/CustomGroup.js
deleted file mode 100644
index 7cc34cf..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/CustomGroup.js
+++ /dev/null
@@ -1,103 +0,0 @@
-
-import { GroupNodeModel, GroupNode } from '@logicflow/extension'
-import { recursiveFilter } from "@/utils/convertNodeRedToLogicFlow";
-
-class CustomGroupModel extends GroupNodeModel {
- initNodeData(data) {
- super.initNodeData(data);
- this.children = new Set(data.children || [])
- this.zIndex = 0;
-
- this.width = data.w + 80; // 增加内边距
- this.height = data.h + 80;
- this.x = data.x;
- this.y = data.y;
-
- setTimeout(() => {
- this.updateSize()
- const nodes = this.graphModel.nodes;
- const arr = recursiveFilter(nodes, this.id)
- arr.forEach((item) => {
- item.updateSize()
- })
- }, 0)
- }
-
- setAttributes() {
- this.text.editable = false;
- }
-
- getTextStyle() {
- const style = super.getTextStyle();
- style.fill = this.properties.style?.color || '#333';
- style.fontSize = 16;
- return style;
- }
-
- updateSize() {
- const children = []
- this.children.forEach((id) => {
- children.push(this.graphModel.getNodeModelById(id))
- });
- if (children.length === 0) return;
-
- let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
- children.forEach((node) => {
- minX = Math.min(minX, node.x - node.width / 2);
- maxX = Math.max(maxX, node.x + node.width / 2);
- minY = Math.min(minY, node.y - node.height / 2);
- maxY = Math.max(maxY, node.y + node.height / 2);
- });
-
- this.width = maxX - minX + 80; // 增加内边距
- this.height = maxY - minY + 80;
- this.x = (minX + maxX) / 2;
- this.y = (minY + maxY) / 2;
- this.setTextCoordinate(this.width, this.height, this.x, this.y)
- }
-
- setTextCoordinate(width, height, x, y) {
- const strategies = {
- "n": () => {
- this.text.x = x
- this.text.y = y - height / 2 + 20
- },
- "ne": () => {
- this.text.x = x + width / 2 - 20
- this.text.y = y - height / 2 + 20
- },
- "sw": () => {
- this.text.x = x - width / 2 + 20
- this.text.y = y + height / 2 - 20
- },
- "s": () => {
- this.text.x = x
- this.text.y = y + height / 2 - 20
- },
- "se": () => {
- this.text.x = x + width / 2 - 20
- this.text.y = y + height / 2 - 20
- },
- "default": () => {
- this.text.x = x - width / 2 + 20
- this.text.y = y - height / 2 + 20
- }
- };
- const labelPosition = this.properties.style?.['label-position'] || 'default'
- const action = strategies[labelPosition]
- action();
- }
-
- removeChild(id) {
- this.children.delete(id) // 现在可安全调用
- }
-}
-
-// 导出方法注册
-export function registerCustomGroup(lf) {
- lf.register({
- type: "customGroup",
- view: GroupNode,
- model: CustomGroupModel
- })
-}
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/config.ts b/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/config.ts
deleted file mode 100644
index 3048428..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/config.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-export const conf = {
- /**
- * 基础功能配置
- * */
- autoplay: false, // 是否自动播放,不自动播放,浏览器有限制规则
- autoplayMuted: false, // 是否自动播放(静音播放)
- videoInit: true, // 是否默认初始化video,默认初始化,默认true
- playsinline: true, // 是否启用内联播放模式,仅移动端生效
- defaultPlaybackRate: 1, // 默认播放速度(可选:0.5/0.75/1/1.5/2等)
- volume: 0.72, // 播放音量(可选:0 ~ 1)
- loop: false, // 是否循环播放,默认不循环播放
- startTime: 0, // 点播模式下,初始起播时间
- videoAttributes: {}, // video扩展属性,暂且不配置
- lang: 'zh-cn', // 播放器初始显示语言,设置为中文
- fluid: true, // 是否流式布局(宽高优先于流失布局,默认16:9)注掉上方宽高看效果
- fitVideoSize: 'fixed', // 保持容器宽/高,不做适配,按照容器来
- videoFillMode: 'auto', // 宽高不够自动底色填充(fill拉伸填充等...)
- seekedStatus: 'play', // 跳转后继续播放
- // 播放器进度条故事点信息数组
- progressDot: [
- {
- id: 0, // 唯一标识,用于删除的时候索引
- time: 30, // 展示的时间点,例子为在播放到10s钟的时候展示
- text: '进度条信息提示...', // hover的时候展示文案,可以为空
- duration: 1, // 展示时间跨度,单位为s
- style: { // 指定样式
- backgroundColor: 'white'
- }
- },
- ],
- thumbnail: null, // 进度条预览图配置,普通业务用不到
- marginControls: false, // 是否开启画面和控制栏分离模式,不开启空间多一些
- domEventType: 'default', // 响应的事件类型,不用指定,用默认的即可
- /**
- * 交互功能配置(一般使用默认即可)
- * */
- /**
- * 插件配置,根据需求自选
- * */
- icons: {}, // 使用默认的icon图标
- i18n: [], // 使用默认的中文
- // 自定义一些颜色
- commonStyle: {
- progressColor: 'green', // 整个进度条颜色
- playedColor: 'chocolate', // 已播放的进度条颜色
- volumeColor: 'pink', // 音量大小竖向滑块颜色
- },
- controls: true, // 是否使用底部控制栏,默认使用
- miniprogress: true, // 是否使用mini进度条(当底部控制栏隐藏时生效)
- screenShot: false, // 关闭截图功能
- rotate: true, // 是否使用视频旋转插件,默认不使用
- download: true, // 是否使用下载按钮,一般不用,一般自定义控制
- pip: true, // 使用使用画中画模式,默认不用
- mini: true, // 是否使用小屏幕控件
- cssFullscreen: true, // 是否使用网页样式全屏按钮开关
- playbackRate: [0.5, 1, 1.5, 2, 3], //传入倍速可选数组
- // playbackRate: true, //false,禁用倍速播放(即控制栏不显示)
- keyShortcut: false, // 是否开启快捷键模式
-}
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/index.vue b/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/index.vue
deleted file mode 100644
index 55be899..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/IPlayer/index.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlow.vue b/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlow.vue
deleted file mode 100644
index 9ba9db2..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlow.vue
+++ /dev/null
@@ -1,238 +0,0 @@
-
-
-
-
节点类型: {{ props.properties.type }}
-
-
状态:{{ stateMap[props.properties.state] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlowNode.js b/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlowNode.js
deleted file mode 100644
index fa19f30..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/customFlowNode.js
+++ /dev/null
@@ -1,134 +0,0 @@
-// 导入 HtmlNode 及其模型,为后续继承做准备
-import { HtmlNode, HtmlNodeModel } from '@logicflow/core';
-// 导入 Vue 相关方法,用于渲染组件
-import { createApp, h } from 'vue';
-import ElementPlus from 'element-plus'
-// 导入 Vue 组件
-import CustomFlow from './customFlow.vue';
-
-/**
- * 定义一个 元素的 HTML 节点类,继承自 HtmlNode
- * 该类负责在 HTML 中渲染 元素,并处理其交互逻辑
- */
-class CustomFlowHtmlNode extends HtmlNode {
- isMounted; // 标记组件是否已挂载
- r; // 渲染函数
- app; // Vue 应用实例
-
- /**
- * 构造函数
- * @param props 传递给节点的属性,包括模型、图模型等
- */
- constructor(props) {
- super(props);
- this.isMounted = false;
- // 创建 元素的渲染函数
- this.r = h(CustomFlow, {
- model: props.model,
- graphModel: props.graphModel,
- properties: {
- ...props.model.getProperties(),
- },
- text: props.model.text.value,
- });
-
- // 创建 Vue 应用实例,并指定渲染函数
- this.app = createApp({
- render: () => this.r
- });
- }
-
- /**
- * 将 HTML 内容设置到指定的根元素上
- * @param rootEl 根元素
- */
- setHtml(rootEl) {
- if (!this.isMounted) {
- this.isMounted = true;
- const node = document.createElement('div');
- node.style.width = '100%'
- node.style.height = '100%'
- rootEl.appendChild(node);
- this.app.use(ElementPlus) // 关键:单独注册ElementPlus
- this.app.mount(node);
- } else {
- this.r.component.props.properties = this.props.model.getProperties();
- }
- }
-
- /**
- * 获取节点文本内容
- * 对于元素,返回 null,因为其内容由特定组件渲染
- * @returns {null}
- */
- getText() {
- return null;
- }
-}
-
-/**
- * 定义一个元素的 HTML 模型类,继承自 HtmlNodeModel
- * 该类主要设置节点的属性和样式
- */
-class CustomFlowHtmlModel extends HtmlNodeModel {
- initNodeData(data) {
- super.initNodeData(data);
- // 仅允许从底部锚点连出
- this.sourceRules.push({
- message: '只能从输出锚点连线',
- validate: (sourceNode, targetNode, sourceAnchor) =>
- // sourceAnchor.name === 'right'
- sourceAnchor.properties.connectionType === 'source'
- });
-
- // 仅允许连接到顶部锚点
- this.targetRules.push({
- message: '只能连接到输入锚点',
- validate: (sourceNode, targetNode, targetAnchor) =>
- // targetAnchor.name === 'left'
- targetAnchor.properties.connectionType === 'target'
- });
- }
-
- /**
- * 设置节点属性
- * 包括宽度、高度、文本编辑属性等
- */
- setAttributes() {
- this.width = 200;
- this.height = 100;
- this.text.editable = false;
- }
-
- // 定义节点只有左右两个锚点. 锚点位置通过中心点和宽度算出来。
- getDefaultAnchor() {
- let _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
- return [
- // { x: x, y: y - height / 2, id: "".concat(this.id, "_0") },
- { x: x + width / 2, y: y, name: 'left', id: "".concat(this.id, "_1"), properties: { connectionType: 'target' } },
- // { x: x, y: y + height / 2, id: "".concat(this.id, "_2") },
- { x: x - width / 2, y: y, name: 'right', id: "".concat(this.id, "_3"), properties: { connectionType: 'source' } },
- ];
- }
-
- /**
- * 获取节点轮廓样式
- * 覆盖父类方法,设置 stroke 属性为 none,以适应特定的视觉效果
- * @returns {object} 节点轮廓样式
- */
- getOutlineStyle() {
- const style = super.getOutlineStyle();
- style.stroke = 'none';
- // style.hover.stroke = 'none';
- return style;
- }
-}
-
-// 导出方法注册
-export function registerCustomNode(lf) {
- lf.register({
- type: "CustomNode",
- view: CustomFlowHtmlNode,
- model: CustomFlowHtmlModel
- })
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/LogicFlow/index.vue b/ruoyi-ui/src/views/device/register/components/LogicFlow/index.vue
deleted file mode 100644
index facfd2a..0000000
--- a/ruoyi-ui/src/views/device/register/components/LogicFlow/index.vue
+++ /dev/null
@@ -1,294 +0,0 @@
-
-
-
-
实例状态:{{ stateMap[instStatus]}}
-
lfRef.translateCenter()">居中
-
lfRef.fitView()">适应屏幕
-
停止
-
暂停
-
恢复
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/JointControl.vue b/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/JointControl.vue
deleted file mode 100644
index f53b595..0000000
--- a/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/JointControl.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
- {{ formatAngle(joint.value) }}
- [{{ formatAngle(joint.min) }}, {{ formatAngle(joint.max) }}]
-
-
-
-
updateJointAngle(joint.name, value)"/>
-
- {{ formatAngle(joint.min) }}
- {{ formatAngle(joint.max) }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/UrdfViewer.vue b/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/UrdfViewer.vue
deleted file mode 100644
index bdcc52b..0000000
--- a/ruoyi-ui/src/views/device/register/components/MechanicalArm/components/UrdfViewer.vue
+++ /dev/null
@@ -1,394 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/MechanicalArm/index.vue b/ruoyi-ui/src/views/device/register/components/MechanicalArm/index.vue
deleted file mode 100644
index 558f317..0000000
--- a/ruoyi-ui/src/views/device/register/components/MechanicalArm/index.vue
+++ /dev/null
@@ -1,350 +0,0 @@
-
-
-
-
-
-
-
目标
-
-
-
-
零位姿态
-
初始位置
-
-
-
X: {{ form.x.toFixed(6) }} m
-
Y: {{ form.y.toFixed(6) }} m
-
Z: {{ form.z.toFixed(6) }} m
-
RX: {{ form.rx.toFixed(6) }} deg
-
RY: {{ form.ry.toFixed(6) }} deg
-
RZ: {{ form.rz.toFixed(6) }} deg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/Microphone/index.vue b/ruoyi-ui/src/views/device/register/components/Microphone/index.vue
deleted file mode 100644
index fa76496..0000000
--- a/ruoyi-ui/src/views/device/register/components/Microphone/index.vue
+++ /dev/null
@@ -1,225 +0,0 @@
-
-
-
远程麦克风
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/Motor/index.vue b/ruoyi-ui/src/views/device/register/components/Motor/index.vue
deleted file mode 100644
index 8ecf371..0000000
--- a/ruoyi-ui/src/views/device/register/components/Motor/index.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
- 电机pic
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/Speaker/index.vue b/ruoyi-ui/src/views/device/register/components/Speaker/index.vue
deleted file mode 100644
index f29bf07..0000000
--- a/ruoyi-ui/src/views/device/register/components/Speaker/index.vue
+++ /dev/null
@@ -1,276 +0,0 @@
-
-
-
远程扬声器
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ Math.round(volume) }}%
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/AudioPlayer.vue b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/AudioPlayer.vue
deleted file mode 100644
index be36efc..0000000
--- a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/AudioPlayer.vue
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
{{ formattedDuration }}"
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/chat.vue b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/chat.vue
deleted file mode 100644
index aaf1aca..0000000
--- a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/chat.vue
+++ /dev/null
@@ -1,699 +0,0 @@
-
-
-
-
-
-
- {{ queryText }}
-
-
-
-
-
{{ `我是${aiName}助手,很高兴见到你` }}
-
我可以帮你合成音色,请把你的任务交给我吧~
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/ai.png b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/ai.png
deleted file mode 100644
index 79bbe45..0000000
Binary files a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/ai.png and /dev/null differ
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/user.png b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/user.png
deleted file mode 100644
index 481f7e7..0000000
Binary files a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/img/user.png and /dev/null differ
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/index.vue b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/index.vue
deleted file mode 100644
index 94b9003..0000000
--- a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/index.vue
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/soundRecording.vue b/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/soundRecording.vue
deleted file mode 100644
index 5b2a05b..0000000
--- a/ruoyi-ui/src/views/device/register/components/SpeechSynthesis/soundRecording.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/TouchInteraction/ai.png b/ruoyi-ui/src/views/device/register/components/TouchInteraction/ai.png
deleted file mode 100644
index 79bbe45..0000000
Binary files a/ruoyi-ui/src/views/device/register/components/TouchInteraction/ai.png and /dev/null differ
diff --git a/ruoyi-ui/src/views/device/register/components/TouchInteraction/index.vue b/ruoyi-ui/src/views/device/register/components/TouchInteraction/index.vue
deleted file mode 100644
index 08788ae..0000000
--- a/ruoyi-ui/src/views/device/register/components/TouchInteraction/index.vue
+++ /dev/null
@@ -1,512 +0,0 @@
-
-
-
触控交互
-
-
-
![Source Image]()
-
-
-
-
-
- select file
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/register/components/TouchInteraction/zsj.png b/ruoyi-ui/src/views/device/register/components/TouchInteraction/zsj.png
deleted file mode 100644
index 481f7e7..0000000
Binary files a/ruoyi-ui/src/views/device/register/components/TouchInteraction/zsj.png and /dev/null differ
diff --git a/ruoyi-ui/src/views/device/register/components/index.js b/ruoyi-ui/src/views/device/register/components/index.js
deleted file mode 100644
index 93584d6..0000000
--- a/ruoyi-ui/src/views/device/register/components/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import {controlPageList} from "@/enum/index.js";
-import {ElMessage} from "element-plus";
-import router from "@/router";
-
-export const intoControlPage = (path, params) => {
- if (!controlPageList.includes(path)) {
- ElMessage.warning('该页面不在控制台页面中,无法打开');
- return
- }
- // const fullPath = `${window.location.origin}${path}/${params}`;
- // // 使用 window.open 在新标签页中打开
- // window.open(fullPath, '_blank');
- const fullPath = `${path}/${params}`; // 构造路由路径
- router.push(fullPath); // 使用路由跳转
-}
-
-// 定义需要转换的属性列表
-const propertiesToConvert = [
- "workModule",
- "posStep",
- "postureStep",
- "jointStep",
- "joint1",
- "joint2",
- "joint3",
- "joint4",
- "joint5",
- "joint6",
- "x",
- "y",
- "z",
- "rx",
- "ry",
- "rz"
-];
-export const formatNumber = (data) => {
- const res = JSON.parse(JSON.stringify(data));
-// 遍历属性列表并转换值
- propertiesToConvert.forEach(property => {
- if (data[property] !== null) {
- res[property] = Number(data[property]);
- }
- });
- return res
-}
-
-//对象中存在数字类型属性时,转换为字符串类型
-export const convertNumbersToStrings = (obj) => {
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- const value = obj[key];
- // 检查值是否不是 null 且是数字类型
- if (value !== null && typeof value === 'number') {
- obj[key] = String(value); // 转换为字符串
- }
- }
- }
- return obj;
-}
diff --git a/ruoyi-ui/src/views/device/register/index.vue b/ruoyi-ui/src/views/device/register/index.vue
deleted file mode 100644
index 7520614..0000000
--- a/ruoyi-ui/src/views/device/register/index.vue
+++ /dev/null
@@ -1,414 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 新增
-
-
-
- 修改
-
-
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ controlModuleList.find(item => item.value === scope.row.deviceModel)?.label }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
-
- 示教
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/device/robotManger/ContextMenu.vue b/ruoyi-ui/src/views/device/robotManger/ContextMenu.vue
deleted file mode 100644
index ab47455..0000000
--- a/ruoyi-ui/src/views/device/robotManger/ContextMenu.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/robotManger/TechButtonWithLine.vue b/ruoyi-ui/src/views/device/robotManger/TechButtonWithLine.vue
deleted file mode 100644
index a2a3526..0000000
--- a/ruoyi-ui/src/views/device/robotManger/TechButtonWithLine.vue
+++ /dev/null
@@ -1,547 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/robotManger/index.vue b/ruoyi-ui/src/views/device/robotManger/index.vue
deleted file mode 100644
index 058ce86..0000000
--- a/ruoyi-ui/src/views/device/robotManger/index.vue
+++ /dev/null
@@ -1,874 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ isTreeCollapsed ? '>' : '<' }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/terminal/index.vue b/ruoyi-ui/src/views/device/terminal/index.vue
deleted file mode 100644
index b47886d..0000000
--- a/ruoyi-ui/src/views/device/terminal/index.vue
+++ /dev/null
@@ -1,316 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 新增
-
-
-
- 修改
-
-
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
-
-
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/error/401.vue b/ruoyi-ui/src/views/error/401.vue
deleted file mode 100644
index 1ba3792..0000000
--- a/ruoyi-ui/src/views/error/401.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
- 返回
-
-
-
-
- 401错误!
-
- 您没有访问权限!
- 对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/error/404.vue b/ruoyi-ui/src/views/error/404.vue
deleted file mode 100644
index f205303..0000000
--- a/ruoyi-ui/src/views/error/404.vue
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-
-
-
-
- 404错误!
-
-
- {{ message }}
-
-
- 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。
-
-
- 返回首页
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/components/MetricCategory.vue b/ruoyi-ui/src/views/evaluate/il/speech/components/MetricCategory.vue
deleted file mode 100644
index 086b6ce..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/components/MetricCategory.vue
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
一级指标
-
{{ category.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/components/MetricForm.vue b/ruoyi-ui/src/views/evaluate/il/speech/components/MetricForm.vue
deleted file mode 100644
index c408fd9..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/components/MetricForm.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/components/ScoreTable.vue b/ruoyi-ui/src/views/evaluate/il/speech/components/ScoreTable.vue
deleted file mode 100644
index a54f136..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/components/ScoreTable.vue
+++ /dev/null
@@ -1,341 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ test(props.title) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ test(props.title) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/index.vue b/ruoyi-ui/src/views/evaluate/il/speech/index.vue
deleted file mode 100644
index c994ae1..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/index.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/indicator.vue b/ruoyi-ui/src/views/evaluate/il/speech/indicator.vue
deleted file mode 100644
index 98248b1..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/indicator.vue
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/speech/secondaryIndicator.vue b/ruoyi-ui/src/views/evaluate/il/speech/secondaryIndicator.vue
deleted file mode 100644
index b1d7b08..0000000
--- a/ruoyi-ui/src/views/evaluate/il/speech/secondaryIndicator.vue
+++ /dev/null
@@ -1,290 +0,0 @@
-
-
-
-
-
-
二级指标
-
指标名称:{{ props.name }}
-
-
指标权重:{{ props.weight }}%
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
- handleEditTab($event, item)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/components/MetricCategory.vue b/ruoyi-ui/src/views/evaluate/il/touch/components/MetricCategory.vue
deleted file mode 100644
index 10db221..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/components/MetricCategory.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
-
一级指标
-
{{ category.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/components/MetricForm.vue b/ruoyi-ui/src/views/evaluate/il/touch/components/MetricForm.vue
deleted file mode 100644
index dd6e0e3..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/components/MetricForm.vue
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/components/ScoreTable.vue b/ruoyi-ui/src/views/evaluate/il/touch/components/ScoreTable.vue
deleted file mode 100644
index 24d2cc7..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/components/ScoreTable.vue
+++ /dev/null
@@ -1,341 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ test(props.title) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ test(props.title) }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/index.vue b/ruoyi-ui/src/views/evaluate/il/touch/index.vue
deleted file mode 100644
index 2e86e45..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/index.vue
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/indicator.vue b/ruoyi-ui/src/views/evaluate/il/touch/indicator.vue
deleted file mode 100644
index 5e15c0d..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/indicator.vue
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/evaluate/il/touch/secondaryIndicator.vue b/ruoyi-ui/src/views/evaluate/il/touch/secondaryIndicator.vue
deleted file mode 100644
index 7e08488..0000000
--- a/ruoyi-ui/src/views/evaluate/il/touch/secondaryIndicator.vue
+++ /dev/null
@@ -1,293 +0,0 @@
-
-
-
-
-
-
二级指标
-
指标名称:{{ props.name }}
-
-
指标权重:{{ props.weight }}%
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.name }}
- handleEditTab($event, item)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/flow/components/Aside.vue b/ruoyi-ui/src/views/flow/components/Aside.vue
deleted file mode 100644
index 3d90731..0000000
--- a/ruoyi-ui/src/views/flow/components/Aside.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
![]()
- {{ node.name }}
-
-
{{ node.desc }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/FormItemRecursive.vue b/ruoyi-ui/src/views/flow/components/FormItemRecursive.vue
deleted file mode 100644
index d466bb3..0000000
--- a/ruoyi-ui/src/views/flow/components/FormItemRecursive.vue
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/NodeState.vue b/ruoyi-ui/src/views/flow/components/NodeState.vue
deleted file mode 100644
index 201e671..0000000
--- a/ruoyi-ui/src/views/flow/components/NodeState.vue
+++ /dev/null
@@ -1,176 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
{{ getStateText() }}
-
- {{ props.runtimes }}ms
-
-
-
- {{ popoverVisible ? "隐藏结果" : "展示结果" }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/flow/components/NodeTitle.vue b/ruoyi-ui/src/views/flow/components/NodeTitle.vue
deleted file mode 100644
index 82022b3..0000000
--- a/ruoyi-ui/src/views/flow/components/NodeTitle.vue
+++ /dev/null
@@ -1,271 +0,0 @@
-
-
-
-
-
![]()
-
-
- {{ localName }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ props.nodeDesc }}
-
-
-
-
diff --git a/ruoyi-ui/src/views/flow/components/OuterNode.vue b/ruoyi-ui/src/views/flow/components/OuterNode.vue
deleted file mode 100644
index 1da9764..0000000
--- a/ruoyi-ui/src/views/flow/components/OuterNode.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/ParamsDrawer.vue b/ruoyi-ui/src/views/flow/components/ParamsDrawer.vue
deleted file mode 100644
index b071c70..0000000
--- a/ruoyi-ui/src/views/flow/components/ParamsDrawer.vue
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/TestRun.vue b/ruoyi-ui/src/views/flow/components/TestRun.vue
deleted file mode 100644
index 9e3bbb6..0000000
--- a/ruoyi-ui/src/views/flow/components/TestRun.vue
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
-
-
- {{ row.name }}
- *
-
-
-
-
- {{ scope.row.type }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 关闭
- 确定
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/BasicNodeParams.vue b/ruoyi-ui/src/views/flow/components/params/BasicNodeParams.vue
deleted file mode 100644
index ee8eef7..0000000
--- a/ruoyi-ui/src/views/flow/components/params/BasicNodeParams.vue
+++ /dev/null
@@ -1,348 +0,0 @@
-
-
-
-
-
- 输入参数
- addFormItem(e, 'nodeParams')" class="addFormItem">
-
-
-
-
-
-
-
-
-
-
-
- 输出参数
- addFormItem(e, 'outputParams')"
- class="addFormItem">
-
-
-
-
-
-
-
- deleteTopLevelItem(path, 'outputParams')" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 取消
- 确认
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/CodeNodeParams.vue b/ruoyi-ui/src/views/flow/components/params/CodeNodeParams.vue
deleted file mode 100644
index cbd1829..0000000
--- a/ruoyi-ui/src/views/flow/components/params/CodeNodeParams.vue
+++ /dev/null
@@ -1,463 +0,0 @@
-
-
-
-
-
- 输入参数
-
-
-
-
-
-
-
-
-
-
-
- 输出参数
-
-
-
- addFormItem(e, 'outputParams')"
- class="addFormItem"
- >
-
-
-
-
-
- deleteTopLevelItem(path, 'outputParams')"
- />
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/HttpNodeParams.vue b/ruoyi-ui/src/views/flow/components/params/HttpNodeParams.vue
deleted file mode 100644
index 761d62d..0000000
--- a/ruoyi-ui/src/views/flow/components/params/HttpNodeParams.vue
+++ /dev/null
@@ -1,654 +0,0 @@
-
-
-
-
-
- 请求配置
-
-
-
-
-
-
-
-
- Header配置
- addHttpNodeFormItem(e, 'headers')"
- class="addFormItem">
-
-
-
-
-
-
-
-
-
- Param配置
- addHttpNodeFormItem(e, 'params')"
- class="addFormItem">
-
-
-
-
-
-
-
-
-
- Body配置
- addHttpNodeFormItem(e, 'body')"
- class="addFormItem"
- v-if="httpNodeData?.body?.type === 'form-data'"
- >
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/RecognizeNodeParams.vue b/ruoyi-ui/src/views/flow/components/params/RecognizeNodeParams.vue
deleted file mode 100644
index 8ece251..0000000
--- a/ruoyi-ui/src/views/flow/components/params/RecognizeNodeParams.vue
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- visibleChange(visible, index, property.quote)"
- @change="(value) => cascaderChange(value, index, RecognizeNodeData, 'nodeParams')" />
-
-
-
-
-
-
-
- 告警级别
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 输出参数
-
-
-
- addRecognizeItem(e)" class="addFormItem">
-
-
-
-
-
-
-
- deleteRecognizeItem(path, 'outputParams')" />
-
-
-
-
-
-
-
-
-
-
diff --git a/ruoyi-ui/src/views/flow/components/params/SdAgentNodeParams.vue b/ruoyi-ui/src/views/flow/components/params/SdAgentNodeParams.vue
deleted file mode 100644
index 749fa9c..0000000
--- a/ruoyi-ui/src/views/flow/components/params/SdAgentNodeParams.vue
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-
-
-
-
-
-
- 输出参数
-
-
-
- addSdAgentItem(e)" class="addFormItem">
-
-
-
-
-
-
-
- deleteSdAgentItem(path, 'outputParams')" />
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/StartParams.vue b/ruoyi-ui/src/views/flow/components/params/StartParams.vue
deleted file mode 100644
index 1e49b23..0000000
--- a/ruoyi-ui/src/views/flow/components/params/StartParams.vue
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
- 输入参数
- addFormItem(e, 'inputParams')" class="addFormItem">
-
-
-
-
-
-
- deleteTopLevelItem(path, 'inputParams')" />
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/components/params/useQuote.js b/ruoyi-ui/src/views/flow/components/params/useQuote.js
deleted file mode 100644
index 385ea04..0000000
--- a/ruoyi-ui/src/views/flow/components/params/useQuote.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import { ref } from 'vue'
-import { getInput } from '@/utils/flow'
-
-export function useQuote(nodeId) {
- const quoteOptions = ref([])
- const cascaderRefs = ref([])
-
- const handleTypeChange = (index, formData, type = 'default') => {
- // 根据节点类型处理不同数据源
- // 这里简化为通用逻辑,具体实现需根据实际数据结构调整
- if (formData.nodeParams[index].type === 'input') {
- formData.nodeParams[index].quote = ''
- } else {
- formData.nodeParams[index].input = ''
- const option = getInput(nodeId)
- if (option) quoteOptions.value = option
- }
- }
-
- const cascaderChange = (value, index, formData, field = 'nodeParams') => {
- const selectedOptions = cascaderRefs.value[index]?.getCheckedNodes(true)
- if (selectedOptions && selectedOptions.length) {
- formData[field][index].quote = value
- formData[field][index].quoteType = selectedOptions[0].data.type
- }
- }
-
- const visibleChange = (visible, index, currentQuote, formData, field = 'nodeParams') => {
- if (visible) {
- const option = getInput(nodeId)
- if (option) {
- quoteOptions.value = option
- const currentValue = [...currentQuote]
- if (cascaderRefs.value[index] && currentValue.length > 0) {
- setTimeout(() => {
- formData[field][index].quote = []
- setTimeout(() => {
- formData[field][index].quote = currentValue
- }, 0)
- }, 0)
- }
- }
- }
- }
-
- return {
- quoteOptions,
- cascaderRefs,
- handleTypeChange,
- cascaderChange,
- visibleChange
- }
-}
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/flow/config.js b/ruoyi-ui/src/views/flow/config.js
deleted file mode 100644
index 68ce3a3..0000000
--- a/ruoyi-ui/src/views/flow/config.js
+++ /dev/null
@@ -1,794 +0,0 @@
-import { Group, SelectionSelect } from "@logicflow/extension";
-import { registerCommon } from "./nodes/common/index";
-
-import { registerFunction } from './nodes/function'
-
-import cameraSvg from './icon/camera.svg'
-import videoSvg from './icon/video.svg'
-import loopSvg from './icon/loop.svg'
-import stopLoopSvg from './icon/stopLoop.svg'
-import switchSvg from './icon/switch.svg'
-import startSvg from './icon/start.svg'
-import endSvg from './icon/end.svg'
-import microphoneSvg from './icon/microphone.svg'
-import sleepSvg from './icon/sleep.svg'
-import planSvg from './icon/plan.svg'
-import awakenSvg from './icon/awaken.svg'
-import dialogueSvg from './icon/dialogue.svg'
-import audioSvg from './icon/audio.svg'
-import touchSvg from './icon/touch.svg'
-import expressionSvg from './icon/expression.svg'
-
-import { v4 as randomUUID } from 'uuid'
-
-export const lfConfig = {
- idGenerator: () => {
- // 生成标准UUID并移除连字符
- // return crypto.randomUUID().replace(/-/g, '');
- return randomUUID().replace(/-/g, '')
- },
- background: {
- backgroundColor: "#f6f8fa",
- },
- grid: false,
- plugins: [Group, SelectionSelect],
- animation: true,
- adjustEdgeStartAndEnd: false,
- // multipleSelectKey: "ctrl",
- // disabledTools: ["multipleSelect"],
- partial: true,
- // group: {
- // foldable: true, // 启用折叠功能
- // foldSize: 30, // 折叠后显示的图标尺寸
- // },
- edgeType: "bezier",
- zoomConfig: {
- min: 0.05, // 最小缩放比例(支持更小值,如 0.01,但不建议过小)
- max: 3, // 最大缩放比例(可自定义)
- step: 0.1 // 每次滚轮缩放的步长(默认 0.1)
- },
- style: {
- anchor: {
- show: true, // 强制全局锚点显示
- hoverOn: false,
- visibility: "visible",
- fill: "#FF5722", // 实心绿色
- stroke: "#FF5722", // 边框同色
- strokeWidth: 0, // 消除边框
- r: 7, // 锚点半径
- hover: { fill: "#FF5722" }, // 禁用悬停变色
- },
- anchorLine: {
- stroke: "#FF5722",
- strokeWidth: 2,
- strokeDasharray: "3,2",
- },
- bezier: {
- stroke: "#FF5722",
- strokeWidth: 2,
- arrow: false, // 关闭箭头显示
- animation: true, // 开启动画效果
- animationSpeed: 3,
- },
- },
-};
-
-// 注册自定义节点
-export const registerCustomizeNode = (lf) => {
- registerCommon(lf)
- registerFunction(lf)
-};
-
-const deviceOptions = () => {
- return [{
- value: 'cam1',
- label: 'cam1'
- }, {
- value: 'cam2',
- label: 'cam2'
- }, {
- value: 'cam3',
- label: 'cam3'
- }, {
- value: 'cam4',
- label: 'cam4'
- }]
-}
-
-const audioOptions = () => {
- return [{
- value: 'spk1',
- label: 'spk1'
- }]
-}
-
-const httpMethodOptions = () => {
- return [{
- value: 'POST',
- label: 'POST'
- }, {
- value: 'GET',
- label: 'GET'
- }, {
- value: 'PUT',
- label: 'PUT'
- }, {
- value: 'DELETE',
- label: 'DELETE'
- }]
-}
-
-const expressOptions = () => {
- return [{
- value: 1,
- label: '高兴'
- }, {
- value: 2,
- label: '惊讶'
- }, {
- value: 3,
- label: '愤怒'
- }, {
- value: 4,
- label: '悲伤'
- }, {
- value: 5,
- label: '睡觉'
- }, {
- value: 6,
- label: '打哈欠'
- }]
-}
-
-const taskTypeOptions = () => {
- return [{
- value: 'voice',
- label: '语音交互'
- }, {
- value: 'touch',
- label: '触控交互'
- }]
-}
-
-const voiceOptions = () => {
- return [{
- value: 'x4_xiaoyan',
- label: 'x4_xiaoyan'
- }]
-}
-
-const inspectionEventTypes = () => {
- return [{
- value: 'No-Glove',
- label: '没戴手套'
- }, {
- value: 'No-Helmet-Glove',
- label: '没戴头盔'
- }]
-}
-
-export const collapseList = [
- {
- collapseTitle: "相机",
- nodeList: [
- {
- icon: cameraSvg,
- name: "开启相机",
- type: "serviceNode",
- desc: "在获取相机照片时,需要先启动相机",
- action: 'CAMERA_START',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: cameraSvg,
- name: "获取图片",
- type: "serviceNode",
- desc: "获取相机拍摄的照片",
- action: 'CAMERA_GETRGBIMAGE',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true }
- ],
- outputType: 'img',
- outputParams: [{ name: 'imageUrl', type: 'array', desc: '图片地址数组', children: [], disabled: true }]
- },
- {
- icon: cameraSvg,
- name: "关闭相机",
- type: "serviceNode",
- desc: "获取相机照片后,关闭该相机",
- action: 'CAMERA_STOP',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- ],
- },
- {
- collapseTitle: "录像",
- nodeList: [
- {
- icon: videoSvg,
- name: "开启录像",
- type: "serviceNode",
- desc: "开启摄像头,并开始录像",
- action: 'CAMERA_RECORDING_START',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: videoSvg,
- name: "结束录像",
- type: "serviceNode",
- desc: "停止录像,并关闭摄像头",
- action: 'CAMERA_RECORDING_STOP',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: deviceOptions(), disabled: true }
- ],
- outputType: 'video',
- outputParams: [{ name: 'videoUrl', type: 'array', children: [], desc: '视频播放地址数组', disabled: true}]
- }
- ],
- },
- {
- collapseTitle: "功能",
- nodeList: [
- {
- icon: loopSvg,
- name: "循环",
- type: "loop",
- action: 'START_LOOP',
- desc: "实现对列表对象循环执行一系列任务",
- nodeParams: [{ name: "loopNum", type: "input", input: null, quote: "" }],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: stopLoopSvg,
- name: "结束循环",
- type: "stopLoop",
- action: 'STOP_LOOP',
- desc: "用于立即终止当前所在的循环,跳出循环体",
- },
- // {
- // icon: startSvg,
- // name: "单次循环开始",
- // type: "subStart",
- // action: 'SUB_START',
- // desc: "循环体内部工作流的开始节点,开始循环体内部的单次流程",
- // },
- // {
- // icon: endSvg,
- // name: "单次循环结束",
- // type: "subEnd",
- // action: 'SUB_END',
- // desc: "循环体内部工作流的终止节点,结束循环体内部的单次流程",
- // },
- {
- icon: switchSvg,
- name: "分支",
- type: "branch",
- action: 'BRANCH',
- desc: "连接多个下游分支,根据设定的条件按照顺序查找的方式来匹配运行的分支,如果匹配到某条件则只运行该条件对应的分支,否则继续匹配下一条件直至结束",
- },
- {
- icon: sleepSvg,
- name: "睡眠",
- type: "sleep",
- desc: "用于睡眠整个流程,表示延迟多少毫秒",
- action: 'sleep',
- nodeParams: [
- { name: "delayMs", type: "input", componentType: 'number', input: 0, disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: expressionSvg,
- name: "HTTP请求",
- type: "http",
- desc: "HTTP请求",
- action: 'HTTP',
- nodeType: 'HTTP',
- nodeParams: [
- { name: "config", type: "input", input: "", children: [
- { name: "url", type: "input", input: "", disabled: true, required: true },
- { name: "method", type: "input", input: "POST", componentType: 'select', selectOptions: httpMethodOptions(), disabled: true },
- { name: "timeout", type: "input", input: "10000", componentType: 'number', required: false, disabled: true }
- ], disabled: true, required: true },
- { name: "headers", type: "input", input: "", children: [
- { name: "", type: "input", input: ""}
- ], disabled: true, required: true },
- { name: "params", type: "input", input: "", children: [
- { name: "", type: "input", input: ""}
- ], disabled: true, required: true },
- { name: "body", type: "input", input: "", children: [
- { name: 'bodyType', type: "input", input: "json", disabled: true },
- { name: 'json', type: "input", input: '{"a": 123}' },
- { name: 'formData', type: "input", input: "", children: []}
- ], required: true },
- ],
- outputType: 'json',
- outputParams: [{ name: 'result', type: 'Object', children: [], desc: 'HTTP请求结果'}]
- },
- {
- icon: expressionSvg,
- name: "代码",
- type: "code",
- desc: "js代码",
- action: 'CODE',
- canAddFormItem: true,
- nodeParams: [
- { name: "input", type: "input", input: "", required: true },
- { name: "code", type: "input", input: `
-// 方法定义不能修改
-function handler(params) {
- // 返回值是一个可序列化成 json 的 dict 或 object
- const result ={
- type: 2,
- message: params.input
- }
- return result
-}
- `, required: true }
- ],
- outputType: 'json',
- outputParams: [{ name: 'result', type: 'object', children: [
- {name: 'type', type: 'number', desc: '占位属性'},
- {name: 'message', type: 'string', desc: '占位属性'}
- ], desc: 'js节点返回'}]
- },
- {
- icon: microphoneSvg,
- name: "获取当前循环对象",
- type: "currentLoop",
- desc: "获取当前循环对象",
- action: 'GET_CURRENT_OBJECT',
- nodeParams: [
- { name: "array", type: "input", input: "" }
- ],
- outputType: 'json',
- outputParams: [
- { name: 'index', type: 'number', desc: '索引'},
- { name: 'object', type: 'object', children: [
- { name: 'test', type: 'string', desc: '占位属性' }
- ], desc: '当前循环对象', }
- ]
- },
- ],
- },
- {
- collapseTitle: "机器人",
- nodeList: [
- {
- icon: videoSvg,
- name: "AGV控制",
- type: "serviceNode",
- desc: "控制机器人的底盘",
- action: 'AGV_MOVE_TO_POINT',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", disabled: true },
- { name: "x", type: "input", input: "", disabled: true },
- { name: "y", type: "input", input: "", disabled: true },
- { name: "theta", type: "input", input: "", disabled: true },
- ],
- outputType: 'json'
- },
- {
- icon: videoSvg,
- name: "机械臂",
- type: "serviceNode",
- desc: "控制机器人的手臂",
- action: 'ARM_MOVE_TO_POINT',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", disabled: true },
- { name: "x", type: "input", input: "", disabled: true },
- { name: "y", type: "input", input: "", disabled: true },
- { name: "z", type: "input", input: "", disabled: true },
- { name: "rx", type: "input", input: "", disabled: true },
- { name: "ry", type: "input", input: "", disabled: true },
- { name: "rz", type: "input", input: "", disabled: true },
- { name: "velocity", type: "input", componentType: 'number', max: 5, step: 0.1, input: 0, disabled: true },
- { name: "acceleration", type: "input", componentType: 'number', max: 5, step: 0.1, input: 0, disabled: true },
- ],
- outputType: 'json'
- },
- {
- icon: cameraSvg,
- name: "开始监听报警事件",
- type: "serviceNode",
- desc: "开始监听报警事件",
- action: 'INSPECTION_ALERT_LISTEN_START',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "terminalId", type: "input", input: "", disabled: true },
- { name: "eventTypes", type: "input", input: "", componentType: 'select', selectOptions: inspectionEventTypes(), disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: cameraSvg,
- name: "结束监听报警事件",
- type: "serviceNode",
- desc: "结束监听报警事件",
- action: 'INSPECTION_ALERT_LISTEN_STOP',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "terminalId", type: "input", input: "", disabled: true },
- { name: "eventTypes", type: "input", input: "", componentType: 'select', selectOptions: inspectionEventTypes(), disabled: true }
- ],
- outputParams: [],
- outputType: 'json'
- },
- {
- icon: dialogueSvg,
- name: "巡检仪表读数识别",
- type: "recognize",
- desc: "巡检仪表读数识别",
- action: 'INSPECTION_METER_RECOGNIZE',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [
- { name: 'imageUrl', type: "input", input: "", disabled: true },
- { name: 'resultName', type: "input", input: "", disabled: true },
- { name: "alarmRules", type: "input", input: [], disabled: true }
- ],
- outputParams: []
- },
- {
- icon: cameraSvg,
- name: "人工巡检判断",
- type: "serviceNode",
- desc: "创建人工巡检判断任务",
- action: 'INSPECTION_MANUAL_REVIEW_CREATE',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "resultName", type: "input", input: "", disabled: true },
- { name: "videoUrl", type: "input", input: "", required: false, disabled: true },
- { name: "imageUrl", type: "input", input: "", required: false, disabled: true },
- { name: "reviewCriteria", type: "input", input: "", disabled: true },
- { name: "defaultAlarmLevel", type: "input", componentType: 'number', max: 3, step: 1, input: 1, disabled: true },
- ],
- outputParams: [],
- outputType: 'json'
- },
- ],
- },
- {
- collapseTitle: "音频",
- nodeList: [
- {
- icon: microphoneSvg,
- name: "启动麦克风",
- type: "serviceNode",
- desc: "用于启动麦克风的节点",
- action: 'MICROPHONE_START',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true }
- ],
- outputType: 'json'
- },
- {
- icon: microphoneSvg,
- name: "停止麦克风",
- type: "serviceNode",
- desc: "用于停止麦克风的节点",
- action: 'MICROPHONE_STOP',
- nodeType: 'EDGE',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true }
- ],
- outputType: 'json'
- },
- {
- icon: audioSvg,
- name: "播放音频",
- type: "serviceNode",
- desc: "用于播放音频的节点",
- action: 'SPEAKER_PLAYAUDIO',
- nodeParams: [
- { name: "deviceId", type: "input", input: "", componentType: 'select', selectOptions: audioOptions(), disabled: true }
- ],
- outputType: 'json'
- },
- ],
- },
- {
- collapseTitle: "大模型",
- nodeList: [
- {
- icon: microphoneSvg,
- name: "获取触控坐标",
- type: "serviceNode",
- desc: "用于获取触控坐标的节点",
- action: 'TOUCH_COORDINATES',
- nodeType: "LLM",
- nodeParams: [
- { name: "targetFeature", type: "input", input: "运动模式", disabled: true },
- { name: "manufacturer", type: "input", input: "xiaomi", disabled: true },
- { name: "vehType", type: "input", input: "su7", disabled: true },
- ],
- outputType: 'json',
- outputParams: [{ name: 'coordinates', type: 'object', children: [
- { name: 'x', type: 'number', desc: 'x坐标' },
- { name: 'y', type: 'number', desc: 'y坐标' }
- ], desc: '坐标对象', }]
- }, {
- icon: dialogueSvg,
- name: "tts语音合成",
- type: "serviceNode",
- desc: "将指令文本(text)处理合成语音,输出语音路径(audioPath)",
- action: 'GENERATE_ADVANCED_AUDIO',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [{ name: 'text', type: "input", input: "", disabled: true }],
- outputParams: [{ name: 'audioPath', type: 'string', desc: '语音路径', disabled: true}]
- }, {
- icon: dialogueSvg,
- name: "意图识别",
- type: "serviceNode",
- desc: "意图识别,输出类型(type) 1: 语音交互 2: 触控交互 3: 闲聊 4: 知识问答",
- action: 'INTENT_RECOGNITION',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [{ name: 'text', type: "input", input: "", disabled: true }],
- outputParams: [{ name: 'type', type: 'string', desc: '1:语音交互 2:触控交互 3: 闲聊 4:知识问答', disabled: true}]
- }, {
- icon: dialogueSvg,
- name: "商道智能体",
- type: "sdAgent",
- desc: "通过apiKey调用商道大模型",
- action: 'AI_AGENT_PLATFORM',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [
- { name: "config", type: "input", input: "", children: [
- { name: 'apiKey', type: "input", input: "", disabled: true },
- { name: 'text', type: "input", input: "", disabled: true },
- ]},
- { name: 'invokeTts', type: "input", input: false },
- { name: 'tts', type: "input", input: "", children: [
- { name: 'url', type: "input", input: "", disabled: true },
- { name: 'text', type: "input", input: "", disabled: true },
- { name: 'speed', type: "input", input: "", max: 100, disabled: true },
- { name: 'voice', type: "input", input: "", componentType: 'select', selectOptions: voiceOptions(), disabled: true },
- { name: 'volume', type: "input", input: "", componentType: 'number', max: 100, disabled: true }
- ], disabled: true }
- ],
- outputParams: [{ name: 'result', type: 'string', desc: '商道大模型的返回文案', disabled: true}]
- }, {
- icon: dialogueSvg,
- name: "tts语音播放",
- type: "serviceNode",
- desc: "调用tts将文案转换为语音播放",
- action: 'AI_TTS',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [
- { name: 'url', type: "input", input: "", disabled: true },
- { name: 'text', type: "input", input: "", disabled: true },
- { name: 'speed', type: "input", input: "", max: 100, disabled: true },
- { name: 'voice', type: "input", input: "", componentType: 'select', selectOptions: voiceOptions(), disabled: true },
- { name: 'volume', type: "input", input: "", componentType: 'number', max: 100, disabled: true }
- ]
- }, {
- icon: dialogueSvg,
- name: "获取当前页面名称",
- type: "serviceNode",
- desc: "获取当前页面名称",
- action: 'GET_CURRENT_PAGE',
- nodeType: "LLM",
- outputType: 'json',
- nodeParams: [
- { name: 'url', type: "input", input: "", disabled: true },
- ],
- outputParams: [{ name: 'pageName', type: 'string', desc: '当前页面名称', disabled: true}]
- }
- ],
- },
- {
- collapseTitle: "语音交互",
- nodeList: [
- {
- icon: planSvg,
- name: "方案处理",
- type: "serviceNode",
- desc: "语音交互-方案处理,输入方案id(schemeId),输出唤醒语料(wakeCorpus)和测试语料数组(testCorpus)",
- action: 'VI_SCHEME',
- nodeParams: [{ name: 'schemeId', type: "input", input: "", disabled: true }],
- outputType: 'json',
- outputParams: [
- { name: 'wakeCorpus', type: 'object', desc: '唤醒语料', children: []},
- { name: 'testCorpus', type: 'array