5d43b46155
debug(aiot): 添加工作时间参数保存的详细日志
...
问题:用户保存工作时间参数时提示"参数保存失败"
调试:添加详细console日志帮助排查问题
- 显示保存前的原始数据
- 显示参数验证过程
- 显示working_hours格式检查
- 显示请求payload
- 显示完整的错误响应
使用:打开浏览器F12控制台查看日志
2026-02-13 16:07:25 +08:00
792424717a
fix(aiot): ROI配置页面显示应用名而不是camera_code
...
问题:ROI配置页面显示camera_code(技术标识符),用户体验差
修复:
- 摄像头选择器显示应用名
- 页面标题显示应用名(如:测试区域A - ROI配置)
- camera_code仅作为后台标识符使用,不暴露给用户
影响页面:/aiot/device/roi
2026-02-13 15:52:58 +08:00
bf93a1afec
fix(aiot): 恢复摄像头管理页面应用名显示和输入 - 改善用户体验
...
- 表格恢复显示应用名和流ID列,移除用户看不懂的摄像头编码列
- 表单恢复应用名输入框,用户可输入有意义的名称(如:大堂、停车场等)
- 恢复应用名必填验证
- camera_code在后台自动生成,前端只在编辑时只读显示
- 改善用户体验:用户看到的是可理解的应用名,而不是技术编码
2026-02-13 13:29:58 +08:00
ac345a4728
feat(aiot): ROI配置页面改用cameraCode参数和截图调用
...
- 路由参数:从query读取cameraCode替代cameraId
- 移除app/stream状态变量,统一使用cameraCode
- 截图调用:getSnapUrl(cameraCode)替代getSnapUrl(app, stream)
- loadCameraOptions:使用cameraCode作为选项value和label
- onCameraSelected:直接设置cameraCode,移除app/stream赋值
- 配置推送/导出:使用cameraCode参数
- 页面标题:显示cameraCode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:34:59 +08:00
4bbc4b16dd
feat(aiot): 摄像头管理页面改用cameraCode,隐藏app输入
...
- 表格列:将"应用名"改为"摄像头编码",显示cameraCode字段
- loadRoiCounts:使用cameraCode替代app/stream拼接
- handleRoiConfig:路由query使用cameraCode替代cameraId
- handleExport:使用cameraCode导出配置
- 表单:隐藏app输入框,编辑模式显示cameraCode(只读)
- 删除确认:显示cameraCode而非app/stream
- 验证逻辑:移除app字段必填验证
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:34:34 +08:00
2583ed5335
feat(aiot): Camera接口增加cameraCode字段,getSnapUrl改用cameraCode
...
- Camera interface 增加 cameraCode?: string 字段
- getSnapUrl 函数参数从 (app, stream) 改为 (cameraCode)
- 截图URL查询参数从 app/stream 改为 cameraCode
- 配合后端 camera_code 重构计划
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:24:31 +08:00
92a6031e72
fix(aiot): 修复告警列表自动计时 - duration_ms为NULL时显示进行中
...
问题描述:
- 前端告警列表对于新触发的告警(duration_ms=null)仍然显示"5分"等具体时长
- 这是因为前端在显示时没有正确处理null值
解决方案:
- 修改 formatDuration 函数,显式检查 duration_ms 是否为 null/undefined
- 当 duration_ms 为 null 时,返回"进行中"而不是"--"
- 简化模板代码,直接调用 formatDuration 函数处理所有情况
影响范围:
- 告警列表表格的持续时长列
- 告警详情弹窗的持续时长字段
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:29:26 +08:00
b6217a8b02
feat(aiot): 优化算法参数配置界面 - 修复保存失败+精美时间选择器
...
问题修复:
1. 修复算法参数保存失败问题
- working_hours 数据格式错误(字符串数组 → 对象数组)
- 添加参数校验逻辑
- 改进错误提示(显示后端具体错误信息)
2. 全新时间段选择器组件
- WorkingHoursEditor.vue(精美可视化界面)
- 快捷模板:全天/单班制/两班制/三班制
- 可视化时间选择(TimePicker.RangePicker)
- 智能校验(时间段不重叠、结束>开始)
- 实时预览已配置时间段
核心改进:
1. AlgorithmParamEditor.vue
- 引入 WorkingHoursEditor 组件
- 特殊处理 working_hours 字段
- validateParams() 参数校验
- 改进错误提示(catch块显示详细错误)
- 增加帮助提示
2. WorkingHoursEditor.vue(新建)
- 快捷模板区域:
* 全天监控(空数组)
* 单班制(09:00-18:00)
* 两班制(09:00-12:00, 14:00-18:00)
* 三班制(08:00-16:00, 16:00-00:00, 00:00-08:00)
- 自定义时间段:
* TimePicker.RangePicker 可视化选择
* 时间段卡片展示
* 一键删除、清空全部
* 显示时长(小时+分钟)
- 智能校验:
* 结束时间 > 开始时间
* 时间段不重叠
* 实时错误提示
- 帮助说明:使用提示
UI设计亮点:
- 卡片式布局,清晰直观
- 快捷模板一键应用
- 时间段自动排序
- 空状态优化
- 响应式设计
- 精美的图标和颜色
数据格式:
before: ["09:00-18:00"] // ❌ 字符串数组
after: [{"start": "09:00", "end": "18:00"}] // ✅ 对象数组
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-12 17:31:31 +08:00
a2284d8991
feat(aiot): 告警列表-持续时长格式化 + 创建时间改为结束时间
...
API类型定义:
- Alert接口新增durationMs、lastFrameTime字段
列表展示优化:
- 持续时长列改为读取durationMs,自适应格式化(秒/分/时)
- "创建时间"列替换为"结束时间"列,显示lastFrameTime或handledAt
- 详情弹窗持续时长同步使用formatDuration格式化
2026-02-11 17:56:17 +08:00
e54fcf1f8c
feat(aiot): 告警截图展示 + 全局配置同步 + API兼容修复
...
- 告警列表新增截图缩略图列,支持预览大图
- 告警详情显示截图 URL 链接
- 摄像头管理页新增「同步全局配置」按钮
- 告警 API 路径修正: camera-summary → device-summary
- 告警 ID 兼容 alarmId 字符串格式
- Vite 代理新增 /uploads、/captures、/aiot/storage 路由
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 09:57:29 +08:00
777e52986e
fix(aiot): 修复摄像头保存失败 + 标题改为摄像头管理系统
...
- saveCamera 拆分为 addCamera/updateCamera 匹配WVP实际接口
- .env 标题改为"摄像头管理系统"
- 告警列表字段适配新三表结构
- preferences 配置调整
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-10 15:22:31 +08:00
4b54a50d8c
fix(aiot): 删除实时视频模块
...
删除 views/aiot/video 和 api/aiot/video 目录,
撤回 auth.ts 中的菜单过滤逻辑。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 11:40:56 +08:00
649d9e2a76
fix(aiot): 前端过滤 visible=false 的菜单项
...
在 fetchUserInfo 中对后端返回的菜单做递归过滤,
移除 visible=false 的菜单项,确保隐藏菜单不会显示。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 11:29:01 +08:00
f78eaa2ae1
refactor(aiot-device): 规范整理摄像头管理和 ROI 配置页面代码
...
- 摄像头管理:代码按功能分区(列表状态/编辑弹窗/数据加载/增删改/拉流控制/配置导出)
- ROI 配置:代码按功能分区(摄像头选择/截图/数据加载/绘制/选择/编辑/删除/推送)
- getSnapUrl 适配 async 调用,截图 URL 携带 access-token 认证参数
- 统一中文注释风格
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 10:25:19 +08:00
eb11e7ed1f
refactor(aiot-device): 规范整理设备 API 层和类型定义
...
- 按功能分区:摄像头管理、ROI 区域、算法管理、算法绑定、配置推送
- Camera 接口扩展完整字段(streamKey、createTime 等)
- 新增 PageResult、MediaServer 类型定义
- getSnapUrl 改为 async,通过 query param 传递 access-token 支持认证截图
- 所有 API 函数添加精确的泛型返回类型
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 10:25:03 +08:00
184bb863b0
fix(aiot): 修复 WVP 认证机制,实现自动登录和 token 管理
...
- WVP 使用独立 JWT 认证(access-token 头),与芋道 Authorization Bearer 不同
- 实现 WVP 自动登录:首次请求时自动调用 /api/user/login 获取 token
- 缓存 token 防止重复登录,401 时自动续期
- 响应拦截器自动解包 WVP {code:0, data:...} 格式
- Vite 代理新增 /aiot/device/user 和 /aiot/device/server 路由规则
- 移除已废弃的 aiot/video 代理规则
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 10:24:47 +08:00
f7bfde0135
feat(aiot-device): 摄像头管理增加增删改功能
...
- Camera 接口扩展完整字段(type、timeout、rtspType、enable 等)
- 新增 saveCamera、deleteCamera、getMediaServerList API
- 摄像头管理页面增加添加/编辑弹窗(表单含代理类型、拉流地址、RTSP方式等)
- 增加删除确认对话框
- Vite 代理增加媒体服务器 API 转发规则
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 09:51:37 +08:00
e59eb5fe65
fix(aiot): 删除静态路由文件,消除重复菜单
...
accessMode 为 backend 模式时菜单由后端接口返回,
静态路由文件 aiot.ts 导致出现两个重复的 AIoT 菜单。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-09 09:33:34 +08:00
e2bde76f20
feat(aiot-device): 重写 ROI 配置页面,迁移 WVP 画布式交互
...
从 WVP 的 roiConfig 整套组件迁移至 Vue3 + Ant Design:
ROI 配置主页面 (roi/index.vue):
- 无参数时显示摄像头选择器,有参数时直接进入配置
- 左侧画布面板 + 右侧 ROI 列表/属性/算法侧边栏
- 画矩形(拖拽)、画多边形(点击+双击完成)
- ROI 属性编辑:名称、颜色、优先级、描述
- 推送配置到边缘端
RoiCanvas 组件 (roi/components/RoiCanvas.vue):
- Canvas 叠加在摄像头截图上,归一化坐标 (0-1)
- 矩形拖拽绘制、多边形逐点绘制
- ROI 选中高亮、点击选择、右键删除
- 窗口 resize 自适应
RoiAlgorithmBind 组件 (roi/components/RoiAlgorithmBind.vue):
- 算法列表加载、绑定/解绑操作
- 启用/禁用开关、参数配置入口
AlgorithmParamEditor 组件 (roi/components/AlgorithmParamEditor.vue):
- 根据 JSON Schema 动态生成表单
- 支持 int(数字输入)、list(标签列表)、string(文本输入)
- 参数保存到后端
删除旧的 data.ts(VxeGrid 列定义,已不再使用)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 23:24:48 +08:00
b72839622e
feat(aiot-device): 重写摄像头管理页面,迁移 WVP 功能
...
从 WVP 的 cameraConfig/index.vue 迁移至 Vue3 + Ant Design:
- 搜索过滤:支持名称/地址搜索和拉流状态筛选
- 摄像头列表:显示应用名、流ID、拉流地址、状态
- ROI 数量徽标:异步加载每个摄像头的 ROI 数量
- 操作按钮:ROI 配置(跳转)、拉流/停止、导出配置
- 配置导出:JSON 文件下载
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 23:24:27 +08:00
fc56ea0f75
feat(aiot-device): 完善设备模块 API 层,对接 WVP 实际接口
...
从 WVP 项目迁移全部设备管理 API:
- 摄像头管理:列表查询、开始/停止拉流
- ROI 区域:增删改查、按摄像头查询、截图
- 算法绑定:绑定/解绑/更新参数
- 配置推送:推送到边缘端、导出配置
- 移除未使用的 PageParam 导入
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 23:24:12 +08:00
c28606df4e
feat(aiot-device): 新增摄像头代理 Vite 规则
...
WVP 的摄像头拉流代理接口位于 /api/proxy 路径下,
与 ROI/算法接口的 /api/ai 前缀不同,需单独匹配。
新增 /admin-api/aiot/device/proxy → /api/proxy 代理规则。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-08 23:23:56 +08:00
936dff610c
feat(aiot): 更新 Vite 代理规则,移除旧 ai-alert 路由
...
- 添加 4 条 aiot 代理规则:
/admin-api/aiot/alarm → 告警服务 :8000(直通)
/admin-api/aiot/edge → 告警服务 :8000(直通)
/admin-api/aiot/device → WVP :18080(rewrite 为 /api/ai)
/admin-api/aiot/video → WVP :18080(rewrite 为 /api)
- 移除旧的 /admin-api/ai-alert 和 /admin-api/video 代理规则
- 删除旧的 ai-alert 路由、视图、API 文件
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 16:41:00 +08:00
c601395a03
feat(aiot): 添加 aiot 全部业务视图页面
...
- alarm/list:告警列表(搜索、详情弹窗、处理/忽略操作)
- alarm/summary:摄像头告警汇总(跳转到对应摄像头告警列表)
- device/camera:摄像头通道管理(跳转配置 ROI)
- device/roi:ROI 区域配置列表(删除操作)
- video/live:实时视频播放(输入设备/通道 ID 播放)
- edge/node:边缘节点管理(状态徽标、运行时长、帧数统计)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 16:40:43 +08:00
159a82aaa9
feat(aiot): 搭建 aiot 前端模块路由和 API 层
...
- 新增 router/routes/modules/aiot.ts:6 个页面路由
告警列表、摄像头汇总、摄像头管理、ROI配置、实时视频、边缘节点
- 新增 api/aiot/alarm/:告警 API(分页、详情、处理、删除、统计、汇总)
- 新增 api/aiot/edge/:边缘设备 API(分页、详情、统计)
- 新增 api/aiot/device/:摄像头和 ROI API(调用 WVP 后端)
- 新增 api/aiot/video/:视频播放 API(playStart/playStop)
- 新增 api/aiot/request.ts:WVP 专用请求客户端(跳过芋道响应拦截器)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 16:40:26 +08:00
bc2f1e89c9
fix: 恢复默认主题色系,关闭租户和 API 加密
...
- 移除自定义暖黄色主题,恢复芋道默认蓝色色系
- 关闭租户功能(VITE_APP_TENANT_ENABLE=false)
- 关闭 API 加密(VITE_APP_API_ENCRYPT_ENABLE=false)
- 以上配置适配当前 FastAPI 后端(不支持租户和加密)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 16:40:08 +08:00
xingyu4j
0a7ead980a
feat: naive add AutoComplete
2026-01-26 14:59:34 +08:00
xingyu4j
cdcbd58f0e
fix: ele auto complete
2026-01-26 14:35:53 +08:00
xingyu4j
c57f3d8820
fix: ele auto complete
2026-01-26 14:34:45 +08:00
xingyu4j
02c977f969
fix: IDLPAD
2026-01-26 11:06:38 +08:00
xingyu4j
e447a8a569
chore: remove unused deps
2026-01-26 10:34:58 +08:00
xingyu4j
24b8bba754
fix: lint
2026-01-26 10:34:14 +08:00
xingyu4j
baed599fcc
Merge branch 'main' of https://github.com/vbenjs/vue-vben-admin into dev
2026-01-26 10:13:23 +08:00
YunaiV
1ce562601f
feat(iot):【网关设备:80%】动态注册的初步实现(已测试)
2026-01-25 18:50:26 +08:00
Jin Mao
b9224fc379
Merge branch 'main' into fix
2026-01-23 13:48:54 +08:00
jason
ba08820be8
Merge remote-tracking branch 'yudao/dev' into dev
2026-01-21 23:28:00 +08:00
jason
d9e933e3a6
feat: [bpm][antd] 审批签名大小控制
2026-01-21 23:25:48 +08:00
YunaiV
50216e5047
feat(iot):【设备定位】添加设备位置功能,支持地图展示和坐标选择
2026-01-21 21:10:09 +08:00
JyQAQ
6c8c49966a
Perf: 优化antd upload组件参数获取 ( #7114 )
...
* perf(antd upload params): 优化组件参数取值 确保不同调用场景配置参数可用
* perf(antd upload params): 优化组件参数取值 确保不同调用场景配置参数可用
* perf(antd upload params): 优化组件参数取值 确保不同调用场景配置参数可用
* perf(antd upload params): 优化组件参数取值 确保不同调用场景配置参数可用
2026-01-21 17:20:53 +08:00
芋道源码
4aeb7a489a
!322 refactor:【antd】【iot】将 DeviceSaveReqVO 和 DeviceRespVO 合并到 Device,简化设备 API 接口
...
Merge pull request !322 from haohaoMT/dev
2026-01-21 05:43:57 +00:00
xingyu
8571fc43b0
Merge branch 'main' into fix
2026-01-19 15:28:12 +08:00
JyQAQ
59aabd956d
Perf: Optimization of cropping component result acquisition & optimization of cropping frame prompts ( #7111 )
...
* perf(cropper): enhance image cropping functionality and add output type support
* perf(cropper): enhance image cropping functionality and add output type support
2026-01-19 14:18:36 +08:00
xingyu
9b09ba4483
Merge branch 'main' into fix
2026-01-19 10:54:43 +08:00
YunaiV
af0057940a
feat:增加 allowedHosts 变量,允许 natapp 转发,对应 https://t.zsxq.com/kSg2A
2026-01-18 17:04:03 +08:00
YunaiV
9e3d75ae65
fix:【infra】代码生成:全选不生效的问题
2026-01-18 16:20:43 +08:00
YunaiV
4cc900f542
review:【antd/ele】【mall】商城相关的代码
2026-01-18 14:43:49 +08:00
jason
db1dfae481
feat: [bpm][antd] todo 修改
2026-01-17 15:47:31 +08:00
jason
012412ec22
feat: [bpm][antd] todo 修改
2026-01-17 15:31:54 +08:00
jason
db97d414ec
feat: [bpm][antd] todo 流程监听器、流程表达式修改
2026-01-17 12:09:46 +08:00
haohao
8bf286fda0
refactor:【antd】【iot】将 DeviceSaveReqVO 和 DeviceRespVO 合并到 Device,简化设备 API 接口
2026-01-16 17:38:02 +08:00