Compare commits

...

587 Commits

Author SHA1 Message Date
YunaiV 8105cc786a (〃'▽'〃)_v2026_04_发布:新增代码生成器 Excel 导入,增强 IoT 场景联动与数据流转 2026-05-10 10:59:52 +08:00
YunaiV eb8002ce0b chore: make build scripts cross-platform
- use cross-env for NODE_OPTIONS in build commands
- align local/dev/test/stage/prod build scripts with Vite modes
- add cross-env to pnpm lockfile
2026-05-10 10:01:08 +08:00
芋道源码 9d8d0647be
!877 feat(system): 优化用户选择 UserSelectV2 布局,多选支持、默认选中当前用户支持、禁选支持、默认部门支持,可替代…
Merge pull request !877 from 半栈幼儿员/hotfix/user
2026-05-05 10:10:47 +00:00
preschooler 536e54062e feat(system): 优化用户选择 UserSelectV2 布局,多选支持、默认选中当前用户支持、禁选支持、默认部门支持,可替代项目所有位置,可移除原 UserSelectForm、UserSelect,避免一次性查询所有用户 2026-05-05 12:35:31 +08:00
芋道源码 5e937d797d
!851 feat:增加说明文案
Merge pull request !851 from steven/feat-自定义海报代码补充开发
2026-05-03 10:59:47 +00:00
芋道源码 3a1f520dc6
!876 回退 'Pull Request !870 : fix: 菜单名称过长时没有正确显示省略号'
Merge pull request !876 from 芋道源码/revert-merge-870-master
2026-05-03 10:55:53 +00:00
芋道源码 5e6b6bdd8e
回退 'Pull Request !870 : fix: 菜单名称过长时没有正确显示省略号' 2026-05-03 10:55:35 +00:00
YunaiV 53b96f87a0 Merge remote-tracking branch 'origin/feat/mes' into feat/mes 2026-05-03 18:48:25 +08:00
YunaiV b7a13a0000 ♻️ refactor(service): 优化请求拦截器中的 token 设置逻辑,简化白名单判断 2026-05-03 18:48:12 +08:00
YunaiV 6d5705b655 fix(bpm):修正流程实例审批弹窗网关分支重算的并发与提交问题
- 提交时不再用节点表单值覆盖 data.variables;与预览阶段使用同一份合并变量
- onChange 加 useDebounceFn(300ms) + 请求序号去重,handleAudit 提交前 await 最新一轮重算
- 切换任务时重置请求序号与 pending 重算
- 改用 form-create 官方 formData() 取节点表单当前值
- 双 nextTick 改为 until 等 fApi 就绪,1s 兜底超时
2026-05-03 18:48:12 +08:00
YunaiV 8571a27a15 fix: 【framework】关闭 TagsView 标签后 keep-alive 缓存未收缩,导致 DOM/JS heap 不回收
delView/delAllViews 误用 delCachedView,关闭非当前标签时会去删 currentRoute
对应的缓存,把要关的 name 留在 cachedViews 里,keep-alive include 不收缩,
旧组件实例无法 unmount。

回退到基于剩余 visitedViews 重建 cachedViews 的实现(对应 5718c7881 之前的写法);
delCachedView 自身保留 issue #180 的修复,仍供 refreshPage 使用。
2026-05-03 18:48:12 +08:00
YunaiV cdcd200c7d 【修复】form-create 单图上传规则 disabled 字段标题与默认值错配 2026-05-03 18:48:12 +08:00
YunaiV 6232330c81 【修复】IoT 场景联动:事件触发器比较值改普通文本输入,允许留空(事件发生即匹配) 2026-05-03 18:48:12 +08:00
YunaiV 418f0c4f52 🐛 fix(system):修复租户 get-by-website 接口不支持端口的问题
🐛 fix(mes):修复常见缺陷的「检测项类型」错用独立字典的问题

「常见缺陷」与「检测项设置」的「检测项类型」语义一致,应共用同一份字典;DefectForm 与列表页统一改为 MES_INDICATOR_TYPE,并清理未使用的 MES_DEFECT_TYPE 常量。
2026-05-03 18:48:12 +08:00
YunaiV 5bce60fd29 ♻️ refactor(service): 优化请求拦截器中的 token 设置逻辑,简化白名单判断 2026-05-03 18:48:04 +08:00
YunaiV beddbe7785 Merge remote-tracking branch 'origin/feat/mes' into feat/mes 2026-05-03 18:39:16 +08:00
芋道源码 2e65691737
!870 fix: 菜单名称过长时没有正确显示省略号
Merge pull request !870 from 李家辉/fix-text-overflow
2026-05-03 10:38:57 +00:00
YunaiV 95cecc8870 fix(bpm):修正流程实例审批弹窗网关分支重算的并发与提交问题
- 提交时不再用节点表单值覆盖 data.variables;与预览阶段使用同一份合并变量
- onChange 加 useDebounceFn(300ms) + 请求序号去重,handleAudit 提交前 await 最新一轮重算
- 切换任务时重置请求序号与 pending 重算
- 改用 form-create 官方 formData() 取节点表单当前值
- 双 nextTick 改为 until 等 fApi 就绪,1s 兜底超时
2026-05-03 18:38:18 +08:00
YunaiV 7a4300116e fix: 【framework】关闭 TagsView 标签后 keep-alive 缓存未收缩,导致 DOM/JS heap 不回收
delView/delAllViews 误用 delCachedView,关闭非当前标签时会去删 currentRoute
对应的缓存,把要关的 name 留在 cachedViews 里,keep-alive include 不收缩,
旧组件实例无法 unmount。

回退到基于剩余 visitedViews 重建 cachedViews 的实现(对应 5718c7881 之前的写法);
delCachedView 自身保留 issue #180 的修复,仍供 refreshPage 使用。
2026-05-03 18:38:18 +08:00
YunaiV 51542e336b 【修复】form-create 单图上传规则 disabled 字段标题与默认值错配 2026-05-03 18:38:18 +08:00
YunaiV 7f33206057 【修复】IoT 场景联动:事件触发器比较值改普通文本输入,允许留空(事件发生即匹配) 2026-05-03 18:38:18 +08:00
YunaiV 8e1430c1a4 🐛 fix(system):修复租户 get-by-website 接口不支持端口的问题
🐛 fix(mes):修复常见缺陷的「检测项类型」错用独立字典的问题

「常见缺陷」与「检测项设置」的「检测项类型」语义一致,应共用同一份字典;DefectForm 与列表页统一改为 MES_INDICATOR_TYPE,并清理未使用的 MES_DEFECT_TYPE 常量。
2026-05-03 18:38:18 +08:00
芋道源码 aafe5f12bc
!866 fix: 修复请求拦截器bug
Merge pull request !866 from funcong/fc-fix-bug
2026-05-03 10:37:47 +00:00
YunaiV 9df6828255 fix(bpm):修正流程实例审批弹窗网关分支重算的并发与提交问题
- 提交时不再用节点表单值覆盖 data.variables;与预览阶段使用同一份合并变量
- onChange 加 useDebounceFn(300ms) + 请求序号去重,handleAudit 提交前 await 最新一轮重算
- 切换任务时重置请求序号与 pending 重算
- 改用 form-create 官方 formData() 取节点表单当前值
- 双 nextTick 改为 until 等 fApi 就绪,1s 兜底超时
2026-05-03 16:34:55 +08:00
YunaiV 06e2ca3100 Merge remote-tracking branch 'origin/feat/mes' into feat/mes 2026-05-03 13:33:23 +08:00
YunaiV fa9facfa0b fix: 【framework】关闭 TagsView 标签后 keep-alive 缓存未收缩,导致 DOM/JS heap 不回收
delView/delAllViews 误用 delCachedView,关闭非当前标签时会去删 currentRoute
对应的缓存,把要关的 name 留在 cachedViews 里,keep-alive include 不收缩,
旧组件实例无法 unmount。

回退到基于剩余 visitedViews 重建 cachedViews 的实现(对应 5718c7881 之前的写法);
delCachedView 自身保留 issue #180 的修复,仍供 refreshPage 使用。
2026-05-03 13:32:43 +08:00
YunaiV 0cc2bff0f4 【修复】form-create 单图上传规则 disabled 字段标题与默认值错配 2026-05-03 13:32:43 +08:00
YunaiV 192a118823 【修复】IoT 场景联动:事件触发器比较值改普通文本输入,允许留空(事件发生即匹配) 2026-05-03 13:32:43 +08:00
YunaiV d2e82b710b 🐛 fix(system):修复租户 get-by-website 接口不支持端口的问题
🐛 fix(mes):修复常见缺陷的「检测项类型」错用独立字典的问题

「常见缺陷」与「检测项设置」的「检测项类型」语义一致,应共用同一份字典;DefectForm 与列表页统一改为 MES_INDICATOR_TYPE,并清理未使用的 MES_DEFECT_TYPE 常量。
2026-05-03 13:32:43 +08:00
芋道源码 583b409fad
!864 条件节点添加包含和不包含操作符
Merge pull request !864 from Lesan/bugfix/bpm-202602
2026-05-03 03:01:48 +00:00
YunaiV 5d0755eea9 Merge remote-tracking branch 'origin/feat/mes' into feat/mes 2026-05-03 09:20:21 +08:00
芋道源码 a698cb1635
!867 feat(iot): 前端新增 Database 数据目的配置表单
Merge pull request !867 from puhui999/master
2026-05-03 01:19:11 +00:00
YunaiV a704620f84 fix: 【framework】关闭 TagsView 标签后 keep-alive 缓存未收缩,导致 DOM/JS heap 不回收
delView/delAllViews 误用 delCachedView,关闭非当前标签时会去删 currentRoute
对应的缓存,把要关的 name 留在 cachedViews 里,keep-alive include 不收缩,
旧组件实例无法 unmount。

回退到基于剩余 visitedViews 重建 cachedViews 的实现(对应 5718c7881 之前的写法);
delCachedView 自身保留 issue #180 的修复,仍供 refreshPage 使用。
2026-05-03 00:28:27 +08:00
芋道源码 7fd0a24ca5
!875 fix(bpm):修复流程网关分支问题
Merge pull request !875 from 郭某人/master
2026-05-02 16:01:00 +00:00
YunaiV e98d575b3a 【修复】form-create 单图上传规则 disabled 字段标题与默认值错配 2026-05-02 22:56:56 +08:00
YunaiV d5a9e2e313 【修复】IoT 场景联动:事件触发器比较值改普通文本输入,允许留空(事件发生即匹配) 2026-05-02 14:32:42 +08:00
芋道源码 f9c0cace70
!871 fix: 修复响应拦截器 code=0 的逻辑错误
Merge pull request !871 from zhulh/fix/code-0-bug
2026-05-02 03:21:51 +00:00
YunaiV 2c3842582f 🐛 fix(system):修复租户 get-by-website 接口不支持端口的问题
🐛 fix(mes):修复常见缺陷的「检测项类型」错用独立字典的问题

「常见缺陷」与「检测项设置」的「检测项类型」语义一致,应共用同一份字典;DefectForm 与列表页统一改为 MES_INDICATOR_TYPE,并清理未使用的 MES_DEFECT_TYPE 常量。
2026-05-02 00:35:16 +08:00
guoanhao 11495a64f5 fix(bpm):修复流程网关分支问题 2026-04-22 17:37:30 +08:00
YunaiV 064b657294 (〃'▽'〃)_v2026_03_发布:新增 MES 制造执行系统,IoT 接入 Modbus 协议 2026-04-18 13:29:43 +08:00
YunaiV bc9c67ad3b (〃'▽'〃)_v2026_03_发布:新增 MES 制造执行系统,IoT 接入 Modbus 协议 2026-04-18 13:25:10 +08:00
YunaiV bf81e6f617 Merge branch 'feat/mes' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2026-04-18 13:23:29 +08:00
YunaiV a839dd6fa5 feat(mes): 更新 MES 状态常量和相关枚举
将 MES 设备维护记录状态枚举中的状态值更新为常量引用,增强代码可读性和一致性。同时,新增 MES 单据状态常量,简化状态管理。
2026-04-17 22:10:14 +08:00
YunaiV 0a96738cfb feat(mes): 更新 MES 状态常量和相关枚举
将 MES 设备维护记录状态枚举中的状态值更新为常量引用,增强代码可读性和一致性。同时,新增 MES 单据状态常量,简化状态管理。
2026-04-16 19:27:01 +08:00
YunaiV 378965d82f 🎨 style(mes): 优化模板格式和属性排列 2026-04-15 19:22:14 +08:00
YunaiV 05f43f91ab feat(mes): 添加计量单位名称到生产任务响应对象 2026-04-15 14:29:24 +08:00
YunaiV c63a5f87a4 ♻️ refactor(mes): 重构 approveFeedback 方法,移除用户 ID 参数
简化 approveFeedback 方法,移除不必要的用户 ID 参数,改为使用表单保存的报工人和时间。此变更提高了代码的可读性和维护性,同时确保审批状态更新逻辑的清晰性。
2026-04-14 13:53:42 +08:00
YunaiV 76b2d5caf3 Merge branch 'feat/mes' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2026-04-13 22:42:48 +08:00
YunaiV d63d4eee27 feat:增加 iot 模块 2026-04-13 22:42:37 +08:00
YunaiV cd300bded7 ♻️ refactor(mes): 修改字段名称以提高代码可读性 2026-04-13 19:57:35 +08:00
YunaiV befc4dc95e feat(docs):优化 permalink 2026-04-12 23:30:11 +08:00
YunaiV 3c5670141e feat:增加 iot 模块 2026-04-12 21:06:45 +08:00
YunaiV d6f8fb7b55 ♻️ refactor(mes): 修正质检缺陷记录删除权限 2026-04-12 20:38:01 +08:00
YunaiV ea50b843dc feat(mes):增加 mes 模块 2026-04-12 16:40:47 +08:00
YunaiV 75ed43b123 Merge branch 'feat/mes' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2026-04-12 16:33:36 +08:00
YunaiV b1c45fbd69 ♻️ refactor(calShiftList): 重命名表单类型变量为 dialogType 2026-04-12 02:39:21 +08:00
YunaiV bf912754ca 📝 docs(index): 更新文档警告组件,添加相关链接和标题 2026-04-11 21:43:44 +08:00
YunaiV 6358e7db9e ♻️ refactor(machinery): 统一规格型号字段命名为 'specification' 2026-04-11 16:03:22 +08:00
YunaiV 3e203a9536 feat(index): 更新来源单据字段及调整表单项顺序 2026-04-11 14:12:00 +08:00
YunaiV 9fb0659615 ♻️ refactor(mes): 重命名通知单编码和名称字段 2026-04-11 09:25:52 +08:00
YunaiV 36666cfdc6 ♻️ refactor(location): 移除库位管理状态字段 2026-04-10 22:44:50 +08:00
YunaiV ab690c9b50 feat(barcode): 添加条码详情弹窗功能
在多个表单中新增查看条码的按钮,允许用户在详情模式下查看条码信息。此功能提升了用户体验,使得条码信息的访问更加便捷。

- 在 `MachineryForm.vue`、`MdItemForm.vue`、`WorkshopForm.vue` 等文件中添加了条码详情弹窗组件
- 实现了 `handleBarcode` 方法以处理条码查看逻辑
2026-04-10 20:12:05 +08:00
YunaiV d16a92587d feat(mes): 更新物料/产品标识和补齐选项的显示方式
重构了多个组件中的物料/产品标识显示逻辑,使用 dict-tag 组件替代了原有的 getItemOrProductLabel 方法。更新了补齐选项的 radio group,支持动态生成选项。此变更提升了代码的可维护性和可扩展性。
2026-04-10 19:25:00 +08:00
YunaiV b508aa7c66 feat(unit-measure): 新增计量单位引用检查功能
为计量单位添加引用检查,确保在删除计量单位时,能够验证是否被生产任务投料或质检方案指标项引用。新增相关方法以获取引用记录数量,提升数据一致性和安全性。
2026-04-10 09:56:58 +08:00
YunaiV 0045e52c3d feat(mes): 添加车间编码生成按钮 2026-04-10 09:25:47 +08:00
YunaiV f628c2e7f5 feat(mes): 新增 OQC 来源单据类型错误码及相关校验 2026-04-10 08:52:23 +08:00
YunaiV 4a3683aea8 feat(mes): 优化整体代码风格 2026-04-10 00:57:02 +08:00
YunaiV 802cc92309 feat(mes): 添加懒加载注解以优化依赖注入 2026-04-10 00:42:22 +08:00
YunaiV 1b0af32a6a feat(qc): 修改检测项类型为整数并更新相关文档 2026-04-10 00:06:43 +08:00
YunaiV 1d01b221e6 feat(mes): 修改检测项类型为整数类型 2026-04-09 22:46:32 +08:00
YunaiV 302ca05052 feat(item-receipt): 添加采购入库单相关字段和功能
新增采购入库单编码和采购订单号字段,优化相关服务和控制器以支持批量获取入库单信息,提升数据处理能力。
2026-04-09 21:06:17 +08:00
YunaiV e39389137c feat(workshop): 增加车间精简列表负责人信息和销售订单编号 2026-04-09 16:09:53 +08:00
YunaiV 901e0883b4 ♻️ refactor(mes): 移除无用的 script 标签 2026-04-09 00:50:28 +08:00
YunaiV 813aa868d2 feat(sales): 新增发货通知单行ID字段及相关校验逻辑
在销售出库单行中新增发货通知单行ID字段,并实现相关的校验逻辑,以确保出库单与发货通知单行之间的关联性和一致性。此变更提升了系统的完整性和数据一致性。
2026-04-09 00:43:50 +08:00
YunaiV f34657341b feat(stock): 添加虚拟仓过滤功能
新增虚拟仓过滤模式,支持排除虚拟仓和仅查看虚拟仓的选项。更新相关请求对象和数据查询逻辑,以便后端处理虚拟仓的过滤需求。
2026-04-08 22:11:17 +08:00
YunaiV 52eb55107c feat(task): 添加质检标志字段及相关查询功能
在生产任务和工艺路线工序中新增质检标志字段 `checkFlag`,并更新相关查询逻辑以支持根据该字段进行过滤。此变更旨在增强任务管理的灵活性和准确性。
2026-04-08 18:01:06 +08:00
YunaiV 5fa959662b feat(select): 增加批次和仓库过滤功能,优化库存选择器 2026-04-08 13:59:29 +08:00
YunaiV b0fc3b05f2 feat(select): 增加批次和仓库过滤功能,优化库存选择器 2026-04-08 13:59:14 +08:00
YunaiV 5cc0a96db0 feat(workorder): 添加工单状态字段并更新相关逻辑
在 MesProWorkOrderPageReqVO 中新增工单状态字段,并在相关的 Mapper 和 Service 中更新查询逻辑以支持该字段。同时,新增批次编号字段到 MesWmMaterialStockPageReqVO,并更新相关逻辑以确保数据一致性。
2026-04-08 12:03:25 +08:00
YunaiV 55cb175f5a feat(select): 增加批次和仓库过滤功能,优化库存选择器 2026-04-08 09:56:32 +08:00
YunaiV 606a9ed6e8 feat(select): 增加状态过滤功能,优化选择器提示信息
在 DvCheckPlanSelect 和相关组件中新增状态过滤功能,允许用户根据计划状态筛选可选项。同时,优化了提示信息的拼装逻辑,提升用户体验。
2026-04-08 01:15:03 +08:00
YunaiV 500d20155b feat(mes): 添加任务状态列表支持,优化任务查询功能 2026-04-07 23:47:14 +08:00
YunaiV 0d13f32654 feat(mes): 添加工单状态过滤功能 2026-04-07 20:03:57 +08:00
YunaiV 06b00efcbe 🎨 style(mes): 代码格式化调整
对 MES 模块多个 Vue 组件进行代码格式化:
- 长属性行拆分为多行
- 多行属性合并为更紧凑的格式
- 删除多余空行
- 统一分号/逗号风格

无逻辑变更,纯格式调整。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 18:52:50 +08:00
YunaiV 5af93de4f5 feat(mes): 新增 BOM 子物料选择器组件及弹窗 2026-04-07 18:48:03 +08:00
YunaiV 917b2102bd feat(system): 更新用户选择组件为 UserSelectV2 并添加部门树选择 2026-04-07 14:00:08 +08:00
YunaiV a5122b58c4 feat(mes): 添加发货通知单行选择器组件及相关功能 2026-04-07 12:26:31 +08:00
YunaiV 2f21daecc1 ♻️ refactor(mes): 移除无用的发货通知单相关代码
删除了不再使用的发货通知单精简列表接口及相关逻辑,简化了代码结构,提高了可维护性。
2026-04-07 12:26:19 +08:00
YunaiV bf586e57b8 ♻️ refactor(mes): 移除无用的到货通知单相关接口和组件 2026-04-07 12:26:11 +08:00
YunaiV 6e6e65a22c ♻️ refactor(mes): 移除无用的到货通知单相关方法和注释 2026-04-07 12:26:03 +08:00
YunaiV 0e4e5be9ee feat(package): 添加状态字段并重构装箱单选择逻辑
新增装箱单和盘点方案的状态字段,优化装箱单选择器的交互方式,支持通过弹窗选择装箱单。移除不再使用的接口和方法,提升代码整洁性和可维护性。
2026-04-07 09:49:25 +08:00
YunaiV ee1a7b9003 ♻️ refactor(mes): 移除未使用的盘点方案相关代码
清理了不再使用的盘点方案列表获取方法和相关的 API 接口,简化了代码结构,提高了可维护性。
2026-04-07 09:36:28 +08:00
YunaiV 739725d9f8 feat(mes): 移除质检指标精简列表接口并重构选择器组件
移除不再使用的质检指标精简列表接口,更新相关前端组件以支持新的选择器交互方式。选择器现在使用只读输入框和弹窗选择,提升用户体验和交互性。
2026-04-07 00:56:10 +08:00
YunaiV 9be9a2fdaf ♻️ refactor(mes): 移除无用的质检方案精简列表接口 2026-04-07 00:43:14 +08:00
YunaiV 2eb9f0c740 ♻️ refactor(card): 移除精简列表相关代码和接口
删除不再使用的获取生产流转卡精简列表的接口及相关逻辑,优化代码结构。
2026-04-07 00:42:58 +08:00
YunaiV 1387509a37 feat(transfer): 新增库存选择功能并优化表单逻辑 2026-04-07 00:31:44 +08:00
YunaiV b173e40ebf feat(select): 继承属性以增强选择组件的灵活性 2026-04-06 23:52:26 +08:00
YunaiV 69e076e496 ♻️ refactor(task): 移除生产任务精简列表相关代码
删除不再使用的生产任务精简列表接口及其相关逻辑,优化代码结构。
2026-04-06 23:43:05 +08:00
YunaiV a585a48ca5 feat(mes): 增加工序选择器的悬停 tooltip 展示详情 2026-04-06 22:40:02 +08:00
YunaiV 796c095044 ♻️ refactor(mes): 清理无用代码和调整组件结构 2026-04-06 22:14:52 +08:00
YunaiV 934baa46d4 feat(type): 新增设备类型树组件并调整导入路径 2026-04-06 20:20:23 +08:00
YunaiV 65a0be187f feat(mes): 增强设备选择器和类型选择器功能
- 更新设备选择器,支持只读输入框和弹窗选择,提升用户体验。
- 增加设备编码、名称、品牌和规格的展示信息。
- 优化设备类型选择器,添加 tooltip 显示选中项的详细信息。
- 移除不再使用的 API 接口,简化代码结构。

这些改动旨在提升用户在选择设备和设备类型时的交互体验,确保信息的完整性和可读性。
2026-04-06 20:04:59 +08:00
YunaiV 16012a5efd feat(mes): 新增点检保养项目选择器和弹窗组件
实现了 MES 点检保养项目的只读输入框和弹窗选择器,支持单选和多选功能。用户可以通过只读输入框查看选中项目的详细信息,并通过点击弹窗进行选择。此功能提升了用户交互体验,简化了项目选择流程。
2026-04-06 19:52:52 +08:00
YunaiV 8701e75a23 feat(mes): 新增点检保养方案选择器组件及弹窗 2026-04-06 19:40:48 +08:00
YunaiV 0ed523ef20 feat(mes):修复 workorder 的路径问题 2026-04-06 19:35:19 +08:00
YunaiV 38016f46ba ♻️ refactor(mes): 移除无用注释 2026-04-06 18:41:45 +08:00
YunaiV 1ecba4a1f8 🎨 style(WmBatchSelectDialog): 调整输入框宽度至 220px 2026-04-06 18:38:46 +08:00
YunaiV ebfd12ebe7 🎨 style(WmBatchSelectDialog): 调整输入框宽度至 220px 2026-04-06 18:38:38 +08:00
YunaiV b36094b90f feat(mes): 新增批次管理相关字段和功能
在批次管理中新增多个字段,包括生产任务编号、工具编号、模具编号、生产批号、质量状态以及日期范围等。更新了相关的请求和响应对象,增强了批次查询功能,支持更多筛选条件。

同时,更新了前端组件以支持新的字段和功能,提升用户体验。
2026-04-06 18:31:18 +08:00
YunaiV 0ea1b51d3b feat(batch): 添加生产工单编号字段并重构选择器组件 2026-04-06 16:59:07 +08:00
YunaiV ed6fdd5894 feat(mes): 增加计量单位选择器的悬停 tooltip 展示详情 2026-04-06 16:33:21 +08:00
YunaiV 018a6975ec feat(mes): 添加状态过滤功能,默认只查询启用项 2026-04-06 16:27:08 +08:00
YunaiV 9b686628be feat(mes): 更新车间和工作站选择器,增加 tooltip 展示详情 2026-04-06 16:01:53 +08:00
YunaiV 88552dc6a2 feat(mes): 增强物料分类选择器和库位选择器的悬停提示功能
为物料分类选择器、库位选择器、库区选择器和仓库选择器添加悬停提示,展示更多详细信息,包括编码、名称、备注等。此改进提升了用户体验,使用户在选择时能够更方便地获取信息。
2026-04-06 13:13:02 +08:00
YunaiV b3d587b1c2 feat(mes): 新增库存记录编号字段并优化盘点行创建逻辑 2026-04-06 12:15:00 +08:00
YunaiV f1aa3e0b5e feat(dialog): 优化选择对话框的搜索表单和数据表格
调整了 MdClientSelectDialog、MdItemSelectDialog 和 MdVendorSelectDialog 组件的搜索表单样式,增加了英文名称和状态的输入项,提升了用户体验。同时,重构了数据表格的结构,确保一致性和可读性。
2026-04-06 12:04:13 +08:00
YunaiV 5f61294aad feat(mes): 增加库位编号和相关查询功能
在库存物资选择对话框中新增库位编号字段,更新查询参数以支持库位的选择和过滤。调整相关组件以确保库位信息的正确显示和交互。
2026-04-06 11:28:35 +08:00
YunaiV a29ea8e4e4 feat(stock): 添加供应商编号并移除库存精简列表接口 2026-04-06 11:16:21 +08:00
YunaiV c4507c6f1f feat(mes): 优化生产工单选择对话框的搜索功能和布局 2026-04-06 10:31:41 +08:00
YunaiV 09836f2972 ♻️ refactor(workorder): 移除工单列表相关代码
删除不再使用的工单列表接口和相关逻辑,简化代码结构,提升可维护性。
2026-04-06 10:21:34 +08:00
YunaiV 797e62710c ♻️ refactor(mes): 移除无用的供应商列表相关代码
清理不再使用的供应商精简列表接口及相关服务方法,优化代码结构。
2026-04-06 01:39:39 +08:00
YunaiV 306ea73838 ♻️ refactor(navigation): 移除无用注释,优化导航逻辑 2026-04-06 01:36:53 +08:00
YunaiV 4d183bf379 feat(mes): 增加生产趋势查询参数验证和首页组件优化
为生产趋势查询添加最小和最大天数验证,确保输入有效性。
优化首页组件,增加数据存在性判断,提升用户体验。
2026-04-06 01:28:30 +08:00
YunaiV fb213bfd76 feat(home): 更新首页组件注释和路由名称
优化首页各个组件的注释,增加可读性,并将导航逻辑中的 URL 替换为路由名称,提升代码的稳定性和可维护性。
2026-04-06 01:12:32 +08:00
YunaiV 8e8c1941b3 ♻️ refactor(mes): 移除无用的客户列表接口和相关代码
清理不再使用的客户精简列表接口及其相关实现,优化代码结构,提升可维护性。
2026-04-06 00:53:32 +08:00
YunaiV 89b38dbdd8 feat(mes): 添加用户已上工的错误码检查 2026-04-06 00:50:13 +08:00
YunaiV 91adaff611 feat(home): 新增 MES 首页统计功能及相关数据结构 2026-04-06 00:50:01 +08:00
YunaiV 163e722e61 feat(statistics): 新增 MES 首页统计功能
实现了 MES 首页的统计功能,包括工单状态分布、生产趋势和汇总统计。新增了相关的 VO 类、服务接口及实现,支持从数据库获取统计数据并返回给前端。

- 添加 MesHomeStatisticsController 控制器
- 实现 MesHomeStatisticsService 接口及其实现
- 新增数据访问层 Mapper 和 XML 配置
- 定义响应 VO 类以适应前端需求
2026-04-05 23:55:59 +08:00
YunaiV 0561636d4f feat(mes): 更新 MES 退料类型和状态常量 2026-04-05 23:52:07 +08:00
YunaiV 00ff024328 feat(mes): 新增当前用户工作站绑定状态 VO 和相关接口 2026-04-05 23:38:23 +08:00
YunaiV 6c276d6ae3 feat(workrecord): 新增 MES 工作记录管理功能
实现工作记录的上下工记录流水,包括分页查询、导出 Excel、上线和下线操作。新增相关的请求和响应 VO,完善数据对象和服务接口,支持用户与工作站的绑定状态管理。
2026-04-05 22:03:57 +08:00
YunaiV 86e8585a31 ♻️ refactor(mes): 移除无用的物料产品相关代码
清理了不再使用的物料产品相关方法和接口,简化了代码结构,提高了可维护性。
2026-04-05 17:20:36 +08:00
YunaiV 998c22d3da feat(mes): 优化物料产品选择器 V2 组件(完善 tooltip 展示) 2026-04-05 12:52:13 +08:00
YunaiV 35e003de64 feat(mes): 优化物料产品选择器 V2 组件(完善 tooltip 展示) 2026-04-05 12:50:00 +08:00
YunaiV 07cd4c47ed feat(mes): 优化物料产品选择器 V2 组件 2026-04-05 12:39:13 +08:00
YunaiV 1f9380ba90 feat(mes): 新增物料产品选择器 V2 组件 2026-04-05 12:28:29 +08:00
YunaiV 9f9ac51edf feat(mes): 新增物料产品选择器 V2 组件 2026-04-05 12:27:32 +08:00
YunaiV 1313347c85 feat(mes): 增强批次追溯功能,添加删除标记过滤
更新 SQL 查询以过滤已删除的记录,确保批次追溯时只返回有效数据。同时,增加了集成测试用例以验证新逻辑的正确性。
2026-04-05 10:40:49 +08:00
YunaiV 53fa5ea202 feat(mes): 增强库存事务处理与编码生成
- 优化 selectByCompositeKey 方法,改进批次 ID 的处理逻辑
- 新增多个错误码以增强错误处理
- 更新样品编号和入库单编号生成逻辑,使用自动编码 API
2026-04-05 00:51:40 +08:00
YunaiV 342b5d08c0 feat(defect): 支持缺陷记录弹窗的编辑和详情模式 2026-04-05 00:00:57 +08:00
YunaiV 4e964e2eea feat(mes): 新增质检方案编码生成与详情模式支持 2026-04-04 22:37:49 +08:00
YunaiV 98714fde0c feat(mes): 新增质检指标结果值属性校验 2026-04-04 21:17:49 +08:00
YunaiV 3ab07d7412 feat(mes): 更新缺陷类型字典和必填字段验证
修改缺陷相关的字典类型为 MES_DEFECT_TYPE,并在缺陷数量字段添加必填验证,确保数据完整性。
2026-04-04 20:54:00 +08:00
YunaiV 23799e7f21 feat(mes): 修改执行生产流转卡为完成生产流转卡 2026-04-04 20:22:47 +08:00
YunaiV 0c4ee24dd3 feat(mes): 新增生产流转卡状态管理功能
- 添加状态字段到 MesProCardRespVO 和相关的前端组件
- 实现提交、执行和取消生产流转卡的 API 接口
- 更新 MesProCardService 和 MesProCardServiceImpl 以支持新功能
- 更新前端表单和列表以显示和操作流转卡状态
2026-04-04 20:07:56 +08:00
YunaiV 8e91178726 feat(mes): 新增生产报工单功能及相关逻辑
新增生产报工单的创建、编辑、提交和审批功能,优化表单交互逻辑,支持自动生成报工单号,提升用户体验。
2026-04-04 19:49:59 +08:00
YunaiV bc098e8999 feat(mes): 优化工单和任务管理功能,增强表单交互逻辑
调整工单表单和任务列表的展示,新增工单完成操作,优化表单数据处理逻辑,提升用户体验。
2026-04-04 17:03:45 +08:00
YunaiV cfa787530e feat(mes): 优化工艺路线管理功能,调整状态处理逻辑
移除工艺路线状态的必填验证,调整状态字段为可选。更新状态切换逻辑,增强用户交互体验,确保状态操作的可用性和提示信息的准确性。
2026-04-04 16:42:26 +08:00
YunaiV 375d5a2236 feat(mes): 更新工艺路线和工序管理界面,增强用户体验
调整表单和列表中的标签,增加字段描述,优化布局,提升可读性和操作性。
2026-04-04 16:24:05 +08:00
YunaiV 609cbb654c feat(mes): 新增工艺路线启用功能及相关逻辑
实现工艺路线的启用功能,允许用户在确认工序和产品 BOM 配置完整后启用工艺路线。同时,优化了表单的状态管理,增强了用户体验。
2026-04-04 12:08:06 +08:00
YunaiV aa5cb50d1d feat(mes): 新增工序详情功能及编码生成逻辑
为工序管理模块新增工序详情查看功能,用户可以通过点击工序编码查看详细信息。同时,更新工序编码生成逻辑,支持自动生成编码,提升用户体验。
2026-04-04 11:34:45 +08:00
YunaiV d18a58f44f feat(mes): 增强工序管理功能,新增工序校验逻辑
新增工序创建和更新时的存在性校验,确保工序有效性。
同时,重构工艺路线服务,优化工序引用检查逻辑。
2026-04-04 11:28:27 +08:00
YunaiV 12566d6860 ♻️ refactor(mes): 优化组件状态管理及注释说明 2026-04-04 10:54:11 +08:00
YunaiV 7e0c226c24 feat(mes): 重构工单状态管理及验证逻辑
移除工单状态字段,优化工单创建和更新时的验证逻辑,确保数据一致性和完整性。更新前端表单,简化状态处理,提升用户体验。
2026-04-04 10:44:17 +08:00
YunaiV b2d86b12d6 feat(mes): 新增生产工单编码及状态管理功能
新增生产工单编码规则和状态管理逻辑,优化工单创建和更新流程。
同时,更新前端表单以支持新的工单状态和来源单据字段,提升用户体验。
2026-04-04 10:15:26 +08:00
YunaiV 469363c046 feat(mes): 更新维修工单表单逻辑及字段展示 2026-04-04 01:22:55 +08:00
YunaiV 307bac15e1 feat(mes): 更新维修工单表单逻辑及状态管理
调整维修工单表单的字段展示逻辑,优化完成维修和验收的操作流程。新增维修完成日期和维修结果的必填校验,确保用户在提交时提供必要信息。同时,修正了表单的可编辑状态,提升用户体验。
2026-04-04 01:17:06 +08:00
YunaiV da1dfa410b feat(mes): 新增维修工单确认完成请求及相关逻辑
新增 MesDvRepairConfirmReqVO 类以处理维修工单确认完成请求,更新相关服务和控制器逻辑以支持新的请求格式。确保维修工单名称和完成日期为必填项,增强了数据验证和状态管理。
2026-04-04 00:54:39 +08:00
YunaiV 86e8d62213 feat(mes): 更新维修工单流程及状态管理
新增维修工单提交、确认和完成验收功能,优化状态流转逻辑。
- 提交维修工单时记录当前用户
- 完成维修后更新状态为待验收
- 完成验收时支持通过与不通过的结果记录

确保维修工单的状态管理更加清晰,提升用户体验
2026-04-04 00:46:02 +08:00
YunaiV 1005ec0eb6 feat(mes): 新增维修工单状态流转功能
实现维修工单的状态流转,包括提交、完成维修和验收功能。新增相关接口和状态枚举,优化了维修工单的管理流程,确保状态的准确性和一致性。
2026-04-04 00:21:58 +08:00
YunaiV 7999232771 feat(mes): 新增维修工单编码唯一性校验及设备编号字段
新增维修工单编码的唯一性校验逻辑,确保在创建和更新维修工单时编码不重复。同时,新增设备编号字段以便于关联设备信息,提升维修工单管理的准确性和完整性。
2026-04-03 23:30:40 +08:00
YunaiV a8e68c155a feat(mes): 更新保养记录状态值及表单操作逻辑
调整保养记录状态值,确保状态与操作逻辑一致。新增表单提交功能,允许在编辑模式下提交保养记录,优化用户体验。
2026-04-03 22:54:27 +08:00
YunaiV efdb18c05b feat(mes): 优化保养项目弹窗及按钮文本
更新保养项目明细的标题,调整按钮文本格式,提升用户体验。
2026-04-03 21:48:28 +08:00
YunaiV 7b98e87849 feat(mes): 更新保养记录相关字段及新增功能
调整保养记录请求对象,新增保养计划编号、设备编号和保养人编号字段。更新查询逻辑以支持新字段,并新增获取保养记录明细列表和根据记录编号删除明细的功能。优化表单组件以支持详情模式。
2026-04-03 19:02:22 +08:00
YunaiV b5063758e5 feat(mes): 新增点检记录明细的项目类型字段及批量创建功能
新增项目类型字段到点检记录明细响应对象,并在控制器和服务层中实现批量创建点检记录明细的功能。此变更提升了点检记录的灵活性和可扩展性。
2026-04-03 09:54:16 +08:00
YunaiV 0c0de1eb45 feat(mes): 新增点检保养项目编码及相关逻辑 2026-04-03 08:37:33 +08:00
YunaiV ca892047fb ♻️ refactor(mes): 重命名自动编码相关组件文件 2026-04-03 08:35:32 +08:00
YunaiV e035774e38 feat(mes): 优化点检方案表单及子资源列表的编辑逻辑
调整点检方案表单,简化字段的禁用逻辑,确保在编辑模式下可以生成方案编码。更新子资源列表组件,基于表单类型动态控制操作权限,提升用户体验。
2026-04-03 08:19:44 +08:00
YunaiV 476dd53a3c feat(mes): 新增点检方案设备和项目的重复校验逻辑
新增设备和项目在同一方案下的重复校验,避免用户重复添加相同设备或项目。同时,增强了点检方案停用时的状态校验,确保只有已启用的方案才能被停用。
2026-04-03 00:49:00 +08:00
YunaiV b25cb1dd0f feat(mes): 新增计划编码、开始时间、结束日期及频率信息字段 2026-04-03 00:10:35 +08:00
YunaiV acf673d2d2 feat(mes): 新增设备台账点检、保养和维修记录列表组件 2026-04-02 23:50:24 +08:00
YunaiV 2ddfb9b722 feat(mes): 优化设备编码生成与表单交互逻辑
增强设备编码输入的交互体验,禁用生成按钮在更新状态下,确保用户操作的准确性。同时,添加了 TODO 注释以便后续功能实现的对接。
2026-04-02 23:24:46 +08:00
YunaiV 3db2347f67 feat(mes): 新增设备编码生成逻辑及相关常量 2026-04-02 22:37:04 +08:00
YunaiV 4bbe313ef8 feat(mes): 新增设备台账导入功能及相关接口
新增设备台账导入功能,支持从 Excel 文件批量导入设备信息。实现了导入模板的生成和导入结果的反馈,包括成功创建和更新的设备编码,以及导入失败的原因提示。同时,更新了设备类型和车间的校验逻辑,确保数据的有效性和完整性。
2026-04-02 22:27:11 +08:00
YunaiV 5ea8c24410 feat(mes): 增强设备类型编码的输入验证与生成逻辑
为设备类型编码字段添加非空验证,确保用户输入有效数据。同时,更新前端表单,允许用户手动输入或点击生成按钮来生成编码,提升用户体验。
2026-04-02 22:00:50 +08:00
YunaiV 1cf4f0128c feat(mes): 替换用户选择组件,简化用户搜索逻辑 2026-04-02 21:28:29 +08:00
YunaiV 1b3a41da14 feat(mes): 优化排班日历查询逻辑,支持批量班组查询
重构排班日历查询功能,简化代码实现,支持一次性查询多个班组的排班记录。
新增班组编号集合字段,提升查询效率和可读性。
2026-04-02 19:54:18 +08:00
YunaiV f8553abcdd feat(mes): 新增假期设置列表支持日期范围过滤功能
更新假期设置列表接口,支持可选的开始和结束日期参数,优化前端日历组件的数据获取逻辑,提升用户体验。
2026-04-02 10:03:50 +08:00
YunaiV fc21347c59 feat(mes): 重构机械类型校验逻辑,简化代码实现 2026-04-02 09:49:50 +08:00
YunaiV e41961283c feat(mes): 优化 cal plan 的代码实现 2026-04-02 01:36:36 +08:00
YunaiV 71c7d498f1 feat(mes): 新增查看模式下的只读功能及相关按钮逻辑 2026-04-02 00:34:22 +08:00
YunaiV f133e4f5c5 feat(mes): 更新班组表单和成员列表组件逻辑
优化班组表单的弹窗标题逻辑,支持不同表单类型的动态标题显示。调整成员列表组件,确保操作按钮仅在编辑模式下可见。简化消息提示内容,提升用户体验。
2026-04-02 00:27:23 +08:00
YunaiV e0238243aa feat(mes): 移除冗余的班组类型枚举引用及相关注释 2026-04-01 23:54:49 +08:00
YunaiV f85979e025 feat(mes): 新增日期工具方法及排班请求字段
新增获取指定日期所在季度和周的第一天的方法,增强日期处理能力。
同时在排班请求中添加班组类型、开始日期和结束日期字段,完善排班计划功能。
2026-04-01 20:40:18 +08:00
YunaiV 8de07f5337 feat(mes): 新增班组排班记录生成逻辑及相关字段校验
实现班组排班记录的生成逻辑,增加了班组类型和用户存在性校验,优化了排班记录的批量写入方式。同时,新增了相关错误码以处理班组和班次数量不足的情况。
2026-04-01 19:12:53 +08:00
zhulianghu 74128f53a5 fix: 修复响应拦截器 code=0 的逻辑错误 2026-04-01 09:53:32 +08:00
YunaiV c68d64a585 feat(mes): 新增批次生成逻辑及相关字段处理
实现批次的生成或获取逻辑,自动关联外协工单和物料信息。更新了相关数据对象和服务实现,确保在创建和更新外协工单行时能够正确处理批次信息。
2026-04-01 01:45:34 +08:00
YunaiV 95b4c9242c feat(mes): 新增外协工单编码字段及相关查询逻辑 2026-04-01 01:19:52 +08:00
YunaiV a21d5193f7 feat(mes): 新增批次编码字段及外协工单编码处理逻辑 2026-04-01 00:42:54 +08:00
YunaiV f9e3eba6b6 feat(mes): 优化外协入库单表单与列表交互逻辑
新增入库单编号的可点击链接,优化表单提交与完成入库的逻辑,提升用户体验。
2026-04-01 00:15:25 +08:00
YunaiV ffb833d822 feat(mes): 新增工单类型过滤和批次编码处理逻辑
在生产工单精简列表接口中新增工单类型参数,支持根据工单类型过滤工单列表。同时,在外协发料单行的创建和更新中,新增批次编码字段,并实现根据批次编码自动解析批次 ID 的功能,提升数据处理的灵活性和准确性。
2026-03-31 23:22:23 +08:00
YunaiV 8effbce819 feat(mes): 更新外协发料单表单和行列表单逻辑
调整外协发料单明细表单的宽度,优化物料选择逻辑,增加备注字段,并修正批次号的标签。确保表单与后端数据校验一致,提高用户体验。
2026-03-31 22:53:41 +08:00
YunaiV 2b9da6c2a2 feat(mes): 新增外协发料单编码和数据校验逻辑
新增外协发料单编码常量,更新相关服务以支持外协发料单的创建和校验逻辑。优化了发料单的创建、更新和取消流程,确保数据的完整性和有效性。
2026-03-31 22:38:53 +08:00
YunaiV 89b61ba3cd feat(mes): 新增生产流转卡和装箱单精简列表接口
新增获取生产流转卡和装箱单的精简列表接口,主要用于前端下拉选项选择,提升用户体验。同时,更新条码配置相关逻辑,增加条码配置关联检查,确保数据一致性。
2026-03-31 21:14:07 +08:00
YunaiV 26272b7b12 feat(mes): 更新操作按钮,移除完成功能 2026-03-31 20:11:12 +08:00
YunaiV 6611156170 feat(mes): 优化装箱单表单逻辑,增强用户交互体验
更新装箱单表单的操作逻辑,新增编辑、完成和删除功能,优化表单字段的可编辑性和状态管理。确保在编辑模式下用户可以保存修改,并在完成操作前进行确认,提升用户体验和数据安全性。
2026-03-31 20:05:13 +08:00
YunaiV 6dc20ba950 feat(mes): 优化库存冻结逻辑,更新盘点任务处理流程
重构库存冻结和解冻逻辑,合并相关方法以提高代码可读性和维护性。
新增表单提交和执行盘点的处理逻辑,确保用户操作的流畅性和准确性。
2026-03-31 19:38:04 +08:00
YunaiV 134cddc54c feat(mes): 优化条件值校验逻辑,调整 valueId 处理方式 2026-03-31 18:47:57 +08:00
YunaiV 55ca892c9c feat(mes): 新增盘点方案保存数据校验逻辑,优化动态盘点时间处理 2026-03-31 18:31:53 +08:00
YunaiV abe63d39db feat(mes): 新增盘点方案编码和任务编码常量,更新错误码提示
新增盘点方案编码和盘点任务编码常量,以支持新的盘点功能。同时,更新相关错误码提示,确保用户在操作时获得准确的信息。
2026-03-31 18:14:42 +08:00
YunaiV 03bc24d3f7 feat(mes): 更新转移调拨单编码常量名称 2026-03-31 16:03:35 +08:00
YunaiV 9d3fe736aa feat(mes): 新增转移单行和明细的删除功能,优化删除逻辑
新增通过行ID和转移ID删除转移单行和明细的功能,简化了删除操作,提升代码可读性和维护性。同时,增加了转移数量超过库存数量的错误码,增强了系统的健壮性。
2026-03-31 15:35:05 +08:00
YunaiV 6282cdf979 feat(mes): 新增单据状态字段,更新库存冻结状态批量处理 2026-03-31 12:18:16 +08:00
YunaiV 725a16866a feat(mes): 优化转移单操作按钮和表单逻辑
调整转移单操作按钮的显示逻辑,简化表单提交和确认流程。新增状态判断以支持不同操作模式,提升用户交互体验。
2026-03-31 11:08:41 +08:00
YunaiV c94cfa2ecb feat(mes): 新增来源单据编号和类型字段,更新必填验证 2026-03-31 10:03:05 +08:00
YunaiV 4de57ee672 feat(mes): 新增入库单行级联删除功能
实现了根据入库单编号删除所有相关行的功能,增强了数据管理的灵活性和一致性。
2026-03-31 09:01:57 +08:00
YunaiV 76f47a476b 🎨 style(mes): 统一代码格式,优化可读性 2026-03-30 23:23:23 +08:00
YunaiV 920799534a feat(mes): 新增库区和库位编号必填验证 2026-03-30 23:22:53 +08:00
YunaiV 6e58d4d73f feat(mes): 优化杂项出库单表单,移除提交功能并调整字段逻辑
移除杂项出库单表单中的提交按钮,简化用户操作流程。调整表单字段逻辑,确保在编辑和查看模式下的字段状态一致,提升用户体验。
2026-03-30 23:05:39 +08:00
YunaiV e954777753 feat(mes): 新增来源单据编号和来源单据类型字段
在表单中添加来源单据编号和来源单据类型字段,以支持更详细的出库单信息。同时,更新了相关的状态和类型字段,优化了表单的交互体验。
2026-03-30 22:50:40 +08:00
YunaiV 45cc9ad129 feat(mes): 更新出库单相关字段和编码规则
调整出库单表单和列表的字段标签,新增批次号字段,优化操作按钮格式,并添加编码规则的TODO注释,以便后续开发。
2026-03-30 22:35:16 +08:00
YunaiV 57b75b5201 feat(mes): 优化销售出库拣货明细表单布局
调整表单布局为三行显示,提升用户体验。修改出库仓库、库区、库位和批次号字段为禁用状态,以符合业务逻辑。
2026-03-30 22:22:34 +08:00
YunaiV 87a286ca5d feat(mes): 优化销售出库表单布局和交互逻辑
调整销售出库表单的模板结构,改善运输信息的展示逻辑,确保在不同模式下的可用性和可读性。增加了对表单项的计算属性支持,以提升用户体验。
2026-03-30 22:07:59 +08:00
YunaiV 47db6c3b4c feat(mes): 新增批次号和出厂检验标志字段
在相关数据对象中新增批次号和出厂检验标志字段,并在服务层实现相应的逻辑校验。此变更旨在增强库存管理的灵活性和准确性。
2026-03-30 21:51:40 +08:00
YunaiV 47355814a2 feat(mes): 新增批次号字段并重命名收货地址字段 2026-03-30 20:56:41 +08:00
YunaiV 7e3693d18c feat(mes): 新增库存记录ID和收货地址字段
在销售出库相关的多个数据对象中新增库存记录ID和收货地址字段,以支持更全面的出库信息管理。这些字段将帮助在出库单中更好地追踪库存和收货信息,提高系统的可用性和用户体验。
2026-03-30 20:35:23 +08:00
YunaiV 09f95d5fad feat(mes): 新增销售订单号查询输入框 2026-03-30 19:27:11 +08:00
YunaiV 64e7b17631 feat(mes): 新增执行退货功能及相关逻辑优化 2026-03-30 19:22:29 +08:00
YunaiV 696069e212 feat(mes): 新增销售退货单状态和编码逻辑
新增销售退货单的状态枚举和编码常量,优化了退货单的操作逻辑,支持新的质检和提交功能。
2026-03-30 19:16:08 +08:00
YunaiV 0ff490499e feat(mes): 优化发货通知单表单和列表功能
重构发货通知单的表单和列表展示,新增执行出库按钮,优化客户选择组件,提升用户体验。调整表单字段的可编辑状态,确保在不同操作模式下的交互逻辑清晰。
2026-03-30 18:22:30 +08:00
YunaiV 12c04def97 feat(mes): 移除库存物资记录编号字段并优化批次处理逻辑 2026-03-30 18:05:31 +08:00
YunaiV 62f4c62e3d feat(mes): 新增库存物资记录编号字段及相关逻辑 2026-03-30 17:53:58 +08:00
YunaiV e41d14bb67 feat(mes): 新增库存物资记录编号字段及相关逻辑 2026-03-30 15:50:31 +08:00
lijiahui 491e09c136 fix: 菜单名称过长时没有正确显示省略号 2026-03-30 15:31:51 +08:00
YunaiV d8dbbf156e feat(mes): 新增发货通知单编码和删除明细逻辑校验 2026-03-30 15:18:32 +08:00
YunaiV 79d63523fe feat(mes): 增强产品入库单功能,新增数量校验和明细检查
新增上架数量的正数校验,确保入库单的数量大于0。同时,增加了收货单明细为空的错误提示,提升数据完整性和用户体验。
2026-03-30 12:54:12 +08:00
YunaiV 4ec4c4dd09 feat(mes): 优化退料单功能,新增提交和执行退料操作 2026-03-30 12:17:03 +08:00
YunaiV 91b2fbb659 feat(mes): 新增库存记录和批次编码字段,优化退料单功能
在退料单相关的多个类中新增库存记录 ID 和批次编码字段,以支持更精确的库存管理和数据校验。同时,更新了相关的表单和服务逻辑,确保新字段的正确使用和验证。
2026-03-30 11:48:09 +08:00
YunaiV b82bb858d0 feat(mes): 重构领料出库单操作逻辑,优化表单提交和删除功能
重构了领料出库单的操作逻辑,合并了提交和完成操作的处理方式,简化了代码结构。新增了表单提交前的修改检查,确保数据一致性。同时,优化了删除操作的实现,提升用户体验。
2026-03-30 11:31:15 +08:00
YunaiV daa269e4ce feat(mes): 优化领料出库拣货明细表单布局,新增库存记录选择 2026-03-30 10:48:32 +08:00
YunaiV 6c968ac5b7 feat(mes): 增强领料出库单功能,新增客户信息和行数据校验 2026-03-30 10:17:14 +08:00
YunaiV ef2b54316e feat(mes): 优化库存选择器和退货明细表单布局
调整库存选择器为下拉选择组件,支持前端过滤,提升用户体验。更新退货明细表单,增加库存记录选择,优化表单布局,确保信息展示更为清晰。
2026-03-29 23:16:56 +08:00
YunaiV 51e8cd35fa feat(mes): 优化库存选择器和退货明细表单布局
调整库存选择器为下拉选择组件,支持前端过滤,提升用户体验。更新退货明细表单,增加库存记录选择,优化表单布局,确保信息展示更为清晰。
2026-03-29 23:08:48 +08:00
YunaiV 23bf42c4ad feat(mes): 优化库存选择器和退货明细表单布局
调整库存选择器为下拉选择组件,支持前端过滤,提升用户体验。更新退货明细表单,增加库存记录选择,优化表单布局,确保信息展示更为清晰。
2026-03-29 23:08:42 +08:00
YunaiV 4f76374065 feat(mes): 更新删除操作注释为更明确的描述 2026-03-29 21:57:35 +08:00
YunaiV fe6e80271d feat(mes): 优化删除按钮操作及表单数据处理逻辑 2026-03-29 21:57:26 +08:00
YunaiV 5856838c73 feat(mes): 优化退货单操作逻辑,简化提交与完成流程 2026-03-29 21:43:46 +08:00
YunaiV 1f2a0904f4 feat(mes): 增强退货单功能,新增行数据校验与删除逻辑
- 新增退货数量字段的校验,确保其大于 0
- 增加根据行 ID 删除明细的功能
- 新增退货单编码的定义
- 增强退货单状态校验,确保状态为草稿才能进行删除操作
2026-03-29 21:01:14 +08:00
YunaiV 5efcbffd67 ♻️ refactor(mes): 重命名返回供应商相关文件 2026-03-29 20:25:02 +08:00
YunaiV f7f6e7ce93 feat(mes): 优化到货通知单和行的表单逻辑
调整到货通知单和行的表单结构,增强用户体验。修改了表单字段的布局和逻辑,确保数据的有效性和可用性。更新了相关组件的引用,提升代码的可读性和维护性。
2026-03-29 20:02:15 +08:00
YunaiV 88dcf7f74f feat(mes): 增强到货通知单表单逻辑与交互
更新到货通知单表单,增加字段的只读状态控制,优化用户交互体验。新增表单数据快照功能以支持脏检查,确保用户在提交前确认修改。调整按钮逻辑以适应不同表单状态,提升整体可用性。
2026-03-29 19:36:59 +08:00
YunaiV 32a830b595 feat(mes): 新增到货通知单编码及相关逻辑处理 2026-03-29 19:13:37 +08:00
YunaiV 166caaa72c feat(mes): 新增到货通知单编码及相关逻辑处理 2026-03-29 19:11:04 +08:00
YunaiV 43e80f868a feat(mes): 优化入库单表单逻辑和状态管理
调整表单字段和状态管理,简化逻辑处理,确保在创建和编辑模式下正确传递数据。增强了用户体验,提升了代码可读性和维护性。
2026-03-29 18:24:08 +08:00
YunaiV 63b212c514 feat(mes): 新增采购订单号字段及相关逻辑处理 2026-03-29 18:13:50 +08:00
YunaiV 98a227a609 🗑️ chore(mes): 清理已移除的冗余 Tab 组件(ClientProductSalesTab、VendorItemReceiptTab、BatchTraceDetailTab) 2026-03-29 16:27:11 +08:00
YunaiV 736f7d2455 feat(mes): 添加 overflow-hidden 类以改善组件布局 2026-03-29 12:09:42 +08:00
YunaiV dba8ef1ab5 feat(mes): 新增采购订单号字段及相关逻辑处理 2026-03-29 11:22:53 +08:00
YunaiV 526879fa60 feat(mes): 新增采购入库单编码常量及生成逻辑 2026-03-29 10:51:55 +08:00
YunaiV cc640d8801 feat(mes): 添加数量校验逻辑,更新入库明细处理
新增对上架数量和入库数量的校验逻辑,确保入库明细的总数量不超过行入库数量。优化了入库单和入库明细的创建与更新流程,提升数据一致性和准确性。
2026-03-29 10:41:16 +08:00
YunaiV 45f8ea64c7 feat(mes): 新增批次详情弹窗及相关逻辑 2026-03-29 10:24:31 +08:00
YunaiV 884fb1bf66 feat(mes): 新增获取批次详情接口,更新相关逻辑 2026-03-29 10:17:57 +08:00
YunaiV efd463893e feat(mes): 更新工具编码及可用数量字段,添加校验逻辑
将工具编码字段设置为必填,并添加相应的校验逻辑。更新可用数量字段名称为更具描述性的名称,确保代码一致性和可读性。同时,调整相关逻辑以支持新的字段名称。
2026-03-29 10:04:59 +08:00
YunaiV d264c06830 feat(mes): 更新保养维护类型字段及相关校验逻辑 2026-03-29 09:46:14 +08:00
YunaiV 5e57cafb22 feat(mes): 新增工具类型编码及相关校验逻辑
添加工具类型编码字段,并重构工具类型的保存和更新逻辑,简化数据校验过程。更新表单组件以支持新功能,优化用户体验。
2026-03-29 09:30:47 +08:00
YunaiV 53bfa9be57 feat(mes): 更新物料库存查询逻辑,优化仓库选择组件 2026-03-29 09:17:37 +08:00
YunaiV 4d151e0d5b feat(mes): 移除生成编码按钮的禁用状态 2026-03-29 00:06:20 +08:00
YunaiV 872fa9fe19 ♻️ refactor(mes): 移除多余的布局行,优化表单结构 2026-03-28 23:29:53 +08:00
YunaiV 53fbb03ad4 feat(mes): 重构库区混放规则更新逻辑,简化接口调用 2026-03-28 23:26:57 +08:00
YunaiV fdcc30415a feat(mes): 优化库位和库区管理功能,合并混放规则设置接口
整合物料混放和批次混放的设置接口为一个更新接口,简化了API调用。
同时,增加了库位和库区编码的生成逻辑,提升了用户体验。
2026-03-28 20:58:30 +08:00
YunaiV 5e1618b1c0 feat(mes): 添加虚拟仓库和库区删除校验,优化物料混放规则更新 2026-03-28 20:25:00 +08:00
YunaiV 075629e49c feat(mes): 添加车间详情链接和表单只读模式
在工作站列表中为车间编码添加了详情链接,点击后可查看车间详细信息。同时,在工作站表单中增加了只读模式,确保在查看详情时无法修改数据。
2026-03-28 19:04:13 +08:00
YunaiV 351ee4fb0d feat(mes): 添加工作站设备资源的级联删除功能
新增按工作站编号删除设备资源的功能,确保在删除工作站时,相关的设备资源能够被自动清理,提升数据一致性和管理效率。
2026-03-28 18:51:12 +08:00
YunaiV f1b7e53b08 feat(mes): 更新工作站表单,添加工序和设备选择功能 2026-03-28 18:06:46 +08:00
YunaiV 1ad04812e1 feat(mes): 添加工序编号及名称,优化工作站相关功能
新增工序编号和名称字段,更新工作站相关逻辑以支持工序信息的处理。优化工作站的创建、更新和查询功能,确保工序信息的有效性和完整性。
2026-03-28 17:54:07 +08:00
YunaiV 78e8ec1772 feat(mes): 添加客户英文名称及出库单查询功能
新增客户英文名称字段,优化客户信息展示。实现按客户编号查询销售出库单列表的功能,提升用户体验。
2026-03-28 17:19:31 +08:00
YunaiV 480564042e feat(mes): 添加供应商入库单列表功能,优化物料清单展示 2026-03-28 16:52:21 +08:00
YunaiV 3ac19a0c73 feat(mes): 更新供应商相关逻辑,添加英文名称及引用校验功能
重构供应商数据模型,替换供应商等级为英文名称,并在相关服务中添加对供应商引用的校验逻辑,以确保数据一致性和完整性。
2026-03-28 16:00:04 +08:00
YunaiV f3138d8cd5 feat(mes): 添加工序存在性校验功能,优化物料表单 2026-03-28 10:56:58 +08:00
YunaiV 3b62e38087 feat(mes): 添加物料分类变更处理逻辑,优化弹窗标题显示 2026-03-28 10:38:48 +08:00
YunaiV 55198c3747 feat(mes): 优化物料分类选择器,禁用分支节点选择 2026-03-28 10:30:24 +08:00
YunaiV b6bc58d104 feat(mes): 添加物料产品状态更新功能,优化物料分类选择器 2026-03-28 10:08:17 +08:00
YunaiV db6a9aeabe feat(mes): 添加物料产品状态更新功能,优化物料分类选择器 2026-03-28 09:47:38 +08:00
YunaiV 3860970490 feat(mes): 添加物料选择弹窗组件,优化物料编码生成逻辑
新增物料选择弹窗组件,支持物料分类树和物料列表的搜索与选择功能。优化物料编码生成方法,使用自动编码规则生成物料编码,提升用户体验。
2026-03-28 09:14:55 +08:00
YunaiV 856e8f6a76 feat(mes): 添加条件渲染和调整表单标签宽度 2026-03-28 08:34:04 +08:00
YunaiV 1993e46eb6 feat(mes): 重构「完成」操作逻辑,优化表单处理
更新了多个表单的完成操作逻辑,确保在表单修改后先保存数据再完成检验单。此变更提升了用户体验,避免了数据丢失的风险。
2026-03-27 22:48:18 +08:00
YunaiV 0befdd32ad feat(mes): 添加样品编号生成方法,优化质检表单 2026-03-27 21:54:24 +08:00
YunaiV 4e05ad4691 feat(mes): 更新销售出库单状态流转逻辑,添加 OQC 检验支持
优化销售出库单的状态流转逻辑,新增待检测状态以支持 OQC 检验。根据检验结果自动流转状态,提升出库流程的灵活性和准确性。
2026-03-27 19:57:14 +08:00
YunaiV 49b0de72df feat(mes): 更新质检标志字段,优化相关逻辑
将多个类中的质检标志字段从 `iqcCheck` 和 `qcFlag` 更新为 `iqcCheckFlag` 和 `rqcCheckFlag`,以提高代码一致性和可读性。同时,更新相关逻辑以自动计算质量状态,确保系统在处理质检时的准确性。
2026-03-27 19:28:20 +08:00
YunaiV f39c47a58b feat(mes): 更新待检任务查询,优化字段描述和逻辑
- 修改待检任务查询的注释,提升可读性
- 在 IQC 相关逻辑中添加事务管理
- 更新表单字段,调整来源单据类型和名称
2026-03-27 18:22:30 +08:00
YunaiV addba55f2d feat(mes): 添加检测工具字段,优化出货检验单数据结构
新增检测工具字段以支持更全面的检验信息,同时优化相关数据结构,提升系统的可用性和灵活性。
2026-03-27 17:26:08 +08:00
YunaiV 3c1d5eb01a feat(mes): 更新退货检验单相关字段,优化数据结构和逻辑 2026-03-26 22:38:27 +08:00
YunaiV be159c7070 feat(mes): 添加来源单据编号字段,优化数据结构 2026-03-26 21:44:05 +08:00
YunaiV 9959c6c5f6 feat(mes): 更新退货检验单表单,修正名称并优化字段处理 2026-03-26 13:26:16 +08:00
YunaiV 047e2d08c5 feat(mes): 更新退货检验单逻辑,支持合格/不合格数量拆分
优化退货检验单的处理逻辑,新增对合格品和不合格品数量的支持。实现了根据检验结果更新退货单行的质量状态,并在部分合格的情况下进行行拆分。同时,更新了相关的接口和数据结构,确保数据一致性和完整性。
2026-03-25 23:37:29 +08:00
YunaiV 7736768a3e feat(mes): 添加工单、工作站、任务和客户信息字段 2026-03-25 21:04:24 +08:00
YunaiV d79d6084c3 feat(mes): 添加过程检验单编码,更新工作站校验方法返回类型 2026-03-24 22:38:28 +08:00
YunaiV cbf173b75b feat(mes): 更新单据状态字段宽度,优化界面布局 2026-03-24 21:09:16 +08:00
YunaiV cbbf44e6ab feat(mes): 移除来源单据编号字段,优化数据结构 2026-03-24 21:05:11 +08:00
YunaiV eef5ec9b78 feat(mes): 更新来源单据类型为整型,优化数据一致性
将来源单据类型字段从字符串更改为整型,以提高数据一致性和类型安全性。同时,添加了相关的枚举类型以支持新的字段定义。
2026-03-24 14:03:16 +08:00
YunaiV c9b99e9465 feat(mes): 重命名待检数量字段,优化数据一致性 2026-03-24 09:37:03 +08:00
YunaiV 23748e3433 feat(mes): 添加质检标识字段,优化入库单信息管理 2026-03-24 09:03:03 +08:00
YunaiV 74879e0933 feat(mes): 禁止修改物料和模板字段,优化表单状态管理 2026-03-23 23:37:02 +08:00
YunaiV 8ea418890d ♻️ refactor(mes): 移除更新成功后的窗口关闭逻辑 2026-03-23 23:06:50 +08:00
YunaiV ec48c03486 feat(mes): 添加来料检验单编码规则和优化界面元素
新增来料检验单编码规则,支持自动生成检验单编号。优化了多个表单中的分隔符样式,提升用户体验。
2026-03-23 23:03:50 +08:00
YunaiV 251dd5b720 feat(mes): 更新 IqcForm 组件逻辑,优化新增和更新操作 2026-03-23 22:10:05 +08:00
YunaiV 06689709ea feat(mes): 移除状态字段并添加来料日期选择功能
移除不再使用的状态字段,简化数据结构。同时在前端表单中添加来料日期选择功能,以便用户输入相关信息。
2026-03-23 22:00:47 +08:00
YunaiV f9717b63ea feat(mes): 重命名生产领料出库相关类和接口,统一为产品领料出库命名
重构生产领料出库相关的类、接口和API,统一命名为产品领料出库,以提高代码的一致性和可读性。包括修改相关的状态枚举、数据对象、服务接口及其实现,确保所有引用均已更新。

BREAKING CHANGE: 相关类和接口的名称已更改,需更新调用代码
2026-03-23 21:32:18 +08:00
YunaiV 46f72e85a8 feat(mes): 修改库存冻结标识字段名称为 'frozen' 2026-03-23 13:02:47 +08:00
YunaiV 55845bded4 feat(mes): 修改库存冻结标识字段名称为 'frozen'
将库存相关的冻结标识字段从 'frozenFlag' 修改为 'frozen',以提高代码一致性和可读性。涉及多个数据对象和请求/响应对象的更新。
2026-03-23 09:58:07 +08:00
YunaiV e6f05a0d52 feat(mes): 添加仓库、库区和库位名称字段及相关校验 2026-03-22 21:53:26 +08:00
YunaiV 20bdd0ad31 feat(mes): 更新库存管理逻辑,重命名字段并添加事务记录
重构库存管理相关的请求和响应对象,更新字段名称以提高语义清晰度。新增库存事务流水记录,支持库存增减事件的追踪。此变更旨在提升库存管理的可维护性和可读性。
2026-03-22 16:31:59 +08:00
YunaiV 4b08ee3d97 ♻️ refactor(mes): 移除流转卡相关的状态和时间字段,简化请求和响应对象 2026-03-21 22:25:58 +08:00
YunaiV 478268f9c9 feat(mes): 重构生产入库单行相关逻辑,更新字段及接口
重命名和更新了生产入库单行的请求和响应对象,调整了字段名称以更好地反映业务逻辑。同时,优化了控制器中的相关方法,确保与新的数据结构一致。此变更旨在提升代码的可读性和维护性。
2026-03-21 21:23:56 +08:00
YunaiV 6a7fd807b8 feat(wm): 删除多余的 productproduct 界面 2026-03-21 00:22:02 +08:00
YunaiV d6fc4ad3ef feat(mes): 添加物料消耗记录行的请求和响应 VO 及控制器
新增物料消耗记录行的请求和响应数据对象,包含分页请求和响应结构。
同时实现了控制器以支持根据报工编号分页获取消耗行列表的功能。
2026-03-19 23:55:27 +08:00
YunaiV 434d68ac11 feat(mes): 添加报工审批功能,优化状态管理
新增报工审批功能,包括审批通过和驳回的逻辑,优化了状态枚举和表单交互,提升用户体验。
2026-03-19 13:09:37 +08:00
YunaiV 424f3d04c1 feat(mes): 添加报工人和审核人字段,优化审批逻辑 2026-03-19 08:40:56 +08:00
YunaiV 6553ab1875 feat(mes): 重构报工审批逻辑,更新相关字段和接口
优化报工审批功能,修改了相关的请求和响应对象,移除不必要的字段,新增任务信息的自动填充逻辑。调整了控制器中的方法名称和权限校验,确保审批流程的清晰和一致性。
2026-03-18 21:49:34 +08:00
YunaiV b6a6479ced feat(mes): 添加条件渲染以显示删除按钮 2026-03-17 21:49:04 +08:00
YunaiV ea35423d9e feat(mes): 添加安灯呼叫记录创建和更新请求 VO 2026-03-17 21:15:47 +08:00
YunaiV 8774ea3dad feat(mes): 添加角色选择器组件,优化安灯呼叫配置 2026-03-17 13:24:02 +08:00
YunaiV 0571b98552 feat(mes): 添加工艺路线编号字段,优化任务查询逻辑 2026-03-17 13:07:41 +08:00
YunaiV 5418806b9f feat(mes): 优化任务名称构建逻辑,支持数量动态更新
重构任务名称构建逻辑,使用独立方法生成任务名称,确保在创建和更新任务时数量信息正确显示。更新甘特图配置,允许在编辑状态下拖动和调整任务持续时间,提升用户交互体验。
2026-03-17 09:51:48 +08:00
YunaiV 0a0cd5f165 feat(mes): 优化生产任务保存请求和验证逻辑
调整生产任务保存请求的字段为可选,简化编辑时的请求参数。更新任务验证逻辑,确保在更新时只校验存在的字段,提升用户体验和代码可维护性。同时,新增甘特图编辑页面,支持批量保存任务修改。
2026-03-16 23:28:27 +08:00
YunaiV 98c8b9a5cf feat(mes): 添加甘特图任务类型映射和国际化支持
新增甘特图组件的任务类型映射,使用 BarcodeBizTypeEnum 枚举来处理后端类型。同时,优化了中文国际化设置,确保甘特图组件在中文环境下的正确显示。
2026-03-16 21:44:30 +08:00
YunaiV 81a8f262aa feat(mes): 添加甘特图数据项 VO 和相关接口逻辑
新增 GanttDataRespVO 类以支持甘特图数据结构,并在 MesProTaskController 中实现获取甘特图任务列表的接口。此变更旨在优化任务管理界面,提升用户体验。
2026-03-16 13:03:15 +08:00
YunaiV 5f8a002654 feat(mes): 添加甘特图任务列表接口,优化任务数据加载 2026-03-15 23:28:57 +08:00
YunaiV 3860525dfd feat(mes): 添加工作站编码字段,移除单位编号字段并优化相关逻辑 2026-03-15 22:04:27 +08:00
YunaiV d49ba31f78 feat(mes): 添加工单完成功能,优化任务管理界面 2026-03-15 20:55:57 +08:00
YunaiV 3d459b292f feat(mes): 添加按产品查询工序列表功能 2026-03-15 20:43:44 +08:00
YunaiV e4c0a881f0 feat(mes): 重构工单对话框,合并排产与详情功能 2026-03-15 18:06:19 +08:00
YunaiV 0bcab49fc0 feat(mes): 添加工单状态和来源单据字段,优化查询功能 2026-03-15 16:45:58 +08:00
YunaiV 39d3efce50 feat(mes): 移除单位编号字段,优化工单 BOM 相关逻辑 2026-03-15 10:39:07 +08:00
YunaiV 1e5f56b54b feat(mes): 移除单位编号字段,优化工单请求参数 2026-03-15 09:22:05 +08:00
YunaiV fb8b459182 feat(mes): 移除工单来源、批次号和工单状态字段,简化请求参数 2026-03-14 21:07:39 +08:00
YunaiV 47f4f68ca8 feat(mes): 添加批次分页功能,支持根据条件查询批次列表 2026-03-14 20:16:14 +08:00
YunaiV 0bc189097d feat(mes): 添加批次追溯功能,支持向前和向后查询批次列表 2026-03-14 14:52:43 +08:00
YunaiV 39c14c61d4 feat(mes): 更新生产批号字段为批号,优化数据模型 2026-03-14 00:35:36 +08:00
YunaiV e518ffe0fd feat(mes): 添加批次号字段并更新表单逻辑
新增批次号字段至数据模型,并调整表单以支持自动生成批次号的显示。移除不必要的输入项,优化用户体验。
2026-03-14 00:24:15 +08:00
YunaiV 851891eab7 feat(mes): 添加批次管理功能,支持批次生成与获取
新增批次生成请求 VO 和批次管理服务接口,支持根据物料批次配置生成或获取批次记录。更新相关数据对象和服务实现,确保批次管理功能的完整性和可用性。
2026-03-13 23:55:24 +08:00
puhui999 dfee5b999d style(iot): 优化 Database 数据目的的建表提示UX
- 表名输入框右侧附加「查看/收起表结构提示」按钮
- 引入 el-collapse-transition 结合酷炫终端卡片实现平滑的折叠动画
- 修正 Vue template 中由于缺少闭合 div 导致的语法编译错误
2026-03-13 12:46:57 +08:00
puhui999 9f19835a80 feat(iot): Database 表单增加建表 SQL 提示和一键复制
- 顶部 el-alert 友好提示用户需要先创建表
- 内嵌 SQL 文本框(monospace字体) + 复制按钮
- tableName 默认值设为 iot_device_message_sink
2026-03-13 12:30:04 +08:00
puhui999 ad376b24b4 feat(iot): 前端新增 Database 数据目的配置表单
1. DatabaseConfigForm.vue: 新增 Database 配置表单(JDBC地址/用户名/密码/目标表名)
2. config/index.ts: 导出 DatabaseConfigForm 组件
3. DataSinkForm.vue: 引入 DatabaseConfigForm 条件渲染和校验规则
4. api/sink/index.ts: 添加 DatabaseConfig 接口和联合类型
2026-03-13 12:27:09 +08:00
YunaiV 1ec78b1bbb feat(mes): 添加物料和盘点数量字段的展示与校验逻辑 2026-03-12 01:19:24 +08:00
YunaiV 523866f044 feat(mes): 更新盘点结果相关逻辑,添加盘点数量字段
- 修改盘点结果请求和响应对象,新增盘点数量字段并设置为必填
- 更新控制器逻辑,简化创建和更新盘点结果的处理
- 添加盘点任务行的创建和更新逻辑,确保数据一致性
- 优化错误处理,增加相关错误码
2026-03-12 01:05:56 +08:00
YunaiV 6f97a7b473 feat(mes): 添加盘点结果的创建、更新和删除功能 2026-03-11 09:34:42 +08:00
YunaiV 567ed338c8 feat(mes): 更新盘点方案参数类型枚举及相关逻辑 2026-03-11 00:53:50 +08:00
YunaiV 0fb0150579 feat(mes): 添加盘点任务行的请求和响应 VO 及相关控制器
新增 MesWmStockTakingTaskLinePageReqVO 和 MesWmStockTakingTaskLineSaveReqVO 类,支持盘点任务行的分页请求和新增/修改请求。同时,创建 MesWmStockTakingTaskLineController 控制器,提供相应的 API 接口,增强系统的功能性和可维护性。
2026-03-10 23:52:09 +08:00
YunaiV b04162dab0 feat(mes): 支持盘点任务的动态时间过滤:
1. 新增动态盘点时间过滤功能
 2. 重构盘点任务流程
 3. 代码优化
 4. 前端适配
2026-03-10 20:15:19 +08:00
funcong 8cffb4a8ca fix: 修复请求拦截器bug 2026-03-10 18:48:03 +08:00
YunaiV 5df13ec5b8 feat(mes): 添加盘点任务相关的请求和响应 VO 2026-03-10 00:39:53 +08:00
YunaiV 0559f8eccd feat(mes): 更新盘点方案参数类型枚举及相关逻辑 2026-03-09 22:58:32 +08:00
YunaiV 9a6cd0f6cb feat(mes): 添加盘点方案状态更新功能及参数校验
新增更新盘点方案状态的接口,确保在启用状态时,相关参数不为空。
同时,更新了相关权限控制和错误码定义,提升了系统的健壮性和用户体验。
2026-03-09 22:29:49 +08:00
YunaiV ca2447f710 feat(mes): 更新盘点方案参数及状态管理逻辑
移除不必要的字段,优化参数类型枚举,添加分页请求和响应对象,增强代码可读性和维护性。更新状态管理逻辑,确保盘点方案的启用状态与参数一致性。
2026-03-09 21:47:24 +08:00
YunaiV 34068a5583 feat(mes): 更新盘点方案参数及状态管理逻辑
移除不必要的字段,优化参数类型枚举,添加分页请求和响应对象,增强代码可读性和维护性。更新状态管理逻辑,确保盘点方案的启用状态与参数一致性。
2026-03-09 21:46:52 +08:00
YunaiV 43dd2425ed feat(mes): 添加盘点方案参数相关功能和数据结构
新增盘点方案参数的 CRUD 接口及相关枚举,支持在管理后台进行参数的创建、更新和删除操作。同时,更新了前端组件以支持参数的动态选择和展示,提升用户体验。
2026-03-09 09:04:03 +08:00
YunaiV 2cde22dcd7 feat(mes): 添加物料编码、名称及规格字段,更新状态管理 2026-03-08 23:05:25 +08:00
YunaiV 74e058ee49 feat(mes): 添加上架功能及相关字段校验
新增执行上架功能,允许将待上架状态的转移单更新为待执行状态。
同时,添加了转移单及转移单行的字段校验,确保必要字段不为空,提升数据完整性。
2026-03-08 22:38:03 +08:00
YunaiV 544546862c feat(mes): 添加转移单及转移单行的字段校验和状态管理
新增转移单及转移单行相关功能,包含字段的必填校验和状态管理逻辑。更新了相关数据结构,确保在创建和提交转移单时进行必要的验证,提升系统的稳定性和数据一致性。

- 添加转移单字段的必填校验
- 更新转移单状态管理逻辑
- 增强数据结构的完整性
2026-03-08 21:13:02 +08:00
YunaiV 0a508c881e feat(mes): 添加转移单及转移单行相关功能和数据结构
新增转移单及转移单行的相关数据对象、服务接口和控制器,支持转移单的创建、修改、删除和查询功能。同时,添加了转移单状态和类型的枚举,完善了相关的 API 接口。

- 添加 MesWmTransferDO、MesWmTransferLineDO、MesWmTransferDetailDO 数据对象
- 实现 MesWmTransferService 和 MesWmTransferLineService 接口
- 新增 MesWmTransferController 和 MesWmTransferLineController 控制器
- 更新相关的 API 接口文档
2026-03-08 20:39:21 +08:00
YunaiV 5dbbb84d1b feat(mes): 添加装箱单及装箱明细的作者注释和字段类型调整 2026-03-08 13:04:51 +08:00
YunaiV 2cb3b5b492 feat(iot): IoT 产品和设备分页默认改为 12 条 2026-03-08 12:27:47 +08:00
YunaiV d6cb5e4e5c feat(mes): 添加装箱单及装箱明细的 VO 和 Mapper 注释
为装箱单及装箱明细相关的 VO 和 Mapper 类添加了详细的注释,提升代码可读性和维护性。同时,修正了部分字段类型以确保一致性。
2026-03-08 12:22:24 +08:00
YunaiV 76ee59b868 feat(mes): 重构装箱单及装箱明细相关功能
- 移除不必要的仓库、库区和库位字段
- 更新接口名称为 addChildPackage 和 removeChildPackage
- 添加可添加为子箱的装箱单精简列表接口
- 优化相关逻辑,确保代码整洁和可维护性
2026-03-08 12:04:46 +08:00
YunaiV 61d710bc8e feat(mes): 添加装箱单及装箱明细相关功能
新增装箱单和装箱明细的请求和响应对象,支持装箱单的创建、更新、删除及查询功能。包括装箱单的状态管理和子箱的添加与移除逻辑,提升了系统的功能完整性和用户体验。
2026-03-08 11:06:22 +08:00
YunaiV e58ffbb681 feat(mes): 添加装箱单及装箱明细相关功能
新增装箱单和装箱明细的请求和响应对象,完善装箱单的创建、更新、删除及查询功能。
同时,增加装箱单状态的枚举和相关逻辑,提升系统的可用性和扩展性。
2026-03-08 09:22:21 +08:00
YunaiV 001b1c4c86 feat(mes): 添加条码详情查看功能及相关逻辑 2026-03-07 19:18:37 +08:00
YunaiV 4cbfd26da7 feat(mes): 添加级联选择器数据加载逻辑 2026-03-07 18:07:13 +08:00
YunaiV 715135fbb1 feat(mes): 添加条码内容生成接口及相关逻辑
新增条码内容生成接口,支持根据业务类型和编码生成条码内容。
同时更新相关服务和前端组件,确保条码内容的自动生成和验证逻辑。
2026-03-07 17:23:22 +08:00
YunaiV b386c17933 feat(mes): 添加工具精简列表接口及条码自动生成逻辑
新增工具精简列表接口,支持获取工具的简化信息。同时,在创建工具、客户、设备等时,自动生成对应的条码,提升条码管理的效率。
2026-03-07 14:47:57 +08:00
芋道源码 f29a384904
!862 fix: 完成 review c153ff93 的所有 TODO 修复
Merge pull request !862 from puhui999/master-dev
2026-03-07 03:56:34 +00:00
YunaiV 21821c92d9 feat(mes): 添加条码清单导出功能
实现条码清单的 Excel 导出功能,用户可以通过点击导出按钮下载条码清单。此功能增强了用户体验,方便用户管理和使用条码数据。
2026-03-07 10:12:43 +08:00
YunaiV c7f9d41e07 feat(mes): 更新条码组件和表单逻辑,优化数据处理 2026-03-07 09:10:07 +08:00
YunaiV 184009380d feat(mes): 更新条码业务类型和表单逻辑
调整条码业务类型枚举,修改库位和仓库的常量值,优化条码表单组件的选择逻辑,添加库区和设备的选择器,确保用户能够正确选择业务对象。
2026-03-07 00:49:15 +08:00
YunaiV 00259fd8a2 feat(mes): 更新条码表单组件,优化业务类型选择逻辑
调整条码表单中的选择器宽度,确保更好的用户体验。增加了对不同业务类型的动态选择支持,便于后续扩展和维护。
2026-03-06 22:04:06 +08:00
YunaiV 913fa69073 feat(mes): 添加业务名称字段及相关逻辑
在 MES 条码相关组件中新增业务名称字段,支持根据业务名称进行查询和管理。更新相关 API 逻辑以适应新字段的使用,提升条码管理的灵活性和准确性。
2026-03-06 09:42:07 +08:00
YunaiV e20322985c feat(mes): 添加条码配置和条码相关功能
新增条码配置的 API 接口,包括查询、创建、更新和删除功能。同时,重构了条码相关的组件和逻辑,确保与现有系统的兼容性。此更新旨在提升条码管理的灵活性和可维护性。
2026-03-06 08:54:19 +08:00
YunaiV 5960e0102f feat(mes): 添加编码规则分段详情查询 API 2026-03-06 00:09:34 +08:00
YunaiV c12d7616f2 feat(mes): 添加条码相关组件和逻辑
新增条码格式枚举、条码生成组件及其相关 API,支持条码的创建、查看和配置功能。实现了条码的自动生成逻辑,并优化了条码配置管理界面,提升用户体验。

- 新增 Barcode 组件用于条码展示
- 实现条码生成和下载功能
- 添加条码配置管理功能
2026-03-06 00:09:23 +08:00
YunaiV e275ef417e feat(mes): 添加 SN 码生成、查询和导出功能
新增 SN 码生成、分页查询和批量删除的 API 接口,支持导出 SN 码分组和明细为 Excel 文件。实现了前端页面的搜索、生成和导出功能,提升了用户操作的便捷性。
2026-03-05 13:36:35 +08:00
YunaiV 15e462b2d0 feat(mes): 添加编码规则分段详情查询 API 2026-03-05 01:23:22 +08:00
YunaiV 78f7110770 feat(mes): 更新 MES 编码相关的 API 路径并添加编码规则分段功能 2026-03-04 23:55:26 +08:00
YunaiV 2e87bf55b5 feat(mes): 添加外协发料单数量校验功能
新增校验接口,确保外协发料单每行明细数量之和与行发料数量一致。此功能提升了数据准确性,避免了潜在的发料错误。
2026-03-04 09:59:33 +08:00
YunaiV ce14a5ae6d feat(mes): 添加取消外协发料单功能
实现取消外协发料单的接口,支持在特定状态下取消发料单。新增相关的业务逻辑和错误处理,确保只有在允许的状态下才能执行取消操作。
2026-03-04 08:49:00 +08:00
YunaiV 05aca5904c feat(mes): 添加外协发料单状态管理功能
新增提交到待拣货、执行拣货和完成外协发料出库的功能,优化了状态管理逻辑,确保发料单在不同状态下的操作流程更加清晰和安全。
2026-03-04 01:40:33 +08:00
YunaiV 4b1db07af0 feat(mes): 添加外协入库明细的增删改查功能
实现外协入库明细的创建、更新、删除和查询功能,增强系统对外协入库明细的管理能力。新增相关的请求和响应 VO,确保数据的有效性和完整性。
2026-03-03 22:52:47 +08:00
YunaiV 2efd2ce442 feat(mes): 添加外协入库单行的请求和响应 VO 及相关控制器功能 2026-03-03 21:53:17 +08:00
YunaiV d1bd19200f feat(mes): 添加外协入库单及行相关功能和请求响应 VO 2026-03-03 20:41:21 +08:00
YunaiV 63f28ba4c3 feat(mes): 添加外协发料单行及明细相关功能和请求响应 VO 2026-03-03 20:17:24 +08:00
YunaiV e6261273d4 feat(mes): 添加杂项入库单行分页功能及明细服务实现 2026-03-03 19:52:54 +08:00
YunaiV 8138e9fa93 feat(mes): 更新杂项类型为整数并添加明细服务
将杂项类型字段从字符串更改为整数,以支持新的枚举类型。同时,新增杂项出库明细的服务接口和实现,提供对明细的增删改查功能,提升系统的灵活性和可维护性。
2026-03-03 19:11:48 +08:00
YunaiV 8948a76f63 feat(mes): 添加杂项入库单及行相关请求和响应 VO 2026-03-03 14:05:05 +08:00
YunaiV 16394f3f94 feat(mes): 添加杂项出库单类型及状态枚举支持
新增杂项出库单类型和状态枚举,更新相关接口和前端表单以支持业务类型选择。确保系统能够正确处理杂项出库单的状态和类型,提高用户体验和系统的灵活性。
2026-03-03 12:51:32 +08:00
YunaiV efa794d2ab feat(mes): 添加杂项出库单及行相关功能
新增杂项出库单及行的请求和响应对象,更新相关的接口和枚举,支持杂项出库单的创建、修改、删除和查询功能。优化了相关的业务逻辑和数据结构,以提升系统的可维护性和扩展性。
2026-03-03 11:49:19 +08:00
YunaiV 32ad593fae feat(mes): 更新检验单完成接口及权限管理 2026-03-02 19:38:23 +08:00
YunaiV fa38b554ea feat(mes): 更新反馈和入库相关接口及状态管理
将多个接口的执行方法重命名为完成方法,增强语义清晰度。更新相关的权限控制和状态枚举,确保系统逻辑一致性。
2026-03-02 19:25:37 +08:00
YunaiV 4d66a7072c feat(mes): 添加运单填写功能及相关状态管理 2026-03-02 18:54:26 +08:00
YunaiV 5375487d57 feat(mes): 更新销售出库单状态枚举及相关逻辑
新增待填写运单状态,优化销售出库单状态描述,调整相关方法注释以提高可读性。同时,更新前端表单以支持填写运单功能,确保用户体验一致性。
2026-03-02 18:21:55 +08:00
YunaiV 1a1209088c review(mes): 移除 WmBatchSelect 组件并更新相关逻辑 2026-03-02 17:20:30 +08:00
YunaiV 77e25ce9d8 feat(mes): 移除收货地址字段并优化发货通知单选择器 2026-03-02 13:32:06 +08:00
YunaiV 0e58608fe1 feat(mes): 添加客户验证逻辑至销售通知单创建与更新 2026-03-02 12:59:47 +08:00
YunaiV ac6bd643aa feat(mes): 新增发货通知单状态枚举及相关逻辑优化
新增 MES 发货通知单状态枚举,优化发货通知单的状态管理逻辑,提升代码可读性和维护性。移除不必要的字段,简化请求对象。
2026-03-02 12:25:41 +08:00
YunaiV 1f442fb7fd feat(mes): 新增发货通知单及相关行功能
添加发货通知单及其行的相关数据结构和逻辑,包括创建、更新、删除和查询功能。此功能将提升销售出库管理的效率,并支持更灵活的发货通知处理。
2026-03-02 12:07:02 +08:00
YunaiV 10d5510885 feat(mes): 添加销售出库单相关字段及逻辑优化
新增出库日期、发货通知单ID、发货通知单编号、客户编码、承运商和运输单号字段,优化了相关数据结构和逻辑,提升了销售出库单的功能完整性和数据准确性。
2026-03-02 11:12:12 +08:00
YunaiV 2242a13401 feat(mes): 新增销售出库单行及明细相关功能和数据结构
新增销售出库单行和明细的请求和响应对象,包含分页查询、创建、更新和删除功能。实现了销售出库单行和明细的数据库映射,并提供了相应的服务接口和控制器,支持前端调用。

同时,更新了相关的 API 接口,确保前端能够正确获取和操作销售出库单行及明细数据。
2026-03-02 10:42:20 +08:00
YunaiV 48e2ed8272 feat(mes): 添加物料批次管理校验逻辑 2026-03-01 23:03:56 +08:00
YunaiV 48b9e54fd8 feat(mes): 更新退货单相关字段及逻辑优化
- 修改退货数量字段名称为 `quantity`,以简化代码。
- 更新退货原因字段为必填项,确保数据完整性。
- 优化部分逻辑,提升代码可读性和维护性。
2026-03-01 22:47:51 +08:00
YunaiV 38f3e73486 feat(mes): 添加销售退货单及行相关功能和数据结构
新增销售退货单及行的相关数据结构、请求和响应对象,包含销售退货单的基本信息、行信息以及相关的 API 接口,支持销售退货单的创建、更新、查询和删除操作,提升了系统的功能性和可维护性。
2026-03-01 22:16:18 +08:00
YunaiV bc932d0a0d feat(mes): 添加销售退货单及行相关功能和数据结构
新增销售退货单及行的相关数据结构、请求和响应对象,包含销售退货单的基本信息、行信息以及相关的 API 接口,支持销售退货单的创建、更新、查询和删除操作,提升了系统的功能性和可维护性。
2026-03-01 22:16:12 +08:00
YunaiV c2e397e84c feat(mes): 重命名产品收货单相关类和接口
重命名产品收货单及其相关的 VO、DO、Service 和 API 接口,以统一命名为“Receipt”,提升代码可读性和一致性。此变更包括多个文件的重命名和相应的引用更新,确保系统功能不受影响。
2026-03-01 14:34:11 +08:00
YunaiV 21cfbb9314 feat(mes): 添加产品收货单明细数量校验功能
新增校验产品收货单明细数量的接口,确保每行明细数量之和与行收货数量一致。此功能提升了数据的准确性和完整性,避免了潜在的入库错误。

- 添加 checkProductRecptQuantity 方法
- 更新相关接口以支持数量校验
2026-03-01 13:16:39 +08:00
YunaiV c1a0c63ba6 feat(mes): 添加产品收货单及行相关功能和数据结构
新增产品收货单及行的相关数据对象、请求和响应 VO,以及对应的服务和控制器接口。实现了产品收货单的创建、更新、删除和查询功能,支持与物料、仓库等模块的关联,提升了系统的可扩展性和可维护性。
2026-03-01 11:33:09 +08:00
YunaiV 248635e3d7 feat(mes): 移除生产退料单数量校验逻辑及相关接口 2026-03-01 00:55:00 +08:00
YunaiV a9d08368a6 feat(mes): 更新生产退料单提交逻辑及状态校验
重构生产退料单的提交功能,合并确认与提交操作,简化状态流转逻辑。新增状态校验,确保只有草稿状态的退料单可提交,并根据物料质检状态自动决定目标状态(待检验或待上架)。
2026-03-01 00:23:51 +08:00
YunaiV 347b4dfaf4 feat(mes): 添加退料单质检标识及相关字段校验 2026-02-28 23:02:35 +08:00
YunaiV 15de32fcbf feat(mes): 添加生产退料单确认功能及字段校验
新增确认生产退料单的接口,更新相关字段为必填项并添加数量校验逻辑。此变更旨在提升退料单的管理效率和数据准确性。
2026-02-28 22:16:52 +08:00
YunaiV 2a83f67065 refactor(mes): 调整供应商退货模块字段映射
refactor(mes): 同步供应商退货字段变更
2026-02-28 18:17:12 +08:00
YunaiV 333c8a1154 feat(mes): 添加生产退料单及明细相关功能 2026-02-28 15:10:10 +08:00
YunaiV 0b29aaadaf feat(mes): 添加生产退料单及明细相关功能
新增生产退料单、退料单行及退料明细的请求和响应对象,完善相关的服务和映射接口,支持生产退料单的创建、更新和查询功能。
2026-02-28 13:28:27 +08:00
YunaiV 639ff7645e feat(mes): 添加供应商退货单及相关明细功能
新增供应商退货单、退货单行及退货明细的数据对象和 API 接口,支持供应商退货管理功能。
2026-02-28 09:56:20 +08:00
YunaiV 3d80f5c216 feat(mes): 添加生产入库单及相关功能
新增生产入库单的相关数据结构、API 接口和服务实现,包括入库单、入库明细及其 CRUD 操作。此功能支持生产入库管理,提升仓库管理效率。

- 添加生产入库单相关的请求和响应 VO
- 实现生产入库单的服务接口
- 增加生产入库单行的 CRUD 操作
- 更新相关的数据库映射和查询逻辑
2026-02-28 08:40:57 +08:00
YunaiV 8628548282 ♻️ refactor(mes): 删除多余的预留字段 2026-02-28 01:46:31 +08:00
YunaiV 0d3ddca266 feat(mes): 添加领料出库单数量校验功能
新增校验领料出库单数量的接口,确保每行明细数量之和等于行领料数量。此功能提升了数据一致性检查,避免了潜在的数量不匹配问题。
2026-02-28 00:52:00 +08:00
YunaiV 1afe2e79e4 feat(mes): 更新领料出库单明细 API 接口及组件
- 修改领料出库单明细的 API 接口,支持按行编号查询明细列表
- 替换供应商选择组件,简化供应商选择逻辑
- 添加取消领料出库单的功能,增强用户操作体验
2026-02-27 23:58:35 +08:00
YunaiV 5e2366ace0 feat(mes): 更新领料出库单相关 API 接口及组件
重命名领料出库单和明细相关的 API 方法,增强代码可读性。新增领料出库明细表单组件,支持拣货明细的添加与编辑功能。同时,调整相关组件的逻辑以适应新的 API 结构。
2026-02-27 23:33:22 +08:00
YunaiV bd27ddfc71 feat(mes): 添加生产领料出库单相关功能与接口
新增生产领料出库单的状态管理、行验证及明细查询功能,优化了相关数据模型和接口,提升了系统的可用性和用户体验。
2026-02-27 19:04:35 +08:00
YunaiV a77ef94fd5 feat(mes): 添加生产领料出库单相关功能与组件
新增生产领料出库单的相关数据模型、接口及前端组件,支持领料单的创建、编辑和完成操作。优化了数据校验逻辑,并添加了物料、库存和工单选择器,提升用户体验。

- 实现领料单的基本 CRUD 操作
- 增加物料和库存选择功能
- 优化前端表单布局与交互
2026-02-26 21:17:38 +08:00
YunaiV 84f417823d feat(mes): 添加 MES 领料出库单相关数据模型及接口
新增 MES 领料出库单及其行的响应和请求 VO,包含必要的字段和注释。
同时实现了相关的控制器和服务接口,支持创建、更新、删除和查询领料出库单的功能。

此功能将提升领料出库单的管理效率,便于后续的业务逻辑实现。
2026-02-26 19:18:10 +08:00
YunaiV fe04f0485e ♻️ refactor(mes): 使用 MesOrderStatusConstants 替代状态枚举值
重构采购入库单和领料申请单状态枚举,统一使用 MesOrderStatusConstants 中的常量,提升代码可维护性和一致性。
2026-02-26 19:08:52 +08:00
YunaiV 12b6c0df2f ♻️ refactor(mes): 重构质检状态枚举及相关逻辑
将质检相关的状态枚举从 MesOrderStatusEnum 更改为 MesQcStatusEnum,确保状态管理的一致性和可维护性。更新了相关的服务和前端逻辑,以反映新的状态枚举。
2026-02-26 09:37:27 +08:00
YunaiV e26a40fe0e refactor(mes): 优化弹窗标题显示
refactor(framework): 优化 ObjectUtils 工具类
2026-02-26 01:44:00 +08:00
YunaiV a94e55b533 feat(mes): 添加到货通知单行列表查询接口及相关字段调整
新增获取到货通知单行列表的接口,支持通过通知单编号查询。调整相关数据模型,更新字段名称以提高可读性,并移除冗余字段,优化数据结构。同时,更新前端组件以支持新接口的调用和展示。

BREAKING CHANGE: 修改了到货通知单行的字段名称和接口路径
2026-02-26 01:31:00 +08:00
YunaiV 6312e2fe56 refactor(mes): 优化采购入库单界面文案和标记待优化项
- 修改列名:上架数量 -> 数量
  - 标记界面布局和组件选择器待优化项
  - 调整代码格式
2026-02-25 23:16:17 +08:00
YunaiV b460a0e47d feat(mes): 优化到货通知单表单交互
- 参考 IQC 表单模式,支持详情查看和新增后自动进入编辑
- 移除用户不应填写的字段(合格数量由 IQC 回调设置)
- 使用 MdVendorSelect 组件替换内联选择器
- 添加必填验证(通知单名称、是否检验、到货数量 > 0)
- 修复导航:点击编号查看详情,新增入库单按钮查看相关入库单
2026-02-25 21:37:09 +08:00
YunaiV 2fc5362a7e feat(mes): 优化 RQC 前端交互,添加缺陷统计显示
主要变更:
  - RqcForm 添加缺陷情况显示区域和 detail 模式支持
  - 检验单编号改为链接,点击可查看详情(对齐 IQC)
  - 删除 sourceDocCode 字段,rqcType 改为 type
  - RQC Line 的 toolId/toolName 改为 tool 字段
  - 新增成功后自动切换到编辑模式,可继续编辑子表
2026-02-25 19:24:30 +08:00
YunaiV 44aa77e79f refactor(mes-qc): 优化 OQC 出货检验单表单
- 删除质检方案(templateId)选择字段
  - 恢复合格品数量(qualifiedQuantity)字段
  - 优化表单布局(每行 3 个字段)
  - 新增数量字段、日期字段、检测人员必填校验
  - 删除出货日期、检测日期搜索字段
2026-02-25 13:33:33 +08:00
YunaiV 7df0785818 refactor(mes-qc): 优化 IPQC/IQC 质检模块
IPQC 优化:
  - 修复 TODO AI 项:模板检索方法、tool 字段重构、删除冗余字段
  - 新增废品数量字段(工废/料废/其他废品)及验证
  - 添加检测人员和物料的存在性验证

  IQC 优化:
  - 检测人员由后端自动设置改为前端传递
  - 添加检测人员存在性验证
2026-02-25 00:15:05 +08:00
YunaiV a013f965aa review(mes): 各种 qc 单的校验逻辑。 2026-02-24 17:10:58 +08:00
YunaiV 81bee7693f refactor(mes): 新增 mes_order_status 字典,替代 mes_qc_iqc_status
- dict.ts:MES_QC_IQC_STATUS → MES_ORDER_STATUS,删除 @AI TODO
- constants.ts:4 个独立 QC 状态枚举(IQC/IPQC/OQC/RQC)合并为统一的 MesOrderStatusEnum(草稿/已确认/审批中/已审批/已完成/已取消)
- iqc/ipqc/oqc/rqc index.vue:字典类型引用更新为 MES_ORDER_STATUS
- iqc/index.vue:状态判断由 MesQcIqcStatusEnum.PREPARE → MesOrderStatusEnum.DRAFT
2026-02-24 05:16:41 +08:00
YunaiV d7d22b8a8f feat(mes): 新增供应商和物料存在性校验功能 2026-02-24 04:55:28 +08:00
YunaiV 251a7851a0 ♻️ refactor(mes): 调整表格列宽和标签名称 2026-02-24 04:23:08 +08:00
YunaiV e13a3b2fac feat(mes): IQC 检验单行 toolId/toolName 改为 tool
- api/mes/qc/iqc/line/index.ts: QcIqcLineVO 删除 toolId、toolName,新增 tool
- views/mes/qc/iqc/IqcLineList.vue: 表格列 prop 由 toolName 改为 tool
2026-02-24 03:57:59 +08:00
YunaiV f1beac7055 refactor(mes): IQC 表单字段清理 + 校验增强
1. IqcForm.vue
   - 删除质检方案(templateId)、检测人员(inspectorUserId)表单项
   - formData/resetForm 移除 templateId/minCheckQuantity/maxUnqualifiedQuantity/checkQuantity/inspectorUserId
   - formRules 增加 qualifiedQuantity/unqualifiedQuantity/receiveDate/inspectDate 必填校验
   - 移除 QcTemplateSelect、UserSelect 组件引用
   - open 方法参数 prefillData → data,去掉 Partial
2. api/mes/qc/iqc/index.ts
   - QcIqcVO 删除 minCheckQuantity、maxUnqualifiedQuantity
2026-02-24 00:46:49 +08:00
YunaiV 7ea96e1c2e refactor(mes): IQC 模块重构 - Service 拆分 + 字段清理 + 业务逻辑优化
1. 拆分 MesQcTemplateService → MesQcTemplateDetailService
   - 检测指标项、产品关联 CRUD 迁移至 DetailService
   - 新增 getRequiredTemplateByItemIdAndType 方法
2. MesQcIqcSaveReqVO 字段清理
   - 删除 templateId/minCheckQuantity/maxUnqualifiedQuantity/checkQuantity/inspectorUserId
   - 增加 qualifiedQuantity/unqualifiedQuantity @NotNull + @DecimalMin 校验
   - 增加 receiveDate/inspectDate @NotNull 校验
3. MesQcIqcServiceImpl 业务逻辑调整
   - createIqc/updateIqc 增加 inspectorUserId 参数,由 Controller 传入 getLoginUserId()
   - templateId 不再由前端传递,后端根据 itemId + IQC 类型自动查找模板
   - checkQuantity 由后端计算(= qualifiedQuantity + unqualifiedQuantity)
   - updateIqc 禁止修改 sourceDocType/sourceDocId/sourceLineId/templateId
4. MesQcIqcDO/RespVO 删除 minCheckQuantity、maxUnqualifiedQuantity 字段
5. 更新调用方:IndicatorController、ItemController、IQC/OQC/IPQC ServiceImpl
2026-02-24 00:46:37 +08:00
YunaiV f2dd52706b feat(mes): 新增待检任务列表页 + IqcForm 支持预填
- 新增 pendinginspect/index.vue 待检任务列表页
- 新增 api/mes/qc/pendinginspect/index.ts API 定义
- 搜索栏:来源单据编号、产品物料(MdItemSelect)、检验类型
- 表格列:来源单据编号、检验类型/名称、物料编码/名称、规格型号、待检数量、单位
- IQC 行显示"创建检验单"按钮,打开 IqcForm 并预填来源数据
- IqcForm.vue: open() 增加 prefillData 参数,isFromPendingTask 控制来源字段只读
- 新增菜单 SQL(mes_qc_pending_inspect.sql)
- 新增待检任务测试数据(mes_wm_arrival_notice.sql id=100~102)
2026-02-23 15:55:57 +08:00
YunaiV 3b52a8a2ad feat(mes): 同步 IQC 与到货通知单后端变更
1. IQC API sourceDocType 从 string 改 number,删除 sourceDocCode
2. IQC 表单删除 sourceDocCode 字段(formData + resetForm)
3. 到货通知单 API 删除 approveArrivalNotice 方法(后端已移除该端点)
2026-02-23 12:26:29 +08:00
YunaiV e736f26166 feat(mes): 添加采购入库明细列表接口及上架明细表单功能 2026-02-23 02:16:35 +08:00
YunaiV ea476a1ec3 feat(mes): 完善入库单操作逻辑与界面交互
重构入库单相关组件,优化用户操作体验。移除不必要的审批按钮,简化执行入库流程为直接确认并调用接口。更新状态判断逻辑,确保只有待上架和待入库状态可以取消操作。调整表单展示逻辑,确保在不同模式下的字段可读性。

此变更旨在提升用户操作的直观性与效率,减少误操作的可能性。
2026-02-23 00:43:22 +08:00
YunaiV 72c3e545f1 feat(mes): 添加到货通知单精简列表接口及状态筛选功能
新增获取到货通知单的精简列表接口,支持按状态筛选。更新相关状态枚举和校验逻辑,优化采购入库单的审批和取消功能,确保系统在处理入库单时的状态管理更加清晰和高效。
2026-02-22 23:34:13 +08:00
YunaiV fcd90edc08 feat(mes): 添加物料接收单状态枚举及相关功能
新增物料接收单的状态枚举,包含草稿、待质检、已完成和待入库状态。
同时更新相关的请求和响应对象,确保在物料接收流程中能够正确处理状态变更。
2026-02-22 19:16:30 +08:00
YunaiV 6e56876c3c feat(mes): 添加入库日期和状态筛选功能
在 MES 采购入库单请求中新增入库日期字段,并在数据查询中支持根据入库日期进行筛选。此功能提升了用户在管理入库单时的灵活性和准确性。
2026-02-22 18:13:07 +08:00
YunaiV b32770d77e feat(mes): 新增到货通知单和到货通知单行的表单组件 2026-02-22 18:00:32 +08:00
YunaiV 5aea9a0428 feat(mes): 添加到货通知单的到货日期和状态枚举
新增到货日期字段到 MES 到货通知单请求 VO,并在查询中支持根据到货日期范围筛选。同时,添加到货通知单状态的枚举定义,提升系统的可维护性和可读性。
2026-02-22 18:00:24 +08:00
YunaiV 39187b441e feat(mes): 新增到货通知单和到货通知单行的表单组件 2026-02-22 17:28:11 +08:00
YunaiV 6fd1806c4c feat(mes): add request and response VO for MES item receipt and detail, including service and controller implementations 2026-02-22 15:43:58 +08:00
YunaiV 87d24ab7a4 feat(mes): add VO and service for managing MES arrival notice and arrival notice line 2026-02-22 15:43:49 +08:00
YunaiV b6e875c6bb feat(mes): change rqcType from String to Integer and update related fields in RQC classes 2026-02-22 15:13:52 +08:00
YunaiV b1f0a71b7a feat(mes): update IPQC type to Integer and add source document fields in RQC 2026-02-22 14:27:35 +08:00
YunaiV 52785c5c08 feat(mes): add RQC line request and response VO, and implement RQC line controller and service 2026-02-22 12:24:20 +08:00
YunaiV 479f35ffb8 feat(mes): add RQC (退货检验单) related classes and API for handling inspection lines 2026-02-22 11:21:37 +08:00
YunaiV 969b4a70f0 feat(mes): 新增 IPQC 过程检验前端页面,集成缺陷记录与检测结果
- 新增 IPQC 列表页、表单弹窗、检验行子表
- IpqcForm 新增"检测结果"标签页,复用 QcIndicatorResultList 组件
- IpqcLineList 新增"缺陷列表"操作列,集成 DefectRecordInlineList 弹窗,添加分页
- 新增 IPQC API 和 Line API(TypeScript)
- dict.ts 注册 MES_IPQC_TYPE 字典类型
- constants.ts 新增 MesQcIpqcStatusEnum 枚举
2026-02-22 11:03:12 +08:00
YunaiV 418de29138 refactor(mes): 优化检验结果表单,简化接口调用和字段处理
1. API:合并 getResult + getDetailTemplate 为 getDetail(qcId, qcType, id?),
   精简 VO 类型定义,移除后端不再返回的关联字段
2. Form:open 方法统一 formData.value = data 赋值(不再区分 create/update),
   合并 valueFloat/valueInteger 为 valueNumber,
   getDictOptions 改为 getStrDictOptions,补全 JSDoc 注释
3. 新增 IPQC 模块页面(index.vue/IpqcForm.vue/IpqcLineList.vue)及 API
2026-02-22 08:36:21 +08:00
YunaiV a8ffdfab75 feat(mes): add validation for inspection result detail list and update related comments 2026-02-22 08:04:09 +08:00
YunaiV db33e04451 feat(mes): refactor inspection result types and add new result detail structure 2026-02-21 23:42:34 +08:00
YunaiV 47c84d3104 refactor(mes): 质检指标 resultType 改为 number 类型,resultSpec 重命名为 resultSpecification,result 目录重命名为 indicatorresult
1. indicator/index.ts:resultType 从 string 改为 number,resultSpec 重命名为 resultSpecification
2. IndicatorForm.vue:getStrDictOptions 改为 getIntDictOptions,条件判断改为数字比较(4=DICT, 5=FILE)
3. indicator/index.vue:结果值类型筛选下拉改用 getIntDictOptions
4. qc/result 目录整体重命名为 qc/indicatorresult(views + api),更新 IqcForm.vue 的引用路径
2026-02-21 22:40:41 +08:00
YunaiV 461510786e 【后端】refactor(mes): 将 MesQcDefectRecordDO 相关类从 qc/defect 包独立到 qc/defectrecord 包
【前端】refactor(mes): 将缺陷记录相关文件从 qc/defect/record 目录独立到 qc/defectrecord 目录
2026-02-21 22:11:21 +08:00
YunaiV 79bc5c6ea0 feat(mes): 添加生成检验单编号功能,重构质检方案选择组件,优化表单逻辑和注释 2026-02-21 21:17:28 +08:00
YunaiV 298ad41d5b feat(mes): 重构缺陷记录相关类的包结构,更新缺陷等级字段类型为整数,优化缺陷记录内联编辑组件 2026-02-21 21:03:14 +08:00
YunaiV 31cc9bd31e feat(mes): 更新质检缺陷记录权限标识,重构相关校验逻辑,优化缺陷统计计算 2026-02-21 19:26:47 +08:00
YunaiV 87d10eacb8 feat(mes): 适配通用质检缺陷记录 API,更新 IQC 缺陷列表组件
配合后端 mes_qc_defect_record 通用化重构,前端同步适配。

主要变更:
1. 新增 api/mes/qc/defect-record/index.ts 通用缺陷记录 API
2. IqcDefectList.vue 切换至 QcDefectRecordApi,字段映射调整
   (defectName→name, defectLevel→level, defectQuantity→quantity, iqcId→qcId)
3. 新增 qcType=1 参数标识 IQC 类型
2026-02-21 16:52:03 +08:00
YunaiV 473a0d9017 feat(mes): 移除不必要的字段,优化流转卡和工序记录的校验逻辑,添加工序记录列表组件 2026-02-21 12:35:48 +08:00
YunaiV e9e066cf25 feat(mes): 添加报工相关字段和简化选择组件,优化数据处理逻辑 2026-02-21 12:29:49 +08:00
YunaiV 1c4ae03e7d feat(mes): 添加计划班组和班次相关的 VO 及 API,新增点检保养方案设备和项目的 VO 及 API,添加工序选择器组件 2026-02-21 12:22:47 +08:00
YunaiV 335f367e00 feat(mes): 添加生产任务选择器和工单选择器组件,支持前端过滤功能 2026-02-21 12:21:36 +08:00
YunaiV 7b274a0990 feat(mes): 添加流转卡和工序记录相关的请求和响应 VO,重构服务接口及实现 2026-02-21 11:58:14 +08:00
YunaiV eab4883204 feedback 2026-02-21 11:15:00 +08:00
YunaiV 170b9e0857 feat(mes): 添加生产报工相关的请求和响应 VO,重构报工控制器及服务实现 2026-02-21 09:27:45 +08:00
YunaiV f7d8682073 feat(mes): 添加安灯配置编号和用户信息字段,重构相关数据对象和服务接口 2026-02-21 09:26:06 +08:00
YunaiV b505744d0c feat(mes): 重构安灯相关组件,优化导入路径,增加注释以提升可读性 2026-02-21 08:46:51 +08:00
YunaiV a0ac62e0fa feat(mes): 重构 IQC 状态管理,使用枚举替代硬编码,简化代码并提升可维护性 2026-02-21 08:10:12 +08:00
YunaiV 99b983f00f feat(mes): 添加安灯呼叫配置和记录相关功能,包括请求和响应 VO、枚举及服务接口 2026-02-21 08:07:15 +08:00
YunaiV 5ddc53bce9 feat(mes): qc 添加安灯处置状态和级别枚举,更新相关错误码和接口定义 2026-02-21 00:19:09 +08:00
YunaiV e20122bd3c feat(mes):通过枚举和用户关联来重构缺陷处理流程,并增强内部质量控制功能 2026-02-20 22:49:14 +08:00
YunaiV ccc58e9a74 feat(mes): 添加维修工单确认和不通过功能,更新相关服务和前端接口 2026-02-20 19:55:08 +08:00
YunaiV 51d255a9fd feat(mes): 添加设备保养记录提交功能,新增状态枚举及相关校验 2026-02-20 19:50:11 +08:00
YunaiV a65c5c4cfb feat(mes): 更新检验单和缺陷记录相关功能,优化表单和列表展示 2026-02-20 19:41:12 +08:00
YunaiV 13e0222d0c feat(mes): 添加维修工单和维修工单行相关功能,包括请求和响应 VO 及控制器 2026-02-20 19:16:40 +08:00
YunaiV b8ea0645d3 feat(mes): 更新点检结果字段类型为整数,重构相关枚举和状态描述 2026-02-20 18:42:03 +08:00
YunaiV d033bcaaf5 feat(mes): 新增设备点检记录相关功能,包括记录明细接口及表单组件 2026-02-20 16:55:23 +08:00
YunaiV afaf6e371e feat(mes): 添加维修工单和点检记录相关状态及错误码常量 2026-02-20 16:05:11 +08:00
YunaiV 05d7212bd0 feat(mes): 重构点检保养方案界面,新增设备和项目选择器组件,优化启用停用逻辑 2026-02-20 15:33:47 +08:00
YunaiV 11b0b290eb feat(mes): 新增设备和点检保养项目精简列表接口及批次号字段 2026-02-20 15:25:37 +08:00
YunaiV 8d7b7cf473 feat(mes): 新增 MES 点检保养方案相关功能,包括设备和项目的增删改查接口及数据模型 2026-02-20 15:24:31 +08:00
YunaiV 9392e32630 refactor(mes): 重构设备保养记录模块,抽取可复用 Select 组件
1. 新增 DvMachinerySelect、DvCheckPlanSelect、UserSelect 三个通用选择器组件
2. MaintenRecordForm 和 index 页面改用 Select 组件替代内联远程搜索逻辑
3. MaintenRecordLineForm 合并到 MaintenRecordLineList(参考 pro/route 风格)
4. API 文件 maintenRecordLine.ts 迁移至 line/index.ts
5. 保养记录状态枚举从 10/20 改为 0/1,与后端对齐
2026-02-20 14:42:46 +08:00
YunaiV 083c187f2f refactor(mes): 重构设备保养记录模块,抽取可复用 Select 组件
1. 新增 DvMachinerySelect、DvCheckPlanSelect、UserSelect 三个通用选择器组件
2. MaintenRecordForm 和 index 页面改用 Select 组件替代内联远程搜索逻辑
3. MaintenRecordLineForm 合并到 MaintenRecordLineList(参考 pro/route 风格)
4. API 文件 maintenRecordLine.ts 迁移至 line/index.ts
5. 保养记录状态枚举从 10/20 改为 0/1,与后端对齐
2026-02-20 14:42:19 +08:00
YunaiV 9845059d4a feat(mes): 新增设备保养记录及明细相关功能,包括请求和响应 VO、Controller、Service 及 API 接口 2026-02-20 11:40:31 +08:00
YunaiV 2a83789782 feat(mes): 新增 MES 点检保养项目相关功能,包括请求和响应 VO、Controller 及 API 接口 2026-02-20 09:49:49 +08:00
YunaiV b76ecb2460 feat(mes): 新增来料检验单及缺陷记录相关功能,包括请求和响应 VO、Mapper、Controller 及 API 接口 2026-02-20 09:36:23 +08:00
YunaiV c454002370 feat(mes): 更新物料库存模块,优化物料查询逻辑并新增工作站和库区数量统计功能 2026-02-20 09:27:07 +08:00
YunaiV fff9c7f34e pro-task 2026-02-20 08:58:09 +08:00
YunaiV 3c3bf1b13b feat(mes): 新增生产排产(pro_task)前端页面
- 新增生产任务 API(task + task_issue)和 VO 定义
- 新增排产主页面:甘特图预览 + 待排产工单列表 + 排产/进度 Drawer
- 新增任务 CRUD 列表(ProTaskList)、任务表单(ProTaskForm)
- 新增 dhtmlx-gantt 甘特图组件封装(GanttChart)和全屏编辑(GanttEdit)
- 新增生产进度圆形进度条展示(ProTaskProgress)
- 新增任务投料列表(ProTaskIssueList,预留)
- 新增工作站下拉选择器(MdWorkstationSelect)
- 新增 MES_PRO_TASK_STATUS 字典和 MesProTaskStatusEnum 枚举
- 安装 dhtmlx-gantt 依赖
2026-02-20 08:57:56 +08:00
YunaiV 2740f3d26b feat(mes): 新增仓库管理-库存台账前端页面
新增:
- api/mes/wm/materialStock/index.ts:库存台账 API
- views/mes/wm/materialStock/index.vue:主页面(左侧物料分类树 + 搜索 + 表格 + 冻结开关 + 导出)
- views/mes/wm/materialStock/AreaDetailDialog.vue:库位详情只读弹窗
2026-02-20 08:26:54 +08:00
YunaiV d1e6d4109f fix(mes): 完善生产工单前端,支持树形展示、子工单生成及 BOM 内联编辑
1. index.vue:工单列表改为 handleTree 树形展示(row-key + tree-props),
   新增「确认」「新增子工单」操作按钮,移除父工单列,搜索条件对齐
2. WorkOrderForm:移除 batchCode 字段,需求日期改为 date 类型,
   新增 parentId 及子工单预填逻辑,新增 WorkOrderItemList 物料需求 Tab
3. WorkOrderBomList:合并 WorkOrderBomForm 弹窗为内联编辑(仅编辑数量/备注),
   草稿状态显示编辑按钮,已确认+自行生产+产品类型显示「生成工单」按钮
4. WorkOrderItemList:API 调用迁移到 ProWorkOrderBomApi
5. API 层:workorder/index.ts 新增 confirmWorkOrder、移除 batchCode;
   bom/index.ts 新增 getWorkOrderBomItemListByWorkOrderId、itemOrProduct 字段
6. 删除独立的 WorkOrderBomForm.vue 组件
7. constants.ts 新增 MesProTaskStatusEnum,dict.ts 新增对应字典类型
2026-02-20 08:24:58 +08:00
YunaiV e5bd477a7e feat(mes): 优化排班日历功能,新增假期按日期范围查询逻辑及假期类型枚举 2026-02-19 22:26:01 +08:00
YunaiV f4239e8a0e feat(mes): 完善排班日历功能,新增假期过滤及班组排班记录查询逻辑 2026-02-19 21:25:17 +08:00
YunaiV 93a76b19db refactor(mes): 重构排班日历视图,提取公共日历格子组件
- 新增 CalendarDateCell.vue:抽取三个视图中重复的农历/节气/节假日/班次渲染逻辑,统一维护
- CalendarTypeView.vue → TypeView.vue,PersonView.vue → UserView.vue:按视图含义重命名,去掉多余前缀
- UserView.vue:用户选择从 el-input-number 改为 el-select 下拉,调用 getSimpleUserList 获取用户列表
- TeamView.vue / TypeView.vue / UserView.vue:统一使用 CalendarDateCell 组件;补充变量行尾注释、函数 JSDoc 及关键逻辑行内注释
- index.vue:更新组件引用
2026-02-19 20:56:39 +08:00
YunaiV 64b3ce64c3 feat(mes): 新增开始日期和结束日期字段,优化排班日历请求和响应对象 2026-02-19 20:28:57 +08:00
YunaiV 3ec6a0bd79 fix(mes): 修复生产工单前端 TODO,搜索增强、条件显隐、BOM 拆分
- index.vue:新增产品/客户搜索,补充父工单/来源单据/客户编码列,"来源类型"改"工单来源"
- WorkOrderForm.vue:工单编码生成按钮,来源单据编号/供应商条件显隐,"生产数量"改"工单数量"
- WorkOrderBom 拆分为 WorkOrderBomList + WorkOrderBomForm
- constants.ts 新增 MesProWorkOrderTypeEnum、MesProWorkOrderSourceTypeEnum
2026-02-19 19:26:41 +08:00
YunaiV 115dcb2df6 fix(mes): 修复生产工单前端 TODO,搜索增强、条件显隐、BOM 拆分
- index.vue:新增产品/客户搜索,补充父工单/来源单据/客户编码列,"来源类型"改"工单来源"
- WorkOrderForm.vue:工单编码生成按钮,来源单据编号/供应商条件显隐,"生产数量"改"工单数量"
- WorkOrderBom 拆分为 WorkOrderBomList + WorkOrderBomForm
- constants.ts 新增 MesProWorkOrderTypeEnum、MesProWorkOrderSourceTypeEnum
2026-02-19 19:26:25 +08:00
YunaiV 112e24f97d fix(mes): 工艺路线前端 TODO 修复:状态按钮化、MdItemSelect、字段优化
- index.vue 状态操作改为按钮,启用后禁用「禁用」和「删除」按钮
- RouteProcessList 前3列 fixed、label 改名、布尔字段用 dict-tag、颜色显示 hex 值
- RouteProductList/RouteProductBomList 物料选择改用 MdItemSelect 组件
- RouteProductList BOM 弹窗移入产品编辑表单,动态宽度
- RouteProductBomList label 改名、processId 类型修复
2026-02-19 18:45:50 +08:00
YunaiV 1c0cbc0dc6 refactor(mes): 合并子列表 Form 到 List 组件,统一 Panel 重命名为 List
1. 合并 4 对 Form→List:将独立的 *Form.vue 弹窗组件内联到对应的 *List.vue 中
   - TemplateIndicatorForm → TemplateIndicatorList
   - TemplateItemForm → TemplateItemList
   - CalTeamMemberForm → CalTeamMemberList
   - ProProcessContentForm → ProProcessContentList

2. 重命名 5 个 Panel→List,更新引用方 import
   - WorkstationMachinePanel → WorkstationMachineList
   - WorkstationToolPanel → WorkstationToolList
   - WorkstationWorkerPanel → WorkstationWorkerList
   - CalPlanTeamPanel → CalPlanTeamList
   - CalShiftPanel → CalShiftList

3. 统一 9 个子列表组件的注释风格
   - 补全文件头注释、defineOptions、模板区域注释
   - 统一分隔线、JSDoc、变量行尾注释、watch 注释
   - 去掉多余的闭合行尾注释

4. 修复 WorkstationToolList 中 createSuccess/updateSuccess 提示写反的 bug
2026-02-19 18:24:25 +08:00
YunaiV e94f2d4fee fix(mes): 修复工艺路线前端 TODO,补全注释与交互优化
- API 文件(4 个)补充 VO 字段注释和方法注释,新增 updateRouteStatus 方法
- index.vue 字段加"工艺路线"前缀,状态列改为 el-switch 开关操作
- RouteForm.vue 补充行内注释,status 默认值改用 CommonStatusEnum.ENABLE
- RouteProcessList/ProductList/ProductBomList 补充变量行内注释
- CalendarTypeView/TeamView 修复 ESLint 问题
2026-02-19 17:44:58 +08:00
YunaiV 0da99069c5 refactor(mes): 将 enableFlag/enabled/areaEnabled 重构为 status/areaStatus(CommonStatus)
QC Template: enableFlag(Boolean) -> status(Integer),使用 CommonStatusEnum
Warehouse Area: enabled(Boolean) -> status(Integer),使用 CommonStatusEnum
Warehouse Location: areaEnabled(Boolean) -> areaStatus(Integer),使用 CommonStatusEnum

涉及前端 API 定义、列表页、表单页的字段名和字典类型切换(INFRA_BOOLEAN_STRING -> COMMON_STATUS),
以及后端 DO、RespVO、SaveReqVO、PageReqVO、Mapper 的同步修改。

注意:语义反转,原 true(启用) 对应新 status=0(开启),原 false(禁用) 对应新 status=1(关闭)。
2026-02-19 17:17:13 +08:00
YunaiV 545887ed38 refactor(mes): 将 enableFlag/enabled/areaEnabled 重构为 status/areaStatus(CommonStatus)
QC Template: enableFlag(Boolean) -> status(Integer),使用 CommonStatusEnum
Warehouse Area: enabled(Boolean) -> status(Integer),使用 CommonStatusEnum
Warehouse Location: areaEnabled(Boolean) -> areaStatus(Integer),使用 CommonStatusEnum

涉及前端 API 定义、列表页、表单页的字段名和字典类型切换(INFRA_BOOLEAN_STRING -> COMMON_STATUS),
以及后端 DO、RespVO、SaveReqVO、PageReqVO、Mapper 的同步修改。

注意:语义反转,原 true(启用) 对应新 status=0(开启),原 false(禁用) 对应新 status=1(关闭)。
2026-02-19 17:15:20 +08:00
YunaiV e95d613965 feat(mes): 新增工艺路线模块,支持路线、工序链、产品及 BOM 管理
从 ktg-mes 迁移工艺路线(pro-route)模块,包含:
- 4 个 DO:MesProRoute / RouteProcess / RouteProduct / RouteProductBom
- 4 个 Mapper 及 9 个 VO(含工序链 findPre/findNext 查询)
- 4 对 Service 接口+实现(链表重建、启用校验、级联删除)
- 4 个 Controller(路线 CRUD+导出,子资源复用父权限)
2026-02-19 16:39:43 +08:00
YunaiV 20c6876f2c feat(mes): 清理 qc-template TODO,补全注释风格与表单布局
- TemplateForm/TemplateIndicatorForm/TemplateItemForm/TemplateIndicatorList/TemplateItemList:注释风格对齐(ref 行内注释、函数步骤注释、defineExpose/defineEmits 说明)
- TemplateIndicatorForm:表单布局调整为多行 el-row/el-col(质检指标+标准值 / 计量单位+误差上下限 / 检测方法 / 说明图 / 备注)
- TemplateItemForm:表单布局调整为多行(产品物料 / 最低检测数+最大不合格数 / 致命+严重+轻微缺陷率 / 备注),补充缺失的备注字段
- index.vue:搜索项检测种类改为单值 Integer 查询
2026-02-19 12:57:00 +08:00
YunaiV e7a066d9c5 feat(mes): 重构质检方案页面,子表维护移入编辑弹窗
- api/mes/qc/template/ 拆分为 index.ts / indicator.ts / item.ts 三个文件
- TemplateForm.vue:Dialog 宽度改为 900px,编辑模式下新增 el-tabs,
  内嵌检测指标项(TemplateIndicatorList)和产品关联(TemplateItemList)子表
- index.vue:移除底部子表区域及 currentRow/activeTab 逻辑,简化为纯列表页;
  检测种类搜索字段由 types 改为 type(单选)
- TemplateIndicatorList/Form、TemplateItemList/Form:更新 import 路径至拆分后的 API 文件
- 清理所有 TODO @AI 注释
2026-02-19 12:41:57 +08:00
YunaiV e7a8095a35 review(mes):cal-calender 日历功能 2026-02-19 12:23:18 +08:00
YunaiV b8254baf5a feat(mes): 抽取通用 Select 下拉组件,替换各表单内联 el-select
将 MES 模块中各表单的内联 el-select + 手动加载 SimpleList 数据的模式,
统一抽取为独立的 Select 组件,每个组件自包含数据加载和前端搜索过滤。

新增 8 个 Select 组件:
- MdItemSelect(物料产品选择器)
- MdClientSelect(客户选择器)
- MdVendorSelect(供应商选择器)
- MdUnitMeasureSelect(计量单位选择器)
- MdWorkshopSelect(车间选择器)
- WmWarehouseSelect(仓库选择器)
- QcIndicatorSelect(质检指标选择器)
- TmToolTypeSelect(工具类型选择器)

改造 10 个消费者文件:
- WorkOrderForm.vue:产品/客户/供应商选择器替换
- WorkOrderBom.vue:物料/单位选择器替换,修复 handleBomItemChange
- MdItemForm.vue:计量单位选择器替换
- WorkstationForm.vue:车间/仓库选择器替换
- MachineryForm.vue:车间选择器替换
- TemplateItemForm.vue:物料选择器替换
- TemplateIndicatorForm.vue:质检指标/计量单位选择器替换
- ToolForm.vue:工具类型选择器替换
- workstation/index.vue:搜索栏车间选择器替换
- tool/index.vue:搜索栏工具类型选择器替换
2026-02-19 12:09:52 +08:00
YunaiV 5f010acc5f review(mes):qc-template 的实现代码 2026-02-18 22:48:56 +08:00
YunaiV 50be43d9e2 feat(mes): 重构生产工序模块包结构,拆分 process-content 为独立子模块
前端:
- api/mes/pro/process/index.ts:移除 contents 字段
- 新建 api/mes/pro/process/content/index.ts,删除旧 process-content/index.ts
- views/mes/pro/process/index.vue:移除 expand 行交互和工艺要求列,
  对齐 ktg-mes 风格
- ProProcessForm.vue:工序编码增加生成按钮,标签改为工序说明,
  编辑时弹窗内嵌操作步骤列表(el-divider + ProProcessContentList)
- 新建 ProProcessContentList.vue(列表)和 ProProcessContentForm.vue
  (表单弹窗),拆分自原内联实现,对齐 CalTeamMemberList/Form 风格
2026-02-18 16:08:12 +08:00
YunaiV 67e6e59120 review(mes):pro-process 的初步实现 50% 2026-02-18 15:47:18 +08:00
YunaiV 3c198013ba feat(mes): 重构 cal-team 班组成员前端文件结构
- 删除 api/mes/cal/team/member.ts、shift.ts,迁移至
  member/index.ts、shift/index.ts(与其他模块保持一致)
- CalTeamMemberPanel.vue 重命名为 CalTeamMemberList.vue,拆分为
  List(列表+删除)和 Form(添加弹窗)两个独立组件
- CalTeamMemberForm.vue(新增):用户下拉选择(getSimpleUserList)、
  表单校验、提交,通过 defineExpose open() + emit success 与 List 交互
- CalTeamForm.vue:更新引用为 CalTeamMemberList
2026-02-18 15:32:14 +08:00
YunaiV 377bf6e2ed feat(mes): 优化 cal-team 班组成员相关逻辑
- MesCalTeamMemberController:注入 AdminUserApi,合并 list-by-team 与
  list-by-team-ids 为单一接口(支持 teamId / teamIds 参数),新增
  buildMemberRespVOList 方法批量填充用户昵称和手机号
- MesCalTeamMemberServiceImpl:validateTeamMemberExists 改为 void 返回;
  validateUserUnique 去掉冗余的 excludeId 参数
- MesCalTeamMemberMapper:selectByUserIdExcludeId 简化为 selectByUserId
2026-02-18 15:31:59 +08:00
YunaiV ecd21a5dbd feat(mes): 新增 CAL 模块班组前端页面及修复班组选择下拉
新增 views/mes/cal/team 及对应 API:
- api/mes/cal/team/{index,member,shift}.ts:班组/成员/排班三个 API 模块
- views/mes/cal/team/index.vue:班组列表页(搜索/分页/导出)
- views/mes/cal/team/CalTeamForm.vue:班组表单弹窗(编辑时内嵌成员管理 Tab)
- views/mes/cal/team/CalTeamMemberPanel.vue:班组成员管理面板

修复 CalPlanTeamPanel.vue:
- 班组选择从 el-input-number 改为 el-select 下拉(对接 CalTeamApi.getTeamList)
2026-02-18 11:21:22 +08:00
YunaiV 3b43e9e463 🎨 style(mes/wm): 对齐注释风格、修复 TODO、重构冗余代码 2026-02-18 09:08:09 +08:00
YunaiV 5289b8b3bd 🎨 style(mes/wm): 对齐注释风格、修复 TODO、重构冗余代码
- warehouse/index.vue:补充变量行内注释;将 chargeUserId 展示内联到模板
- WarehouseForm.vue:删除非标准 DONE @AI 注释;补充变量注释、defineExpose/defineEmits 注释、submitForm 步骤注释
- location/index.vue:补充变量行内注释;修复 warehouseId 类型;使用具名路由跳转
- location/LocationForm.vue:补充注释;修复 warehouseId 类型;补充新增时默认值注释
- area/index.vue:合并 parseQueryId 到 loadLocationContext;将 4 个散 ref 合并为 currentLocation 对象;补充变量行内注释
- area/AreaForm.vue:修复 locationId 类型;简化 open 方法中逐字段赋值为直接赋值;补充注释
- md/workstation/WorkstationForm.vue:补充 JSDoc 注释、变量注释、submitForm 步骤注释

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 09:07:29 +08:00
YunaiV 47fd8b6018 review(mes):wm-warehouse 的初步实现 80% 2026-02-17 23:51:33 +08:00
YunaiV 9546589ccc review(mes):wm-warehouse 的初步实现 50% 2026-02-17 22:52:45 +08:00
YunaiV 57894e7ab5 review(mes):wm-warehouse 的初步实现 2026-02-17 21:53:33 +08:00
YunaiV 38405b1d20 review(mes):work-order 的代码实现,功能测试 2026-02-17 21:00:24 +08:00
YunaiV 3463213cd4 review(mes):cal-plan 的代码实现,功能测试 2026-02-17 20:58:24 +08:00
YunaiV 416778c8e5 review(mes):qc-template 的代码实现,功能测试 2026-02-17 20:43:40 +08:00
YunaiV 0772290be9 review(mes):work-order 的代码实现,功能测试 2026-02-17 20:21:31 +08:00
YunaiV 721449d834 feat(mes):qc-template 初始化 2026-02-17 18:57:14 +08:00
YunaiV ce761e536e review(mes):cal-plan 的实现 2026-02-17 17:05:45 +08:00
YunaiV 663b2e32b5 feat:新增 qc indicator 质量管理 - 检测项 2026-02-17 16:09:37 +08:00
YunaiV 2f86852483 feat(mes/cal-plan): 新增排班计划专用 confirm 接口
- 后端新增 PUT /mes/cal/plan/confirm 接口,仅接收 id 参数
- Service 层新增 confirmPlan(Long id) 方法,含草稿状态校验和班组数量校验
- updatePlan 中强制忽略 status 字段,禁止通过 update 修改状态
- 前端 API 新增 confirmPlan(id: number) 方法
- CalPlanForm handleConfirm 改为调用专用 confirmPlan 接口
2026-02-17 16:05:24 +08:00
YunaiV d5303a1e7d feat(mes-pro): 新增生产工单前端页面
- 新增工单列表页,支持编码/名称/类型/状态/来源/需求日期筛选
- 新增工单表单弹窗(新增/编辑/详情),产品选择自动填充单位
- 新增工单 BOM 子组件,内嵌分页表格 + 增删改弹窗
- 新增工单和 BOM 的 API 文件
- dict.ts 增加 3 个字典类型,constants.ts 增加工单状态枚举
2026-02-17 15:37:12 +08:00
YunaiV e920999bff fix(mes-cal): 清理前端 3 处 TODO @AI 注释
1. team.ts: 删除"挪到 plan/team 目录下"注释(文件已在正确位置)
2. CalPlanTeamPanel.vue: 删除"晚点 review 下"注释
3. CalPlanForm.vue: 删除"单独一个接口"注释,更新确认提示语

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 15:26:46 +08:00
YunaiV 501db918f3 feat(mes):优化、实现 plan 的逻辑 2026-02-17 15:15:25 +08:00
YunaiV 778141bf7f feat(mes):新增 defect 缺陷类型 2026-02-17 14:38:26 +08:00
YunaiV 2d79633b07 feat(mes): 设备状态枚举同步调整,表单增加点检保养时间选择器
1. constants.ts MesDvMachineryStatusEnum 改为 STOP/PRODUCING/MAINTENANCE
2. MachineryForm 默认状态改为 STOP,新增 lastCheckTime、lastMaintenTime 两个 el-date-picker 字段
2026-02-17 11:32:41 +08:00
YunaiV d313450069 feat(mes-dv): 设备台账添加导入功能前端 UI
- 新增 MachineryImportForm 组件,参考物料导入模式
- 列表页添加导入按钮和导入弹窗
- API 新增 importTemplate 方法(后端接口待实现)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:25:03 +08:00
YunaiV 5428ed8351 feat(mes-dv): 设备台账列表添加左侧设备类型分类树
- 新增 MachineryTypeTree 组件,支持搜索过滤和点击/取消选择
- 列表页改为左树右表布局(4:20 比例),参考物料模块
- 移除搜索栏中的「设备类型」下拉(由左侧树代替)
- 重置时同时清空分类树选中状态

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:23:07 +08:00
YunaiV e0ec6249ae refactor(mes-dv): 设备台账列表去掉最近保养/点检时间列
这两个时间字段在列表中意义不大,已移至设备详情表单中展示。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:21:35 +08:00
YunaiV babb4c3979 feat(mes-dv): MachineryForm 添加点检/保养/维修 Tab 占位
- 删除多余的「所属车间」TODO 注释(form 已有车间选择框)
- 编辑模式下显示 3 个子资源 Tab:点检记录、保养记录、维修工单
- 子模块尚未实现,使用 el-empty 占位,待后续对接

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:20:48 +08:00
YunaiV f0fe6e3f01 feat(mes-dv): MachineryForm 改为 3 列布局并添加编码生成按钮
- 第一行改为 3 列:设备编码(含生成按钮)、设备名称、品牌
- 编码生成按钮使用 generateRandomStr,编辑模式下禁用
- 调整规格型号到第三行,整体布局更紧凑

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:19:35 +08:00
YunaiV 969eac21df fix(mes-dv): 修复 MachineryTypeForm 的 TypeScript linter 警告
移除 formData 声明中多余的 `as unknown as number/string` 类型断言,
与 WorkstationForm 等其他表单组件保持一致的写法。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:18:12 +08:00
YunaiV c6ab40e175 feat(mes-dv): 新增设备类型和设备台账前端页面
新增设备类型(dv/machinery/type,树形表格)和设备台账(dv/machinery)的前端实现,
包含 API 定义、列表页、表单弹窗,以及 dict.ts 和 constants.ts 中 DV 相关补充
2026-02-17 09:53:14 +08:00
YunaiV 9f5303aea6 feat(mes-cal): 新增排班计划和班次管理前端页面
- 新增班次管理独立页面(index.vue + CalShiftForm.vue),支持 CRUD + 导出
- 新增排班计划列表页(index.vue),支持按编码/名称/轮班方式/状态搜索
- 新增排班计划表单(CalPlanForm.vue),含编码生成、条件显示倒班方式/天数、确认计划操作
- 新增班次子表面板(CalShiftPanel.vue),嵌入计划表单 Tab
- 新增班组子表面板(CalPlanTeamPanel.vue),嵌入计划表单 Tab
- 新增 shift/plan/plan-team 三个 API 文件
- dict.ts 新增 4 个字典类型常量(shift_type/shift_method/calendar_type/plan_status)
2026-02-17 09:52:46 +08:00
YunaiV 153fa2cf25 fix(mes-tm): 修复工具管理前端 TODO 项,完善表单布局、编码生成和列宽
1. ToolForm:表单改为 el-row/el-col 栅格布局(960px 宽弹窗),新增编码"生成"按钮(TL 前缀)
2. ToolTypeForm:类型编码新增"生成"按钮(TT 前缀),保养周期拆分为天/次两个条件字段
3. type/index:保养周期列增加天/次单位后缀展示
4. tool/index + type/index:补齐所有表格列宽(编码 120、名称 min-150、状态 80 等)
2026-02-16 22:42:47 +08:00
YunaiV 6a83adf543 refactor(mes-tm): 工具管理前端枚举优化
1. 新增 MesToolStatusEnum、MesMaintenTypeEnum 到 mes/utils/constants.ts
2. ToolForm、ToolTypeForm、index 页面使用枚举常量替代魔法值
3. 移除 as unknown as 类型断言,移除 TODO @AI 注释
2026-02-16 22:30:52 +08:00
YunaiV d6a4857f6f refactor(mes-tm): 工具管理前端枚举优化
1. 新增 MesToolStatusEnum、MesMaintenTypeEnum 到 mes/utils/constants.ts
2. ToolForm、ToolTypeForm、index 页面使用枚举常量替代魔法值
3. 移除 as unknown as 类型断言,移除 TODO @AI 注释
2026-02-16 22:30:15 +08:00
YunaiV b15cd9021e feat(mes): 新增工具管理(TM)模块前端页面
新增工具类型和工具台账的 API、列表页和表单弹窗,
dict.ts 补充 MES_TM_TOOL_STATUS 和 MES_TM_MAINTEN_TYPE 字典类型。
2026-02-16 21:12:42 +08:00
YunaiV 23531c6c5b refactor(mes): 优化假期设置交互,精简接口对齐后端
1. 右键改左键点击弹出设置弹窗,阻止非当前月切换
2. 弹窗打开时调 get-by-day 接口回显已有 type 和 remark
3. 新增备注(remark)输入框,时间戳传参用 formatDate 转换
4. HolidayType 枚举抽取到 mes/utils/constants.ts 统一管理
5. 精简 API:移除 page/export/update/delete,create 改为 save
2026-02-16 21:01:41 +08:00
YunaiV 369d3bbff2 refactor(mes): 优化假期设置交互,精简接口对齐后端
1. 右键改左键点击弹出设置弹窗,阻止非当前月切换
2. 弹窗打开时调 get-by-day 接口回显已有 type 和 remark
3. 新增备注(remark)输入框,时间戳传参用 formatDate 转换
4. HolidayType 枚举抽取到 mes/utils/constants.ts 统一管理
5. 精简 API:移除 page/export/update/delete,create 改为 save
2026-02-16 20:59:01 +08:00
YunaiV f40b415b9c feat(mes): 新增假期设置日历页面,使用 dayjs-plugin-lunar 显示农历
基于 el-calendar 实现假期设置页面,右键日期可设置假期/工作日类型,
日历单元格显示班/休标签、农历日期、公历节日、农历节日和节气。
使用 dayjs-plugin-lunar(底层 tyme4ts)替代手写 667 行农历工具。

新增文件:
- src/api/mes/cal/holiday/index.ts
- src/views/mes/cal/holiday/index.vue
- src/views/mes/cal/holiday/HolidayForm.vue

修改文件:
- src/utils/dict.ts:新增 MES_CAL_HOLIDAY_TYPE

新增依赖:
- dayjs-plugin-lunar
2026-02-16 18:39:12 +08:00
YunaiV cb56866deb refactor(mes): 重构产品 BOM/SIP/SOP 表单,统一代码风格并修复 TODO
1. 统一表单方法风格,对齐 WorkstationWorkerPanel 的写法:
   - 弹窗变量统一命名为 dialogVisible/dialogTitle
   - dialogTitle 使用 t('action.' + type) 国际化
   - submitForm 添加 formRef 校验守卫,使用 t() 国际化提示
   - create/update 判断顺序统一为先 create 后 update
2. SIP/SOP 的 orderNumber 字段全局重命名为 sort
3. BOM 物料选择简化为无论选择几条都直接批量创建
4. 修复 formData 展开赋值的 TS 类型错误,改为逐字段赋值
5. 清理所有 TODO @AI 注释
2026-02-16 17:46:33 +08:00
YunaiV b0548b329d feat(mes): 优化工作站模块,新增获取车间列表和车间 Map 方法,重构表单弹窗逻辑 2026-02-16 15:47:05 +08:00
YunaiV 435496bdbd feat(mes): 添加假期类型常量及相关错误码,调整SOP和SIP模块的展示顺序 2026-02-16 13:19:50 +08:00
YunaiV debce44339 refactor(mes-ui): 修正工作站模块中文标签命名 + 拆分 API
- 表单标签/占位符/校验提示:工位 → 工作站
- API 注释:工位设备 → 设备资源、工位工具 → 工装夹具资源、工位人员 → 人力资源
- 拆分 workstation API 到 machine/tool/worker/workshop 子目录
2026-02-16 12:36:00 +08:00
YunaiV 95c478d739 refactor(mes-ui): 修正工作站模块中文标签命名 & 拆分 API 文件
- 表单标签/占位符/校验提示:工位 → 工作站
- API 注释:工位设备 → 设备资源、工位工具 → 工装夹具资源、工位人员 → 人力资源
- 拆分 workstation API 到 machine/tool/worker/workshop 子目录
2026-02-16 12:12:03 +08:00
YunaiV 59bd23b3e0 feat(mes): 新增产品 BOM、SOP、SIP 子表前端组件
- 新增 productBom / productSop / productSip 三组 API 文件
- BOM 组件:表格列表,支持远程搜索物料、编辑用量
- SOP / SIP 组件:卡片式图片列表,支持上传/预览/排序
- MdItemForm.vue 集成三个组件,替换原 el-empty 占位
2026-02-16 08:58:31 +08:00
YunaiV 403b7e75af feat(mes): 新增车间管理、工位管理模块前端
- API 接口:workstation/index.ts(工位+3个子资源)、workshop.ts(车间)
- 车间:列表页(搜索+分页)+ 表单弹窗
- 工位:列表页 + 表单弹窗(一行3列布局 + 编码自动生成)
- 工位子资源:设备/工具/人员 3 个 Tab 面板组件
- 共 9 个 Vue/TS 文件
2026-02-16 08:40:27 +08:00
YunaiV 8a3e33952b feat(mes): 新增车间管理、工位管理模块前端
- API 接口:workstation/index.ts、workshop.ts
- 车间:列表页 + 表单弹窗
- 工位:列表页 + 表单弹窗(含设备/工具/人员三个子资源 Tab 面板)
- 共 9 个 Vue/TS 文件
2026-02-16 08:09:29 +08:00
YunaiV 15dd4dce76 feat(mes): 新增物料批次属性配置前端组件
1. 新增 MdItemBatchConfigForm 组件,根据 itemOrProduct 区分 ITEM/PRODUCT 展示不同 checkbox
2. 嵌入 MdItemForm 的"批次属性"tab,仅 batchFlag 开启时显示
3. API 文件放置于 batchConfig/index.ts 子目录
4. 使用 MesItemOrProductEnum 常量替代硬编码字符串
5. MdItemForm 变量名语义优化:itemTypeList → itemTypeTree,itemTypeFlatList → itemTypeList
6. 布局优化:采用 CSS Grid 一行 5 个,checkbox label 模式(☑ 文字)
2026-02-16 01:28:10 +08:00
YunaiV 3d103f1f46 feat(mes): 新增供应商管理前端页面
新增供应商管理的前端代码,参照客户模块风格:
- 列表页:编码/名称/简称/等级/评分/电话/状态/备注,支持搜索与分页
- 表单弹窗:完整字段编辑,支持编码自动生成(VD前缀)
- 导入弹窗:Excel 文件上传,支持更新已存在数据,下载导入模板
- API 定义:完整 CRUD + 导出 + 导入模板接口
2026-02-16 00:28:17 +08:00
YunaiV 15d64fe772 feat(mes): 新增 MES 客户表 DDL、字典、菜单权限与测试数据
- 建表 mes_md_client(含逻辑删除、多租户字段)
- 字典 mes_client_type:企业客户(1)、个人(2)
- 菜单权限 5140~5146:查询/创建/更新/删除/导出/导入
- 测试数据:比亚迪、博世、德力西
2026-02-15 23:34:50 +08:00
YunaiV 5153adf1cf feat(mes): 完善计量单位、物料导入与客户管理前端
1. 计量单位管理:新增 API + 列表页 + 表单(UnitMeasureForm)
2. 物料单位选择器:MdItemForm 单位字段从 el-input 改为 el-select 下拉
3. 物料导入:新增 MdItemImportForm 组件(上传 Excel、下载模板、更新已有数据)
4. 物料导入权限:v-hasPermi 改为 mes:md-item:import
5. API VO 字段调整:unitOfMeasure → unitMeasureId + unitMeasureName
6. 客户管理:新增 API + 列表页 + 表单(MdClientForm)
2026-02-15 22:18:46 +08:00
YunaiV 27f5fcb66e feat(mes): 完善物料分类与物料产品前端功能
1. 新增 ItemTypeTree 左侧分类树组件(支持搜索过滤、点击切换)
2. 物料列表改为左右布局(左侧树 + 右侧列表)
3. 新增 MesItemOrProductEnum 常量({ label, value } 结构)
4. 物料/产品列用 getItemOrProductLabel 翻译,安全库存列用 dict-tag 渲染
5. 表单改为 3 列布局(span=8),增加编码生成按钮和底部 Tab 占位
6. 分类管理移除导出按钮,分类表单修复 TS 类型和枚举默认值
7. 分类 API 移除 exportItemType
2026-02-15 15:43:49 +08:00
YunaiV 6bb27899c1 feat(mes): 新增物料产品分类与物料产品管理
迁移 ktg-mes 的 md_item_type 和 md_item 两张表到 yudao-module-mes,
包含完整的 CRUD、树形分类、物料分页查询、enrichment 等功能。

后端新增 17 个文件(1337 行):
- DO: MesMdItemTypeDO(树形分类)、MesMdItemDO(物料产品)
- VO: 分类 3 个(List/Save/Resp)、物料 3 个(Page/Save/Resp)
- Mapper: 2 个(BaseMapperX,纯 Java,无 XML)
- Service: 4 个(接口 + 实现)
- Controller: 2 个(/mes/md/item-type、/mes/md/item)
- ErrorCodeConstants 追加 9 个错误码

关键业务逻辑:
- 分类:父分类递归环路检测、同级名称/编码唯一性、删除保护(子分类+物料)
- 物料:编码/名称全局唯一、分类存在校验、安全库存联动清零
- enrichment:物料 RespVO 通过 Service 关联填充 itemTypeName、itemOrProduct
- 循环依赖:MesMdItemTypeServiceImpl 用 @Lazy 注入 MesMdItemService

plan: plans/swirling-stirring-metcalfe.md
2026-02-15 14:03:59 +08:00
LesanOuO 80128c5406 feat: 条件节点添加包含和不包含操作符 2026-02-14 16:53:21 +08:00
芋道源码 d3f008eb33
!863 !854 feat:【iot】接入 modbus 协议,重构所有协议的配置
Merge pull request !863 from 芋道源码/feature/iot
2026-02-14 03:10:48 +00:00
芋道源码 bb10760137
!854 feat:【iot】modbus-tcp 协议接入 100%:完整实现,修复 todo
Merge pull request !854 from 芋道源码/feature/iot-modbus
2026-02-14 03:09:03 +00:00
YunaiV ab8de6ea83 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/iot 2026-02-13 15:40:15 +08:00
YunaiV deed7eaff2 feat(iot):Modbus 支持 Master/Slave 双模式,配置表单和详情按协议类型区分展示 2026-02-13 15:35:41 +08:00
puhui999 e54c2b3e7a fix: 完成 review c153ff93 的所有 TODO 修复 2026-02-11 17:37:58 +08:00
puhui999 572c14a41a fix: 完成 review c153ff93 的所有 TODO 修复
- AreaSelect.vue: 删除未使用的 handleTree 导入
- AreaSelect.vue: 使用 AreaLevelEnum 枚举类型替代硬编码数字
- IframeComponent.vue: 已使用全局 isUrl 方法
- useAreaSelectRule.ts: 恢复代码格式空行,使用枚举常量
- useIframeRule.ts: 恢复代码格式空行
2026-02-11 17:27:07 +08:00
YunaiV 155edc41a9 feat(iot):Modbus 支持 Master/Slave 双模式,配置表单和详情按协议类型区分展示
1. ProtocolTypeEnum 拆分:MODBUS_TCP → MODBUS_TCP_MASTER + MODBUS_TCP_SLAVE
2. Slave 模式新增 mode(工作模式)、frameFormat(帧格式)字段,使用字典管理
3. 配置表单和详情页按 Master/Slave 模式条件展示不同字段,表单校验规则动态适配
4. 新增 DICT_TYPE:IOT_MODBUS_MODE、IOT_MODBUS_FRAME_FORMAT
5. 修复设备卡片 deviceName 过长溢出问题,添加文本截断

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 23:33:10 +08:00
YunaiV c153ff93c7 review:“新增 iframe 和省市区选择器组件” 2026-02-08 14:37:55 +08:00
芋道源码 c119040307
!861 feat(form-create): 新增 iframe 和省市区选择器组件
Merge pull request !861 from puhui999/master-dev
2026-02-08 06:32:21 +00:00
puhui999 99b1e6da2c Merge remote-tracking branch 'yudao/master' into master-dev 2026-02-08 11:56:45 +08:00
puhui999 a62251f900 feat(form-create): 新增 iframe 和省市区选择器组件
- 新增 iframe 网页嵌入组件,支持 URL 配置和实时预览
- 新增省市区三级联动选择器组件
2026-02-08 11:56:18 +08:00
YunaiV 5f211558fb Merge branch 'feature/iot-protocol' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/iot-modbus
# Conflicts:
#	src/views/iot/device/device/detail/index.vue
2026-02-07 21:24:36 +08:00
YunaiV 91fb07971e fix(crm): 修复线索详情页转化状态按钮误显示,对应 https://t.zsxq.com/wq7ix 2026-02-07 21:07:31 +08:00
YunaiV 3aeb719ec2 fix(mall):OrderDetail detailData 为 null 的情况 2026-02-07 19:45:27 +08:00
YunaiV 1678bf6e57 fix: 忘记密码页面未开启验证码时,隐藏 Verify 组件,避免请求 captcha/get 接口 2026-02-07 16:42:23 +08:00
YunaiV 57a77b2ba9 feat(iot):【协议改造】移除 codecType,使用 protocolType 替代 2026-02-04 22:05:03 +08:00
YunaiV 4c5825389e feat(iot): refactor TimerConditionGroupConfig and PropertySelector for improved readability 2026-01-29 19:39:19 +08:00
芋道源码 da969d3be7
!859 feat(iot):【场景联动】定时触发,增加条件组
Merge pull request !859 from puhui999/feature/iot
2026-01-25 13:39:46 +00:00
puhui999 38e9298fa6 feat(iot):【场景联动】定时触发,增加条件组 2026-01-25 17:41:47 +08:00
YunaiV 972eb47610 feat:【iot】modbus-tcp 协议接入 100%:完整实现,修复 todo 2026-01-18 00:07:23 +08:00
YunaiV 56a25258ee feat:【iot】modbus-tcp 协议接入 40%:优化部分表单的实现,基于 dreamy-stirring-kazoo.md 2026-01-17 23:34:43 +08:00
YunaiV 8587a549c6 feat:【iot】modbus-tcp 协议接入 20%:初步实现,基于 dynamic-forging-wigderson.md 规划 2026-01-17 19:36:51 +08:00
8614095 3314dfe365 feat:增加说明文案 2026-01-15 11:13:20 +08:00
478 changed files with 72034 additions and 587 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -87,7 +87,7 @@
* 通用模块(必选):系统功能、基础设施
* 通用模块(可选):工作流程、支付系统、数据报表、会员中心
* 业务系统按需ERP 系统、CRM 系统、商城系统、微信公众号、AI 大模型
* 业务系统按需ERP 系统、CRM 系统、MES 系统、商城系统、微信公众号、AI 大模型、IoT 物联网
### 系统功能
@ -222,6 +222,16 @@
![功能图](/.image/common/mall-preview.png)
### 会员中心
| | 功能 | 描述 |
|-----|------|----------------------------------|
| 🚀 | 会员管理 | 会员是 C 端的消费者,该功能用于会员的搜索与管理 |
| 🚀 | 会员标签 | 对会员的标签进行创建、查询、修改、删除等操作 |
| 🚀 | 会员等级 | 对会员的等级、成长值进行管理,可用于订单折扣等会员权益 |
| 🚀 | 会员分组 | 对会员进行分组,用于用户画像、内容推送等运营手段 |
| 🚀 | 积分签到 | 回馈给签到、消费等行为的积分,会员可订单抵现、积分兑换等途径消耗 |
### ERP 系统
演示地址:<https://doc.iocoder.cn/erp-preview/>
@ -234,6 +244,14 @@
![功能图](/.image/common/crm-feature.png)
### MES 系统
演示地址:<https://doc.iocoder.cn/mes-preview/>
![功能图](/.image/common/mes-feature.png)
![功能图](/.image/common/mes-preview.png)
### AI 大模型
演示地址:<https://doc.iocoder.cn/ai-preview/>
@ -242,6 +260,22 @@
![功能图](/.image/common/ai-preview.gif)
### MES 系统
演示地址:<https://doc.iocoder.cn/mes-preview/>
![功能图](/.image/common/mes-feature.png)
![预览图](/.image/common/mes-preview.png)
### IoT 物联网
演示地址:<https://doc.iocoder.cn/iot/build>
![功能图](/.image/common/iot-feature.png)
![预览图](/.image/common/iot-preview.png)
## 🐷 演示图
### 系统功能

538
package-lock.json generated
View File

@ -1,40 +1,43 @@
{
"name": "yudao-ui-admin-vue3",
"version": "2.5.0-snapshot",
"version": "2026.04-snapshot",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "yudao-ui-admin-vue3",
"version": "2.5.0-snapshot",
"version": "2026.04-snapshot",
"license": "MIT",
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@element-plus/icons-vue": "2.3.2",
"@form-create/designer": "^3.2.6",
"@form-create/element-ui": "^3.2.11",
"@iconify/iconify": "^3.1.1",
"@microsoft/fetch-event-source": "^2.0.1",
"@videojs-player/vue": "^1.0.0",
"@vueuse/core": "^10.9.0",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.10",
"@wangeditor-next/editor": "^5.6.46",
"@wangeditor-next/editor-for-vue": "^5.1.14",
"@wangeditor-next/plugin-mention": "^1.0.16",
"@zxcvbn-ts/core": "^3.0.4",
"animate.css": "^4.1.1",
"axios": "^1.6.8",
"axios": "1.9.0",
"benz-amr-recorder": "^1.1.5",
"bpmn-js-token-simulation": "^0.36.0",
"camunda-bpmn-moddle": "^7.0.1",
"cropperjs": "^1.6.1",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"dayjs-plugin-lunar": "^1.4.1",
"diagram-js": "^12.8.0",
"driver.js": "^1.3.1",
"echarts": "^5.5.0",
"echarts-wordcloud": "^2.1.0",
"element-plus": "2.9.1",
"element-plus": "2.11.1",
"fast-xml-parser": "^4.3.2",
"highlight.js": "^11.9.0",
"jsencrypt": "^3.3.2",
"jsoneditor": "^10.1.3",
"lodash-es": "^4.17.21",
"markdown-it": "^14.1.0",
"markmap-common": "^0.16.0",
@ -48,16 +51,17 @@
"pinia-plugin-persistedstate": "^3.2.1",
"qrcode": "^1.5.3",
"qs": "^6.12.0",
"snabbdom": "^3.6.2",
"sortablejs": "^1.15.3",
"steady-xml": "^0.1.0",
"url": "^0.11.3",
"v3-jsoneditor": "^0.0.6",
"video.js": "^7.21.5",
"vue": "3.5.12",
"vue-dompurify-html": "^4.1.4",
"vue-i18n": "9.10.2",
"vue-router": "4.4.5",
"vue-types": "^5.1.1",
"vue3-print-nb": "^0.1.4",
"vue3-signature": "^0.2.4",
"vuedraggable": "^4.1.0",
"web-storage-cache": "^1.1.1",
@ -69,6 +73,7 @@
"@iconify/json": "^2.2.187",
"@intlify/unplugin-vue-i18n": "^2.0.0",
"@purge-icons/generated": "^0.9.0",
"@types/jsoneditor": "^9.9.5",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.21",
"@types/nprogress": "^0.2.3",
@ -2310,10 +2315,9 @@
}
},
"node_modules/@element-plus/icons-vue": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
"license": "MIT",
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
"integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
"peerDependencies": {
"vue": "^3.2.0"
}
@ -4492,6 +4496,12 @@
"node": ">=10.13.0"
}
},
"node_modules/@types/ace": {
"version": "0.0.52",
"resolved": "https://registry.npmmirror.com/@types/ace/-/ace-0.0.52.tgz",
"integrity": "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ==",
"dev": true
},
"node_modules/@types/conventional-commits-parser": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz",
@ -4792,6 +4802,38 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/jsoneditor": {
"version": "9.9.6",
"resolved": "https://registry.npmmirror.com/@types/jsoneditor/-/jsoneditor-9.9.6.tgz",
"integrity": "sha512-SJ29nWBIhnhtU5n72wxhPiuUVd8cnDHd7ZYMqVkzWtdRxTUdS8+oy1pg66yhmM1kcuanX3xmAAKfcyhhBnHEjQ==",
"dev": true,
"dependencies": {
"@types/ace": "*",
"ajv": "^6.12.0"
}
},
"node_modules/@types/jsoneditor/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/@types/jsoneditor/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"node_modules/@types/lodash": {
"version": "4.17.16",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.16.tgz",
@ -6991,163 +7033,256 @@
}
}
},
"node_modules/@wangeditor/basic-modules": {
"version": "1.1.7",
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
"integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
"license": "MIT",
"node_modules/@wangeditor-next/editor": {
"version": "5.6.49",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/editor/-/editor-5.6.49.tgz",
"integrity": "sha512-gDh7CLzsuPvUp1n4rO//V1NTHlpGzEibL71oRcRcxpz76oNaW12u+GWWvRde4cWivaCTLzHwz7EfEVdyDkt/Ww==",
"dependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor-next/basic-modules": "~1.5.47",
"@wangeditor-next/code-highlight": "~1.3.43",
"@wangeditor-next/core": "~1.7.45",
"@wangeditor-next/list-module": "~1.1.52",
"@wangeditor-next/table-module": "~1.6.60",
"@wangeditor-next/upload-image-module": "~1.1.50",
"@wangeditor-next/video-module": "~1.3.51",
"dom7": "^4.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^5.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor-for-vue": {
"version": "5.1.14",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/editor-for-vue/-/editor-for-vue-5.1.14.tgz",
"integrity": "sha512-Xkrdo590AhLHvzyR+U246t6T89nIWHz1weAgMuo8jEA2HS5RiUnsA4U6+iUGaQ2E5c8mYQaeNqzHQXUp9Okbiw==",
"peerDependencies": {
"@wangeditor-next/editor": ">=5.1.0",
"vue": "^3.0.5"
}
},
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/basic-modules": {
"version": "1.5.47",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/basic-modules/-/basic-modules-1.5.47.tgz",
"integrity": "sha512-FHydtBbfpsi4R4JTo5MvwWhzButwq6x36o+GoxsALdItwDW2qVgJkrlhw25aWYpg6ff1xqjivHfLBaAPWC4J+w==",
"dependencies": {
"is-url": "^1.2.4"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/code-highlight": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
"integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
"license": "MIT",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/code-highlight": {
"version": "1.3.43",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/code-highlight/-/code-highlight-1.3.43.tgz",
"integrity": "sha512-22eHjYDmtTxZqZOma2ls9zWA6gsgSkWq3XtmLylA15kegVBKAy7YxYbRrdS7D4Y/igqOerSbc5oMsOdeYjRfnQ==",
"dependencies": {
"prismjs": "^1.23.0"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/core": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
"integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
"license": "MIT",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/core": {
"version": "1.7.45",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/core/-/core-1.7.45.tgz",
"integrity": "sha512-5Pt8JCmdzJWk4q18zUZse+zM+mBW6jYt3npXVkLswYysx01krC3bBQq1J9JeZe4Ci+rQAs0tQj3t1imjpsmRgg==",
"dependencies": {
"@types/event-emitter": "^0.3.3",
"event-emitter": "^0.3.5",
"html-void-elements": "^2.0.0",
"i18next": "^20.4.0",
"scroll-into-view-if-needed": "^2.2.28",
"slate-history": "^0.66.0"
"html-void-elements": "^3.0.0",
"i18next": "^23.0.0",
"scroll-into-view-if-needed": "^3.0.0",
"slate-history": "^0.109.0"
},
"peerDependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"dom7": "^3.0.0",
"dom7": "^3.0.0 || ^4.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/editor": {
"version": "5.1.23",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
"integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
"license": "MIT",
"dependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "^1.1.7",
"@wangeditor/code-highlight": "^1.0.3",
"@wangeditor/core": "^1.1.19",
"@wangeditor/list-module": "^1.0.5",
"@wangeditor/table-module": "^1.1.4",
"@wangeditor/upload-image-module": "^1.0.2",
"@wangeditor/video-module": "^1.1.4",
"dom7": "^3.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/list-module": {
"version": "1.1.52",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/list-module/-/list-module-1.1.52.tgz",
"integrity": "sha512-FMzvx+iXXkatFFRZZ+rbiPjZpEcPa3UtNBFs40VpZG0w7O3gQWM7B/oPec3SKvAmre/US4CC5DJEqeEY3QX4hw==",
"peerDependencies": {
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/table-module": {
"version": "1.6.60",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/table-module/-/table-module-1.6.60.tgz",
"integrity": "sha512-BGTG1YzPSIC4XJRafllCcynT9CkElWDSFxYBJ2svS36AvJc3ivQuj5Fhv+rCS4RqGggsN1hdeA4iP+xrtwWI4w==",
"peerDependencies": {
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"nanoid": "^5.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/editor-for-vue": {
"version": "5.1.12",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
"integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/editor": ">=5.1.0",
"vue": "^3.0.5"
}
},
"node_modules/@wangeditor/list-module": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
"integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/table-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
"integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/upload-image-module": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
"integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
"license": "MIT",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/upload-image-module": {
"version": "1.1.50",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/upload-image-module/-/upload-image-module-1.1.50.tgz",
"integrity": "sha512-KIzI1IIQA6J5Hg3/UJF/AlEsrxJ62LZZUt61tenkO8cxks2UQMvH4CEsgEU5NNfQ0PUnOeR4ErjOgyhtbZKyaQ==",
"peerDependencies": {
"@uppy/core": "^2.0.3",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "1.x",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"@wangeditor-next/basic-modules": "1.5.47",
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"lodash.foreach": "^4.5.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor/video-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
"integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
"license": "MIT",
"node_modules/@wangeditor-next/editor/node_modules/@wangeditor-next/video-module": {
"version": "1.3.51",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/video-module/-/video-module-1.3.51.tgz",
"integrity": "sha512-67ecZCGIY+MUsqFtmwR9QKWlzGeIXVyXHmzPuevYwEqRwg50oR2xCSuoQLhfs5CKjXDZKsZhOnD/CGgt82TU+A==",
"peerDependencies": {
"@uppy/core": "^2.1.4",
"@uppy/xhr-upload": "^2.0.7",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
"@wangeditor-next/core": "1.7.45",
"dom7": "^3.0.0 || ^4.0.0",
"nanoid": "^5.0.0",
"slate": "^0.82.0",
"snabbdom": "^3.6.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/compute-scroll-into-view": {
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz",
"integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="
},
"node_modules/@wangeditor-next/editor/node_modules/dom7": {
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-4.0.6.tgz",
"integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==",
"dependencies": {
"ssr-window": "^4.0.0"
}
},
"node_modules/@wangeditor-next/editor/node_modules/html-void-elements": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-3.0.0.tgz",
"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/@wangeditor-next/editor/node_modules/i18next": {
"version": "23.16.8",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-23.16.8.tgz",
"integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
"funding": [
{
"type": "individual",
"url": "https://locize.com"
},
{
"type": "individual",
"url": "https://locize.com/i18next.html"
},
{
"type": "individual",
"url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
}
],
"dependencies": {
"@babel/runtime": "^7.23.2"
}
},
"node_modules/@wangeditor-next/editor/node_modules/nanoid": {
"version": "5.1.6",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-5.1.6.tgz",
"integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.js"
},
"engines": {
"node": "^18 || >=20"
}
},
"node_modules/@wangeditor-next/editor/node_modules/scroll-into-view-if-needed": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
"integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
"dependencies": {
"compute-scroll-into-view": "^3.0.2"
}
},
"node_modules/@wangeditor-next/editor/node_modules/slate": {
"version": "0.82.1",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.82.1.tgz",
"integrity": "sha512-3mdRdq7U3jSEoyFrGvbeb28hgrvrr4NdFCtJX+IjaNvSFozY0VZd/CGHF0zf/JDx7aEov864xd5uj0HQxxEWTQ==",
"dependencies": {
"immer": "^9.0.6",
"is-plain-object": "^5.0.0",
"tiny-warning": "^1.0.3"
}
},
"node_modules/@wangeditor-next/editor/node_modules/slate-history": {
"version": "0.109.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.109.0.tgz",
"integrity": "sha512-DHavPwrTTAEAV66eAocB3iQHEj65N6IVtbRK98ZuqGT0S44T3zXlhzY+5SZ7EPxRcoOYVt1dioRxXYM/+PmCiQ==",
"dependencies": {
"is-plain-object": "^5.0.0"
},
"peerDependencies": {
"slate": ">=0.65.3"
}
},
"node_modules/@wangeditor-next/editor/node_modules/ssr-window": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz",
"integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
},
"node_modules/@wangeditor-next/plugin-mention": {
"version": "1.0.19",
"resolved": "https://registry.npmmirror.com/@wangeditor-next/plugin-mention/-/plugin-mention-1.0.19.tgz",
"integrity": "sha512-aH81xDT4hZ+PdEFPsptJ/Gn4KDyIOhQdrNewLi2BKadmVBiYXlLneseodeFyv9MLhtNg2ekt+KNGJNK3kKzCsw==",
"peerDependencies": {
"@wangeditor-next/editor": "5.6.49",
"snabbdom": "^3.6.0"
}
},
"node_modules/@xmldom/xmldom": {
@ -8231,12 +8366,6 @@
"integrity": "sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==",
"license": "MIT"
},
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
"node_modules/computeds": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
@ -9039,6 +9168,15 @@
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"node_modules/dayjs-plugin-lunar": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/dayjs-plugin-lunar/-/dayjs-plugin-lunar-1.4.1.tgz",
"integrity": "sha512-nHKJMKoVAGt/Wp6x3xH8GrjWhB25YBYd6iYTCfLkCm4GAS6q3jvfHpLwRnIX8bjHgl8sPlTPiLFcylcEaEnj8Q==",
"peerDependencies": {
"dayjs": "^1.0.0",
"tyme4ts": "^1.0.0"
}
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
@ -9234,15 +9372,6 @@
"resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
},
"node_modules/dom7": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
"license": "MIT",
"dependencies": {
"ssr-window": "^3.0.0-alpha.1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
@ -9424,10 +9553,9 @@
"license": "ISC"
},
"node_modules/element-plus": {
"version": "2.9.1",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.1.tgz",
"integrity": "sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==",
"license": "MIT",
"version": "2.11.1",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.11.1.tgz",
"integrity": "sha512-weYFIniyNXTAe9vJZnmZpYzurh4TDbdKhBsJwhbzuo0SDZ8PLwHVll0qycJUxc6SLtH+7A9F7dvdDh5CnqeIVA==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.3.1",
@ -11232,16 +11360,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/html-void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/htmlparser2": {
"version": "8.0.2",
"resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz",
@ -11271,15 +11389,6 @@
"node": ">=16.17.0"
}
},
"node_modules/i18next": {
"version": "20.6.1",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
"integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.0"
}
},
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
@ -11866,20 +11975,18 @@
}
},
"node_modules/jsoneditor": {
"version": "9.10.5",
"resolved": "https://registry.npmmirror.com/jsoneditor/-/jsoneditor-9.10.5.tgz",
"integrity": "sha512-fVZ0NMt+zm4rqTKBv2x7zPdLeaRyKo1EjJkaR1QjK4gEM1rMwICILYSW1OPxSc1qqyAoDaA/eeNrluKoxOocCA==",
"license": "Apache-2.0",
"version": "10.4.2",
"resolved": "https://registry.npmmirror.com/jsoneditor/-/jsoneditor-10.4.2.tgz",
"integrity": "sha512-SQPCXlanU4PqdVsYuj2X7yfbLiiJYjklbksGfMKPsuwLhAIPxDlG43jYfXieGXvxpuq1fkw08YoRbkKXKabcLA==",
"dependencies": {
"ace-builds": "^1.31.1",
"ace-builds": "^1.36.2",
"ajv": "^6.12.6",
"javascript-natural-sort": "^0.7.1",
"jmespath": "^0.16.0",
"json-source-map": "^0.6.1",
"jsonrepair": "3.1.0",
"mobius1-selectr": "^2.4.13",
"jsonrepair": "^3.8.1",
"picomodal": "^3.0.0",
"vanilla-picker": "^2.12.2"
"vanilla-picker": "^2.12.3"
}
},
"node_modules/jsoneditor/node_modules/ajv": {
@ -11928,10 +12035,9 @@
"license": "MIT"
},
"node_modules/jsonrepair": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/jsonrepair/-/jsonrepair-3.1.0.tgz",
"integrity": "sha512-idqReg23J0PVRAADmZMc5xQM3xeOX5bTB6OTyMnzq33IXJXmn9iJuWIEvGmrN80rQf4d7uLTMEDwpzujNcI0Rg==",
"license": "ISC",
"version": "3.13.2",
"resolved": "https://registry.npmmirror.com/jsonrepair/-/jsonrepair-3.13.2.tgz",
"integrity": "sha512-Leuly0nbM4R+S5SVJk3VHfw1oxnlEK9KygdZvfUtEtTawNDyzB4qa1xWTmFt1aeoA7sXZkVTRuIixJ8bAvqVUg==",
"bin": {
"jsonrepair": "bin/cli.js"
}
@ -12342,13 +12448,6 @@
"integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
"license": "MIT"
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
"license": "MIT"
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@ -13025,12 +13124,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/mobius1-selectr": {
"version": "2.4.13",
"resolved": "https://registry.npmmirror.com/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz",
"integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==",
"license": "MIT"
},
"node_modules/moddle": {
"version": "6.2.3",
"resolved": "https://registry.npmmirror.com/moddle/-/moddle-6.2.3.tgz",
@ -14824,15 +14917,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^1.0.20"
}
},
"node_modules/scule": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz",
@ -14994,29 +15078,6 @@
"node": ">=8"
}
},
"node_modules/slate": {
"version": "0.72.8",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
"integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
"license": "MIT",
"dependencies": {
"immer": "^9.0.6",
"is-plain-object": "^5.0.0",
"tiny-warning": "^1.0.3"
}
},
"node_modules/slate-history": {
"version": "0.66.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
"integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
"license": "MIT",
"dependencies": {
"is-plain-object": "^5.0.0"
},
"peerDependencies": {
"slate": ">=0.65.3"
}
},
"node_modules/slice-ansi": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz",
@ -15108,12 +15169,6 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
"node_modules/ssr-window": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
"license": "MIT"
},
"node_modules/steady-xml": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/steady-xml/-/steady-xml-0.1.0.tgz",
@ -15925,6 +15980,12 @@
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"license": "0BSD"
},
"node_modules/tyme4ts": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/tyme4ts/-/tyme4ts-1.4.2.tgz",
"integrity": "sha512-3rUMpQv3Oz9V0f/GOPVHn+PC6eqR4CyMYQu02B8bUA5+BWvYALJapfwjOS7GH5NFK7mAS3LCUzSEYkQc4rkk6Q==",
"peer": true
},
"node_modules/type": {
"version": "2.7.3",
"resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz",
@ -16489,19 +16550,6 @@
"uuid": "dist/bin/uuid"
}
},
"node_modules/v3-jsoneditor": {
"version": "0.0.6",
"resolved": "https://registry.npmmirror.com/v3-jsoneditor/-/v3-jsoneditor-0.0.6.tgz",
"integrity": "sha512-9G0sXWXUn67SBkn46ycWfwPwjuJu/lcsQaNzMtXAR2/95hMV21WfcRNsqJ+vVVrSHQehohB/9fVLwYEXz0u/KA==",
"license": "MIT",
"dependencies": {
"jsoneditor": "^9.10.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/pratik227"
}
},
"node_modules/vanilla-picker": {
"version": "2.12.3",
"resolved": "https://registry.npmmirror.com/vanilla-picker/-/vanilla-picker-2.12.3.tgz",
@ -17064,6 +17112,14 @@
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
"license": "MIT"
},
"node_modules/vue3-print-nb": {
"version": "0.1.4",
"resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
"integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
"dependencies": {
"vue": "^3.0.5"
}
},
"node_modules/vue3-signature": {
"version": "0.2.4",
"resolved": "https://registry.npmmirror.com/vue3-signature/-/vue3-signature-0.2.4.tgz",

View File

@ -1,6 +1,6 @@
{
"name": "yudao-ui-admin-vue3",
"version": "2026.01-snapshot",
"version": "2026.04-snapshot",
"description": "基于vue3、vite4、element-plus、typesScript",
"author": "xingyu",
"private": false,
@ -9,11 +9,11 @@
"dev": "vite --mode env.local",
"dev-server": "vite --mode dev",
"ts:check": "vue-tsc --noEmit",
"build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
"build:dev": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode dev",
"build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test",
"build:stage": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode stage",
"build:prod": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode prod",
"build:local": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode env.local",
"build:dev": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode dev",
"build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test",
"build:stage": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode stage",
"build:prod": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode prod",
"serve:dev": "vite preview --mode dev",
"serve:prod": "vite preview --mode prod",
"preview": "pnpm build:local && vite preview",
@ -44,6 +44,8 @@
"cropperjs": "^1.6.1",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
"dayjs-plugin-lunar": "^1.4.1",
"dhtmlx-gantt": "^9.1.1",
"diagram-js": "^12.8.0",
"driver.js": "^1.3.1",
"echarts": "^5.5.0",
@ -51,6 +53,7 @@
"element-plus": "2.11.1",
"fast-xml-parser": "^4.3.2",
"highlight.js": "^11.9.0",
"jsbarcode": "^3.12.3",
"jsencrypt": "^3.3.2",
"jsoneditor": "^10.1.3",
"lodash-es": "^4.17.21",
@ -69,6 +72,7 @@
"snabbdom": "^3.6.2",
"sortablejs": "^1.15.3",
"steady-xml": "^0.1.0",
"tyme4ts": "^1.4.6",
"url": "^0.11.3",
"video.js": "^7.21.5",
"vue": "3.5.12",
@ -106,6 +110,7 @@
"bpmn-js": "^17.9.2",
"bpmn-js-properties-panel": "5.23.0",
"consola": "^3.2.3",
"cross-env": "^7.0.3",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-define-config": "^2.1.0",

View File

@ -65,6 +65,12 @@ importers:
dayjs:
specifier: ^1.11.10
version: 1.11.13
dayjs-plugin-lunar:
specifier: ^1.4.1
version: 1.4.1(dayjs@1.11.13)(tyme4ts@1.4.6)
dhtmlx-gantt:
specifier: ^9.1.1
version: 9.1.1
diagram-js:
specifier: ^12.8.0
version: 12.8.1
@ -86,6 +92,9 @@ importers:
highlight.js:
specifier: ^11.9.0
version: 11.10.0
jsbarcode:
specifier: ^3.12.3
version: 3.12.3
jsencrypt:
specifier: ^3.3.2
version: 3.3.2
@ -140,6 +149,9 @@ importers:
steady-xml:
specifier: ^0.1.0
version: 0.1.0
tyme4ts:
specifier: ^1.4.6
version: 1.4.6
url:
specifier: ^0.11.3
version: 0.11.4
@ -246,6 +258,9 @@ importers:
consola:
specifier: ^3.2.3
version: 3.2.3
cross-env:
specifier: ^7.0.3
version: 7.0.3
eslint:
specifier: ^8.57.0
version: 8.57.1
@ -886,7 +901,7 @@ packages:
engines: {node: '>=6.9.0'}
'@bpmn-io/cm-theme@0.1.0-alpha.2':
resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==}
resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==, tarball: https://registry.npmmirror.com/@bpmn-io/cm-theme/-/cm-theme-0.1.0-alpha.2.tgz}
'@bpmn-io/diagram-js-ui@0.2.3':
resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==}
@ -895,17 +910,17 @@ packages:
resolution: {integrity: sha512-yAS7ZYX+D56K+luC36u96eRMLb4VHcPUwTUqMZ/Z/Je2gou2DJLRbuBTHAB4jjKt4wFCHSG4B8Y+TrBciEYf4w==}
'@bpmn-io/feel-editor@1.9.1':
resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==}
resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-editor/-/feel-editor-1.9.1.tgz}
engines: {node: '>= 16'}
'@bpmn-io/feel-lint@1.3.1':
resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==}
resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-lint/-/feel-lint-1.3.1.tgz}
'@bpmn-io/properties-panel@3.25.0':
resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==}
resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==, tarball: https://registry.npmmirror.com/@bpmn-io/properties-panel/-/properties-panel-3.25.0.tgz}
'@codemirror/autocomplete@6.18.3':
resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==}
resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==, tarball: https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz}
peerDependencies:
'@codemirror/language': ^6.0.0
'@codemirror/state': ^6.0.0
@ -913,19 +928,19 @@ packages:
'@lezer/common': ^1.0.0
'@codemirror/commands@6.7.1':
resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==}
resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==, tarball: https://registry.npmmirror.com/@codemirror/commands/-/commands-6.7.1.tgz}
'@codemirror/language@6.10.6':
resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==}
resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==, tarball: https://registry.npmmirror.com/@codemirror/language/-/language-6.10.6.tgz}
'@codemirror/lint@6.8.4':
resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==}
resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==, tarball: https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz}
'@codemirror/state@6.4.1':
resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==, tarball: https://registry.npmmirror.com/@codemirror/state/-/state-6.4.1.tgz}
'@codemirror/view@6.35.0':
resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==}
resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==, tarball: https://registry.npmmirror.com/@codemirror/view/-/view-6.35.0.tgz}
'@commitlint/cli@19.6.0':
resolution: {integrity: sha512-v17BgGD9w5KnthaKxXnEg6KLq6DYiAxyiN44TpiRtqyW8NSq+Kx99mkEG8Qo6uu6cI5eMzMojW2muJxjmPnF8w==}
@ -1032,139 +1047,139 @@ packages:
vue: ^3.2.0
'@esbuild/aix-ppc64@0.19.12':
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==, tarball: https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.19.12':
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.19.12':
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.19.12':
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.19.12':
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.19.12':
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.19.12':
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.19.12':
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.19.12':
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.19.12':
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.19.12':
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.19.12':
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.19.12':
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.19.12':
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.19.12':
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.19.12':
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.19.12':
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-x64@0.19.12':
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-x64@0.19.12':
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.19.12':
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.19.12':
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.19.12':
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.19.12':
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@ -1351,16 +1366,16 @@ packages:
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@lezer/common@1.2.3':
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, tarball: https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz}
'@lezer/highlight@1.2.1':
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==, tarball: https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz}
'@lezer/lr@1.4.2':
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, tarball: https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz}
'@lezer/markdown@1.3.2':
resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==}
resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==, tarball: https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.3.2.tgz}
'@microsoft/fetch-event-source@2.0.1':
resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==}
@ -1378,95 +1393,95 @@ packages:
engines: {node: '>= 8'}
'@parcel/watcher-android-arm64@2.5.0':
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==, tarball: https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
'@parcel/watcher-darwin-arm64@2.5.0':
resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==}
resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==, tarball: https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
'@parcel/watcher-darwin-x64@2.5.0':
resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==}
resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==, tarball: https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
'@parcel/watcher-freebsd-x64@2.5.0':
resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==}
resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==, tarball: https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
'@parcel/watcher-linux-arm-glibc@2.5.0':
resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==}
resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.0':
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.0':
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.0':
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.0':
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.0':
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
'@parcel/watcher-win32-arm64@2.5.0':
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
'@parcel/watcher-win32-ia32@2.5.0':
resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==}
resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
'@parcel/watcher-win32-x64@2.5.0':
resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==}
resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
'@parcel/watcher@2.5.0':
resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==}
resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==, tarball: https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.0.tgz}
engines: {node: '>= 10.0.0'}
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz}
engines: {node: '>=14'}
'@pkgr/core@0.1.1':
@ -1512,101 +1527,101 @@ packages:
optional: true
'@rollup/rollup-android-arm-eabi@4.27.4':
resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==}
resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.27.4':
resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==}
resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.27.4':
resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==}
resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.27.4':
resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==}
resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.27.4':
resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==}
resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==, tarball: https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.27.4':
resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==}
resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==, tarball: https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.27.4':
resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==}
resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.27.4':
resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==}
resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.27.4':
resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==}
resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.27.4':
resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==}
resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.27.4':
resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==}
resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.27.4':
resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==}
resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.27.4':
resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==}
resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.27.4':
resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==}
resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.27.4':
resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==}
resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.27.4':
resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==}
resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.27.4':
resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==}
resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.27.4':
resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==}
resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz}
cpu: [x64]
os: [win32]
@ -1617,65 +1632,65 @@ packages:
resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==}
'@swc/core-darwin-arm64@1.9.3':
resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==}
resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==, tarball: https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
'@swc/core-darwin-x64@1.9.3':
resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==}
resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==, tarball: https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
'@swc/core-linux-arm-gnueabihf@1.9.3':
resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==}
resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
'@swc/core-linux-arm64-gnu@1.9.3':
resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==}
resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@swc/core-linux-arm64-musl@1.9.3':
resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==}
resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@swc/core-linux-x64-gnu@1.9.3':
resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==}
resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@swc/core-linux-x64-musl@1.9.3':
resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==}
resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@swc/core-win32-arm64-msvc@1.9.3':
resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==}
resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==, tarball: https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
'@swc/core-win32-ia32-msvc@1.9.3':
resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==}
resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==, tarball: https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
'@swc/core-win32-x64-msvc@1.9.3':
resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==}
resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==, tarball: https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
@ -1696,7 +1711,7 @@ packages:
resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==}
'@sxzz/popperjs-es@2.11.7':
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
'@transloadit/prettier-bytes@0.0.7':
resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
@ -1847,10 +1862,10 @@ packages:
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, tarball: https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz}
'@types/video.js@7.3.58':
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==}
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==, tarball: https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz}
'@types/web-bluetooth@0.0.16':
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
@ -2557,7 +2572,7 @@ packages:
engines: {node: '>=6'}
camunda-bpmn-js-behaviors@1.7.2:
resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==}
resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==, tarball: https://registry.npmmirror.com/camunda-bpmn-js-behaviors/-/camunda-bpmn-js-behaviors-1.7.2.tgz}
peerDependencies:
bpmn-js: '>= 9'
camunda-bpmn-moddle: '>= 7'
@ -2597,7 +2612,7 @@ packages:
engines: {node: '>= 14.16.0'}
classnames@2.5.1:
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz}
cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
@ -2723,11 +2738,16 @@ packages:
optional: true
crelt@1.0.6:
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, tarball: https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz}
cropperjs@1.6.2:
resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==}
cross-env@7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==, tarball: https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
hasBin: true
cross-fetch@3.1.8:
resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
@ -2914,6 +2934,12 @@ packages:
resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
engines: {node: '>=12'}
dayjs-plugin-lunar@1.4.1:
resolution: {integrity: sha512-nHKJMKoVAGt/Wp6x3xH8GrjWhB25YBYd6iYTCfLkCm4GAS6q3jvfHpLwRnIX8bjHgl8sPlTPiLFcylcEaEnj8Q==, tarball: https://registry.npmmirror.com/dayjs-plugin-lunar/-/dayjs-plugin-lunar-1.4.1.tgz}
peerDependencies:
dayjs: ^1.0.0
tyme4ts: ^1.0.0
dayjs@1.11.13:
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
@ -2961,6 +2987,9 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
dhtmlx-gantt@9.1.1:
resolution: {integrity: sha512-ym4m+kHHFJfeI3JYs7PdfQb31uqfbA44qrBxuc3mye9kx6Q+uc4dg6zxAXr7ll+6G9ccRcGZqk2fKfBqwCMp3w==, tarball: https://registry.npmmirror.com/dhtmlx-gantt/-/dhtmlx-gantt-9.1.1.tgz}
diagram-js-direct-editing@3.2.0:
resolution: {integrity: sha512-+pyxeQGBSdLiZX0/tmmsm2qZSvm9YtVzod5W3RMHSTR7VrkUMD6E7EX/W9JQv3ebxO7oIdqFmytmNDDpSHnYEw==}
peerDependencies:
@ -3013,7 +3042,7 @@ packages:
resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==}
domify@2.0.0:
resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==}
resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==, tarball: https://registry.npmmirror.com/domify/-/domify-2.0.0.tgz}
engines: {node: '>=18'}
dompurify@3.2.1:
@ -3270,10 +3299,10 @@ packages:
optional: true
feelers@1.4.0:
resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==}
resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==, tarball: https://registry.npmmirror.com/feelers/-/feelers-1.4.0.tgz}
feelin@3.2.0:
resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==}
resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==, tarball: https://registry.npmmirror.com/feelin/-/feelin-3.2.0.tgz}
file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
@ -3314,7 +3343,7 @@ packages:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
focus-trap@7.6.2:
resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==}
resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==, tarball: https://registry.npmmirror.com/focus-trap/-/focus-trap-7.6.2.tgz}
follow-redirects@1.15.9:
resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
@ -3348,7 +3377,7 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
@ -3654,6 +3683,9 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
jsbarcode@3.12.3:
resolution: {integrity: sha512-CuHU9hC6dPsHF5oVFMo8NW76uQVjH4L22CsP4hW+dNnGywJHC/B0ThA1CTDVLnxKLrrpYdicBLnd2xsgTfRnvg==, tarball: https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.12.3.tgz}
jsencrypt@3.3.2:
resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==}
@ -3724,14 +3756,14 @@ packages:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
lang-feel@2.2.0:
resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==}
resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==, tarball: https://registry.npmmirror.com/lang-feel/-/lang-feel-2.2.0.tgz}
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
lezer-feel@1.4.0:
resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==}
resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==, tarball: https://registry.npmmirror.com/lezer-feel/-/lezer-feel-1.4.0.tgz}
lilconfig@3.1.2:
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
@ -3848,7 +3880,7 @@ packages:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
luxon@3.5.0:
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==, tarball: https://registry.npmmirror.com/luxon/-/luxon-3.5.0.tgz}
engines: {node: '>=12'}
m3u8-parser@4.8.0:
@ -3953,7 +3985,7 @@ packages:
resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==}
min-dom@5.1.1:
resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==}
resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-5.1.1.tgz}
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@ -4588,7 +4620,7 @@ packages:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
engines: {node: '>=0.10.0'}
split2@4.2.0:
@ -4648,7 +4680,7 @@ packages:
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
style-mod@4.1.2:
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, tarball: https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz}
stylelint-config-html@1.1.0:
resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==}
@ -4715,7 +4747,7 @@ packages:
resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==}
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==, tarball: https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz}
table@6.8.2:
resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
@ -4778,6 +4810,9 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tyme4ts@1.4.6:
resolution: {integrity: sha512-6uiAlUxS4BNu2FGsKg0KdUr329jJjhnEURhURR8v5GKXnv1B7Z4kAZHjOByhGcCJ+jhuQskR5kmGSvZJ7fE/VA==, tarball: https://registry.npmmirror.com/tyme4ts/-/tyme4ts-1.4.6.tgz}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@ -5056,7 +5091,7 @@ packages:
vue: ^3.0.1
w3c-keyname@2.2.8:
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, tarball: https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz}
wangeditor@4.7.15:
resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==}
@ -5172,7 +5207,7 @@ packages:
engines: {node: '>=12.20'}
zeebe-bpmn-moddle@1.7.0:
resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==}
resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==, tarball: https://registry.npmmirror.com/zeebe-bpmn-moddle/-/zeebe-bpmn-moddle-1.7.0.tgz}
zrender@5.6.0:
resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==}
@ -7997,6 +8032,10 @@ snapshots:
cropperjs@1.6.2: {}
cross-env@7.0.3:
dependencies:
cross-spawn: 7.0.6
cross-fetch@3.1.8:
dependencies:
node-fetch: 2.7.0
@ -8211,6 +8250,11 @@ snapshots:
dargs@8.1.0: {}
dayjs-plugin-lunar@1.4.1(dayjs@1.11.13)(tyme4ts@1.4.6):
dependencies:
dayjs: 1.11.13
tyme4ts: 1.4.6
dayjs@1.11.13: {}
de-indent@1.0.2: {}
@ -8244,6 +8288,8 @@ snapshots:
detect-libc@1.0.3:
optional: true
dhtmlx-gantt@9.1.1: {}
diagram-js-direct-editing@3.2.0(diagram-js@14.11.3):
dependencies:
diagram-js: 14.11.3
@ -8998,6 +9044,8 @@ snapshots:
dependencies:
argparse: 2.0.1
jsbarcode@3.12.3: {}
jsencrypt@3.3.2: {}
jsesc@3.0.2: {}
@ -10110,6 +10158,8 @@ snapshots:
tslib@2.8.1: {}
tyme4ts@1.4.6: {}
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1

View File

@ -0,0 +1,31 @@
import request from '@/config/axios'
/** Modbus 连接配置 VO */
export interface DeviceModbusConfigVO {
id?: number // 主键
deviceId: number // 设备编号
ip: string // Modbus 服务器 IP 地址
port: number // Modbus 服务器端口
slaveId: number // 从站地址
timeout: number // 连接超时时间,单位:毫秒
retryInterval: number // 重试间隔,单位:毫秒
mode: number // 模式
frameFormat: number // 帧格式
status: number // 状态
}
/** Modbus 连接配置 API */
export const DeviceModbusConfigApi = {
/** 获取设备的 Modbus 连接配置 */
getModbusConfig: async (deviceId: number) => {
return await request.get<DeviceModbusConfigVO>({
url: `/iot/device-modbus-config/get`,
params: { deviceId }
})
},
/** 保存 Modbus 连接配置 */
saveModbusConfig: async (data: DeviceModbusConfigVO) => {
return await request.post({ url: `/iot/device-modbus-config/save`, data })
}
}

View File

@ -0,0 +1,48 @@
import request from '@/config/axios'
/** Modbus 点位配置 VO */
export interface DeviceModbusPointVO {
id?: number // 主键
deviceId: number // 设备编号
thingModelId?: number // 物模型属性编号
identifier: string // 属性标识符
name: string // 属性名称
functionCode?: number // Modbus 功能码
registerAddress?: number // 寄存器起始地址
registerCount?: number // 寄存器数量
byteOrder?: string // 字节序
rawDataType?: string // 原始数据类型
scale: number // 缩放因子
pollInterval: number // 轮询间隔,单位:毫秒
status: number // 状态
}
/** Modbus 点位配置 API */
export const DeviceModbusPointApi = {
/** 获取设备的 Modbus 点位分页 */
getModbusPointPage: async (params: any) => {
return await request.get({ url: `/iot/device-modbus-point/page`, params })
},
/** 获取 Modbus 点位详情 */
getModbusPoint: async (id: number) => {
return await request.get<DeviceModbusPointVO>({
url: `/iot/device-modbus-point/get?id=${id}`
})
},
/** 创建 Modbus 点位配置 */
createModbusPoint: async (data: DeviceModbusPointVO) => {
return await request.post({ url: `/iot/device-modbus-point/create`, data })
},
/** 更新 Modbus 点位配置 */
updateModbusPoint: async (data: DeviceModbusPointVO) => {
return await request.put({ url: `/iot/device-modbus-point/update`, data })
},
/** 删除 Modbus 点位配置 */
deleteModbusPoint: async (id: number) => {
return await request.delete({ url: `/iot/device-modbus-point/delete?id=${id}` })
}
}

View File

@ -16,7 +16,8 @@ export interface ProductVO {
status: number // 产品状态
deviceType: number // 设备类型
netType: number // 联网方式
codecType: string // 数据格式(编解码器类型)
protocolType: string // 协议类型
serializeType: string // 序列化类型
deviceCount: number // 设备数量
createTime: Date // 创建时间
}
@ -27,9 +28,23 @@ export enum DeviceTypeEnum {
GATEWAY_SUB = 1, // 网关子设备
GATEWAY = 2 // 网关设备
}
// IOT 数据格式(编解码器类型)枚举类
export enum CodecTypeEnum {
ALINK = 'Alink' // 阿里云 Alink 协议
// IoT 协议类型枚举
export enum ProtocolTypeEnum {
TCP = 'tcp',
UDP = 'udp',
WEBSOCKET = 'websocket',
HTTP = 'http',
MQTT = 'mqtt',
EMQX = 'emqx',
COAP = 'coap',
MODBUS_TCP_CLIENT = 'modbus_tcp_client',
MODBUS_TCP_SERVER = 'modbus_tcp_server'
}
// IoT 序列化类型枚举
export enum SerializeTypeEnum {
JSON = 'json',
BINARY = 'binary'
}
// IoT 产品 API

View File

@ -13,6 +13,7 @@ export interface DataSinkVO {
| TcpConfig
| WebSocketConfig
| MqttConfig
| DatabaseConfig
| RocketMQConfig
| KafkaMQConfig
| RabbitMQConfig
@ -73,6 +74,14 @@ export interface MqttConfig extends Config {
topic: string
}
/** Database 配置 */
export interface DatabaseConfig extends Config {
jdbcUrl: string
username: string
password: string
tableName: string
}
/** RocketMQ 配置 */
export interface RocketMQConfig extends Config {
nameServer: string

View File

@ -79,7 +79,7 @@ export const getMemberSummary = () => {
export const getMemberAnalyse = (params: MemberAnalyseReqVO) => {
return request.get<MemberAnalyseRespVO>({
url: '/statistics/member/analyse',
params: { times: [formatDate(params.times[0]), formatDate(params.times[1])] }
params: { times: [formatDate(params.times[0] as any), formatDate(params.times[1] as any)] }
})
}
@ -118,6 +118,6 @@ export const getMemberRegisterCountList = (
) => {
return request.get<MemberRegisterCountRespVO[]>({
url: '/statistics/member/register-count-list',
params: { times: [formatDate(beginTime), formatDate(endTime)] }
params: { times: [formatDate(beginTime as any), formatDate(endTime as any)] }
})
}

View File

@ -0,0 +1,25 @@
import request from '@/config/axios'
// 排班日历 - 班组排班项
export interface CalCalendarTeamShiftItem {
teamId: number
teamName: string
shiftId: number
shiftName: string
sort: number
}
// 排班日历 - 日历天 VO
export interface CalCalendarDayVO {
day: string // yyyy-MM-dd
shiftType: number // 轮班方式
teamShifts: CalCalendarTeamShiftItem[]
}
// 排班日历 API
export const CalCalendarApi = {
// 查询排班日历列表
getCalendarList: async (params: any) => {
return await request.get({ url: `/mes/cal/calendar/list`, params })
}
}

View File

@ -0,0 +1,28 @@
import request from '@/config/axios'
// MES 假期设置 VO
export interface CalHolidayVO {
id: number // 编号
day: number // 日期(时间戳)
type: number // 日期类型
remark: string // 备注
createTime: string // 创建时间
}
// MES 假期设置 API
export const CalHolidayApi = {
// 查询假期设置列表(支持可选日期范围过滤)
getHolidayList: async (params?: { startDay?: string; endDay?: string }) => {
return await request.get({ url: `/mes/cal/holiday/list`, params })
},
// 根据日期查询假期设置
getHolidayByDay: async (day: string) => {
return await request.get({ url: `/mes/cal/holiday/get-by-day`, params: { day } })
},
// 保存假期设置(含 upsert 逻辑)
saveHoliday: async (data: CalHolidayVO) => {
return await request.post({ url: `/mes/cal/holiday/save`, data })
}
}

View File

@ -0,0 +1,54 @@
import request from '@/config/axios'
// MES 排班计划 VO
export interface CalPlanVO {
id: number
code: string // 计划编码
name: string // 计划名称
calendarType: number // 班组类型
startDate: number // 开始日期
endDate: number // 结束日期
shiftType: number // 轮班方式
shiftMethod: number // 倒班方式
shiftCount: number // 倒班天数
status: number // 状态
remark: string // 备注
}
// MES 排班计划 API
export const CalPlanApi = {
// 查询排班计划分页
getPlanPage: async (params: any) => {
return await request.get({ url: `/mes/cal/plan/page`, params })
},
// 查询排班计划详情
getPlan: async (id: number) => {
return await request.get({ url: `/mes/cal/plan/get?id=` + id })
},
// 新增排班计划
createPlan: async (data: CalPlanVO) => {
return await request.post({ url: `/mes/cal/plan/create`, data })
},
// 修改排班计划
updatePlan: async (data: CalPlanVO) => {
return await request.put({ url: `/mes/cal/plan/update`, data })
},
// 确认排班计划
confirmPlan: async (id: number) => {
return await request.put({ url: `/mes/cal/plan/confirm?id=` + id })
},
// 删除排班计划
deletePlan: async (id: number) => {
return await request.delete({ url: `/mes/cal/plan/delete?id=` + id })
},
// 导出排班计划 Excel
exportPlan: async (params: any) => {
return await request.download({ url: `/mes/cal/plan/export-excel`, params })
}
}

View File

@ -0,0 +1,35 @@
import request from '@/config/axios'
// MES 计划班次 VO
export interface CalPlanShiftVO {
id: number
planId: number // 排班计划编号
sort: number // 显示顺序
name: string // 班次名称
startTime: string // 开始时间
endTime: string // 结束时间
remark: string // 备注
}
// MES 计划班次 API
export const CalPlanShiftApi = {
// 查询指定排班计划的班次列表
getPlanShiftListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/cal/plan-shift/list-by-plan?planId=` + planId })
},
// 新增计划班次
createPlanShift: async (data: CalPlanShiftVO) => {
return await request.post({ url: `/mes/cal/plan-shift/create`, data })
},
// 修改计划班次
updatePlanShift: async (data: CalPlanShiftVO) => {
return await request.put({ url: `/mes/cal/plan-shift/update`, data })
},
// 删除计划班次
deletePlanShift: async (id: number) => {
return await request.delete({ url: `/mes/cal/plan-shift/delete?id=` + id })
}
}

View File

@ -0,0 +1,31 @@
import request from '@/config/axios'
// MES 计划班组关联 VO
export interface CalPlanTeamVO {
id: number
planId: number // 排班计划编号
teamId: number // 班组编号
teamCode: string // 班组编码
teamName: string // 班组名称
remark: string // 备注
}
// TODO @AI挪到 team/index.ts 中
// MES 计划班组关联 API
export const CalPlanTeamApi = {
// 查询指定排班计划的班组列表
getPlanTeamListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/cal/plan-team/list-by-plan?planId=` + planId })
},
// 新增计划班组关联
createPlanTeam: async (data: CalPlanTeamVO) => {
return await request.post({ url: `/mes/cal/plan-team/create`, data })
},
// 删除计划班组关联
deletePlanTeam: async (id: number) => {
return await request.delete({ url: `/mes/cal/plan-team/delete?id=` + id })
}
}

View File

@ -0,0 +1,29 @@
import request from '@/config/axios'
// MES 计划班组关联 VO
export interface CalPlanTeamVO {
id: number
planId: number // 排班计划编号
teamId: number // 班组编号
teamCode: string // 班组编码
teamName: string // 班组名称
remark: string // 备注
}
// MES 计划班组关联 API
export const CalPlanTeamApi = {
// 查询指定排班计划的班组列表
getPlanTeamListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/cal/plan-team/list-by-plan?planId=` + planId })
},
// 新增计划班组关联
createPlanTeam: async (data: CalPlanTeamVO) => {
return await request.post({ url: `/mes/cal/plan-team/create`, data })
},
// 删除计划班组关联
deletePlanTeam: async (id: number) => {
return await request.delete({ url: `/mes/cal/plan-team/delete?id=` + id })
}
}

View File

@ -0,0 +1,37 @@
import request from '@/config/axios'
// TODO @AI挪到 plan/shift 目录下
// MES 计划班次 VO
export interface CalPlanShiftVO {
id: number
planId: number // 排班计划编号
sort: number // 显示顺序
name: string // 班次名称
startTime: string // 开始时间
endTime: string // 结束时间
remark: string // 备注
}
// MES 计划班次 API
export const CalPlanShiftApi = {
// 查询指定排班计划的班次列表
getPlanShiftListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/cal/plan-shift/list-by-plan?planId=` + planId })
},
// 新增计划班次
createPlanShift: async (data: CalPlanShiftVO) => {
return await request.post({ url: `/mes/cal/plan-shift/create`, data })
},
// 修改计划班次
updatePlanShift: async (data: CalPlanShiftVO) => {
return await request.put({ url: `/mes/cal/plan-shift/update`, data })
},
// 删除计划班次
deletePlanShift: async (id: number) => {
return await request.delete({ url: `/mes/cal/plan-shift/delete?id=` + id })
}
}

View File

@ -0,0 +1,48 @@
import request from '@/config/axios'
// MES 班组 VO
export interface CalTeamVO {
id: number
code: string // 班组编码
name: string // 班组名称
calendarType: number // 班组类型
remark: string // 备注
}
// MES 班组 API
export const CalTeamApi = {
// 查询班组分页
getTeamPage: async (params: any) => {
return await request.get({ url: `/mes/cal/team/page`, params })
},
// 查询班组详情
getTeam: async (id: number) => {
return await request.get({ url: `/mes/cal/team/get?id=` + id })
},
// 新增班组
createTeam: async (data: CalTeamVO) => {
return await request.post({ url: `/mes/cal/team/create`, data })
},
// 修改班组
updateTeam: async (data: CalTeamVO) => {
return await request.put({ url: `/mes/cal/team/update`, data })
},
// 删除班组
deleteTeam: async (id: number) => {
return await request.delete({ url: `/mes/cal/team/delete?id=` + id })
},
// 获得班组列表(全量,用于下拉选择)
getTeamList: async () => {
return await request.get({ url: `/mes/cal/team/list` })
},
// 导出班组 Excel
exportTeam: async (params: any) => {
return await request.download({ url: `/mes/cal/team/export-excel`, params })
}
}

View File

@ -0,0 +1,42 @@
import request from '@/config/axios'
// MES 班组成员 VO
export interface CalTeamMemberVO {
id: number
teamId: number // 班组编号
userId: number // 用户编号
nickname: string // 用户昵称(关联查询)
telephone: string // 用户手机号(关联查询)
remark: string // 备注
}
// MES 班组成员 API
export const CalTeamMemberApi = {
// 创建班组成员
createTeamMember: async (data: CalTeamMemberVO) => {
return await request.post({ url: `/mes/cal/team-member/create`, data })
},
// 删除班组成员
deleteTeamMember: async (id: number) => {
return await request.delete({ url: `/mes/cal/team-member/delete?id=` + id })
},
// 查询班组成员分页
getTeamMemberPage: async (params: any) => {
return await request.get({ url: `/mes/cal/team-member/page`, params })
},
// 查询指定班组的成员列表
getTeamMemberListByTeam: async (teamId: number) => {
return await request.get({ url: `/mes/cal/team-member/list-by-team`, params: { teamId } })
},
// 查询多个班组的成员列表
getTeamMemberListByTeamIds: async (teamIds: number[]) => {
return await request.get({
url: `/mes/cal/team-member/list-by-team`,
params: { teamIds: teamIds.join(',') }
})
}
}

View File

@ -0,0 +1,22 @@
import request from '@/config/axios'
// MES 班组排班 VO
export interface CalTeamShiftVO {
id: number
planId: number // 排班计划编号
teamId: number // 班组编号
shiftId: number // 班次编号
day: number // 日期
sort: number // 排序
teamName: string // 班组名称(关联查询)
shiftName: string // 班次名称(关联查询)
remark: string // 备注
}
// MES 班组排班 API
export const CalTeamShiftApi = {
// 查询班组排班列表
getTeamShiftList: async (params: any) => {
return await request.get({ url: `/mes/cal/team-shift/list`, params })
}
}

View File

@ -0,0 +1,58 @@
import request from '@/config/axios'
// MES 点检保养方案 VO
export interface DvCheckPlanVO {
id: number // 编号
code: string // 方案编码
name: string // 方案名称
type: number // 方案类型
startDate: Date // 开始日期
endDate: Date // 结束日期
cycleType: number // 周期类型
cycleCount: number // 周期数量
status: number // 状态
remark: string // 备注
}
// MES 点检保养方案 API
export const DvCheckPlanApi = {
// 查询点检保养方案分页
getCheckPlanPage: async (params: any) => {
return await request.get({ url: `/mes/dv/check-plan/page`, params })
},
// 查询点检保养方案详情
getCheckPlan: async (id: number) => {
return await request.get({ url: `/mes/dv/check-plan/get?id=` + id })
},
// 新增点检保养方案
createCheckPlan: async (data: DvCheckPlanVO) => {
return await request.post({ url: `/mes/dv/check-plan/create`, data })
},
// 修改点检保养方案
updateCheckPlan: async (data: DvCheckPlanVO) => {
return await request.put({ url: `/mes/dv/check-plan/update`, data })
},
// 启用点检保养方案
enableCheckPlan: async (id: number) => {
return await request.put({ url: `/mes/dv/check-plan/enable?id=` + id })
},
// 停用点检保养方案
disableCheckPlan: async (id: number) => {
return await request.put({ url: `/mes/dv/check-plan/disable?id=` + id })
},
// 删除点检保养方案
deleteCheckPlan: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-plan/delete?id=` + id })
},
// 导出点检保养方案 Excel
exportCheckPlan: async (params: any) => {
return await request.download({ url: `/mes/dv/check-plan/export-excel`, params })
}
}

View File

@ -0,0 +1,32 @@
import request from '@/config/axios'
// TODO @AI放到 machinery/index.ts
// MES 点检保养方案设备 VO
export interface DvCheckPlanMachineryVO {
id: number
planId: number // 方案编号
machineryId: number // 设备编号
machineryCode: string // 设备编码
machineryName: string // 设备名称
machineryBrand: string // 品牌
machinerySpec: string // 规格型号
remark: string // 备注
}
// MES 点检保养方案设备 API
export const DvCheckPlanMachineryApi = {
// 查询指定方案的设备列表
getListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/dv/check-plan-machinery/list-by-plan?planId=` + planId })
},
// 新增方案设备关联
create: async (data: DvCheckPlanMachineryVO) => {
return await request.post({ url: `/mes/dv/check-plan-machinery/create`, data })
},
// 删除方案设备关联
delete: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-plan-machinery/delete?id=` + id })
}
}

View File

@ -0,0 +1,31 @@
import request from '@/config/axios'
// MES 点检保养方案设备 VO
export interface DvCheckPlanMachineryVO {
id: number
planId: number // 方案编号
machineryId: number // 设备编号
machineryCode: string // 设备编码
machineryName: string // 设备名称
machineryBrand: string // 品牌
machinerySpecification: string // 规格型号
remark: string // 备注
}
// MES 点检保养方案设备 API
export const DvCheckPlanMachineryApi = {
// 查询指定方案的设备列表
getListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/dv/check-plan-machinery/list-by-plan?planId=` + planId })
},
// 新增方案设备关联
create: async (data: DvCheckPlanMachineryVO) => {
return await request.post({ url: `/mes/dv/check-plan-machinery/create`, data })
},
// 删除方案设备关联
delete: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-plan-machinery/delete?id=` + id })
}
}

View File

@ -0,0 +1,33 @@
import request from '@/config/axios'
// TODO @AI放到 subject/index.ts
// MES 点检保养方案项目 VO
export interface DvCheckPlanSubjectVO {
id: number
planId: number // 方案编号
subjectId: number // 项目编号
subjectCode: string // 项目编码
subjectName: string // 项目名称
subjectType: number // 项目类型
subjectContent: string // 项目内容
subjectStandard: string // 标准
remark: string // 备注
}
// MES 点检保养方案项目 API
export const DvCheckPlanSubjectApi = {
// 查询指定方案的项目列表
getListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/dv/check-plan-subject/list-by-plan?planId=` + planId })
},
// 新增方案项目关联
create: async (data: DvCheckPlanSubjectVO) => {
return await request.post({ url: `/mes/dv/check-plan-subject/create`, data })
},
// 删除方案项目关联
delete: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-plan-subject/delete?id=` + id })
}
}

View File

@ -0,0 +1,32 @@
import request from '@/config/axios'
// MES 点检保养方案项目 VO
export interface DvCheckPlanSubjectVO {
id: number
planId: number // 方案编号
subjectId: number // 项目编号
subjectCode: string // 项目编码
subjectName: string // 项目名称
subjectType: number // 项目类型
subjectContent: string // 项目内容
subjectStandard: string // 标准
remark: string // 备注
}
// MES 点检保养方案项目 API
export const DvCheckPlanSubjectApi = {
// 查询指定方案的项目列表
getListByPlan: async (planId: number) => {
return await request.get({ url: `/mes/dv/check-plan-subject/list-by-plan?planId=` + planId })
},
// 新增方案项目关联
create: async (data: DvCheckPlanSubjectVO) => {
return await request.post({ url: `/mes/dv/check-plan-subject/create`, data })
},
// 删除方案项目关联
delete: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-plan-subject/delete?id=` + id })
}
}

View File

@ -0,0 +1,56 @@
import request from '@/config/axios'
// MES 设备点检记录 VO
export interface DvCheckRecordVO {
id: number // 编号
planId: number // 点检计划编号
planName?: string // 计划名称
machineryId: number // 设备编号
machineryCode?: string // 设备编码
machineryName?: string // 设备名称
machineryBrand?: string // 品牌
machinerySpecification?: string // 规格型号
checkTime: Date // 点检时间
userId: number // 点检人编号
nickname?: string // 点检人名称
status: number // 状态
remark: string // 备注
}
// MES 设备点检记录 API
export const DvCheckRecordApi = {
// 查询设备点检记录分页
getCheckRecordPage: async (params: any) => {
return await request.get({ url: `/mes/dv/check-record/page`, params })
},
// 查询设备点检记录详情
getCheckRecord: async (id: number) => {
return await request.get({ url: `/mes/dv/check-record/get?id=` + id })
},
// 新增设备点检记录
createCheckRecord: async (data: DvCheckRecordVO) => {
return await request.post({ url: `/mes/dv/check-record/create`, data })
},
// 修改设备点检记录
updateCheckRecord: async (data: DvCheckRecordVO) => {
return await request.put({ url: `/mes/dv/check-record/update`, data })
},
// 提交设备点检记录
submitCheckRecord: async (id: number) => {
return await request.put({ url: `/mes/dv/check-record/submit?id=` + id })
},
// 删除设备点检记录
deleteCheckRecord: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-record/delete?id=` + id })
},
// 导出设备点检记录 Excel
exportCheckRecord: async (params: any) => {
return await request.download({ url: `/mes/dv/check-record/export-excel`, params })
}
}

View File

@ -0,0 +1,43 @@
import request from '@/config/axios'
// MES 设备点检记录明细 VO
export interface DvCheckRecordLineVO {
id: number // 编号
recordId: number // 点检记录编号
subjectId: number // 点检项目编号
subjectCode?: string // 项目编码
subjectName?: string // 项目名称
subjectContent?: string // 检查内容
subjectStandard?: string // 检查标准
checkStatus: number // 点检结果
checkResult?: string // 异常描述
remark: string // 备注
}
// MES 设备点检记录明细 API
export const DvCheckRecordLineApi = {
// 查询设备点检记录明细分页
getCheckRecordLinePage: async (params: any) => {
return await request.get({ url: `/mes/dv/check-record-line/page`, params })
},
// 查询设备点检记录明细详情
getCheckRecordLine: async (id: number) => {
return await request.get({ url: `/mes/dv/check-record-line/get?id=` + id })
},
// 新增设备点检记录明细
createCheckRecordLine: async (data: DvCheckRecordLineVO) => {
return await request.post({ url: `/mes/dv/check-record-line/create`, data })
},
// 修改设备点检记录明细
updateCheckRecordLine: async (data: DvCheckRecordLineVO) => {
return await request.put({ url: `/mes/dv/check-record-line/update`, data })
},
// 删除设备点检记录明细
deleteCheckRecordLine: async (id: number) => {
return await request.delete({ url: `/mes/dv/check-record-line/delete?id=` + id })
}
}

View File

@ -0,0 +1,56 @@
import request from '@/config/axios'
// MES 设备台账 VO
export interface DvMachineryVO {
id: number // 编号
code: string // 设备编码
name: string // 设备名称
brand: string // 品牌
specification: string // 规格型号
machineryTypeId: number // 设备类型编号
machineryTypeName: string // 设备类型名称
workshopId: number // 所属车间编号
workshopName: string // 所属车间名称
status: number // 设备状态
lastMaintenTime: Date // 最近保养时间
lastCheckTime: Date // 最近点检时间
remark: string // 备注
}
// MES 设备台账 API
export const DvMachineryApi = {
// 查询设备台账分页
getMachineryPage: async (params: any) => {
return await request.get({ url: `/mes/dv/machinery/page`, params })
},
// 查询设备台账详情
getMachinery: async (id: number) => {
return await request.get({ url: `/mes/dv/machinery/get?id=` + id })
},
// 新增设备台账
createMachinery: async (data: DvMachineryVO) => {
return await request.post({ url: `/mes/dv/machinery/create`, data })
},
// 修改设备台账
updateMachinery: async (data: DvMachineryVO) => {
return await request.put({ url: `/mes/dv/machinery/update`, data })
},
// 删除设备台账
deleteMachinery: async (id: number) => {
return await request.delete({ url: `/mes/dv/machinery/delete?id=` + id })
},
// 导出设备台账 Excel
exportMachinery: async (params: any) => {
return await request.download({ url: `/mes/dv/machinery/export-excel`, params })
},
// 下载设备导入模板
importTemplate: async () => {
return await request.download({ url: `/mes/dv/machinery/get-import-template` })
}
}

View File

@ -0,0 +1,45 @@
import request from '@/config/axios'
// MES 设备类型 VO
export interface DvMachineryTypeVO {
id: number // 编号
parentId: number // 父类型编号
code: string // 类型编码
name: string // 类型名称
sort: number // 显示排序
status: number // 状态
remark: string // 备注
}
// MES 设备类型 API
export const DvMachineryTypeApi = {
// 查询设备类型列表
getMachineryTypeList: async (params?: any) => {
return await request.get({ url: `/mes/dv/machinery-type/list`, params })
},
// 查询设备类型精简列表
getMachineryTypeSimpleList: async () => {
return await request.get({ url: `/mes/dv/machinery-type/simple-list` })
},
// 查询设备类型详情
getMachineryType: async (id: number) => {
return await request.get({ url: `/mes/dv/machinery-type/get?id=` + id })
},
// 新增设备类型
createMachineryType: async (data: DvMachineryTypeVO) => {
return await request.post({ url: `/mes/dv/machinery-type/create`, data })
},
// 修改设备类型
updateMachineryType: async (data: DvMachineryTypeVO) => {
return await request.put({ url: `/mes/dv/machinery-type/update`, data })
},
// 删除设备类型
deleteMachineryType: async (id: number) => {
return await request.delete({ url: `/mes/dv/machinery-type/delete?id=` + id })
}
}

View File

@ -0,0 +1,56 @@
import request from '@/config/axios'
// MES 设备保养记录 VO
export interface DvMaintenRecordVO {
id: number // 编号
planId: number // 计划编号
planName?: string // 计划名称
machineryId: number // 设备编号
machineryCode?: string // 设备编码
machineryName?: string // 设备名称
machineryBrand?: string // 品牌
machinerySpecification?: string // 规格型号
maintenTime: Date // 保养时间
userId: number // 用户编号
nickname?: string // 保养人名称
status: number // 状态
remark: string // 备注
}
// MES 设备保养记录 API
export const DvMaintenRecordApi = {
// 查询设备保养记录分页
getMaintenRecordPage: async (params: any) => {
return await request.get({ url: `/mes/dv/mainten-record/page`, params })
},
// 查询设备保养记录详情
getMaintenRecord: async (id: number) => {
return await request.get({ url: `/mes/dv/mainten-record/get?id=` + id })
},
// 新增设备保养记录
createMaintenRecord: async (data: DvMaintenRecordVO) => {
return await request.post({ url: `/mes/dv/mainten-record/create`, data })
},
// 修改设备保养记录
updateMaintenRecord: async (data: DvMaintenRecordVO) => {
return await request.put({ url: `/mes/dv/mainten-record/update`, data })
},
// 提交设备保养记录
submitMaintenRecord: async (id: number) => {
return await request.put({ url: `/mes/dv/mainten-record/submit?id=` + id })
},
// 删除设备保养记录
deleteMaintenRecord: async (id: number) => {
return await request.delete({ url: `/mes/dv/mainten-record/delete?id=` + id })
},
// 导出设备保养记录 Excel
exportMaintenRecord: async (params: any) => {
return await request.download({ url: `/mes/dv/mainten-record/export-excel`, params })
}
}

View File

@ -0,0 +1,42 @@
import request from '@/config/axios'
// MES 设备保养记录明细 VO
export interface DvMaintenRecordLineVO {
id: number // 编号
recordId: number // 保养记录编号
subjectId: number // 项目编号
subjectName?: string // 项目名称
subjectContent?: string // 项目内容
subjectStandard?: string // 项目标准
status: number // 保养结果
result: string // 异常描述
remark: string // 备注
}
// MES 设备保养记录明细 API
export const DvMaintenRecordLineApi = {
// 查询设备保养记录明细分页
getMaintenRecordLinePage: async (params: any) => {
return await request.get({ url: `/mes/dv/mainten-record-line/page`, params })
},
// 查询设备保养记录明细详情
getMaintenRecordLine: async (id: number) => {
return await request.get({ url: `/mes/dv/mainten-record-line/get?id=` + id })
},
// 新增设备保养记录明细
createMaintenRecordLine: async (data: DvMaintenRecordLineVO) => {
return await request.post({ url: `/mes/dv/mainten-record-line/create`, data })
},
// 修改设备保养记录明细
updateMaintenRecordLine: async (data: DvMaintenRecordLineVO) => {
return await request.put({ url: `/mes/dv/mainten-record-line/update`, data })
},
// 删除设备保养记录明细
deleteMaintenRecordLine: async (id: number) => {
return await request.delete({ url: `/mes/dv/mainten-record-line/delete?id=` + id })
}
}

View File

@ -0,0 +1,74 @@
import request from '@/config/axios'
// MES 维修工单 VO
export interface DvRepairVO {
id: number // 编号
code: string // 维修工单编码
name: string // 维修工单名称
machineryId: number // 设备编号
machineryCode?: string // 设备编码
machineryName?: string // 设备名称
machineryBrand?: string // 品牌
machinerySpecification?: string // 规格型号
requireDate: Date // 报修日期
finishDate: Date // 维修完成日期
confirmDate: Date // 验收日期
result: number // 维修结果
acceptedUserId: number // 维修人用户编号
acceptedUserNickname?: string // 维修人名称
confirmUserId: number // 验收人用户编号
confirmUserNickname?: string // 验收人名称
sourceDocType: number // 来源单据类型
sourceDocId: number // 来源单据编号
sourceDocCode: string // 来源单据编码
status: number // 状态
remark: string // 备注
}
// MES 维修工单 API
export const DvRepairApi = {
// 查询维修工单分页
getRepairPage: async (params: any) => {
return await request.get({ url: `/mes/dv/repair/page`, params })
},
// 查询维修工单详情
getRepair: async (id: number) => {
return await request.get({ url: `/mes/dv/repair/get?id=` + id })
},
// 新增维修工单
createRepair: async (data: DvRepairVO) => {
return await request.post({ url: `/mes/dv/repair/create`, data })
},
// 修改维修工单
updateRepair: async (data: DvRepairVO) => {
return await request.put({ url: `/mes/dv/repair/update`, data })
},
// 删除维修工单
deleteRepair: async (id: number) => {
return await request.delete({ url: `/mes/dv/repair/delete?id=` + id })
},
// 导出维修工单 Excel
exportRepair: async (params: any) => {
return await request.download({ url: `/mes/dv/repair/export-excel`, params })
},
// 提交维修工单(草稿→维修中)
submitRepair: async (id: number) => {
return await request.put({ url: `/mes/dv/repair/submit?id=` + id })
},
// 确认维修完成(维修中→待验收)
confirmRepair: async (data: any) => {
return await request.put({ url: `/mes/dv/repair/confirm`, data })
},
// 完成验收(待验收→已确认)
finishRepair: async (id: number, result: number) => {
return await request.put({ url: `/mes/dv/repair/finish?id=` + id + `&result=` + result })
}
}

View File

@ -0,0 +1,43 @@
import request from '@/config/axios'
// MES 维修工单行 VO
export interface DvRepairLineVO {
id: number // 编号
repairId: number // 维修工单编号
subjectId: number // 项目编号
subjectName?: string // 项目名称
subjectContent?: string // 项目内容
subjectStandard?: string // 项目标准
malfunction: string // 故障描述
malfunctionUrl: string // 故障图片 URL
description: string // 维修描述
remark: string // 备注
}
// MES 维修工单行 API
export const DvRepairLineApi = {
// 查询维修工单行分页
getRepairLinePage: async (params: any) => {
return await request.get({ url: `/mes/dv/repair-line/page`, params })
},
// 查询维修工单行详情
getRepairLine: async (id: number) => {
return await request.get({ url: `/mes/dv/repair-line/get?id=` + id })
},
// 新增维修工单行
createRepairLine: async (data: DvRepairLineVO) => {
return await request.post({ url: `/mes/dv/repair-line/create`, data })
},
// 修改维修工单行
updateRepairLine: async (data: DvRepairLineVO) => {
return await request.put({ url: `/mes/dv/repair-line/update`, data })
},
// 删除维修工单行
deleteRepairLine: async (id: number) => {
return await request.delete({ url: `/mes/dv/repair-line/delete?id=` + id })
}
}

View File

@ -0,0 +1,46 @@
import request from '@/config/axios'
// MES 点检保养项目 VO
export interface DvSubjectVO {
id: number // 编号
code: string // 项目编码
name: string // 项目名称
type: number // 项目类型
content: string // 项目内容
standard: string // 标准
status: number // 状态
remark: string // 备注
}
// MES 点检保养项目 API
export const DvSubjectApi = {
// 查询点检保养项目分页
getSubjectPage: async (params: any) => {
return await request.get({ url: `/mes/dv/subject/page`, params })
},
// 查询点检保养项目详情
getSubject: async (id: number) => {
return await request.get({ url: `/mes/dv/subject/get?id=` + id })
},
// 新增点检保养项目
createSubject: async (data: DvSubjectVO) => {
return await request.post({ url: `/mes/dv/subject/create`, data })
},
// 修改点检保养项目
updateSubject: async (data: DvSubjectVO) => {
return await request.put({ url: `/mes/dv/subject/update`, data })
},
// 删除点检保养项目
deleteSubject: async (id: number) => {
return await request.delete({ url: `/mes/dv/subject/delete?id=` + id })
},
// 导出点检保养项目 Excel
exportSubject: async (params: any) => {
return await request.download({ url: `/mes/dv/subject/export-excel`, params })
}
}

51
src/api/mes/home/index.ts Normal file
View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 首页汇总统计 VO
export interface MesHomeSummaryVO {
workOrderActiveCount: number
workOrderPrepareCount: number
workOrderFinishedCount: number
todayOutput: number
yesterdayOutput: number
todayQualifiedQuantity: number
todayUnqualifiedQuantity: number
machineryTotal: number
machineryProducing: number
machineryStop: number
machineryMaintenance: number
andonActiveCount: number
repairActiveCount: number
}
// MES 工单状态分布 VO
export interface MesHomeWorkOrderStatusVO {
status: number
statusName: string
count: number
}
// MES 生产趋势 VO
export interface MesHomeProductionTrendVO {
date: string
quantity: number
qualifiedQuantity: number
unqualifiedQuantity: number
}
// MES 首页统计 API
export const MesHomeStatisticsApi = {
// 获得首页汇总统计
getHomeSummary: async (): Promise<MesHomeSummaryVO> => {
return await request.get({ url: `/mes/home-statistics/summary` })
},
// 获得工单状态分布
getWorkOrderStatusDistribution: async (): Promise<MesHomeWorkOrderStatusVO[]> => {
return await request.get({ url: `/mes/home-statistics/work-order-status` })
},
// 获得生产趋势
getProductionTrend: async (days?: number): Promise<MesHomeProductionTrendVO[]> => {
return await request.get({ url: `/mes/home-statistics/production-trend`, params: { days } })
}
}

View File

@ -0,0 +1,45 @@
import request from '@/config/axios'
// MES 编码规则分段 VO
export interface AutoCodePartVO {
id: number // 分段编号
ruleId: number // 规则编号
sort: number // 排序
type: number // 分段类型
length: number // 长度
dateFormat: string // 日期格式
fixCharacter: string // 固定字符
serialStartNo: number // 流水号起始值
serialStep: number // 流水号步长
cycleFlag: boolean // 是否循环
cycleMethod: number // 循环方式
remark: string // 备注
}
// MES 编码规则分段 API
export const AutoCodePartApi = {
// 查询编码规则分段详情
getAutoCodePart: async (id: number) => {
return await request.get({ url: `/mes/md/auto-code-part/get?id=` + id })
},
// 查询编码规则分段列表
getAutoCodePartListByRuleId: async (ruleId: number) => {
return await request.get({ url: `/mes/md/auto-code-part/list-by-rule-id?ruleId=` + ruleId })
},
// 新增编码规则分段
createAutoCodePart: async (data: AutoCodePartVO) => {
return await request.post({ url: `/mes/md/auto-code-part/create`, data })
},
// 修改编码规则分段
updateAutoCodePart: async (data: AutoCodePartVO) => {
return await request.put({ url: `/mes/md/auto-code-part/update`, data })
},
// 删除编码规则分段
deleteAutoCodePart: async (id: number) => {
return await request.delete({ url: `/mes/md/auto-code-part/delete?id=` + id })
}
}

View File

@ -0,0 +1,12 @@
import request from '@/config/axios'
// MES 编码生成 API
export const AutoCodeRecordApi = {
// 生成编码
generateAutoCode: async (ruleCode: string, inputChar?: string) => {
return await request.post({
url: `/mes/md/auto-code-record/generate`,
data: { ruleCode, inputChar }
})
}
}

View File

@ -0,0 +1,48 @@
import request from '@/config/axios'
// MES 编码规则 VO
export interface AutoCodeRuleVO {
id: number // 规则编号
code: string // 规则编码
name: string // 规则名称
description: string // 规则描述
maxLength: number // 最大长度
padded: boolean // 是否补齐
paddedChar: string // 补齐字符
paddedMethod: number // 补齐方式
status: number // 状态
remark: string // 备注
}
// MES 编码规则 API
export const AutoCodeRuleApi = {
// 查询编码规则分页
getAutoCodeRulePage: async (params: any) => {
return await request.get({ url: `/mes/md/auto-code-rule/page`, params })
},
// 查询编码规则详情
getAutoCodeRule: async (id: number) => {
return await request.get({ url: `/mes/md/auto-code-rule/get?id=` + id })
},
// 新增编码规则
createAutoCodeRule: async (data: AutoCodeRuleVO) => {
return await request.post({ url: `/mes/md/auto-code-rule/create`, data })
},
// 修改编码规则
updateAutoCodeRule: async (data: AutoCodeRuleVO) => {
return await request.put({ url: `/mes/md/auto-code-rule/update`, data })
},
// 删除编码规则
deleteAutoCodeRule: async (id: number) => {
return await request.delete({ url: `/mes/md/auto-code-rule/delete?id=` + id })
},
// 导出编码规则 Excel
exportAutoCodeRule: async (params: any) => {
return await request.download({ url: `/mes/md/auto-code-rule/export-excel`, params })
}
}

View File

@ -0,0 +1,64 @@
import request from '@/config/axios'
// MES 客户 VO
export interface MdClientVO {
id: number // 客户编号
code: string // 客户编码
name: string // 客户名称
nickname: string // 客户简称
englishName: string // 客户英文名称
description: string // 客户简介
logo: string // 客户LOGO地址
type: number // 客户类型
address: string // 客户地址
website: string // 客户官网地址
email: string // 客户邮箱地址
telephone: string // 客户电话
contact1Name: string // 联系人1
contact1Telephone: string // 联系人1-电话
contact1Email: string // 联系人1-邮箱
contact2Name: string // 联系人2
contact2Telephone: string // 联系人2-电话
contact2Email: string // 联系人2-邮箱
creditCode: string // 统一社会信用代码
status: number // 状态
remark: string // 备注
}
// MES 客户 API
export const MdClientApi = {
// 查询客户分页
getClientPage: async (params: any) => {
return await request.get({ url: `/mes/md-client/page`, params })
},
// 查询客户详情
getClient: async (id: number) => {
return await request.get({ url: `/mes/md-client/get?id=` + id })
},
// 新增客户
createClient: async (data: MdClientVO) => {
return await request.post({ url: `/mes/md-client/create`, data })
},
// 修改客户
updateClient: async (data: MdClientVO) => {
return await request.put({ url: `/mes/md-client/update`, data })
},
// 删除客户
deleteClient: async (id: number) => {
return await request.delete({ url: `/mes/md-client/delete?id=` + id })
},
// 导出客户 Excel
exportClient: async (params: any) => {
return await request.download({ url: `/mes/md-client/export-excel`, params })
},
// 下载客户导入模板
importTemplate: async () => {
return await request.download({ url: `/mes/md-client/get-import-template` })
}
}

View File

@ -0,0 +1,34 @@
import request from '@/config/axios'
// MES 物料批次属性配置 VO
export interface MdItemBatchConfigVO {
id?: number // 编号
itemId: number // 物料编号
produceDateFlag: boolean // 批次属性-生产日期
expireDateFlag: boolean // 批次属性-有效期
receiptDateFlag: boolean // 批次属性-入库日期
vendorFlag: boolean // 批次属性-供应商
clientFlag: boolean // 批次属性-客户
salesOrderCodeFlag: boolean // 批次属性-销售订单编号
purchaseOrderCodeFlag: boolean // 批次属性-采购订单编号
workorderFlag: boolean // 批次属性-生产工单
taskFlag: boolean // 批次属性-生产任务
workstationFlag: boolean // 批次属性-工作站
toolFlag: boolean // 批次属性-工具
moldFlag: boolean // 批次属性-模具
lotNumberFlag: boolean // 批次属性-生产批号
qualityStatusFlag: boolean // 批次属性-质量状态
}
// MES 物料批次属性配置 API
export const MdItemBatchConfigApi = {
// 根据物料编号获取批次属性配置
getBatchConfigByItemId: async (itemId: number) => {
return await request.get({ url: `/mes/md/item-batch-config/get-by-item-id?itemId=` + itemId })
},
// 保存批次属性配置(新增或更新)
saveBatchConfig: async (data: MdItemBatchConfigVO) => {
return await request.post({ url: `/mes/md/item-batch-config/save`, data })
}
}

View File

@ -0,0 +1,64 @@
import request from '@/config/axios'
// MES 物料产品 VO
export interface MdItemVO {
id: number // 物料编号
code: string // 物料编码
name: string // 物料名称
specification: string // 规格型号
unitMeasureId: number // 计量单位编号
unitMeasureName?: string // 计量单位名称
itemTypeId: number // 物料分类编号
itemTypeName?: string // 物料分类名称
itemOrProduct?: string // 物料/产品标识
status: number // 状态
safeStockFlag: boolean // 是否启用安全库存
minStock: number // 最低库存量
maxStock: number // 最高库存量
highValue: boolean // 是否高值物料
batchFlag: boolean // 是否启用批次管理
remark: string // 备注
}
// MES 物料产品 API
export const MdItemApi = {
// 查询物料产品分页
getItemPage: async (params: any) => {
return await request.get({ url: `/mes/md/item/page`, params })
},
// 查询物料产品详情
getItem: async (id: number) => {
return await request.get({ url: `/mes/md/item/get?id=` + id })
},
// 新增物料产品
createItem: async (data: MdItemVO) => {
return await request.post({ url: `/mes/md/item/create`, data })
},
// 修改物料产品
updateItem: async (data: MdItemVO) => {
return await request.put({ url: `/mes/md/item/update`, data })
},
// 修改物料产品状态
updateItemStatus: async (id: number, status: number) => {
return await request.put({ url: `/mes/md/item/update-status`, params: { id, status } })
},
// 删除物料产品
deleteItem: async (id: number) => {
return await request.delete({ url: `/mes/md/item/delete?id=` + id })
},
// 导出物料产品 Excel
exportItem: async (params: any) => {
return await request.download({ url: `/mes/md/item/export-excel`, params })
},
// 下载物料导入模板
importTemplate: async () => {
return await request.download({ url: `/mes/md/item/get-import-template` })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 产品BOM VO
export interface MdProductBomVO {
id?: number // BOM 编号
itemId: number // 物料产品 ID
bomItemId: number // BOM 物料 ID
quantity: number // 物料使用比例
status?: number // 是否启用
remark?: string // 备注
createTime?: Date // 创建时间
// ========== 关联展示字段 ==========
bomItemCode?: string // BOM 物料编码
bomItemName?: string // BOM 物料名称
bomItemSpecification?: string // BOM 物料规格
unitMeasureName?: string // 计量单位名称
itemOrProduct?: string // 产品物料标识
}
// MES 产品BOM API
export const MdProductBomApi = {
// 创建产品BOM
createProductBom: async (data: MdProductBomVO) => {
return await request.post({ url: `/mes/md/product-bom/create`, data })
},
// 更新产品BOM
updateProductBom: async (data: MdProductBomVO) => {
return await request.put({ url: `/mes/md/product-bom/update`, data })
},
// 删除产品BOM
deleteProductBom: async (id: number) => {
return await request.delete({ url: `/mes/md/product-bom/delete?id=` + id })
},
// 获得产品BOM
getProductBom: async (id: number) => {
return await request.get({ url: `/mes/md/product-bom/get?id=` + id })
},
// 获得产品BOM分页
getProductBomPage: async (params: any) => {
return await request.get({ url: `/mes/md/product-bom/page`, params })
},
// 根据物料产品编号获得产品BOM列表
getProductBomListByItemId: async (itemId: number) => {
return await request.get({ url: `/mes/md/product-bom/list-by-item-id?itemId=` + itemId })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 产品SIP VO
export interface MdProductSipVO {
id?: number // SIP 编号
itemId: number // 物料产品 ID
sort: number // 排列顺序
processId?: number // 工序 ID
title: string // 标题
description?: string // 详细描述
url?: string // 图片地址
remark?: string // 备注
createTime?: Date // 创建时间
// ========== 关联展示字段 ==========
processCode?: string // 工序编号
processName?: string // 工序名称
}
// MES 产品SIP API
export const MdProductSipApi = {
// 创建产品SIP
createProductSip: async (data: MdProductSipVO) => {
return await request.post({ url: `/mes/md/product-sip/create`, data })
},
// 更新产品SIP
updateProductSip: async (data: MdProductSipVO) => {
return await request.put({ url: `/mes/md/product-sip/update`, data })
},
// 删除产品SIP
deleteProductSip: async (id: number) => {
return await request.delete({ url: `/mes/md/product-sip/delete?id=` + id })
},
// 获得产品SIP
getProductSip: async (id: number) => {
return await request.get({ url: `/mes/md/product-sip/get?id=` + id })
},
// 获得产品SIP分页
getProductSipPage: async (params: any) => {
return await request.get({ url: `/mes/md/product-sip/page`, params })
},
// 根据物料产品编号获得产品SIP列表
getProductSipListByItemId: async (itemId: number) => {
return await request.get({ url: `/mes/md/product-sip/list-by-item-id?itemId=` + itemId })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 产品SOP VO
export interface MdProductSopVO {
id?: number // SOP 编号
itemId: number // 物料产品 ID
sort: number // 排列顺序
processId?: number // 工序 ID
title: string // 标题
description?: string // 详细描述
url?: string // 图片地址
remark?: string // 备注
createTime?: Date // 创建时间
// ========== 关联展示字段 ==========
processCode?: string // 工序编号
processName?: string // 工序名称
}
// MES 产品SOP API
export const MdProductSopApi = {
// 创建产品SOP
createProductSop: async (data: MdProductSopVO) => {
return await request.post({ url: `/mes/md/product-sop/create`, data })
},
// 更新产品SOP
updateProductSop: async (data: MdProductSopVO) => {
return await request.put({ url: `/mes/md/product-sop/update`, data })
},
// 删除产品SOP
deleteProductSop: async (id: number) => {
return await request.delete({ url: `/mes/md/product-sop/delete?id=` + id })
},
// 获得产品SOP
getProductSop: async (id: number) => {
return await request.get({ url: `/mes/md/product-sop/get?id=` + id })
},
// 获得产品SOP分页
getProductSopPage: async (params: any) => {
return await request.get({ url: `/mes/md/product-sop/page`, params })
},
// 根据物料产品编号获得产品SOP列表
getProductSopListByItemId: async (itemId: number) => {
return await request.get({ url: `/mes/md/product-sop/list-by-item-id?itemId=` + itemId })
}
}

View File

@ -0,0 +1,46 @@
import request from '@/config/axios'
// MES 物料产品分类 VO
export interface MdItemTypeVO {
id: number // 分类编号
parentId: number // 父分类编号
code: string // 分类编码
name: string // 分类名称
itemOrProduct: string // 物料/产品标识
sort: number // 显示排序
status: number // 状态
remark: string // 备注
}
// MES 物料产品分类 API
export const MdItemTypeApi = {
// 查询物料产品分类列表
getItemTypeList: async (params?: any) => {
return await request.get({ url: `/mes/md/item-type/list`, params })
},
// 查询物料产品分类精简列表
getItemTypeSimpleList: async () => {
return await request.get({ url: `/mes/md/item-type/simple-list` })
},
// 查询物料产品分类详情
getItemType: async (id: number) => {
return await request.get({ url: `/mes/md/item-type/get?id=` + id })
},
// 新增物料产品分类
createItemType: async (data: MdItemTypeVO) => {
return await request.post({ url: `/mes/md/item-type/create`, data })
},
// 修改物料产品分类
updateItemType: async (data: MdItemTypeVO) => {
return await request.put({ url: `/mes/md/item-type/update`, data })
},
// 删除物料产品分类
deleteItemType: async (id: number) => {
return await request.delete({ url: `/mes/md/item-type/delete?id=` + id })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 计量单位 VO
export interface MdUnitMeasureVO {
id: number // 单位编号
code: string // 单位编码
name: string // 单位名称
primaryFlag: boolean // 是否主单位
primaryId: number // 主单位编号
changeRate: number // 与主单位换算比例
status: number // 状态
remark: string // 备注
}
// MES 计量单位 API
export const MdUnitMeasureApi = {
// 查询计量单位分页
getUnitMeasurePage: async (params: any) => {
return await request.get({ url: `/mes/md/unit-measure/page`, params })
},
// 查询计量单位精简列表
getUnitMeasureSimpleList: async () => {
return await request.get({ url: `/mes/md/unit-measure/simple-list` })
},
// 查询计量单位详情
getUnitMeasure: async (id: number) => {
return await request.get({ url: `/mes/md/unit-measure/get?id=` + id })
},
// 新增计量单位
createUnitMeasure: async (data: MdUnitMeasureVO) => {
return await request.post({ url: `/mes/md/unit-measure/create`, data })
},
// 修改计量单位
updateUnitMeasure: async (data: MdUnitMeasureVO) => {
return await request.put({ url: `/mes/md/unit-measure/update`, data })
},
// 删除计量单位
deleteUnitMeasure: async (id: number) => {
return await request.delete({ url: `/mes/md/unit-measure/delete?id=` + id })
},
// 导出计量单位 Excel
exportUnitMeasure: async (params: any) => {
return await request.download({ url: `/mes/md/unit-measure/export-excel`, params })
}
}

65
src/api/mes/md/vendor/index.ts vendored Normal file
View File

@ -0,0 +1,65 @@
import request from '@/config/axios'
// MES 供应商 VO
export interface MdVendorVO {
id: number // 供应商编号
code: string // 供应商编码
name: string // 供应商名称
nickname: string // 供应商简称
englishName: string // 供应商英文名称
description: string // 供应商简介
logo: string // 供应商LOGO地址
level: string // 供应商等级
score: number // 供应商评分
address: string // 供应商地址
website: string // 供应商官网地址
email: string // 供应商邮箱地址
telephone: string // 供应商电话
contact1Name: string // 联系人1
contact1Telephone: string // 联系人1-电话
contact1Email: string // 联系人1-邮箱
contact2Name: string // 联系人2
contact2Telephone: string // 联系人2-电话
contact2Email: string // 联系人2-邮箱
creditCode: string // 统一社会信用代码
status: number // 状态
remark: string // 备注
}
// MES 供应商 API
export const MdVendorApi = {
// 查询供应商分页
getVendorPage: async (params: any) => {
return await request.get({ url: `/mes/md-vendor/page`, params })
},
// 查询供应商详情
getVendor: async (id: number) => {
return await request.get({ url: `/mes/md-vendor/get?id=` + id })
},
// 新增供应商
createVendor: async (data: MdVendorVO) => {
return await request.post({ url: `/mes/md-vendor/create`, data })
},
// 修改供应商
updateVendor: async (data: MdVendorVO) => {
return await request.put({ url: `/mes/md-vendor/update`, data })
},
// 删除供应商
deleteVendor: async (id: number) => {
return await request.delete({ url: `/mes/md-vendor/delete?id=` + id })
},
// 导出供应商 Excel
exportVendor: async (params: any) => {
return await request.download({ url: `/mes/md-vendor/export-excel`, params })
},
// 下载供应商导入模板
importTemplate: async () => {
return await request.download({ url: `/mes/md-vendor/get-import-template` })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 工作站 VO
export interface MdWorkstationVO {
id: number // 工作站编号
code: string // 工作站编码
name: string // 工作站名称
address: string // 工作站地点
workshopId: number // 所在车间 ID
workshopName: string // 所在车间名称
processId: number // 工序 ID
processName: string // 工序名称
warehouseId: number // 线边库 ID
locationId: number // 库区 ID
areaId: number // 库位 ID
status: number // 状态
remark: string // 备注
}
// MES 工作站 API
export const MdWorkstationApi = {
// 查询工作站分页
getWorkstationPage: async (params: any) => {
return await request.get({ url: `/mes/md-workstation/page`, params })
},
// 查询工作站详情
getWorkstation: async (id: number) => {
return await request.get({ url: `/mes/md-workstation/get?id=` + id })
},
// 新增工作站
createWorkstation: async (data: MdWorkstationVO) => {
return await request.post({ url: `/mes/md-workstation/create`, data })
},
// 修改工作站
updateWorkstation: async (data: MdWorkstationVO) => {
return await request.put({ url: `/mes/md-workstation/update`, data })
},
// 删除工作站
deleteWorkstation: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation/delete?id=` + id })
},
// 导出工作站 Excel
exportWorkstation: async (params: any) => {
return await request.download({ url: `/mes/md-workstation/export-excel`, params })
}
}

View File

@ -0,0 +1,32 @@
import request from '@/config/axios'
// MES 设备资源 VO
export interface MdWorkstationMachineVO {
id: number
workstationId: number // 工作站 ID
machineryId: number // 设备 ID
machineryName: string // 设备名称
machineryCode: string // 设备编码
quantity: number // 数量
remark: string // 备注
}
// MES 设备资源 API
export const MdWorkstationMachineApi = {
// 查询设备资源列表
getWorkstationMachineList: async (workstationId: number) => {
return await request.get({
url: `/mes/md-workstation-machine/list-by-workstation?workstationId=` + workstationId
})
},
// 新增设备资源
createWorkstationMachine: async (data: MdWorkstationMachineVO) => {
return await request.post({ url: `/mes/md-workstation-machine/create`, data })
},
// 删除设备资源
deleteWorkstationMachine: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-machine/delete?id=` + id })
}
}

View File

@ -0,0 +1,36 @@
import request from '@/config/axios'
// MES 工装夹具资源 VO
export interface MdWorkstationToolVO {
id: number
workstationId: number // 工作站 ID
toolTypeId: number // 工具类型 ID
toolTypeName: string // 工具类型名称
quantity: number // 数量
remark: string // 备注
}
// MES 工装夹具资源 API
export const MdWorkstationToolApi = {
// 查询工装夹具资源列表
getWorkstationToolList: async (workstationId: number) => {
return await request.get({
url: `/mes/md-workstation-tool/list-by-workstation?workstationId=` + workstationId
})
},
// 新增工装夹具资源
createWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.post({ url: `/mes/md-workstation-tool/create`, data })
},
// 修改工装夹具资源
updateWorkstationTool: async (data: MdWorkstationToolVO) => {
return await request.put({ url: `/mes/md-workstation-tool/update`, data })
},
// 删除工装夹具资源
deleteWorkstationTool: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-tool/delete?id=` + id })
}
}

View File

@ -0,0 +1,36 @@
import request from '@/config/axios'
// MES 人力资源 VO
export interface MdWorkstationWorkerVO {
id: number
workstationId: number // 工作站 ID
postId: number // 岗位 ID
postName: string // 岗位名称
quantity: number // 数量
remark: string // 备注
}
// MES 人力资源 API
export const MdWorkstationWorkerApi = {
// 查询人力资源列表
getWorkstationWorkerList: async (workstationId: number) => {
return await request.get({
url: `/mes/md-workstation-worker/list-by-workstation?workstationId=` + workstationId
})
},
// 新增人力资源
createWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.post({ url: `/mes/md-workstation-worker/create`, data })
},
// 修改人力资源
updateWorkstationWorker: async (data: MdWorkstationWorkerVO) => {
return await request.put({ url: `/mes/md-workstation-worker/update`, data })
},
// 删除人力资源
deleteWorkstationWorker: async (id: number) => {
return await request.delete({ url: `/mes/md-workstation-worker/delete?id=` + id })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 车间 VO
export interface MdWorkshopVO {
id: number // 车间编号
code: string // 车间编码
name: string // 车间名称
area: number // 面积
chargeUserId: number // 负责人用户编号
chargeUserName: string // 负责人名称
status: number // 状态
remark: string // 备注
}
// MES 车间 API
export const MdWorkshopApi = {
// 查询车间分页
getWorkshopPage: async (params: any) => {
return await request.get({ url: `/mes/md-workshop/page`, params })
},
// 查询车间精简列表
getWorkshopSimpleList: async () => {
return await request.get({ url: `/mes/md-workshop/simple-list` })
},
// 查询车间详情
getWorkshop: async (id: number) => {
return await request.get({ url: `/mes/md-workshop/get?id=` + id })
},
// 新增车间
createWorkshop: async (data: MdWorkshopVO) => {
return await request.post({ url: `/mes/md-workshop/create`, data })
},
// 修改车间
updateWorkshop: async (data: MdWorkshopVO) => {
return await request.put({ url: `/mes/md-workshop/update`, data })
},
// 删除车间
deleteWorkshop: async (id: number) => {
return await request.delete({ url: `/mes/md-workshop/delete?id=` + id })
},
// 导出车间 Excel
exportWorkshop: async (params: any) => {
return await request.download({ url: `/mes/md-workshop/export-excel`, params })
}
}

View File

@ -0,0 +1,45 @@
import request from '@/config/axios'
// MES 安灯配置 VO
export interface ProAndonConfigVO {
id: number // 编号
reason: string // 呼叫原因
level: number // 级别
handlerRoleId: number // 处置人角色编号
handlerUserId: number // 处置人编号
handlerUserNickname: string // 处置人昵称
remark: string // 备注
}
// MES 安灯配置 API
export const ProAndonConfigApi = {
// 查询安灯配置分页
getAndonConfigPage: async (params: any) => {
return await request.get({ url: `/mes/pro/andon-config/page`, params })
},
// 查询安灯配置列表
getAndonConfigList: async () => {
return await request.get({ url: `/mes/pro/andon-config/list` })
},
// 查询安灯配置详情
getAndonConfig: async (id: number) => {
return await request.get({ url: `/mes/pro/andon-config/get?id=` + id })
},
// 新增安灯配置
createAndonConfig: async (data: ProAndonConfigVO) => {
return await request.post({ url: `/mes/pro/andon-config/create`, data })
},
// 修改安灯配置
updateAndonConfig: async (data: ProAndonConfigVO) => {
return await request.put({ url: `/mes/pro/andon-config/update`, data })
},
// 删除安灯配置
deleteAndonConfig: async (id: number) => {
return await request.delete({ url: `/mes/pro/andon-config/delete?id=` + id })
}
}

View File

@ -0,0 +1,57 @@
import request from '@/config/axios'
// MES 安灯记录 VO
export interface ProAndonRecordVO {
id: number // 编号
configId: number // 安灯配置编号
workstationId: number // 工作站编号
workstationCode: string // 工作站编码
workstationName: string // 工作站名称
userId: number // 发起用户编号
userNickname: string // 发起人昵称
workOrderId: number // 工单编号
workOrderCode: string // 工单编码
processId: number // 工序编号
processName: string // 工序名称
reason: string // 呼叫原因
level: number // 级别
status: number // 处置状态
handleTime: Date // 处置时间
handlerUserId: number // 处置人编号
handlerUserNickname: string // 处置人昵称
remark: string // 备注
createTime: Date // 发起时间
}
// MES 安灯记录 API
export const ProAndonRecordApi = {
// 查询安灯记录分页
getAndonRecordPage: async (params: any) => {
return await request.get({ url: `/mes/pro/andon-record/page`, params })
},
// 查询安灯记录详情
getAndonRecord: async (id: number) => {
return await request.get({ url: `/mes/pro/andon-record/get?id=` + id })
},
// 新增安灯记录
createAndonRecord: async (data: ProAndonRecordVO) => {
return await request.post({ url: `/mes/pro/andon-record/create`, data })
},
// 删除安灯记录
deleteAndonRecord: async (id: number) => {
return await request.delete({ url: `/mes/pro/andon-record/delete?id=` + id })
},
// 更新安灯记录(保存/已处置)
updateAndonRecord: async (data: any) => {
return await request.put({ url: `/mes/pro/andon-record/update`, data })
},
// 导出安灯记录 Excel
exportAndonRecord: async (params: any) => {
return await request.download({ url: `/mes/pro/andon-record/export-excel`, params })
}
}

View File

@ -0,0 +1,67 @@
import request from '@/config/axios'
// MES 生产流转卡 VO
export interface ProCardVO {
id: number // 编号
code: string // 流转卡编码
workOrderId: number // 生产工单编号
workOrderCode: string // 工单编码
workOrderName: string // 工单名称
batchCode: string // 批次号
itemId: number // 产品物料编号
itemCode: string // 产品编码
itemName: string // 产品名称
specification: string // 规格型号
unitMeasureName: string // 单位名称
transferedQuantity: number // 流转数量
status: number // 状态
remark: string // 备注
}
// MES 生产流转卡 API
export const ProCardApi = {
// 查询生产流转卡分页
getCardPage: async (params: any) => {
return await request.get({ url: `/mes/pro/card/page`, params })
},
// 查询生产流转卡详情
getCard: async (id: number) => {
return await request.get({ url: `/mes/pro/card/get?id=` + id })
},
// 新增生产流转卡
createCard: async (data: ProCardVO) => {
return await request.post({ url: `/mes/pro/card/create`, data })
},
// 修改生产流转卡
updateCard: async (data: ProCardVO) => {
return await request.put({ url: `/mes/pro/card/update`, data })
},
// 删除生产流转卡
deleteCard: async (id: number) => {
return await request.delete({ url: `/mes/pro/card/delete?id=` + id })
},
// 导出生产流转卡 Excel
exportCard: async (params: any) => {
return await request.download({ url: `/mes/pro/card/export-excel`, params })
},
// 提交生产流转卡
submitCard: async (id: number) => {
return await request.put({ url: `/mes/pro/card/submit?id=` + id })
},
// 完成生产流转卡
finishCard: async (id: number) => {
return await request.put({ url: `/mes/pro/card/finish?id=` + id })
},
// 取消生产流转卡
cancelCard: async (id: number) => {
return await request.put({ url: `/mes/pro/card/cancel?id=` + id })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 流转卡工序记录 VO
export interface ProCardProcessVO {
id: number // 编号
cardId: number // 流转卡编号
sort: number // 序号
processId: number // 工序编号
processCode: string // 工序编码
processName: string // 工序名称
inputTime: Date // 进入工序时间
outputTime: Date // 出工序时间
inputQuantity: number // 投入数量
outputQuantity: number // 产出数量
unqualifiedQuantity: number // 不合格品数量
workstationId: number // 工位编号
workstationCode: string // 工位编码
workstationName: string // 工位名称
userId: number // 操作人编号
nickname: string // 操作人名称
ipqcId: number // 过程检验单编号
remark: string // 备注
}
// MES 流转卡工序记录 API
export const ProCardProcessApi = {
// 查询流转卡工序记录分页
getCardProcessPage: async (params: any) => {
return await request.get({ url: `/mes/pro/card-process/page`, params })
},
// 查询流转卡工序记录详情
getCardProcess: async (id: number) => {
return await request.get({ url: `/mes/pro/card-process/get?id=` + id })
},
// 新增流转卡工序记录
createCardProcess: async (data: ProCardProcessVO) => {
return await request.post({ url: `/mes/pro/card-process/create`, data })
},
// 修改流转卡工序记录
updateCardProcess: async (data: ProCardProcessVO) => {
return await request.put({ url: `/mes/pro/card-process/update`, data })
},
// 删除流转卡工序记录
deleteCardProcess: async (id: number) => {
return await request.delete({ url: `/mes/pro/card-process/delete?id=` + id })
}
}

View File

@ -0,0 +1,85 @@
import request from '@/config/axios'
// MES 生产报工 VO
export interface ProFeedbackVO {
id: number // 编号
code: string // 报工单编号
type: number // 报工类型
channel: string // 报工途径
feedbackTime: Date // 报工时间
workstationId: number // 工作站编号
workstationCode: string // 工作站编码
workstationName: string // 工作站名称
routeId: number // 工艺路线编号
routeCode: string // 工艺路线编码
processId: number // 工序编号
processCode: string // 工序编码
processName: string // 工序名称
checkFlag: boolean // 是否需要检验
workOrderId: number // 生产工单编号
workOrderCode: string // 工单编码
workOrderName: string // 工单名称
taskId: number // 生产任务编号
taskCode: string // 任务编码
itemId: number // 产品物料编号
itemCode: string // 物料编码
itemName: string // 物料名称
itemSpecification: string // 规格型号
unitMeasureId: number // 单位编号
unitMeasureName: string // 单位名称
expireDate: Date // 过期日期
scheduledQuantity: number // 排产数量
feedbackQuantity: number // 本次报工数量
qualifiedQuantity: number // 合格品数量
unqualifiedQuantity: number // 不良品数量
uncheckQuantity: number // 待检测数量
laborScrapQuantity: number // 工废数量
materialScrapQuantity: number // 料废数量
otherScrapQuantity: number // 其他废品数量
feedbackUserId: number // 报工用户编号
feedbackUserNickname: string // 报工人昵称
approveUserId: number // 审核用户编号
approveUserNickname: string // 审核人昵称
status: number // 状态
remark: string // 备注
}
// MES 生产报工 API
export const ProFeedbackApi = {
// 查询生产报工分页
getFeedbackPage: async (params: any) => {
return await request.get({ url: `/mes/pro/feedback/page`, params })
},
// 查询生产报工详情
getFeedback: async (id: number) => {
return await request.get({ url: `/mes/pro/feedback/get?id=` + id })
},
// 新增生产报工
createFeedback: async (data: ProFeedbackVO) => {
return await request.post({ url: `/mes/pro/feedback/create`, data })
},
// 修改生产报工
updateFeedback: async (data: ProFeedbackVO) => {
return await request.put({ url: `/mes/pro/feedback/update`, data })
},
// 删除生产报工
deleteFeedback: async (id: number) => {
return await request.delete({ url: `/mes/pro/feedback/delete?id=` + id })
},
// 导出生产报工 Excel
exportFeedback: async (params: any) => {
return await request.download({ url: `/mes/pro/feedback/export-excel`, params })
},
// 提交报工
submitFeedback: async (id: number) => {
return await request.put({ url: `/mes/pro/feedback/submit?id=` + id })
},
// 驳回报工
rejectFeedback: async (id: number) => {
return await request.put({ url: `/mes/pro/feedback/reject?id=` + id })
},
// 审批报工(返回审批后的状态)
approveFeedback: async (id: number) => {
return await request.put({ url: `/mes/pro/feedback/approve?id=` + id })
}
}

View File

@ -0,0 +1,44 @@
import request from '@/config/axios'
// MES 生产工序内容 VO
export interface ProProcessContentVO {
id?: number // 编号
processId: number // 工序编号
sort: number // 顺序编号
content?: string // 步骤说明
device?: string // 辅助设备
material?: string // 辅助材料
docUrl?: string // 材料文档 URL
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 生产工序内容 API
export const ProProcessContentApi = {
// 查询工序内容列表(按工序编号)
getProcessContentListByProcessId: async (processId: number) => {
return await request.get({
url: `/mes/pro/process-content/list-by-process?processId=` + processId
})
},
// 查询工序内容详情
getProcessContent: async (id: number) => {
return await request.get({ url: `/mes/pro/process-content/get?id=` + id })
},
// 新增工序内容
createProcessContent: async (data: ProProcessContentVO) => {
return await request.post({ url: `/mes/pro/process-content/create`, data })
},
// 修改工序内容
updateProcessContent: async (data: ProProcessContentVO) => {
return await request.put({ url: `/mes/pro/process-content/update`, data })
},
// 删除工序内容
deleteProcessContent: async (id: number) => {
return await request.delete({ url: `/mes/pro/process-content/delete?id=` + id })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 生产工序 VO
export interface ProProcessVO {
id?: number // 编号
code: string // 工序编码
name: string // 工序名称
attention?: string // 工艺要求
status: number // 状态
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 生产工序 API
export const ProProcessApi = {
// 查询生产工序列表分页
getProcessPage: async (params: any) => {
return await request.get({ url: `/mes/pro/process/page`, params })
},
// 查询生产工序精简列表
getProcessSimpleList: async () => {
return await request.get({ url: `/mes/pro/process/simple-list` })
},
// 查询生产工序详情
getProcess: async (id: number) => {
return await request.get({ url: `/mes/pro/process/get?id=` + id })
},
// 新增生产工序
createProcess: async (data: ProProcessVO) => {
return await request.post({ url: `/mes/pro/process/create`, data })
},
// 修改生产工序
updateProcess: async (data: ProProcessVO) => {
return await request.put({ url: `/mes/pro/process/update`, data })
},
// 删除生产工序
deleteProcess: async (id: number) => {
return await request.delete({ url: `/mes/pro/process/delete?id=` + id })
},
// 导出生产工序 Excel
exportProcess: async (params: any) => {
return await request.download({ url: `/mes/pro/process/export-excel`, params })
}
}

View File

@ -0,0 +1,55 @@
import request from '@/config/axios'
// MES 工艺路线 VO
export interface ProRouteVO {
id?: number // 编号
code: string // 工艺路线编码
name: string // 工艺路线名称
description?: string // 工艺路线说明
status?: number // 状态
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 工艺路线 API
export const ProRouteApi = {
// 查询工艺路线分页
getRoutePage: async (params: any) => {
return await request.get({ url: `/mes/pro/route/page`, params })
},
// 查询工艺路线精简列表
getRouteSimpleList: async () => {
return await request.get({ url: `/mes/pro/route/simple-list` })
},
// 查询工艺路线详情
getRoute: async (id: number) => {
return await request.get({ url: `/mes/pro/route/get?id=` + id })
},
// 新增工艺路线
createRoute: async (data: ProRouteVO) => {
return await request.post({ url: `/mes/pro/route/create`, data })
},
// 修改工艺路线
updateRoute: async (data: ProRouteVO) => {
return await request.put({ url: `/mes/pro/route/update`, data })
},
// 修改工艺路线状态
updateRouteStatus: async (id: number, status: number) => {
return await request.put({ url: `/mes/pro/route/update-status?id=` + id + `&status=` + status })
},
// 删除工艺路线
deleteRoute: async (id: number) => {
return await request.delete({ url: `/mes/pro/route/delete?id=` + id })
},
// 导出工艺路线 Excel
exportRoute: async (params: any) => {
return await request.download({ url: `/mes/pro/route/export-excel`, params })
}
}

View File

@ -0,0 +1,64 @@
import request from '@/config/axios'
// MES 工艺路线工序 VO
export interface ProRouteProcessVO {
id?: number // 编号
routeId: number // 工艺路线编号
processId: number // 工序编号
processCode?: string // 工序编码
processName?: string // 工序名称
sort: number // 序号
nextProcessId?: number // 下一道工序编号
nextProcessName?: string // 下一道工序名称
linkType: number // 与下一道工序关系
prepareTime?: number // 准备时间(分钟)
waitTime?: number // 等待时间(分钟)
colorCode?: string // 甘特图显示颜色
keyFlag?: number // 是否关键工序
checkFlag?: boolean // 是否质检工序
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 工艺路线工序 API
export const ProRouteProcessApi = {
// 按工艺路线查询工序列表
getRouteProcessListByRoute: async (routeId: number) => {
return await request.get({ url: `/mes/pro/route-process/list-by-route?routeId=` + routeId })
},
// 按产品查询工序列表(自动查找关联的工艺路线)
getRouteProcessListByProduct: async (productId: number) => {
return await request.get({
url: `/mes/pro/route-process/list-by-product?productId=` + productId
})
},
// 查询工艺路线工序详情
getRouteProcess: async (id: number) => {
return await request.get({ url: `/mes/pro/route-process/get?id=` + id })
},
// 按工艺路线+工序精确查询工序配置
getRouteProcessByRouteAndProcess: async (routeId: number, processId: number) => {
return await request.get({
url: `/mes/pro/route-process/get-by-route-and-process`,
params: { routeId, processId }
})
},
// 新增工艺路线工序
createRouteProcess: async (data: ProRouteProcessVO) => {
return await request.post({ url: `/mes/pro/route-process/create`, data })
},
// 修改工艺路线工序
updateRouteProcess: async (data: ProRouteProcessVO) => {
return await request.put({ url: `/mes/pro/route-process/update`, data })
},
// 删除工艺路线工序
deleteRouteProcess: async (id: number) => {
return await request.delete({ url: `/mes/pro/route-process/delete?id=` + id })
}
}

View File

@ -0,0 +1,45 @@
import request from '@/config/axios'
// MES 工艺路线产品 VO
export interface ProRouteProductVO {
id?: number // 编号
routeId: number // 工艺路线编号
itemId: number // 产品物料编号
itemCode?: string // 产品编码
itemName?: string // 产品名称
specification?: string // 规格型号
unitName?: string // 单位名称
quantity?: number // 生产数量
productionTime?: number // 生产用时
timeUnitType?: number // 时间单位
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 工艺路线产品 API
export const ProRouteProductApi = {
// 按工艺路线查询产品列表
getRouteProductListByRoute: async (routeId: number) => {
return await request.get({ url: `/mes/pro/route-product/list-by-route?routeId=` + routeId })
},
// 查询工艺路线产品详情
getRouteProduct: async (id: number) => {
return await request.get({ url: `/mes/pro/route-product/get?id=` + id })
},
// 新增工艺路线产品
createRouteProduct: async (data: ProRouteProductVO) => {
return await request.post({ url: `/mes/pro/route-product/create`, data })
},
// 修改工艺路线产品
updateRouteProduct: async (data: ProRouteProductVO) => {
return await request.put({ url: `/mes/pro/route-product/update`, data })
},
// 删除工艺路线产品
deleteRouteProduct: async (id: number) => {
return await request.delete({ url: `/mes/pro/route-product/delete?id=` + id })
}
}

View File

@ -0,0 +1,49 @@
import request from '@/config/axios'
// MES 工艺路线产品 BOM VO
export interface ProRouteProductBomVO {
id?: number // 编号
routeId: number // 工艺路线编号
processId: number // 工序编号
productId: number // 产品物料编号
itemId: number // BOM 物料编号
itemCode?: string // 物料编码
itemName?: string // 物料名称
specification?: string // 规格型号
unitName?: string // 单位名称
quantity?: number // 用料比例
remark?: string // 备注
createTime?: Date // 创建时间
}
// MES 工艺路线产品 BOM API
export const ProRouteProductBomApi = {
// 查询工艺路线产品 BOM 列表
getRouteProductBomList: async (params: {
routeId: number
processId?: number
productId?: number
}) => {
return await request.get({ url: `/mes/pro/route-product-bom/list`, params })
},
// 查询工艺路线产品 BOM 详情
getRouteProductBom: async (id: number) => {
return await request.get({ url: `/mes/pro/route-product-bom/get?id=` + id })
},
// 新增工艺路线产品 BOM
createRouteProductBom: async (data: ProRouteProductBomVO) => {
return await request.post({ url: `/mes/pro/route-product-bom/create`, data })
},
// 修改工艺路线产品 BOM
updateRouteProductBom: async (data: ProRouteProductBomVO) => {
return await request.put({ url: `/mes/pro/route-product-bom/update`, data })
},
// 删除工艺路线产品 BOM
deleteRouteProductBom: async (id: number) => {
return await request.delete({ url: `/mes/pro/route-product-bom/delete?id=` + id })
}
}

View File

@ -0,0 +1,76 @@
import request from '@/config/axios'
// MES 生产任务 VO
export interface ProTaskVO {
id: number // 编号
code: string // 任务编码
name: string // 任务名称
workOrderId: number // 生产工单编号
workOrderCode: string // 工单编码
workOrderName: string // 工单名称
workstationId: number // 工作站编号
workstationCode: string // 工作站编码
workstationName: string // 工作站名称
routeId: number // 工艺路线编号
processId: number // 工序编号
processName: string // 工序名称
itemId: number // 产品物料编号
itemName: string // 产品名称
itemCode: string // 产品编码
itemSpecification: string // 规格型号
quantity: number // 排产数量
producedQuantity: number // 已生产数量
qualifyQuantity: number // 合格品数量
unqualifyQuantity: number // 不良品数量
changedQuantity: number // 调整数量
clientId: number // 客户编号
clientName: string // 客户名称
startTime: Date // 开始生产时间
duration: number // 生产时长工作日1=8小时
endTime: Date | number // 结束生产时间
colorCode: string // 甘特图显示颜色
requestDate: Date // 需求日期(从工单查)
finishDate: Date // 完成日期
cancelDate: Date // 取消日期
status: number // 任务状态
checkFlag: boolean // 是否质检(派生自工艺路线工序)
remark: string // 备注
}
// MES 生产任务 API
export const ProTaskApi = {
// 查询生产任务分页
getTaskPage: async (params: any) => {
return await request.get({ url: `/mes/pro/task/page`, params })
},
// 查询生产任务详情
getTask: async (id: number) => {
return await request.get({ url: `/mes/pro/task/get?id=` + id })
},
// 新增生产任务
createTask: async (data: ProTaskVO) => {
return await request.post({ url: `/mes/pro/task/create`, data })
},
// 修改生产任务
updateTask: async (data: ProTaskVO) => {
return await request.put({ url: `/mes/pro/task/update`, data })
},
// 删除生产任务
deleteTask: async (id: number) => {
return await request.delete({ url: `/mes/pro/task/delete?id=` + id })
},
// 导出生产任务 Excel
exportTask: async (params: any) => {
return await request.download({ url: `/mes/pro/task/export-excel`, params })
},
// 获得甘特图任务列表(非分页)
getGanttTaskList: async (params: any) => {
return await request.get({ url: `/mes/pro/task/gantt-list`, params })
}
}

View File

@ -0,0 +1,57 @@
import request from '@/config/axios'
// MES 生产任务投料 VO
export interface ProTaskIssueVO {
id: number // 编号
taskId: number // 生产任务编号
workOrderId: number // 生产工单编号
workstationId: number // 工作站编号
sourceDocType: string // 来源单据类型
sourceDocId: number // 来源单据编号
sourceLineId: number // 来源单据行编号
sourceDocCode: string // 来源单据编码
batchCode: string // 投料批次
itemId: number // 产品物料编号
itemName: string // 产品名称
itemCode: string // 产品编码
itemSpecification: string // 规格型号
unitMeasureId: number // 单位编号
unitMeasureName: string // 单位名称
issuedQuantity: number // 总投料数量
availableQuantity: number // 当前可用数量
usedQuantity: number // 当前使用数量
remark: string // 备注
}
// MES 生产任务投料 API
export const ProTaskIssueApi = {
// 查询生产任务投料分页
getTaskIssuePage: async (params: any) => {
return await request.get({ url: `/mes/pro/task-issue/page`, params })
},
// 查询生产任务投料详情
getTaskIssue: async (id: number) => {
return await request.get({ url: `/mes/pro/task-issue/get?id=` + id })
},
// 新增生产任务投料
createTaskIssue: async (data: ProTaskIssueVO) => {
return await request.post({ url: `/mes/pro/task-issue/create`, data })
},
// 修改生产任务投料
updateTaskIssue: async (data: ProTaskIssueVO) => {
return await request.put({ url: `/mes/pro/task-issue/update`, data })
},
// 删除生产任务投料
deleteTaskIssue: async (id: number) => {
return await request.delete({ url: `/mes/pro/task-issue/delete?id=` + id })
},
// 按任务查询投料列表
getTaskIssueListByTask: async (taskId: number) => {
return await request.get({ url: `/mes/pro/task-issue/list-by-task?taskId=` + taskId })
}
}

View File

@ -0,0 +1,51 @@
import request from '@/config/axios'
// MES 生产工单 BOM VO
export interface ProWorkOrderBomVO {
id: number // 编号
workOrderId: number // 生产工单编号
itemId: number // BOM 物料编号
itemName: string // 物料名称
itemCode: string // 物料编码
itemSpecification: string // 规格型号
unitMeasureId: number // 单位编号
unitMeasureName: string // 单位名称
quantity: number // 预计使用量
remark: string // 备注
itemOrProduct: string // 物料产品标识
}
// MES 生产工单 BOM API
export const ProWorkOrderBomApi = {
// 查询工单 BOM 分页
getWorkOrderBomPage: async (params: any) => {
return await request.get({ url: `/mes/pro/work-order-bom/page`, params })
},
// 查询工单 BOM 详情
getWorkOrderBom: async (id: number) => {
return await request.get({ url: `/mes/pro/work-order-bom/get?id=` + id })
},
// 新增工单 BOM
createWorkOrderBom: async (data: ProWorkOrderBomVO) => {
return await request.post({ url: `/mes/pro/work-order-bom/create`, data })
},
// 修改工单 BOM
updateWorkOrderBom: async (data: ProWorkOrderBomVO) => {
return await request.put({ url: `/mes/pro/work-order-bom/update`, data })
},
// 删除工单 BOM
deleteWorkOrderBom: async (id: number) => {
return await request.delete({ url: `/mes/pro/work-order-bom/delete?id=` + id })
},
// 获取工单物料需求列表
getWorkOrderBomItemListByWorkOrderId: async (workOrderId: number) => {
return await request.get({
url: `/mes/pro/work-order-bom/item-list-by-work-order-id?workOrderId=` + workOrderId
})
}
}

View File

@ -0,0 +1,82 @@
import request from '@/config/axios'
// MES 生产工单 VO
export interface ProWorkOrderVO {
id: number // 编号
code: string // 工单编码
name: string // 工单名称
type: number // 工单类型
orderSourceType: number // 来源类型
orderSourceCode: string // 来源单据编号
productId: number // 产品编号
productName: string // 产品名称
productCode: string // 产品编码
productSpecification: string // 规格型号
unitMeasureName: string // 单位名称
quantity: number // 生产数量
quantityProduced: number // 已生产数量
quantityChanged: number // 调整数量
quantityScheduled: number // 已排产数量
clientId: number // 客户编号
clientCode: string // 客户编码
clientName: string // 客户名称
vendorId: number // 供应商编号
vendorName: string // 供应商名称
vendorCode: string // 供应商编码
batchCode: string // 批次号
requestDate: Date // 需求日期
parentId: number // 父工单编号
parentCode: string // 父工单编码
finishDate: Date // 完成时间
cancelDate: Date // 取消时间
status: number // 工单状态
remark: string // 备注
}
// MES 生产工单 API
export const ProWorkOrderApi = {
// 查询生产工单分页
getWorkOrderPage: async (params: any) => {
return await request.get({ url: `/mes/pro/work-order/page`, params })
},
// 查询生产工单详情
getWorkOrder: async (id: number) => {
return await request.get({ url: `/mes/pro/work-order/get?id=` + id })
},
// 新增生产工单
createWorkOrder: async (data: ProWorkOrderVO) => {
return await request.post({ url: `/mes/pro/work-order/create`, data })
},
// 修改生产工单
updateWorkOrder: async (data: ProWorkOrderVO) => {
return await request.put({ url: `/mes/pro/work-order/update`, data })
},
// 删除生产工单
deleteWorkOrder: async (id: number) => {
return await request.delete({ url: `/mes/pro/work-order/delete?id=` + id })
},
// 导出生产工单 Excel
exportWorkOrder: async (params: any) => {
return await request.download({ url: `/mes/pro/work-order/export-excel`, params })
},
// 完成工单
finishWorkOrder: async (id: number) => {
return await request.put({ url: `/mes/pro/work-order/finish?id=` + id })
},
// 取消工单
cancelWorkOrder: async (id: number) => {
return await request.put({ url: `/mes/pro/work-order/cancel?id=` + id })
},
// 确认工单
confirmWorkOrder: async (id: number) => {
return await request.put({ url: `/mes/pro/work-order/confirm?id=` + id })
}
}

View File

@ -0,0 +1,54 @@
import request from '@/config/axios'
// MES 工作记录流水 VO
export interface ProWorkRecordLogVO {
id: number
userId: number
userNickname: string
workstationId: number
workstationCode: string
workstationName: string
type: number // 1=上工 2=下工
remark: string
createTime: Date
}
// MES 当前工作站绑定状态 VO
export interface ProWorkRecordVO {
userId: number
userNickname: string
workstationId: number
workstationCode: string
workstationName: string
type: number // 1=上工 2=下工
clockInTime: Date
clockOutTime: Date
}
// MES 工作记录 API
export const ProWorkRecordApi = {
// 查询工作记录分页
getWorkRecordLogPage: async (params: any) => {
return await request.get({ url: `/mes/pro/workrecord/log/page`, params })
},
// 查询工作记录详情
getWorkRecordLog: async (id: number) => {
return await request.get({ url: `/mes/pro/workrecord/log/get?id=` + id })
},
// 导出工作记录 Excel
exportWorkRecordLog: async (params: any) => {
return await request.download({ url: `/mes/pro/workrecord/log/export-excel`, params })
},
// 上线(绑定工作站)
clockInWorkRecord: async (workstationId: number) => {
return await request.put({ url: `/mes/pro/workrecord/clock-in?workstationId=` + workstationId })
},
// 下线(解绑工作站)
clockOutWorkRecord: async () => {
return await request.put({ url: `/mes/pro/workrecord/clock-out` })
},
// 获取当前用户绑定的工作站
getMyWorkRecord: async () => {
return await request.get({ url: `/mes/pro/workrecord/get-my` })
}
}

View File

@ -0,0 +1,49 @@
import request from '@/config/axios'
// MES 缺陷类型 VO
export interface QcDefectVO {
id: number // 编号
code: string // 缺陷编码
name: string // 缺陷描述
type: number // 检测项类型
level: number // 缺陷等级
remark: string // 备注
}
// MES 缺陷类型 API
export const QcDefectApi = {
// 查询缺陷类型分页
getDefectPage: async (params: any) => {
return await request.get({ url: `/mes/qc/defect/page`, params })
},
// 查询缺陷类型精简列表
getDefectSimpleList: async () => {
return await request.get({ url: `/mes/qc/defect/simple-list` })
},
// 查询缺陷类型详情
getDefect: async (id: number) => {
return await request.get({ url: `/mes/qc/defect/get?id=` + id })
},
// 新增缺陷类型
createDefect: async (data: QcDefectVO) => {
return await request.post({ url: `/mes/qc/defect/create`, data })
},
// 修改缺陷类型
updateDefect: async (data: QcDefectVO) => {
return await request.put({ url: `/mes/qc/defect/update`, data })
},
// 删除缺陷类型
deleteDefect: async (id: number) => {
return await request.delete({ url: `/mes/qc/defect/delete?id=` + id })
},
// 导出缺陷类型 Excel
exportDefect: async (params: any) => {
return await request.download({ url: `/mes/qc/defect/export-excel`, params })
}
}

View File

@ -0,0 +1,36 @@
import request from '@/config/axios'
// MES 质检缺陷记录 VO
export interface QcDefectRecordVO {
id: number // 编号
qcType: number // 检验类型
qcId: number // 检验单 ID
lineId: number // 检验行 ID
name: string // 缺陷描述
level: number // 缺陷等级
quantity: number // 缺陷数量
remark: string // 备注
}
// MES 质检缺陷记录 API
export const QcDefectRecordApi = {
// 查询质检缺陷记录分页
getDefectRecordPage: async (params: any) => {
return await request.get({ url: `/mes/qc/defect-record/page`, params })
},
// 新增质检缺陷记录
createDefectRecord: async (data: QcDefectRecordVO) => {
return await request.post({ url: `/mes/qc/defect-record/create`, data })
},
// 修改质检缺陷记录
updateDefectRecord: async (data: QcDefectRecordVO) => {
return await request.put({ url: `/mes/qc/defect-record/update`, data })
},
// 删除质检缺陷记录
deleteDefectRecord: async (id: number) => {
return await request.delete({ url: `/mes/qc/defect-record/delete?id=` + id })
}
}

View File

@ -0,0 +1,46 @@
import request from '@/config/axios'
// MES 质检指标 VO
export interface QcIndicatorVO {
id: number // 编号
code: string // 检测项编码
name: string // 检测项名称
type: number // 检测项类型
tool: string // 检测工具
resultType: number // 结果值类型
resultSpecification: string // 结果值属性
remark: string // 备注
}
// MES 质检指标 API
export const QcIndicatorApi = {
// 查询质检指标分页
getIndicatorPage: async (params: any) => {
return await request.get({ url: `/mes/qc/indicator/page`, params })
},
// 查询质检指标详情
getIndicator: async (id: number) => {
return await request.get({ url: `/mes/qc/indicator/get?id=` + id })
},
// 新增质检指标
createIndicator: async (data: QcIndicatorVO) => {
return await request.post({ url: `/mes/qc/indicator/create`, data })
},
// 修改质检指标
updateIndicator: async (data: QcIndicatorVO) => {
return await request.put({ url: `/mes/qc/indicator/update`, data })
},
// 删除质检指标
deleteIndicator: async (id: number) => {
return await request.delete({ url: `/mes/qc/indicator/delete?id=` + id })
},
// 导出质检指标 Excel
exportIndicator: async (params: any) => {
return await request.download({ url: `/mes/qc/indicator/export-excel`, params })
}
}

View File

@ -0,0 +1,59 @@
import request from '@/config/axios'
// MES 检验结果 VO
export interface QcIndicatorResultVO {
id: number // 编号
code: string // 样品编号
qcId: number // 关联质检单ID
qcType: number // 质检类型
itemId: number // 产品物料ID
sn: string // 物资SN
remark: string // 备注
createTime: Date // 创建时间
// 子表
items: QcIndicatorResultDetailVO[] // 检验结果明细列表
}
// MES 检验结果明细 VO
export interface QcIndicatorResultDetailVO {
id: number // 编号
resultId: number // 关联检验结果ID
indicatorId: number // 检测指标ID
value: string // 检测值(统一存为字符串)
remark: string // 备注
// 关联查询字段(来自 indicator
indicatorName: string // 检测指标名称
valueType: number // 质检值类型
valueSpecification: string // 值属性
}
// MES 检验结果 API
export const QcIndicatorResultApi = {
// 查询检验结果分页
getResultPage: async (params: any) => {
return await request.get({ url: `/mes/qc/indicator-result/page`, params })
},
// 查询检验结果明细(含检测项模板):编辑传 id新增不传
getDetail: async (qcId: number, qcType: number, id?: number) => {
return await request.get({
url: `/mes/qc/indicator-result/get-detail`,
params: { id, qcId, qcType }
})
},
// 新增检验结果
createResult: async (data: any) => {
return await request.post({ url: `/mes/qc/indicator-result/create`, data })
},
// 修改检验结果
updateResult: async (data: any) => {
return await request.put({ url: `/mes/qc/indicator-result/update`, data })
},
// 删除检验结果
deleteResult: async (id: number) => {
return await request.delete({ url: `/mes/qc/indicator-result/delete?id=` + id })
}
}

View File

@ -0,0 +1,82 @@
import request from '@/config/axios'
// MES 过程检验单 VO
export interface QcIpqcVO {
id: number // 编号
code: string // 检验单编号
name: string // 检验单名称
type: string // IPQC 检验类型
templateId: number // 检验模板 ID
sourceDocType: number // 来源单据类型
sourceDocId: number // 来源单据 ID
sourceLineId: number // 来源单据行 ID
workOrderId: number // 生产工单 ID
workOrderCode: string // 工单编号(关联查询)
workOrderName: string // 工单名称(关联查询)
taskId: number // 生产任务 ID
workstationId: number // 工位 ID
workstationName: string // 工位名称(关联查询)
processId: number // 工序 ID
processName: string // 工序名称(关联查询)
itemId: number // 产品物料 ID
itemCode: string // 产品物料编码(关联查询)
itemName: string // 产品物料名称(关联查询)
itemSpecification: string // 规格型号(关联查询)
unitName: string // 单位名称(关联查询)
checkQuantity?: number // 检测数量
qualifiedQuantity?: number // 合格品数量
unqualifiedQuantity?: number // 不合格品数量
laborScrapQuantity?: number // 工废数量
materialScrapQuantity: number // 料废数量
otherScrapQuantity: number // 其他废品数量
criticalRate: number // 致命缺陷率(%
majorRate: number // 严重缺陷率(%
minorRate: number // 轻微缺陷率(%
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
checkResult: number // 检测结果
inspectDate: Date // 检测日期
inspectorUserId: number // 检测人员用户 ID
inspectorNickname: string // 检测人员昵称(关联查询)
status?: number // 状态
remark: string // 备注
}
// MES 过程检验单 API
export const QcIpqcApi = {
// 查询过程检验单分页
getIpqcPage: async (params: any) => {
return await request.get({ url: `/mes/qc/ipqc/page`, params })
},
// 查询过程检验单详情
getIpqc: async (id: number) => {
return await request.get({ url: `/mes/qc/ipqc/get?id=` + id })
},
// 新增过程检验单
createIpqc: async (data: QcIpqcVO) => {
return await request.post({ url: `/mes/qc/ipqc/create`, data })
},
// 修改过程检验单
updateIpqc: async (data: QcIpqcVO) => {
return await request.put({ url: `/mes/qc/ipqc/update`, data })
},
// 完成过程检验单
finishIpqc: async (id: number) => {
return await request.put({ url: `/mes/qc/ipqc/finish?id=` + id })
},
// 删除过程检验单
deleteIpqc: async (id: number) => {
return await request.delete({ url: `/mes/qc/ipqc/delete?id=` + id })
},
// 导出过程检验单 Excel
exportIpqc: async (params: any) => {
return await request.download({ url: `/mes/qc/ipqc/export-excel`, params })
}
}

View File

@ -0,0 +1,36 @@
import request from '@/config/axios'
// MES 过程检验单行 VO
export interface QcIpqcLineVO {
id: number // 编号
ipqcId: number // 过程检验单 ID
indicatorId: number // 检测指标 ID
indicatorCode: string // 检测指标编码(关联查询)
indicatorName: string // 检测指标名称(关联查询)
indicatorType: number // 检测指标类型(关联查询)
toolId: number // 检测工具 ID
toolName: string // 检测工具名称(关联查询)
checkMethod: string // 检测方法
standardValue: number // 标准值
unitMeasureId: number // 计量单位 ID
unitMeasureName: string // 计量单位名称(关联查询)
maxThreshold: number // 误差上限
minThreshold: number // 误差下限
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
remark: string // 备注
}
// MES 过程检验单行 API
export const QcIpqcLineApi = {
// 查询过程检验单行分页
getIpqcLinePage: async (params: any) => {
return await request.get({ url: `/mes/qc/ipqc/line/page`, params })
},
// 查询过程检验单行详情
getIpqcLine: async (id: number) => {
return await request.get({ url: `/mes/qc/ipqc/line/get?id=` + id })
}
}

View File

@ -0,0 +1,74 @@
import request from '@/config/axios'
// MES 来料检验单 VO
export interface QcIqcVO {
id: number // 编号
code: string // 检验单编号
name: string // 检验单名称
templateId: number // 检验模板 ID
sourceDocType: number // 来源单据类型
sourceDocId: number // 来源单据 ID
sourceLineId: number // 来源单据行 ID
vendorId: number // 供应商 ID
vendorNickname: string // 供应商简称(关联查询)
vendorBatch: string // 供应商批次号
itemId: number // 产品物料 ID
itemCode: string // 产品物料编码(关联查询)
itemName: string // 产品物料名称(关联查询)
itemSpecification: string // 规格型号(关联查询)
unitName: string // 单位名称(关联查询)
receivedQuantity: number // 本次接收数量
checkQuantity: number // 本次检测数量
qualifiedQuantity: number // 合格品数量
unqualifiedQuantity: number // 不合格品数量
criticalRate: number // 致命缺陷率(%
majorRate: number // 严重缺陷率(%
minorRate: number // 轻微缺陷率(%
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
checkResult: string // 检测结果
receiveDate: Date // 来料日期
inspectDate: Date // 检测日期
inspector: string // 检测人员
status: number // 状态
remark: string // 备注
}
// MES 来料检验单 API
export const QcIqcApi = {
// 查询来料检验单分页
getIqcPage: async (params: any) => {
return await request.get({ url: `/mes/qc/iqc/page`, params })
},
// 查询来料检验单详情
getIqc: async (id: number) => {
return await request.get({ url: `/mes/qc/iqc/get?id=` + id })
},
// 新增来料检验单
createIqc: async (data: QcIqcVO) => {
return await request.post({ url: `/mes/qc/iqc/create`, data })
},
// 修改来料检验单
updateIqc: async (data: QcIqcVO) => {
return await request.put({ url: `/mes/qc/iqc/update`, data })
},
// 完成来料检验单
finishIqc: async (id: number) => {
return await request.put({ url: `/mes/qc/iqc/finish?id=` + id })
},
// 删除来料检验单
deleteIqc: async (id: number) => {
return await request.delete({ url: `/mes/qc/iqc/delete?id=` + id })
},
// 导出来料检验单 Excel
exportIqc: async (params: any) => {
return await request.download({ url: `/mes/qc/iqc/export-excel`, params })
}
}

View File

@ -0,0 +1,35 @@
import request from '@/config/axios'
// MES 来料检验单行 VO
export interface QcIqcLineVO {
id: number // 编号
iqcId: number // 来料检验单 ID
indicatorId: number // 检测指标 ID
indicatorCode: string // 检测指标编码(关联查询)
indicatorName: string // 检测指标名称(关联查询)
indicatorType: number // 检测指标类型(关联查询)
tool: string // 检测工具
checkMethod: string // 检测方法
standardValue: number // 标准值
unitMeasureId: number // 计量单位 ID
unitMeasureName: string // 计量单位名称(关联查询)
maxThreshold: number // 误差上限
minThreshold: number // 误差下限
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
remark: string // 备注
}
// MES 来料检验单行 API
export const QcIqcLineApi = {
// 查询来料检验单行分页
getIqcLinePage: async (params: any) => {
return await request.get({ url: `/mes/qc/iqc/line/page`, params })
},
// 查询来料检验单行详情
getIqcLine: async (id: number) => {
return await request.get({ url: `/mes/qc/iqc/line/get?id=` + id })
}
}

View File

@ -0,0 +1,77 @@
import request from '@/config/axios'
// MES 出货检验单 VO
export interface QcOqcVO {
id: number // 编号
code: string // 检验单编号
name: string // 检验单名称
templateId: number // 检验模板 ID
sourceDocType: string // 来源单据类型
sourceDocId: number // 来源单据 ID
sourceLineId: number // 来源单据行 ID
clientId: number // 客户 ID
clientNickname: string // 客户简称(关联查询)
batchCode: string // 批次号
itemId: number // 产品物料 ID
itemCode: string // 产品物料编码(关联查询)
itemName: string // 产品物料名称(关联查询)
itemSpecification: string // 规格型号(关联查询)
unitName: string // 单位名称(关联查询)
minCheckQuantity: number // 最低检测数
maxUnqualifiedQuantity: number // 最大不合格数
outQuantity: number // 本次出货数量
checkQuantity: number // 本次检测数量
qualifiedQuantity: number // 合格品数量
unqualifiedQuantity: number // 不合格品数量
criticalRate: number // 致命缺陷率(%
majorRate: number // 严重缺陷率(%
minorRate: number // 轻微缺陷率(%
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
checkResult: string // 检测结果
outDate: Date // 出货日期
inspectDate: Date // 检测日期
inspectorUserId: number // 检测人员用户 ID
inspectorNickname: string // 检测人员昵称(关联查询)
status: number // 状态
remark: string // 备注
}
// MES 出货检验单 API
export const QcOqcApi = {
// 查询出货检验单分页
getOqcPage: async (params: any) => {
return await request.get({ url: `/mes/qc/oqc/page`, params })
},
// 查询出货检验单详情
getOqc: async (id: number) => {
return await request.get({ url: `/mes/qc/oqc/get?id=` + id })
},
// 新增出货检验单
createOqc: async (data: QcOqcVO) => {
return await request.post({ url: `/mes/qc/oqc/create`, data })
},
// 修改出货检验单
updateOqc: async (data: QcOqcVO) => {
return await request.put({ url: `/mes/qc/oqc/update`, data })
},
// 完成出货检验单
finishOqc: async (id: number) => {
return await request.put({ url: `/mes/qc/oqc/finish?id=` + id })
},
// 删除出货检验单
deleteOqc: async (id: number) => {
return await request.delete({ url: `/mes/qc/oqc/delete?id=` + id })
},
// 导出出货检验单 Excel
exportOqc: async (params: any) => {
return await request.download({ url: `/mes/qc/oqc/export-excel`, params })
}
}

View File

@ -0,0 +1,34 @@
import request from '@/config/axios'
// MES 出货检验单行 VO
export interface QcOqcLineVO {
id: number // 编号
oqcId: number // 出货检验单 ID
indicatorId: number // 检测指标 ID
indicatorCode: string // 检测指标编码(关联查询)
indicatorName: string // 检测指标名称(关联查询)
indicatorType: number // 检测指标类型(关联查询)
checkMethod: string // 检测方法
standardValue: number // 标准值
unitMeasureId: number // 计量单位 ID
unitMeasureName: string // 计量单位名称(关联查询)
maxThreshold: number // 误差上限
minThreshold: number // 误差下限
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
remark: string // 备注
}
// MES 出货检验单行 API
export const QcOqcLineApi = {
// 查询出货检验单行分页
getOqcLinePage: async (params: any) => {
return await request.get({ url: `/mes/qc/oqc/line/page`, params })
},
// 查询出货检验单行详情
getOqcLine: async (id: number) => {
return await request.get({ url: `/mes/qc/oqc/line/get?id=` + id })
}
}

View File

@ -0,0 +1,36 @@
import request from '@/config/axios'
// MES 待检任务 VO
export interface QcPendingInspectVO {
sourceDocType: number
sourceDocId: number
sourceLineId: number
sourceDocCode: string
qcType: number
itemId: number
itemCode: string
itemName: string
specification: string
unitName: string
quantity: number
vendorId: number
vendorName: string
// 工单/工作站/任务IPQC/RQC 场景)
workOrderId: number
workstationId: number
workstationName: string
taskId: number
taskCode: string
// 客户OQC/RQC 场景)
clientId: number
clientName: string
recordTime: string
}
// MES 待检任务 API
export const QcPendingInspectApi = {
// 查询待检任务分页
getPendingInspectPage: async (params: any) => {
return await request.get({ url: '/mes/qc/pending-inspect/page', params })
}
}

View File

@ -0,0 +1,73 @@
import request from '@/config/axios'
// MES 退货检验单 VO
export interface QcRqcVO {
id: number // 编号
code: string // 检验单编号
name: string // 检验单名称
templateId: number // 检验模板 ID
sourceDocType: string // 来源单据类型
sourceDocId: number // 来源单据 ID
sourceLineId: number // 来源单据行 ID
type: number // 检验类型
itemId: number // 产品物料 ID
itemCode: string // 产品物料编码(关联查询)
itemName: string // 产品物料名称(关联查询)
itemSpecification: string // 规格型号(关联查询)
unitName: string // 单位名称(关联查询)
batchCode: string // 批次号
checkQuantity: number // 检测数量
qualifiedQuantity: number // 合格品数量
unqualifiedQuantity: number // 不合格数量
checkResult: number // 检测结果
inspectDate: Date // 检测日期
inspectorUserId: number // 检测人员用户 ID
inspectorNickname: string // 检测人员昵称(关联查询)
status: number // 状态
remark: string // 备注
// 缺陷统计
criticalRate: number // 致命缺陷率(%
majorRate: number // 严重缺陷率(%
minorRate: number // 轻微缺陷率(%
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
}
// MES 退货检验单 API
export const QcRqcApi = {
// 查询退货检验单分页
getRqcPage: async (params: any) => {
return await request.get({ url: `/mes/qc/rqc/page`, params })
},
// 查询退货检验单详情
getRqc: async (id: number) => {
return await request.get({ url: `/mes/qc/rqc/get?id=` + id })
},
// 新增退货检验单
createRqc: async (data: QcRqcVO) => {
return await request.post({ url: `/mes/qc/rqc/create`, data })
},
// 修改退货检验单
updateRqc: async (data: QcRqcVO) => {
return await request.put({ url: `/mes/qc/rqc/update`, data })
},
// 完成退货检验单
finishRqc: async (id: number) => {
return await request.put({ url: `/mes/qc/rqc/finish?id=` + id })
},
// 删除退货检验单
deleteRqc: async (id: number) => {
return await request.delete({ url: `/mes/qc/rqc/delete?id=` + id })
},
// 导出退货检验单 Excel
exportRqc: async (params: any) => {
return await request.download({ url: `/mes/qc/rqc/export-excel`, params })
}
}

View File

@ -0,0 +1,35 @@
import request from '@/config/axios'
// MES 退货检验单行 VO
export interface QcRqcLineVO {
id: number // 编号
rqcId: number // 退货检验单 ID
indicatorId: number // 检测指标 ID
indicatorCode: string // 检测指标编码(关联查询)
indicatorName: string // 检测指标名称(关联查询)
indicatorType: number // 检测指标类型(关联查询)
tool: string // 检测工具
checkMethod: string // 检测方法
standardValue: number // 标准值
unitMeasureId: number // 计量单位 ID
unitMeasureName: string // 计量单位名称(关联查询)
maxThreshold: number // 误差上限
minThreshold: number // 误差下限
criticalQuantity: number // 致命缺陷数量
majorQuantity: number // 严重缺陷数量
minorQuantity: number // 轻微缺陷数量
remark: string // 备注
}
// MES 退货检验单行 API
export const QcRqcLineApi = {
// 查询退货检验单行分页
getRqcLinePage: async (params: any) => {
return await request.get({ url: `/mes/qc/rqc/line/page`, params })
},
// 查询退货检验单行详情
getRqcLine: async (id: number) => {
return await request.get({ url: `/mes/qc/rqc/line/get?id=` + id })
}
}

View File

@ -0,0 +1,44 @@
import request from '@/config/axios'
// MES 质检方案 VO
export interface QcTemplateVO {
id: number // 编号
code: string // 方案编号
name: string // 方案名称
types: number[] // 检测种类
status: number // 状态
remark: string // 备注
}
// MES 质检方案 API
export const QcTemplateApi = {
// 查询质检方案分页
getTemplatePage: async (params: any) => {
return await request.get({ url: `/mes/qc/template/page`, params })
},
// 查询质检方案详情
getTemplate: async (id: number) => {
return await request.get({ url: `/mes/qc/template/get?id=` + id })
},
// 新增质检方案
createTemplate: async (data: QcTemplateVO) => {
return await request.post({ url: `/mes/qc/template/create`, data })
},
// 修改质检方案
updateTemplate: async (data: QcTemplateVO) => {
return await request.put({ url: `/mes/qc/template/update`, data })
},
// 删除质检方案
deleteTemplate: async (id: number) => {
return await request.delete({ url: `/mes/qc/template/delete?id=` + id })
},
// 导出质检方案 Excel
exportTemplate: async (params: any) => {
return await request.download({ url: `/mes/qc/template/export-excel`, params })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 质检方案-检测指标项 VO
export interface QcTemplateIndicatorVO {
id: number // 编号
templateId: number // 质检方案ID
indicatorId: number // 质检指标ID
checkMethod: string // 检测方法
standardValue: number // 标准值
unitMeasureId: number // 计量单位ID
thresholdMax: number // 误差上限
thresholdMin: number // 误差下限
docUrl: string // 说明图URL
remark: string // 备注
// JOIN mes_qc_indicator
indicatorCode: string // 检测项编码
indicatorName: string // 检测项名称
indicatorType: number // 检测项类型
indicatorTool: string // 检测工具
// JOIN mes_md_unit_measure
unitMeasureName: string // 计量单位名称
}
// MES 质检方案-检测指标项 API
export const QcTemplateIndicatorApi = {
// 查询检测指标项分页
getTemplateIndicatorPage: async (params: any) => {
return await request.get({ url: `/mes/qc/template/indicator/page`, params })
},
// 查询检测指标项详情
getTemplateIndicator: async (id: number) => {
return await request.get({ url: `/mes/qc/template/indicator/get?id=` + id })
},
// 新增检测指标项
createTemplateIndicator: async (data: QcTemplateIndicatorVO) => {
return await request.post({ url: `/mes/qc/template/indicator/create`, data })
},
// 修改检测指标项
updateTemplateIndicator: async (data: QcTemplateIndicatorVO) => {
return await request.put({ url: `/mes/qc/template/indicator/update`, data })
},
// 删除检测指标项
deleteTemplateIndicator: async (id: number) => {
return await request.delete({ url: `/mes/qc/template/indicator/delete?id=` + id })
}
}

View File

@ -0,0 +1,47 @@
import request from '@/config/axios'
// MES 质检方案-产品关联 VO
export interface QcTemplateItemVO {
id: number // 编号
templateId: number // 质检方案ID
itemId: number // 产品物料ID
quantityCheck: number // 最低检测数
quantityUnqualified: number // 最大不合格数
criticalRate: number // 最大致命缺陷率(%
majorRate: number // 最大严重缺陷率(%
minorRate: number // 最大轻微缺陷率(%
remark: string // 备注
// JOIN mes_md_item
itemCode: string // 物料编码
itemName: string // 物料名称
specification: string // 规格型号
unitMeasureName: string // 计量单位名称
}
// MES 质检方案-产品关联 API
export const QcTemplateItemApi = {
// 查询产品关联分页
getTemplateItemPage: async (params: any) => {
return await request.get({ url: `/mes/qc/template/item/page`, params })
},
// 查询产品关联详情
getTemplateItem: async (id: number) => {
return await request.get({ url: `/mes/qc/template/item/get?id=` + id })
},
// 新增产品关联
createTemplateItem: async (data: QcTemplateItemVO) => {
return await request.post({ url: `/mes/qc/template/item/create`, data })
},
// 修改产品关联
updateTemplateItem: async (data: QcTemplateItemVO) => {
return await request.put({ url: `/mes/qc/template/item/update`, data })
},
// 删除产品关联
deleteTemplateItem: async (id: number) => {
return await request.delete({ url: `/mes/qc/template/item/delete?id=` + id })
}
}

View File

@ -0,0 +1,52 @@
import request from '@/config/axios'
// MES 工具台账 VO
export interface TmToolVO {
id: number // 编号
code: string // 工具编码
name: string // 工具名称
brand: string // 品牌
specification: string // 型号规格
toolTypeId: number // 工具类型编号
toolTypeName: string // 工具类型名称
quantity: number // 数量
availableQuantity: number // 可用数量
maintenType: number // 保养维护类型
nextMaintenPeriod: number // 下次保养周期(次数)
nextMaintenDate: Date // 下次保养日期
status: number // 状态
remark: string // 备注
}
// MES 工具台账 API
export const TmToolApi = {
// 查询工具台账分页
getToolPage: async (params: any) => {
return await request.get({ url: `/mes/tm/tool/page`, params })
},
// 查询工具台账详情
getTool: async (id: number) => {
return await request.get({ url: `/mes/tm/tool/get?id=` + id })
},
// 新增工具台账
createTool: async (data: TmToolVO) => {
return await request.post({ url: `/mes/tm/tool/create`, data })
},
// 修改工具台账
updateTool: async (data: TmToolVO) => {
return await request.put({ url: `/mes/tm/tool/update`, data })
},
// 删除工具台账
deleteTool: async (id: number) => {
return await request.delete({ url: `/mes/tm/tool/delete?id=` + id })
},
// 导出工具台账 Excel
exportTool: async (params: any) => {
return await request.download({ url: `/mes/tm/tool/export-excel`, params })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 工具类型 VO
export interface TmToolTypeVO {
id: number // 编号
code: string // 类型编码
name: string // 类型名称
codeFlag: boolean // 是否编码管理
maintenType: number // 保养维护类型
maintenPeriod: number // 保养周期
remark: string // 备注
}
// MES 工具类型 API
export const TmToolTypeApi = {
// 查询工具类型分页
getToolTypePage: async (params: any) => {
return await request.get({ url: `/mes/tm/tool-type/page`, params })
},
// 查询工具类型精简列表
getToolTypeSimpleList: async () => {
return await request.get({ url: `/mes/tm/tool-type/simple-list` })
},
// 查询工具类型详情
getToolType: async (id: number) => {
return await request.get({ url: `/mes/tm/tool-type/get?id=` + id })
},
// 新增工具类型
createToolType: async (data: TmToolTypeVO) => {
return await request.post({ url: `/mes/tm/tool-type/create`, data })
},
// 修改工具类型
updateToolType: async (data: TmToolTypeVO) => {
return await request.put({ url: `/mes/tm/tool-type/update`, data })
},
// 删除工具类型
deleteToolType: async (id: number) => {
return await request.delete({ url: `/mes/tm/tool-type/delete?id=` + id })
},
// 导出工具类型 Excel
exportToolType: async (params: any) => {
return await request.download({ url: `/mes/tm/tool-type/export-excel`, params })
}
}

View File

@ -0,0 +1,56 @@
import request from '@/config/axios'
// MES 到货通知单 VO
export interface WmArrivalNoticeVO {
id: number
code: string
name: string
purchaseOrderCode: string
vendorId: number
vendorCode: string
vendorName: string
arrivalDate: string
contactName: string
contactTelephone: string
status: number
remark: string
createTime: string
}
// MES 到货通知单 API
export const WmArrivalNoticeApi = {
// 查询到货通知单分页
getArrivalNoticePage: async (params: any) => {
return await request.get({ url: '/mes/wm/arrival-notice/page', params })
},
// 查询到货通知单详情
getArrivalNotice: async (id: number) => {
return await request.get({ url: '/mes/wm/arrival-notice/get?id=' + id })
},
// 新增到货通知单
createArrivalNotice: async (data: WmArrivalNoticeVO) => {
return await request.post({ url: '/mes/wm/arrival-notice/create', data })
},
// 修改到货通知单
updateArrivalNotice: async (data: WmArrivalNoticeVO) => {
return await request.put({ url: '/mes/wm/arrival-notice/update', data })
},
// 删除到货通知单
deleteArrivalNotice: async (id: number) => {
return await request.delete({ url: '/mes/wm/arrival-notice/delete?id=' + id })
},
// 提交到货通知单
submitArrivalNotice: async (id: number) => {
return await request.put({ url: '/mes/wm/arrival-notice/submit?id=' + id })
},
// 导出到货通知单 Excel
exportArrivalNotice: async (params: any) => {
return await request.download({ url: '/mes/wm/arrival-notice/export-excel', params })
}
}

View File

@ -0,0 +1,47 @@
import request from '@/config/axios'
// MES 到货通知单行 VO
export interface WmArrivalNoticeLineVO {
id: number
noticeId: number
itemId: number
itemCode: string
itemName: string
specification: string
unitMeasureName: string
arrivalQuantity: number
qualifiedQuantity: number
iqcCheckFlag: boolean
iqcId: number
iqcCode: string
remark: string
createTime: string
}
// MES 到货通知单行 API
export const WmArrivalNoticeLineApi = {
// 查询到货通知单行分页
getArrivalNoticeLinePage: async (params: any) => {
return await request.get({ url: '/mes/wm/arrival-notice-line/page', params })
},
// 查询到货通知单行详情
getArrivalNoticeLine: async (id: number) => {
return await request.get({ url: '/mes/wm/arrival-notice-line/get?id=' + id })
},
// 新增到货通知单行
createArrivalNoticeLine: async (data: WmArrivalNoticeLineVO) => {
return await request.post({ url: '/mes/wm/arrival-notice-line/create', data })
},
// 修改到货通知单行
updateArrivalNoticeLine: async (data: WmArrivalNoticeLineVO) => {
return await request.put({ url: '/mes/wm/arrival-notice-line/update', data })
},
// 删除到货通知单行
deleteArrivalNoticeLine: async (id: number) => {
return await request.delete({ url: '/mes/wm/arrival-notice-line/delete?id=' + id })
}
}

View File

@ -0,0 +1,43 @@
import request from '@/config/axios'
// MES 条码配置 VO
export interface WmBarcodeConfigVO {
id: number
format: number
bizType: number
contentFormat: string
contentExample: string
autoGenerateFlag: boolean
defaultTemplate: string
status: number
remark: string
createTime: string
}
// MES 条码配置 API
export const WmBarcodeConfigApi = {
// 查询条码配置分页
getBarcodeConfigPage: async (params: any) => {
return await request.get({ url: '/mes/wm/barcode-config/page', params })
},
// 查询条码配置详情
getBarcodeConfig: async (id: number) => {
return await request.get({ url: '/mes/wm/barcode-config/get?id=' + id })
},
// 新增条码配置
createBarcodeConfig: async (data: WmBarcodeConfigVO) => {
return await request.post({ url: '/mes/wm/barcode-config/create', data })
},
// 修改条码配置
updateBarcodeConfig: async (data: WmBarcodeConfigVO) => {
return await request.put({ url: '/mes/wm/barcode-config/update', data })
},
// 删除条码配置
deleteBarcodeConfig: async (id: number) => {
return await request.delete({ url: '/mes/wm/barcode-config/delete?id=' + id })
}
}

View File

@ -0,0 +1,65 @@
import request from '@/config/axios'
// MES 条码清单 VO
export interface WmBarcodeVO {
id?: number
configId?: number
format?: number
bizType?: number
content?: string
bizId?: number
bizCode?: string
bizName?: string
status: number
remark: string
createTime?: Date
}
// MES 条码 API
export const WmBarcodeApi = {
// 查询条码分页
getBarcodePage: async (params: any) => {
return await request.get({ url: '/mes/wm/barcode/page', params })
},
// 查询条码详情
getBarcode: async (id: number) => {
return await request.get({ url: '/mes/wm/barcode/get?id=' + id })
},
// 根据业务对象获取条码
getBarcodeByBusiness: async (bizType: number, bizId: number) => {
return await request.get({
url: '/mes/wm/barcode/get-by-business',
params: { bizType, bizId }
})
},
// 新增条码
createBarcode: async (data: WmBarcodeVO) => {
return await request.post({ url: '/mes/wm/barcode/create', data })
},
// 修改条码
updateBarcode: async (data: WmBarcodeVO) => {
return await request.put({ url: '/mes/wm/barcode/update', data })
},
// 删除条码
deleteBarcode: async (id: number) => {
return await request.delete({ url: '/mes/wm/barcode/delete?id=' + id })
},
// 导出条码 Excel
exportBarcode: async (params: any) => {
return await request.download({ url: '/mes/wm/barcode/export-excel', params })
},
// 生成条码内容
generateBarcodeContent: async (bizType: number, bizCode: string) => {
return await request.get({
url: '/mes/wm/barcode/generate-content',
params: { bizType, bizCode }
})
}
}

View File

@ -0,0 +1,58 @@
import request from '@/config/axios'
export interface BatchVO {
id: number
code: string
itemId: number
itemCode?: string
itemName?: string
itemSpecification?: string
unitName?: string
produceDate?: Date
expireDate?: Date
receiptDate?: Date
vendorId?: number
vendorCode?: string
vendorName?: string
clientId?: number
clientCode?: string
clientName?: string
purchaseOrderCode?: string
salesOrderCode?: string
workOrderId?: number
workOrderCode?: string
taskId?: number
taskCode?: string
workstationId?: number
workstationCode?: string
toolId?: number
toolCode?: string
moldId?: number
lotNumber?: string
qualityStatus?: string
remark?: string
createTime?: Date
}
// 批次追溯 API
export const BatchApi = {
// 获取批次详情
getBatch: async (id: number) => {
return await request.get({ url: `/mes/wm/batch/get?id=` + id })
},
// 获取批次分页
getBatchPage: async (params: PageParam) => {
return await request.get({ url: `/mes/wm/batch/page`, params })
},
// 向前追溯
getForwardList: async (code: string) => {
return await request.get({ url: `/mes/wm/batch/forward-list`, params: { code } })
},
// 向后追溯
getBackwardList: async (code: string) => {
return await request.get({ url: `/mes/wm/batch/backward-list`, params: { code } })
}
}

View File

@ -0,0 +1,10 @@
import request from '@/config/axios'
// DONE @AIitemconsume/line/index.ts
/** 根据报工编号分页获取消耗行列表 */
export const getItemConsumeLinePage = (params: any) => {
return request.get({
url: '/mes/wm/item-consume-line/page',
params
})
}

View File

@ -0,0 +1,54 @@
import request from '@/config/axios'
// MES 采购入库明细 VO
export interface WmItemReceiptDetailVO {
id: number
lineId: number
receiptId: number
itemId: number
itemCode: string
itemName: string
specification: string
unitMeasureName: string
quantity: number
batchId: number
warehouseId: number
warehouseName: string
locationId: number
locationName: string
areaId: number
areaName: string
remark: string
createTime: string
}
// MES 采购入库明细 API
export const WmItemReceiptDetailApi = {
// 查询采购入库明细列表(按行编号)
getItemReceiptDetailListByLineId: async (lineId: number) => {
return await request.get({
url: '/mes/wm/item-receipt-detail/list-by-line',
params: { lineId }
})
},
// 查询采购入库明细详情
getItemReceiptDetail: async (id: number) => {
return await request.get({ url: '/mes/wm/item-receipt-detail/get?id=' + id })
},
// 新增采购入库明细
createItemReceiptDetail: async (data: WmItemReceiptDetailVO) => {
return await request.post({ url: '/mes/wm/item-receipt-detail/create', data })
},
// 修改采购入库明细
updateItemReceiptDetail: async (data: WmItemReceiptDetailVO) => {
return await request.put({ url: '/mes/wm/item-receipt-detail/update', data })
},
// 删除采购入库明细
deleteItemReceiptDetail: async (id: number) => {
return await request.delete({ url: '/mes/wm/item-receipt-detail/delete?id=' + id })
}
}

View File

@ -0,0 +1,78 @@
import request from '@/config/axios'
// MES 采购入库单 VO
export interface WmItemReceiptVO {
id: number
code: string
name: string
iqcId: number
iqcCode: string
noticeId: number
noticeCode: string
purchaseOrderCode: string
vendorId: number
vendorName: string
warehouseId: number
warehouseName: string
locationId: number
locationName: string
areaId: number
areaName: string
receiptDate: string
status: number
remark: string
createTime: string
}
// MES 采购入库单 API
export const WmItemReceiptApi = {
// 查询采购入库单分页
getItemReceiptPage: async (params: any) => {
return await request.get({ url: '/mes/wm/item-receipt/page', params })
},
// 查询采购入库单详情
getItemReceipt: async (id: number) => {
return await request.get({ url: '/mes/wm/item-receipt/get?id=' + id })
},
// 新增采购入库单
createItemReceipt: async (data: WmItemReceiptVO) => {
return await request.post({ url: '/mes/wm/item-receipt/create', data })
},
// 修改采购入库单
updateItemReceipt: async (data: WmItemReceiptVO) => {
return await request.put({ url: '/mes/wm/item-receipt/update', data })
},
// 删除采购入库单
deleteItemReceipt: async (id: number) => {
return await request.delete({ url: '/mes/wm/item-receipt/delete?id=' + id })
},
// 提交采购入库单
submitItemReceipt: async (id: number) => {
return await request.put({ url: '/mes/wm/item-receipt/submit?id=' + id })
},
// 执行上架
stockItemReceipt: async (id: number) => {
return await request.put({ url: '/mes/wm/item-receipt/stock?id=' + id })
},
// 执行入库
finishItemReceipt: async (id: number) => {
return await request.put({ url: '/mes/wm/item-receipt/finish?id=' + id })
},
// 取消采购入库单
cancelItemReceipt: async (id: number) => {
return await request.put({ url: '/mes/wm/item-receipt/cancel?id=' + id })
},
// 导出采购入库单 Excel
exportItemReceipt: async (params: any) => {
return await request.download({ url: '/mes/wm/item-receipt/export-excel', params })
}
}

View File

@ -0,0 +1,58 @@
import request from '@/config/axios'
// MES 采购入库单行 VO
export interface WmItemReceiptLineVO {
id: number
receiptId: number
arrivalNoticeLineId: number
itemId: number
itemCode: string
itemName: string
specification: string
unitMeasureName: string
receivedQuantity: number
batchId: number
batchCode: string
warehouseId: number
warehouseName: string
locationId: number
locationName: string
areaId: number
areaName: string
productionDate: string
expireDate: string
lotNumber: string
iqcCheckFlag: boolean
iqcId: number
iqcCode: string
remark: string
createTime: string
}
// MES 采购入库单行 API
export const WmItemReceiptLineApi = {
// 查询采购入库单行分页
getItemReceiptLinePage: async (params: any) => {
return await request.get({ url: '/mes/wm/item-receipt-line/page', params })
},
// 查询采购入库单行详情
getItemReceiptLine: async (id: number) => {
return await request.get({ url: '/mes/wm/item-receipt-line/get?id=' + id })
},
// 新增采购入库单行
createItemReceiptLine: async (data: WmItemReceiptLineVO) => {
return await request.post({ url: '/mes/wm/item-receipt-line/create', data })
},
// 修改采购入库单行
updateItemReceiptLine: async (data: WmItemReceiptLineVO) => {
return await request.put({ url: '/mes/wm/item-receipt-line/update', data })
},
// 删除采购入库单行
deleteItemReceiptLine: async (id: number) => {
return await request.delete({ url: '/mes/wm/item-receipt-line/delete?id=' + id })
}
}

View File

@ -0,0 +1,50 @@
import request from '@/config/axios'
// MES 库存台账 VO
export interface WmMaterialStockVO {
id: number
itemTypeId: number
itemId: number
itemCode: string
itemName: string
specification: string
unitMeasureName: string
batchId: number
batchCode: string
warehouseId: number
warehouseCode: string
warehouseName: string
locationId: number
locationName: string
areaId: number
areaName: string
vendorId: number
vendorName: string
quantity: number
receiptTime: string
frozen: boolean
createTime: string
}
// MES 库存台账 API
export const WmMaterialStockApi = {
// 查询库存台账分页
getMaterialStockPage: async (params: any) => {
return await request.get({ url: '/mes/wm/material-stock/page', params })
},
// 查询库存记录详情
getMaterialStock: async (id: number) => {
return await request.get({ url: '/mes/wm/material-stock/get?id=' + id })
},
// 更新库存冻结状态
updateMaterialStockFrozen: async (data: { id: number; frozen: boolean }) => {
return await request.put({ url: '/mes/wm/material-stock/update-frozen', data })
},
// 导出库存台账 Excel
exportMaterialStock: async (params: any) => {
return await request.download({ url: '/mes/wm/material-stock/export-excel', params })
}
}

Some files were not shown because too many files have changed in this diff Show More