按 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
229 lines
5.9 KiB
YAML
229 lines
5.9 KiB
YAML
packages:
|
|
- internal/*
|
|
- internal/lint-configs/*
|
|
- packages/*
|
|
- packages/@core/base/*
|
|
- packages/@core/ui-kit/*
|
|
- packages/@core/forward/*
|
|
- packages/@core/*
|
|
- packages/effects/*
|
|
- packages/business/*
|
|
- apps/*
|
|
- scripts/*
|
|
- docs
|
|
overrides:
|
|
'@ast-grep/napi': 'catalog:'
|
|
'@ctrl/tinycolor': 'catalog:'
|
|
clsx: 'catalog:'
|
|
pinia: 'catalog:'
|
|
vue: 'catalog:'
|
|
catalog:
|
|
'@ast-grep/napi': ^0.42.1
|
|
'@changesets/changelog-github': ^0.6.0
|
|
'@changesets/cli': ^2.30.0
|
|
'@changesets/git': ^3.0.4
|
|
'@clack/prompts': ^1.2.0
|
|
'@commitlint/cli': ^20.5.0
|
|
'@commitlint/config-conventional': ^20.5.0
|
|
'@ctrl/tinycolor': ^4.2.0
|
|
'@eslint-community/eslint-plugin-eslint-comments': ^4.7.1
|
|
'@eslint/js': ^10.0.1
|
|
'@form-create/ant-design-vue': ^3.2.38
|
|
'@form-create/antd-designer': ^3.4.0
|
|
'@form-create/designer': ^3.4.0
|
|
'@form-create/element-ui': ^3.2.38
|
|
'@form-create/naive-ui': ^3.2.38
|
|
'@iconify/json': ^2.2.460
|
|
'@iconify/tailwind4': ^1.2.3
|
|
'@iconify/vue': ^5.0.0
|
|
'@intlify/core-base': ^11.3.2
|
|
'@intlify/unplugin-vue-i18n': ^11.0.7
|
|
'@jspm/generator': ^2.13.0
|
|
'@manypkg/get-packages': ^3.1.0
|
|
'@microsoft/fetch-event-source': ^2.0.1
|
|
'@nolebase/vitepress-plugin-git-changelog': ^2.18.2
|
|
'@pnpm/workspace.read-manifest': ^1000.3.1
|
|
'@stylistic/stylelint-plugin': ^5.1.0
|
|
'@tailwindcss/typography': ^0.5.19
|
|
'@tailwindcss/vite': ^4.2.2
|
|
'@tanstack/vue-store': ^0.10.0
|
|
'@tinyflow-ai/vue': ~1.1.10
|
|
'@tinymce/tinymce-vue': ^6.3.0
|
|
'@tiptap/core': ^3.22.3
|
|
'@tiptap/extension-document': ^3.22.3
|
|
'@tiptap/extension-highlight': ^3.22.3
|
|
'@tiptap/extension-image': ^3.22.3
|
|
'@tiptap/extension-link': ^3.22.3
|
|
'@tiptap/extension-placeholder': ^3.22.3
|
|
'@tiptap/extension-text-align': ^3.22.3
|
|
'@tiptap/extension-text-style': ^3.22.3
|
|
'@tiptap/extension-underline': ^3.22.3
|
|
'@tiptap/starter-kit': ^3.22.3
|
|
'@tiptap/vue-3': ^3.22.3
|
|
'@tsdown/css': ^0.21.7
|
|
'@types/archiver': ^7.0.0
|
|
'@types/codemirror': ^5.60.17
|
|
'@types/crypto-js': ^4.2.2
|
|
'@types/html-minifier-terser': ^7.0.2
|
|
'@types/json-bigint': ^1.0.4
|
|
'@types/lodash.clonedeep': ^4.5.9
|
|
'@types/markdown-it': ^14.1.2
|
|
'@types/node': ^25.6.0
|
|
'@types/nprogress': ^0.2.3
|
|
'@types/qrcode': ^1.5.6
|
|
'@types/qs': ^6.15.0
|
|
'@types/sortablejs': ^1.15.9
|
|
'@typescript-eslint/eslint-plugin': ^8.58.1
|
|
'@typescript-eslint/parser': ^8.58.1
|
|
'@vee-validate/zod': ^4.15.1
|
|
'@videojs-player/vue': ^1.0.0
|
|
'@vite-pwa/vitepress': ^1.1.0
|
|
'@vitejs/plugin-vue': ^6.0.5
|
|
'@vitejs/plugin-vue-jsx': ^5.1.5
|
|
'@vue/shared': ^3.5.32
|
|
'@vue/test-utils': ^2.4.6
|
|
'@vueuse/core': ^14.2.1
|
|
'@vueuse/integrations': ^14.2.1
|
|
'@vueuse/motion': ^3.0.3
|
|
ant-design-vue: ^4.2.6
|
|
antdv-next: ^1.1.9
|
|
archiver: ^7.0.1
|
|
axios: ^1.15.0
|
|
axios-mock-adapter: ^2.1.0
|
|
benz-amr-recorder: ^1.1.5
|
|
bpmn-js: ^17.11.1
|
|
bpmn-js-properties-panel: 5.23.0
|
|
bpmn-js-token-simulation: ^0.36.3
|
|
cac: ^7.0.0
|
|
camunda-bpmn-moddle: ^7.0.1
|
|
chalk: ^5.6.2
|
|
cheerio: ^1.2.0
|
|
circular-dependency-scanner: ^3.0.1
|
|
class-variance-authority: ^0.7.1
|
|
clsx: ^2.1.1
|
|
codemirror: ^5.65.21
|
|
commitlint-plugin-function-rules: ^4.3.2
|
|
consola: ^3.4.2
|
|
cropperjs: ^1.6.2
|
|
cross-env: ^10.1.0
|
|
crypto-js: ^4.2.0
|
|
cspell: ^10.0.0
|
|
cz-git: ^1.12.0
|
|
czg: ^1.12.0
|
|
dayjs: ^1.11.20
|
|
defu: ^6.1.7
|
|
depcheck: ^1.4.7
|
|
diagram-js: ^12.8.1
|
|
dotenv: ^17.4.1
|
|
echarts: ^6.0.0
|
|
element-plus: ^2.13.7
|
|
es-toolkit: ^1.45.1
|
|
eslint: ^10.2.0
|
|
eslint-plugin-better-tailwindcss: ^4.4.0
|
|
eslint-plugin-command: ^3.5.2
|
|
eslint-plugin-jsonc: ^3.1.2
|
|
eslint-plugin-n: ^17.24.0
|
|
eslint-plugin-perfectionist: ^5.8.0
|
|
eslint-plugin-pnpm: ^1.6.0
|
|
eslint-plugin-unicorn: ^64.0.0
|
|
eslint-plugin-unused-imports: ^4.4.1
|
|
eslint-plugin-vue: ^10.8.0
|
|
eslint-plugin-yml: ^3.3.1
|
|
execa: ^9.6.1
|
|
fast-xml-parser: ^4.5.4
|
|
find-up: ^8.0.0
|
|
get-port: ^7.2.0
|
|
globals: ^17.4.0
|
|
happy-dom: ^20.8.9
|
|
highlight.js: ^11.11.1
|
|
html-minifier-terser: ^7.2.0
|
|
is-ci: ^4.1.0
|
|
jsbarcode: ^3.12.3
|
|
jsencrypt: ^3.5.4
|
|
json-bigint: ^1.0.0
|
|
lefthook: ^2.1.5
|
|
lodash.clonedeep: ^4.5.0
|
|
lucide-vue-next: ^0.577.0
|
|
markdown-it: ^14.1.1
|
|
markmap-common: ^0.16.0
|
|
markmap-lib: ^0.16.1
|
|
markmap-toolbar: ^0.17.2
|
|
markmap-view: ^0.16.0
|
|
medium-zoom: ^1.1.0
|
|
naive-ui: ^2.44.1
|
|
nitropack: ^2.13.3
|
|
nprogress: ^0.2.0
|
|
ora: ^9.3.0
|
|
oxfmt: ^0.44.0
|
|
oxlint: ^1.59.0
|
|
oxlint-tsgolint: ^0.20.0
|
|
pinia: ^3.0.4
|
|
pinia-plugin-persistedstate: ^4.7.1
|
|
pkg-types: ^2.3.0
|
|
playwright: ^1.59.1
|
|
postcss: ^8.5.9
|
|
postcss-html: ^1.8.1
|
|
postcss-scss: ^4.0.9
|
|
publint: ^0.3.18
|
|
qrcode: ^1.5.4
|
|
qs: ^6.15.1
|
|
reka-ui: ^2.9.5
|
|
resolve.exports: ^2.0.3
|
|
rimraf: ^6.1.3
|
|
rolldown: ^1.0.0-rc.15
|
|
rollup-plugin-visualizer: ^7.0.1
|
|
sass: ^1.99.0
|
|
sass-embedded: ^1.99.0
|
|
secure-ls: ^2.0.0
|
|
sortablejs: ^1.15.7
|
|
steady-xml: ^0.1.0
|
|
stylelint: ^17.6.0
|
|
stylelint-config-recess-order: ^7.7.0
|
|
stylelint-config-recommended: ^18.0.0
|
|
stylelint-config-recommended-scss: ^17.0.1
|
|
stylelint-config-recommended-vue: ^1.6.1
|
|
stylelint-config-standard: ^40.0.0
|
|
stylelint-order: ^8.1.1
|
|
stylelint-scss: ^7.0.0
|
|
tailwind-merge: ^3.5.0
|
|
tailwindcss: ^4.2.2
|
|
tdesign-vue-next: ^1.19.0
|
|
theme-colors: ^0.1.0
|
|
tinymce: ^7.3.0
|
|
tippy.js: ^6.3.7
|
|
tsdown: ^0.21.7
|
|
turbo: ^2.9.6
|
|
tw-animate-css: ^1.4.0
|
|
tyme4ts: ^1.5.0
|
|
typescript: ^6.0.2
|
|
unplugin-dts: ^1.0.0-beta.6
|
|
unplugin-element-plus: ^0.11.2
|
|
unplugin-vue: ^7.1.1
|
|
vee-validate: ^4.15.1
|
|
video.js: ^7.21.7
|
|
vite: ^8.0.8
|
|
vite-plugin-compression: ^0.5.1
|
|
vite-plugin-lazy-import: ^1.0.7
|
|
vite-plugin-pwa: ^1.2.0
|
|
vite-plugin-vue-devtools: ^8.1.1
|
|
vitepress: ^1.6.4
|
|
vitepress-plugin-group-icons: ^1.7.3
|
|
vitest: ^4.1.4
|
|
vue: ^3.5.32
|
|
vue-dompurify-html: ^5.3.0
|
|
vue-eslint-parser: ^10.4.0
|
|
vue-i18n: ^11.3.2
|
|
vue-json-viewer: ^3.0.4
|
|
vue-router: ^5.0.4
|
|
vue-tippy: ^6.7.1
|
|
vue-tsc: ^3.2.6
|
|
vue3-print-nb: ^0.1.4
|
|
vue3-signature: ^0.2.4
|
|
vuedraggable: ^4.1.0
|
|
vxe-pc-ui: ^4.13.21
|
|
vxe-table: ^4.18.11
|
|
watermark-js-plus: ^1.6.3
|
|
yaml-eslint-parser: ^2.0.0
|
|
zod: ^3.25.76
|
|
zod-defaults: 0.1.3
|