From cf90981c5d7fed15c12c1ec53776c8a426eeac09 Mon Sep 17 00:00:00 2001 From: sheng <905537351@qq.com> Date: Mon, 22 Jun 2026 23:10:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BBBOM=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=B8=85=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/功能测试-BOM物料清单.md | 20 ++ docs/迁移任务列表.md | 6 +- .../bill-of-materials.js | 56 ++++ src/locales/en.json | 49 +++ src/locales/zh-chs.json | 49 +++ src/router/modules/production-master-data.js | 6 + .../components/BomRelationship/index.vue | 282 ++++++++++++++++++ .../bill-of-materials/index.vue | 225 ++++++++++++++ 8 files changed, 690 insertions(+), 3 deletions(-) create mode 100644 docs/功能测试-BOM物料清单.md create mode 100644 src/api/production-master-data/bill-of-materials.js create mode 100644 src/views/production-master-data/material-model/bill-of-materials/components/BomRelationship/index.vue create mode 100644 src/views/production-master-data/material-model/bill-of-materials/index.vue diff --git a/docs/功能测试-BOM物料清单.md b/docs/功能测试-BOM物料清单.md new file mode 100644 index 00000000..7526945c --- /dev/null +++ b/docs/功能测试-BOM物料清单.md @@ -0,0 +1,20 @@ +# 功能测试任务列表 - BOM物料清单 + +> 路由:`/production_configuration/matetial_model/bom` + +| 序号 | 测试项 | 操作步骤 | 预期结果 | 结果 | +|---|---|---|---|---| +| 1 | 页面入口 | 从菜单进入“BOM物料清单”,或直接访问路由 | 页面正常打开,表格展示 BOM 编码、名称、产品型号、状态、创建人、创建时间和备注 | ☐ | +| 2 | 条件查询 | 输入 BOM 编码、名称或选择产品型号后点击“查询” | 列表按条件刷新,分页回到第一页 | ☐ | +| 3 | 重置查询 | 点击“重置” | 查询条件清空,列表恢复默认数据 | ☐ | +| 4 | 新增校验 | 点击“新增”,不填写编码、名称或产品型号直接确认 | 表单提示必填校验,不提交请求 | ☐ | +| 5 | 新增 BOM | 填写 BOM 编码、名称、产品型号、状态和备注后确认 | 弹窗关闭,提示操作成功,列表出现新增 BOM | ☐ | +| 6 | 编辑 BOM | 点击“编辑”,修改名称、状态或备注后确认 | 表单回显旧值,保存后列表展示新值 | ☐ | +| 7 | 删除 BOM | 点击“删除”并确认 | 提示操作成功,记录被删除,分页刷新正确 | ☐ | +| 8 | 打开 BOM 关系 | 点击“设置BOM” | 全屏关系弹窗打开,左侧显示工序单元,右侧显示当前工序 IN/OUT 关系 | ☐ | +| 9 | 切换工序 | 在左侧选择不同工序单元 | IN/OUT 列表按工序刷新 | ☐ | +| 10 | 添加 IN 物料 | 在 IN 区域点击“新增”,选择一个或多个物料后确认 | 物料加入 IN 列表,重复物料提示不可重复选择 | ☐ | +| 11 | 编辑 IN 投入数量 | 修改 IN 列表的投入数量并移出输入框 | 数量保存成功,刷新后仍保持新值 | ☐ | +| 12 | 添加 OUT 物料限制 | 在 OUT 区域尝试选择多个物料或已有 OUT 后继续新增 | 系统提示 OUT 结构只允许 1 个半成品 | ☐ | +| 13 | 删除 BOM 关系 | 勾选 IN/OUT 关系后点击删除,或点击行内删除 | 关系删除成功,列表刷新 | ☐ | +| 14 | 权限按钮 | 使用缺少新增/编辑/删除/设置BOM权限的账号进入页面 | 对应按钮不显示或不可操作 | ☐ | diff --git a/docs/迁移任务列表.md b/docs/迁移任务列表.md index ae74b2a3..6c3734d3 100644 --- a/docs/迁移任务列表.md +++ b/docs/迁移任务列表.md @@ -3,8 +3,8 @@ > 根据 `后台Webman界面截图对照表.md` 生成。状态以当前 V2 项目中已落地的页面目录为准。 - 总功能数:79 -- 已迁移:74 -- 未迁移:5 +- 已迁移:75 +- 未迁移:4 | 状态 | 一级模块 | 二级模块 | 三级模块 | 功能说明 | V2 目标路径 | |:---:|---|---|---|---|---| @@ -23,7 +23,7 @@ | ✅ | 生产配置 (Production Master Data) | 产品管理 (Product Management) | 不良管理 (Defect Management) | 不良代码及描述管理,支持批量导入 | `src/views/production-master-data/product-model/product-ng-info/` | | ✅ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | 物料类别列表 (Material Category) | 区分原材料和半成品 | `src/views/production-master-data/material-model/material-category/` | | ✅ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | 物料信息管理 (Material Master) | 维护物料编码、名称、规格等属性 | `src/views/production-master-data/material-model/material-master/` | -| ⬜ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | BOM物料清单 (Bill of Materials) | 产品BOM管理 | 待确认 | +| ✅ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | BOM物料清单 (Bill of Materials) | 产品BOM管理 | `src/views/production-master-data/material-model/bill-of-materials/` | | ✅ | 生产配置 (Production Master Data) | 物料模型 (Material Model) | 计量单位 (Unit of Measure) | 计量单位配置与管理 | `src/views/production-master-data/material-model/material-unit/` | | ✅ | 生产配置 (Production Master Data) | SPC采集模型 (SPC Configuration) | SPC采集配置 (Data Collection Configuration) | 配置SPC采集参数 | `src/views/production-master-data/spc-configuration/data-collection-configuration/` | | ⬜ | 生产配置 (Production Master Data) | 班组模型 (Team Model) | 班组管理 (Team Management) | 管理生产班组 | 待确认 | diff --git a/src/api/production-master-data/bill-of-materials.js b/src/api/production-master-data/bill-of-materials.js new file mode 100644 index 00000000..ce256b33 --- /dev/null +++ b/src/api/production-master-data/bill-of-materials.js @@ -0,0 +1,56 @@ +import { request } from '@/api/_service' + +const BASE = 'production_configuration/matetial_model/bom/' +const RELATION_BASE = 'production_configuration/matetial_model/bom_relationship/' + +function apiParams (method, data = {}) { + return { + method: `production_configuration_matetial_model_bom_${method}`, + platform: 'background', + ...data + } +} + +function relationApiParams (method, data = {}) { + return { + method: `production_configuration_matetial_model_bom_relationship_${method}`, + platform: 'background', + ...data + } +} + +export function getBomAll (data) { + return request({ url: BASE + 'all', method: 'get', params: apiParams('all', data) }) +} + +export function getBomList (data) { + return request({ url: BASE + 'list', method: 'get', params: apiParams('list', data) }) +} + +export function createBom (data) { + return request({ url: BASE + 'create', method: 'post', data: apiParams('create', data) }) +} + +export function editBom (data) { + return request({ url: BASE + 'edit', method: 'put', data: apiParams('edit', data) }) +} + +export function deleteBom (data) { + return request({ url: BASE + 'delete', method: 'delete', data: apiParams('delete', data) }) +} + +export function getBomRelationshipList (data) { + return request({ url: RELATION_BASE + 'list', method: 'get', params: relationApiParams('list', data) }) +} + +export function createBomRelationship (data) { + return request({ url: RELATION_BASE + 'create', method: 'post', data: relationApiParams('create', data) }) +} + +export function editBomRelationship (data) { + return request({ url: RELATION_BASE + 'edit', method: 'put', data: relationApiParams('edit', data) }) +} + +export function deleteBomRelationship (data) { + return request({ url: RELATION_BASE + 'delete', method: 'delete', data: relationApiParams('delete', data) }) +} diff --git a/src/locales/en.json b/src/locales/en.json index 9c98fd4c..66447d02 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -356,6 +356,55 @@ "please_enter": "Please enter {name}", "help": "Material master data is used to maintain material code, name, specifications, etc." }, + "bill_of_materials": { + "query": "Search", + "reset": "Reset", + "add": "Add", + "edit": "Edit", + "delete": "Delete", + "set_bom": "Set BOM", + "operation": "Operation", + "confirm": "Confirm", + "cancel": "Cancel", + "return": "Back", + "prompt": "Notice", + "operation_success": "Operation successful", + "confirm_message": "Are you sure you want to perform this operation?", + "bom_version_code": "BOM Version Code", + "bom_version_name": "BOM Version Name", + "product_model_name": "Product Model", + "status": "Status", + "enable": "Enabled", + "disable": "Disabled", + "select_status": "Please select status", + "create_user": "Created By", + "create_time": "Created At", + "remark": "Remark", + "enter_remark": "Please enter remark", + "enter_bom_version_code": "Please enter BOM version code", + "enter_bom_version_name": "Please enter BOM version name", + "select_product_model_name": "Please select product model", + "enter_bom_code": "Please enter BOM code", + "enter_bom_name": "Please enter BOM name", + "select_product_model": "Please select product model", + "length_1_45": "Length must be 1-45 characters", + "add_bom_info": "Add BOM", + "edit_bom_info": "Edit BOM", + "bom_management": "BOM Management", + "material_category": "Material Category", + "material_code": "Material Code", + "material_name": "Material Name", + "input_quantity": "Input Quantity", + "enter_input_quantity": "Please enter input quantity", + "unit": "Unit", + "select_add_material": "Select Material", + "all": "All", + "selected": "Selected", + "search_by_code_or_name": "Search by code or name", + "duplicate_material_selected": "Selected materials cannot be selected again", + "out_only_one": "OUT structure allows only one semi-finished item", + "please_select_data": "Please select data first" + }, "material_unit": { "search": "Search", "reset": "Reset", diff --git a/src/locales/zh-chs.json b/src/locales/zh-chs.json index 12864cef..e24676b7 100644 --- a/src/locales/zh-chs.json +++ b/src/locales/zh-chs.json @@ -356,6 +356,55 @@ "please_enter": "请输入{name}", "help": "物料信息用于维护物料编码、名称、规格等属性" }, + "bill_of_materials": { + "query": "查询", + "reset": "重置", + "add": "新增", + "edit": "编辑", + "delete": "删除", + "set_bom": "设置BOM", + "operation": "操作", + "confirm": "确定", + "cancel": "取消", + "return": "返回", + "prompt": "提示", + "operation_success": "操作成功", + "confirm_message": "确定要执行该操作吗?", + "bom_version_code": "BOM版本编码", + "bom_version_name": "BOM版本名称", + "product_model_name": "型号名称", + "status": "状态", + "enable": "启用", + "disable": "禁用", + "select_status": "请选择状态", + "create_user": "创建人", + "create_time": "创建时间", + "remark": "备注", + "enter_remark": "请输入备注", + "enter_bom_version_code": "请输入BOM版本编码", + "enter_bom_version_name": "请输入BOM版本名称", + "select_product_model_name": "请选择型号名称", + "enter_bom_code": "请输入BOM编码", + "enter_bom_name": "请输入BOM名称", + "select_product_model": "请选择产品型号", + "length_1_45": "长度在 1 到 45 个字符", + "add_bom_info": "新增BOM信息", + "edit_bom_info": "编辑BOM信息", + "bom_management": "BOM管理", + "material_category": "物料类别", + "material_code": "物料编码", + "material_name": "物料名称", + "input_quantity": "投入数量", + "enter_input_quantity": "请输入投入数量", + "unit": "单位", + "select_add_material": "选择添加物料", + "all": "全部", + "selected": "已选", + "search_by_code_or_name": "按编码或名称搜索", + "duplicate_material_selected": "已选择物料请勿重复选择", + "out_only_one": "OUT结构只允许存在1个半成品,请勿选择1个以上半成品", + "please_select_data": "请先选择数据" + }, "material_unit": { "search": "查询", "reset": "重置", diff --git a/src/router/modules/production-master-data.js b/src/router/modules/production-master-data.js index d8618617..022689e6 100644 --- a/src/router/modules/production-master-data.js +++ b/src/router/modules/production-master-data.js @@ -68,6 +68,12 @@ export default { meta: { ...meta, cache: true, title: '物料信息管理' }, component: _import('production-master-data/material-model/material-master') }, + { + path: 'matetial_model/bom', + name: `${pre}material_model-bill_of_materials`, + meta: { ...meta, cache: true, title: 'BOM物料清单' }, + component: _import('production-master-data/material-model/bill-of-materials') + }, { path: 'matetial_model/unit', name: `${pre}material_model-material_unit`, diff --git a/src/views/production-master-data/material-model/bill-of-materials/components/BomRelationship/index.vue b/src/views/production-master-data/material-model/bill-of-materials/components/BomRelationship/index.vue new file mode 100644 index 00000000..babb2e2f --- /dev/null +++ b/src/views/production-master-data/material-model/bill-of-materials/components/BomRelationship/index.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/views/production-master-data/material-model/bill-of-materials/index.vue b/src/views/production-master-data/material-model/bill-of-materials/index.vue new file mode 100644 index 00000000..da238659 --- /dev/null +++ b/src/views/production-master-data/material-model/bill-of-materials/index.vue @@ -0,0 +1,225 @@ + + + + +