Commit Graph

197 Commits (044ba2382dda7a348998eefb502fc290ecf27203)

Author SHA1 Message Date
YunaiV 1896c60f53 feat(mes): add MES production task issue API and improve combination record validation 2026-05-31 16:48:00 +08:00
YunaiV 61172b9a68 fix(mes): 修复 MES 迁移 review 发现的问题(B001-B032)
系统性修复 MES migration review(INDEX.md,MES-R001~R042)发现的迁移问题,
覆盖 web-antd 与 web-ele 两端,按严重级别从 P0 到 P3。

P0
- B001: DICT_TYPE/BarcodeBizTypeEnum 等常量从 'vue' 误导入致 TS2305/运行时崩溃,
  改从 @vben/constants 导入(20 个文件)。

P1
- B002 itemreceipt 入库单名称误必填;B003 条码工单选择补 CONFIRMED 过滤;
  B004 库存台账冻结开关补更新权限禁用;B005 returnsales 上架明细批次号误必填;
  B006 checkrecord/maintenrecord 计划/执行人误必填;B007 returnsales 退货行
  rqcCheckFlag 默认改回 false;B019 OQC 预填 checkQuantity 缺省取 outQuantity;
  B024 repair 完成维修态放开 finishDate 录入;B025 tool 编码管理类型库存数量锁定为 1;
  B027 详情态自动编码按钮隐藏/禁用(md/cal/dv/tm 13 模块)。

P2
- B008 IPQC 废品数量补 0 默认值;B009 共享选择器去掉 catch+console.error 吞错;
  B011 route 自定义 SFC 改 markRaw;B012 ele 自动编码按钮去 type:'default';
  B014 md 编辑态编码字段误禁用;B015 dv/subject 选择器仅展示启用项(保留历史回显);
  B016 盘点结果回填 batchId;B017 源 vue3 miscissue 业务类型字典误用 getStrDictOptions;
  B018 stocktaking/plan 盘点条件表单 schema 化;B020 清理 TODO @AI;
  B026 repair 验收信息字段按状态门控只读。

P3
- B010 QcIndicatorSelect 去吞错;B013/B019/B030/B031 componentProps、列对象多行化等
  code style;B021 自动编码循环方式列条件展示;B022 盘点结果选中清单行后字段禁用;
  B023 质检指标 resultSpecification 抽 ResultSpecificationInput 消除重复 fieldName;
  B032 barcode/batch/sn API 字段补注释。

风格统一
- getTitle 统一为「特殊态 if 提前 return + create/update 三元」(pro/card、
  stocktaking/task、repair);headerReadonly 抽 isHeaderReadonly 辅助函数对齐
  pro/workorder/transfer 写法;computed 解释注释移入 computed 内部。

验证:
- 两端 pnpm exec eslint 改动文件通过
- 两端 pnpm -F @vben/web-antd / @vben/web-ele exec vue-tsc 过滤 src/views/mes、
  api/mes 无报错
- git diff --check 通过

备注:R037(defectrecord 命名漂移)经复核为原 finding 前提有误(两端本就一致),
已 rejected,未占 MES-B 编号。R008/R009 为 disputed 待裁决。
本提交仅含 src/views/mes 与 src/api/mes 下文件,排除 .env.development、vite.config.ts、
infra/codegen、docs changelog 等无关旁支改动。
2026-05-31 10:21:23 +08:00
YunaiV 26d07e2e28 feat(member): 会员增加 email 字段 2026-05-30 22:55:27 +08:00
YunaiV 7e62f9a5ef feat: 优化 IoT 告警模板选择
- 后端 mail/sms/notify 模板 simple-list 仅返回启用模板精简字段
- 前端补充 mail/sms/notify 模板 simple-list API 封装
- vue3 与 vben antd/ele 在各自 system 模块封装模板选择组件
- IoT 告警配置按接收类型动态选择短信、邮件、站内信模板
- 补充前端 IotAlertReceiveTypeEnum,替换表单内裸常量
2026-05-30 22:06:02 +08:00
YunaiV b325db0450 feat(mes): 迁移 home 首页 2026-05-30 13:21:55 +08:00
YunaiV 753fd0e506 feat(mes): 迁移 SN 码并补齐条码业务选择器、修复库存台账
- 新增 wm/sn 模块(antd/ele):SN 码分组列表、生成弹窗、导出分组/明细、删除批次;
  api 补 generate/group-page/delete-batch/export 系列
- 补齐条码管理 USER/BATCH/PROCARD/PACKAGE 业务选择器并按源回填 bizCode/bizName
- 新增 wm/batch 选择器与详情:WmBatchSelect/Dialog(搜索补齐生产任务、模具、
  生产/有效/入库日期)、WmBatchDetail(useDescription);getBatchPage 收紧 PageParams
- 新增 pro/card 共享 API 与 ProCardSelect/Dialog
- 新增 system/user UserSelect/UserSelectDialog,部门树抽为 system/dept 共用
  DeptTreeSelect,user 列表页改用共享组件
- 修复 wm/materialstock 冻结开关 beforeChange(newFrozen, row) 签名 bug、
  批次号列可点开 WmBatchDetail、选择弹窗按 multiple 切 radio/checkbox
- 选择器 resolveItemById 去掉 try/catch+console.error,清理 TODO @AI
2026-05-30 09:59:50 +08:00
YunaiV 79af870afe feat(mes): 提交 wm outsource 相关的迁移(代码优化) 2026-05-30 09:16:33 +08:00
YunaiV b6d1154b8f feat(mes): 提交 wm stocktaking 相关的迁移 2026-05-30 09:15:06 +08:00
YunaiV 990d0a78fb feat(mes): 提交 wm outsource 相关的迁移 2026-05-30 09:04:41 +08:00
YunaiV 4b38533c6e feat(mes): 添加采购入库单及行相关接口和功能 2026-05-30 00:57:13 +08:00
YunaiV 6b6d45132f feat(mes): 完善条码管理迁移并补齐业务选择器 2026-05-30 00:51:38 +08:00
YunaiV 7ee42b9888 feat(mes): 迁移(wm-packages)相关迁移(优化代码) 2026-05-29 23:50:48 +08:00
YunaiV 25bbe79cb2 feat(mes): 迁移(wm-misc)相关迁移 2026-05-29 23:37:05 +08:00
YunaiV 93024d0061 feat(mes): 添加杂项出库单及入库单相关接口和状态枚举 2026-05-29 23:05:02 +08:00
YunaiV b2ccdf80b2 feat(mes/qc): 迁移批次追溯(batchtrace)ele 端 + antd 改用 Vben Description
- ele: 新增 mes/wm/batch API、batchtrace 主页和向前/向后追溯子组件,
  与 antd 端实现保持一致
- antd: trace-detail 改用 useDescription({ schema }) 模式,schema
  抽到 data.ts 的 useDetailSchema();trace-list 的 pagerConfig /
  rowConfig / toolbarConfig 单行展开为多行
2026-05-29 22:09:12 +08:00
YunaiV 76e9df6e8e feat(mes/qc): 迁移待检任务(pendinginspect)
迁移待检任务列表页到 antd 和 ele。新增分页查询 API,列表展示
来源单据类型、检验类型、物料、数量、供应商/工单/客户等字段。
2026-05-29 22:08:51 +08:00
YunaiV 76260e67f3 feat(mes): 迁移一部分 api 2026-05-29 19:01:15 +08:00
YunaiV cea628b1a1 feat(mes-qc): 迁移 antd 来料检验及检测结果、缺陷记录组件(代码优化) 2026-05-29 16:27:15 +08:00
YunaiV 2d1325f11a feat(mes/wm): 迁移仓库基础到 vben5 antd/ele 2026-05-29 09:59:13 +08:00
YunaiV 59cc3bbd61 feat(mes): 新增 md workstation 的迁移 2026-05-28 01:08:05 +08:00
YunaiV 5a1100aed4 feat(mes): 迁移“生产报工(pro_feedback)”的 ele 功能 2026-05-26 21:18:36 +08:00
YunaiV 4a92762d44 fix(mes): 修正安灯迁移的配置角色显示和记录只读字段 2026-05-26 00:08:46 +08:00
YunaiV 9c7986d230 feat(mes):完成“安灯(pro_andon)”的 review 2026-05-25 23:29:41 +08:00
YunaiV 6b6228bc9c feat(mes):新增“安灯(pro_andon)”的迁移 2026-05-25 22:28:23 +08:00
YunaiV 01a1d3e001 feat(mes):迁移工序定义(pro_process)、工艺路线(pro_route) 2026-05-25 09:09:14 +08:00
YunaiV 272757995e fix(iot): 修复产品、设备、规则与首页对标差异
- 对齐产品卡片默认图标和图片资源,修正产品导出文件名
- 对齐设备导入、属性历史、分组校验和物模型编辑行为
- 对齐首页统计空态、设备地图图例和快捷日期范围实现
- 对齐数据规则 source/sink 配置、Redis Stream 字段契约和场景联动选择器
- 补充空值判断工具测试,并将剩余 IoT 对标项迁入 done
2026-05-25 08:22:59 +08:00
YunaiV ab697925cf fix(iot): 修复 antd/ele 对齐评审问题
- 对齐场景联动、首页趋势、产品、设备、分组、物模型等行为
- 修复设备导入结果弹窗、分页、权限、校验规则等差异
- 收敛 antd 与 ele 的实现风格
2026-05-25 00:11:11 +08:00
YunaiV 3c592887b9 feat(mes):统一 dv、cal、md 的代码规范 2026-05-24 23:11:02 +08:00
YunaiV 8ab0c53011 Merge remote-tracking branch 'origin/master' into migration
# Conflicts:
#	apps/web-antd/src/views/iot/home/modules/message-trend-card.vue
#	apps/web-antd/src/views/iot/rule/data/sink/config/redis-stream-config-form.vue
#	apps/web-antd/src/views/mes/md/client/components/md-client-select-dialog.vue
#	apps/web-ele/src/views/iot/home/modules/message-trend-card.vue
#	apps/web-ele/src/views/iot/rule/data/sink/config/redis-stream-config-form.vue
#	apps/web-ele/src/views/iot/thingmodel/modules/input-output-param.vue
#	pnpm-lock.yaml
#	pnpm-workspace.yaml
2026-05-24 22:20:36 +08:00
YunaiV 6fb45f1ded fix(iot): 修复场景联动动态列表 key 与校验问题
- 新增 getStableObjectKey,统一处理对象列表 v-for 稳定 key
- 场景联动触发器、执行器、条件组、条件项改用稳定对象 key
- 保持场景规则 API 类型不包含 UI 专用 _key 字段
- 修复场景联动触发器/执行器校验与地图详情跳转
2026-05-24 16:43:02 +08:00
YunaiV aeff25209d fix(iot): 修复 13 处 bug 并完成 codex 三轮收口
按 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
2026-05-24 10:11:43 +08:00
YunaiV 241cf76788 fix(iot): 修复 21 处 bug(P1×15 + P2×6)
经 codex 4 轮复评定稿,antd / ele 两端同步。

P1(场景规则 / 物模型 / Modbus / Redis sink / 路由):
- B7/B8 隐藏路由 path 与 activePath 对齐 vue3 源(产品 / OTA 固件详情)
- B9 移除后端不存在的 deleteSceneRuleList 封装
- B10 物模型 number specs 恢复 min/max/step/unit 校验
- B11 物模型新增枚举项补 dataType: ENUM
- B12 物模型 struct 非空校验绑 fieldPath,array 嵌套显式覆盖
       property.dataSpecs.dataSpecsList,确保父表单 validate 触发
- B13 struct 与 input-output-param 编辑回填 cloneDeep,取消不污染原对象
- B14 Modbus Client 模式 ip/port/timeout/retryInterval 改 dependencies 条件必填
- B19 Redis sink 补 dataStructure(默认 Stream)+ Hash/ZSet 条件字段
- B20 仅 ALERT_RECOVER 强校验 alertConfigId,ALERT_TRIGGER 放行
- B21 conditionGroups 递归校验
       · 设备状态/属性 param 必填
       · CURRENT_TIME 按 operator 区分:TODAY 免、BETWEEN_TIME 双段、其它单段
       · 触发器 / 条件 / 执行器 deviceId 改显式 null/undefined 判断,
         保留「全部设备 = 0」(后端 action 支持广播执行)
- B22 事件上报条件改回普通 Input,允许标量值或留空
- B23 antd 当前时间条件 :value / @update:value 绑定 + Dayjs 类型 normalize;
       归一逻辑抽到 @vben/utils.formatDayjs(packages/@core/base/shared/utils/date.ts),
       供所有 app 复用
- B24 设备控制动作切换无条件清依赖,去掉 isInitialized 冗余守卫
- B26 JSON 参数输入先全部校验通过后再写入父表单

P2(产品 / 设备 / 物模型展示 / 数据源):
- B28 产品 deviceType 去默认值,强制用户显式选择
- B30 设备列表 DeviceName 加点击详情 slot
- B31 设备卡片显示备注名称(nickname || deviceName)
- B32 设备详情 hasLocation 改用 != null,合法 0 坐标不再判空
- B41 物模型数据定义展示顺序改为 name-value
- B46 数据源 getData() 剔除仅 UI 用的 identifierLoading 临时字段
2026-05-24 00:32:35 +08:00
xingyu4j fb2595ef90 Merge branch 'main' of https://github.com/vbenjs/vue-vben-admin 2026-05-23 18:39:12 +08:00
YunaiV 00779aacb3 feat(mes): 迁移 cal、dv、tm 的 api 2026-05-22 08:34:47 +08:00
YunaiV d1a2601b6c fix(iot): alert 模块对齐后端 VO + 搜索体验对齐 vben 实践(P1)
- alert/config API 删除多余字段 updateTime
- alert/record API 删除多余字段 deviceName / productName / processTime
- alert/record 搜索表单告警级别字段 configLevel → level ,
  对齐后端 IotAlertRecordPageReqVO.level(之前提交后端不会按级别筛选)
- alert/record 搜索表单设备字段改用 ApiSelect + getSimpleDeviceList 全量加载,
  showSearch / filterable 模糊搜索,对齐 vben 项目 13+ 处 ApiSelect 主流实践
- alert/config + alert/record 列表移除空跑 checkbox 列(无批量删除接口)
2026-05-21 16:39:30 +08:00
YunaiV 33cdfcac3c feat(im): 修管理端 3 处:群消息 atUserNicknames 类型允许 null、移除前端无效的「消息内容」查询入口、表情包宽高加表单校验 2026-05-21 15:10:22 +08:00
YunaiV 751ba2c782 feat(mes): 迁移工作站管理及设备、工具、人员关联 2026-05-21 11:10:21 +08:00
YunaiV 057ca0bfde refactor: 收敛 iot rule/scene API 的重复类型声明(P1)
- antd / ele api/iot/rule/scene,删除外层重复的 4 个 interface
- createSceneRule / updateSceneRule 入参改用 RuleSceneApi.SceneRule
- 业务文件 import 统一改用 RuleSceneApi.SceneRule / Trigger / TriggerCondition / Action
- 清理 2 处 TODO @haohao 残留注释

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 11:01:09 +08:00
YunaiV e6e15ca4ef feat(mes): 迁移客户、供应商、车间管理到 vben 2026-05-21 10:35:54 +08:00
YunaiV 0d175cbe9c fix: 修复 iot 模块 ele 端迁移阻塞的类型 / 字段问题(P0)
- ele property-selector / device-control-config,改用 ThingModelApi 命名空间引用
- ele api/iot/thingmodel,补 ThingModelTSL 类型,收敛 getThingModelTSLByProductId 返回值
- ele api/iot/rule/scene,SceneRule 补 lastTriggeredTime 字段
- ele views/iot/rule/scene/data.ts,useGridColumns 对齐 antd 的 5 列结构
- ele views/iot/home/modules/message-trend-card,ElSelect 改用 ElOption 子节点
- ele / antd api/iot/rule/scene,Action.params 类型 Record<string, any> 改为 string

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:20:30 +08:00
YunaiV b35ce18c6e feat(wms): 优化 md unit 的迁移代码 2026-05-21 09:11:58 +08:00
YunaiV b3462c3286 feat(iot): 将 antd 的 rule scene 迁移到 ele 里。 2026-05-21 08:53:16 +08:00
YunaiV 67997bd44d feat(wms): 优化 md item 的迁移代码 2026-05-21 08:09:29 +08:00
YunaiV 6b1425d541 feat(mes): 新增 md item 的迁移 2026-05-21 00:58:45 +08:00
YunaiV 250d3eb39f feat(iot): 迁移 iot 在 ele 的 api 2026-05-20 09:57:47 +08:00
YunaiV b9d333f7ec feat(mes): 同步 api 的迁移 2026-05-20 09:52:20 +08:00
YunaiV 1bdc0d992f feat(mes): 新增 md item type 的迁移 2026-05-19 22:20:13 +08:00
YunaiV 6b28518165 feat(wms):迁移 api 接口 2026-05-17 16:30:50 +08:00
YunaiV 4adce844d3 feat(wms):增加 merchant 模块的迁移 2026-05-17 10:50:34 +08:00
YunaiV 19b5f38e23 feat(wms):增加 warehouse 模块的迁移 2026-05-16 23:12:33 +08:00