# MDM 物料同步状态开关 - 前端联调方案 ## 涉及页面 - 基础数据 → 物料管理(`basicData/mdm`,MDM 物料主数据列表页) - 物料新增 / 编辑弹窗(`basicData/mdm/modules/form.vue`) ## 背景 物料管理列表页原有的"同步状态"列为只读标签(已同步/未同步),本次改为**可操作的开关(Switch)**,用户可直接在列表中切换物料是否同步到 MES。同时**新增/编辑物料弹窗**中也增加"同步到MES"开关,创建或保存物料时按开关决定是否同步到 MES。 ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | /mdm/item/create | 创建物料,`syncMes` 为 true 时同步到 MES | | PUT | /mdm/item/update | 编辑物料,`syncMes` 为 true 时同步到 MES,为 false 时取消同步(从 MES 删除) | | PUT | /mdm/item/update-sync | 更新物料同步状态(列表页开关调用) | **update-sync 请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 物料编号 | | sync | Boolean | 是 | true=同步到 MES;false=取消同步(从 MES 删除该物料) | **create / update 新增请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | syncMes | Boolean | 否 | 是否同步到 MES,默认 true;false=不同步 / 取消同步 | **响应:** `{ "code": 0, "data": true, "msg": "" }` **响应字段说明:** | 字段 | 类型 | 说明 | |------|------|------| | syncedMes | Boolean | 分页接口 `GET /mdm/item/page`、详情接口 `GET /mdm/item/get` 已返回,表示当前是否已同步(MES 表存在该物料记录即 true) | ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | 同步状态 | 列表页固定右列 | Switch 开关:打开=已同步,关闭=未同步;切换中显示 loading | | 同步到MES | 新增 / 编辑弹窗 | Switch 开关:打开则保存时同步到 MES;编辑时默认回显当前同步状态 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 打开开关(列表) | 将 MDM 物料数据(含批次配置)重新同步到 MES,`syncedMes` 变为 true | | 关闭开关(列表) | 从 MES 删除该物料,级联删除其 BOM / SOP / SIP / 批次配置,`syncedMes` 变为 false | | 新增物料 | 表单"同步到MES"开关默认打开;关闭则只建 MDM 物料,不同步到 MES | | 编辑物料 | 开关默认回显当前同步状态;打开保存=同步(更新 MES),关闭保存=取消同步(从 MES 删除) | | 操作权限 | 列表开关依赖权限点 `mdm:item:update` | ## 注意事项 - 列表关闭开关前需弹确认提示,明确告知会从 MES 删除物料及关联配置(BOM/SOP/SIP/批次配置),避免误操作。 - 若 MES 该物料已被工单、BOM 等业务引用,删除后相关业务数据可能受影响,属业务侧既有行为。 - 编辑物料时关闭"同步到MES"开关并保存,会从 MES 删除该物料(取消同步),列表开关变为"未同步"。