按 codex 两轮 review 分批处理 IoT 模块 13 处 bug,对第二轮反馈中
B42/B47 的类型/字段问题做最终收尾,所有修复 web-antd / web-ele 两端同步。
主要修复:
- B91 设备分组:删除前校验 deviceCount,分组下有设备时弹警告
- B40 物模型 array 数据规格:从 Radio.Group @change 事件正确取值(antd)
- B42 物模型属性历史:list 写入时按 idx 生成 _rowKey,模板 row-key="_rowKey"
list 类型改 IotDeviceApi.DeviceProperty & { _rowKey: string }
匹配后端 IotDevicePropertyMapper.xml 实际返回的字段
(修掉 codex 指出的 antd row-key TS2322 与 ele 同毫秒撞键)
- B119 物模型表单:edit 模式禁用 identifier 编辑
- B47 场景规则主条件:产品/设备切换时清 deviceId/identifier/operator/value
(修掉 codex 指出的 condition.value.param TS2339,Trigger 无 param)
- B44 数据目的数据库配置:SQL 复制按钮 setTimeout 在 onBeforeUnmount 中清理
- B51 场景规则首页统计:total 取接口 result.total,其余基于当前页
- B29 产品卡片视图:图标为 URL 时改用 <img> 渲染,复用 @vben/utils 的 isHttpUrl
- B43 首页设备地图:移除过度设计的 AbortController,回归 vue3 源项目同款
InfoWindow 监听写法,querySelector 限定到 .BMap_bubble_content 子树
- B105 场景规则设备选择器:productId 变化后旧 deviceId 不在新列表则清空
- B45 通用 key-value 编辑器:v-for key 改用递增的 _uid,避免编辑/删除时 DOM 复用错乱
- B132 设备导入表单:beforeUpload 校验 .xls/.xlsx
- B126 设备详情:四个 tab 子组件 v-if 增加 device.id 守卫
附带工具收敛:
- @vben-core/shared/utils 新增 formatDayjs,统一 antd TimePicker/DatePicker
value-format 后回传的 Dayjs|string 归一
- 场景规则首页 updateStatistics 补回 JSDoc,对齐文件内其他 function 风格
验证:
- 改动文件 pnpm exec eslint 0 error
- pnpm -F @vben/web-antd / @vben/web-ele exec vue-tsc --noEmit --skipLibCheck
过滤 src/views/iot/|src/api/iot/ 均 0 hit
76 lines
2.2 KiB
JSON
76 lines
2.2 KiB
JSON
{
|
|
"name": "@vben/web-ele",
|
|
"version": "5.7.0",
|
|
"homepage": "https://vben.pro",
|
|
"bugs": "https://github.com/vbenjs/vue-vben-admin/issues",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/vbenjs/vue-vben-admin.git",
|
|
"directory": "apps/web-ele"
|
|
},
|
|
"license": "MIT",
|
|
"author": {
|
|
"name": "vben",
|
|
"email": "ann.vben@gmail.com",
|
|
"url": "https://github.com/anncwb"
|
|
},
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "pnpm vite build --mode production",
|
|
"build:analyze": "pnpm vite build --mode analyze",
|
|
"dev": "pnpm vite --mode development",
|
|
"preview": "vite preview",
|
|
"typecheck": "vue-tsc --noEmit --skipLibCheck"
|
|
},
|
|
"imports": {
|
|
"#/*": "./src/*"
|
|
},
|
|
"dependencies": {
|
|
"@form-create/designer": "catalog:",
|
|
"@form-create/element-ui": "catalog:",
|
|
"@tinymce/tinymce-vue": "catalog:",
|
|
"@vben/access": "workspace:*",
|
|
"@vben/common-ui": "workspace:*",
|
|
"@vben/constants": "workspace:*",
|
|
"@vben/hooks": "workspace:*",
|
|
"@vben/icons": "workspace:*",
|
|
"@vben/layouts": "workspace:*",
|
|
"@vben/locales": "workspace:*",
|
|
"@vben/plugins": "workspace:*",
|
|
"@vben/preferences": "workspace:*",
|
|
"@vben/request": "workspace:*",
|
|
"@vben/stores": "workspace:*",
|
|
"@vben/styles": "workspace:*",
|
|
"@vben/types": "workspace:*",
|
|
"@vben/utils": "workspace:*",
|
|
"@videojs-player/vue": "catalog:",
|
|
"@vueuse/core": "catalog:",
|
|
"@vueuse/integrations": "catalog:",
|
|
"benz-amr-recorder": "catalog:",
|
|
"bpmn-js": "catalog:",
|
|
"bpmn-js-properties-panel": "catalog:",
|
|
"bpmn-js-token-simulation": "catalog:",
|
|
"camunda-bpmn-moddle": "catalog:",
|
|
"cropperjs": "catalog:",
|
|
"dayjs": "catalog:",
|
|
"diagram-js": "catalog:",
|
|
"element-plus": "catalog:",
|
|
"fast-xml-parser": "catalog:",
|
|
"highlight.js": "catalog:",
|
|
"pinia": "catalog:",
|
|
"steady-xml": "catalog:",
|
|
"tinymce": "catalog:",
|
|
"tyme4ts": "catalog:",
|
|
"video.js": "catalog:",
|
|
"vue": "catalog:",
|
|
"vue-dompurify-html": "catalog:",
|
|
"vue-router": "catalog:",
|
|
"vue3-print-nb": "catalog:",
|
|
"vue3-signature": "catalog:",
|
|
"vuedraggable": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"unplugin-element-plus": "catalog:"
|
|
}
|
|
}
|