From 3b81c26db7ccb76e1f977cc164aaeb58aafe0d06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Tue, 29 Jul 2025 15:00:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=92=8C=E5=8E=9F=E6=9D=90?= =?UTF-8?q?=E6=96=99=E9=85=8D=E7=BD=AEBOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- klp-ui/.env.development | 2 +- klp-ui/.env.production | 2 +- klp-ui/.env.stage | 2 +- klp-ui/src/api/wms/bom.js | 44 +++ klp-ui/src/api/wms/bomItem.js | 44 +++ .../KLPService/Renderer/BomInfo.vue | 0 .../KLPService/Renderer/ProductInfo.vue | 22 +- .../KLPService/Renderer/RawMaterialInfo.vue | 14 +- klp-ui/src/store/getters.js | 2 + klp-ui/src/store/modules/category.js | 8 +- .../src/views/wms/bom/components/BomItem.vue | 254 +++++++++++++ .../src/views/wms/bom/components/BomPanel.vue | 221 +++++++++++ klp-ui/src/views/wms/bom/index.vue | 0 klp-ui/src/views/wms/order/panels/detail.vue | 19 +- klp-ui/src/views/wms/product/index.vue | 52 +-- .../views/wms/purchasePlan/panels/detail.vue | 10 +- klp-ui/src/views/wms/rawMaterial/index.vue | 65 ++-- klp-ui/src/views/wms/stock/box.vue | 350 ++++++++++-------- klp-ui/src/views/wms/stock/index.vue | 9 +- klp-ui/vue.config.js | 2 +- 20 files changed, 866 insertions(+), 256 deletions(-) create mode 100644 klp-ui/src/api/wms/bom.js create mode 100644 klp-ui/src/api/wms/bomItem.js create mode 100644 klp-ui/src/components/KLPService/Renderer/BomInfo.vue create mode 100644 klp-ui/src/views/wms/bom/components/BomItem.vue create mode 100644 klp-ui/src/views/wms/bom/components/BomPanel.vue create mode 100644 klp-ui/src/views/wms/bom/index.vue diff --git a/klp-ui/.env.development b/klp-ui/.env.development index 8d6f493f..6b821ed6 100644 --- a/klp-ui/.env.development +++ b/klp-ui/.env.development @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = RuoYi-Flowable-Plus后台管理系统 +VUE_APP_TITLE = 科伦普WMS系统 # 开发环境配置 ENV = 'development' diff --git a/klp-ui/.env.production b/klp-ui/.env.production index f8d34a7b..1ed3f472 100644 --- a/klp-ui/.env.production +++ b/klp-ui/.env.production @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = RuoYi-Flowable-Plus后台管理系统 +VUE_APP_TITLE = 科伦普WMS系统 # 生产环境配置 ENV = 'production' diff --git a/klp-ui/.env.stage b/klp-ui/.env.stage index 7e44702a..3b78fa35 100644 --- a/klp-ui/.env.stage +++ b/klp-ui/.env.stage @@ -1,5 +1,5 @@ # 页面标题 -VUE_APP_TITLE = RuoYi-Flowable-Plus后台管理系统 +VUE_APP_TITLE = 科伦普WMS系统 # 开发环境配置 ENV = 'development' diff --git a/klp-ui/src/api/wms/bom.js b/klp-ui/src/api/wms/bom.js new file mode 100644 index 00000000..f179312b --- /dev/null +++ b/klp-ui/src/api/wms/bom.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询BOM 头,关联产品或原材料列表 +export function listBom(query) { + return request({ + url: '/klp/bom/list', + method: 'get', + params: query + }) +} + +// 查询BOM 头,关联产品或原材料详细 +export function getBom(bomId) { + return request({ + url: '/klp/bom/' + bomId, + method: 'get' + }) +} + +// 新增BOM 头,关联产品或原材料 +export function addBom(data) { + return request({ + url: '/klp/bom', + method: 'post', + data: data + }) +} + +// 修改BOM 头,关联产品或原材料 +export function updateBom(data) { + return request({ + url: '/klp/bom', + method: 'put', + data: data + }) +} + +// 删除BOM 头,关联产品或原材料 +export function delBom(bomId) { + return request({ + url: '/klp/bom/' + bomId, + method: 'delete' + }) +} diff --git a/klp-ui/src/api/wms/bomItem.js b/klp-ui/src/api/wms/bomItem.js new file mode 100644 index 00000000..f5a5c5ae --- /dev/null +++ b/klp-ui/src/api/wms/bomItem.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询BOM 明细,存放属性–值列表 +export function listBomItem(query) { + return request({ + url: '/wms/bomItem/list', + method: 'get', + params: query + }) +} + +// 查询BOM 明细,存放属性–值详细 +export function getBomItem(itemId) { + return request({ + url: '/wms/bomItem/' + itemId, + method: 'get' + }) +} + +// 新增BOM 明细,存放属性–值 +export function addBomItem(data) { + return request({ + url: '/wms/bomItem', + method: 'post', + data: data + }) +} + +// 修改BOM 明细,存放属性–值 +export function updateBomItem(data) { + return request({ + url: '/wms/bomItem', + method: 'put', + data: data + }) +} + +// 删除BOM 明细,存放属性–值 +export function delBomItem(itemId) { + return request({ + url: '/wms/bomItem/' + itemId, + method: 'delete' + }) +} diff --git a/klp-ui/src/components/KLPService/Renderer/BomInfo.vue b/klp-ui/src/components/KLPService/Renderer/BomInfo.vue new file mode 100644 index 00000000..e69de29b diff --git a/klp-ui/src/components/KLPService/Renderer/ProductInfo.vue b/klp-ui/src/components/KLPService/Renderer/ProductInfo.vue index ce0df4ce..473a9a0e 100644 --- a/klp-ui/src/components/KLPService/Renderer/ProductInfo.vue +++ b/klp-ui/src/components/KLPService/Renderer/ProductInfo.vue @@ -1,9 +1,11 @@ @@ -251,13 +259,15 @@ import { listProduct, getProduct, delProduct, addProduct, updateProduct } from " import CategorySelect from '@/components/KLPService/CategorySelect'; import CategoryRenderer from '@/components/KLPService/Renderer/CategoryRenderer.vue'; import UserSelect from '@/components/KLPService/UserSelect'; +import BomPanel from '../bom/components/BomPanel.vue'; export default { name: "Product", components: { CategorySelect, CategoryRenderer, - UserSelect + UserSelect, + BomPanel }, dicts: ['common_swicth'], data() { @@ -311,28 +321,10 @@ export default { owner: [ { required: true, message: "负责人不能为空", trigger: "blur" } ], - // baseMaterialId: [ - // { required: true, message: "基础材质分类ID不能为空", trigger: "blur" } - // ], - // surfaceTreatmentId: [ - // { required: true, message: "表面处理分类ID不能为空", trigger: "blur" } - // ], - // customerReqId: [ - // { required: true, message: "客户需求分类ID不能为空", trigger: "blur" } - // ], - // packagingId: [ - // { required: true, message: "包装分类ID不能为空", trigger: "blur" } - // ], - // thickness: [ - // { required: true, message: "厚度不能为空", trigger: "blur" } - // ], - // width: [ - // { required: true, message: "宽度不能为空", trigger: "blur" } - // ], - // innerDiameter: [ - // { required: true, message: "内径不能为空", trigger: "blur" } - // ], - } + }, + bomDialogVisible: false, + bomId: undefined, + itemId: undefined, }; }, created() { @@ -348,6 +340,11 @@ export default { this.loading = false; }); }, + handleAddBom(bom) { + console.log('回调触发', bom) + this.bomId = bom.bomId; + this.getList(); + }, // 取消按钮 cancel() { this.open = false; @@ -387,6 +384,11 @@ export default { this.resetForm("queryForm"); this.handleQuery(); }, + handleBom(row) { + this.bomDialogVisible = true; + this.bomId = row.bomId; + this.itemId = row.productId; + }, // 多选框选中数据 handleSelectionChange(selection) { this.ids = selection.map(item => item.productId) diff --git a/klp-ui/src/views/wms/purchasePlan/panels/detail.vue b/klp-ui/src/views/wms/purchasePlan/panels/detail.vue index 1bad3bed..89cd6598 100644 --- a/klp-ui/src/views/wms/purchasePlan/panels/detail.vue +++ b/klp-ui/src/views/wms/purchasePlan/panels/detail.vue @@ -58,7 +58,11 @@ --> @@ -165,13 +169,15 @@ import { EPurchaseDetailStatus } from "@/utils/enums"; import StockInDialog from "./stockin.vue"; import RawMaterialSelect from '@/components/KLPService/RawMaterialSelect'; import UserSelect from '@/components/KLPService/UserSelect' +import { RawMaterialInfo } from '@/components/KLPService'; export default { name: "PurchasePlanDetail", components: { StockInDialog, RawMaterialSelect, - UserSelect + UserSelect, + RawMaterialInfo }, props: { planId: { diff --git a/klp-ui/src/views/wms/rawMaterial/index.vue b/klp-ui/src/views/wms/rawMaterial/index.vue index 38d2772f..75e23d30 100644 --- a/klp-ui/src/views/wms/rawMaterial/index.vue +++ b/klp-ui/src/views/wms/rawMaterial/index.vue @@ -136,7 +136,8 @@ @@ -286,12 +291,14 @@ import { listRawMaterial, getRawMaterial, delRawMaterial, addRawMaterial, updateRawMaterial } from "@/api/wms/rawMaterial"; import CategorySelect from "@/components/KLPService/CategorySelect/index.vue"; import CategoryRenderer from '@/components/KLPService/Renderer/CategoryRenderer.vue'; +import BomPanel from '@/views/wms/bom/components/BomPanel.vue'; export default { name: "RawMaterial", components: { CategorySelect, - CategoryRenderer + CategoryRenderer, + BomPanel }, dicts: ['common_swicth'], data() { @@ -354,54 +361,15 @@ export default { rawMaterialName: [ { required: true, message: "原材料名称不能为空", trigger: "blur" } ], - steelGrade: [ - { required: true, message: "钢种/牌号不能为空", trigger: "blur" } - ], - targetColdGrade: [ - { required: true, message: "目标冷轧牌号不能为空", trigger: "blur" } - ], - baseMaterialId: [ - { required: true, message: "基础材质分类不能为空", trigger: "blur" } - ], - surfaceTreatmentId: [ - { required: true, message: "表面处理分类不能为空", trigger: "blur" } - ], - thickness: [ - { required: true, message: "厚度不能为空", trigger: "blur" } - ], - thicknessDeviation: [ - { required: true, message: "厚度偏差不能为空", trigger: "blur" } - ], - width: [ - { required: true, message: "宽度不能为空", trigger: "blur" } - ], - targetColdWidth: [ - { required: true, message: "目标冷轧宽度不能为空", trigger: "blur" } - ], - targetColdThickness: [ - { required: true, message: "目标冷轧厚度不能为空", trigger: "blur" } - ], - crown: [ - { required: true, message: "凸度不能为空", trigger: "blur" } - ], - coilWeight: [ - { required: true, message: "卷重不能为空", trigger: "blur" } - ], - surfaceQuality: [ - { required: true, message: "表面质量不能为空", trigger: "blur" } - ], - inspectionResult: [ - { required: true, message: "检测结论不能为空", trigger: "blur" } - ], - isEnabled: [ - { required: true, message: "是否启用不能为空", trigger: "blur" } - ], unit: [ { required: true, message: "计量单位不能为空", trigger: "blur" } ], }, paramDialogVisible: false, paramRow: null, + bomDialogVisible: false, + bomId: undefined, + itemId: undefined, }; }, created() { @@ -480,6 +448,15 @@ export default { this.open = true; this.title = "添加原材料"; }, + handleBom(row) { + this.bomDialogVisible = true; + this.bomId = row.bomId; + this.itemId = row.rawMaterialId; + }, + handleAddBom(bom) { + this.bomId = bom.bomId; + this.getList(); + }, /** 修改按钮操作 */ handleUpdate(row) { this.loading = true; diff --git a/klp-ui/src/views/wms/stock/box.vue b/klp-ui/src/views/wms/stock/box.vue index 849f414c..715d015b 100644 --- a/klp-ui/src/views/wms/stock/box.vue +++ b/klp-ui/src/views/wms/stock/box.vue @@ -1,18 +1,10 @@ - +/* 图表容器样式 */ +.treemap-container { + width: 100%; + height: 100%; + min-height: 600px; +} + \ No newline at end of file diff --git a/klp-ui/src/views/wms/stock/index.vue b/klp-ui/src/views/wms/stock/index.vue index 0918e425..6d162613 100644 --- a/klp-ui/src/views/wms/stock/index.vue +++ b/klp-ui/src/views/wms/stock/index.vue @@ -51,9 +51,9 @@ 导出 - + @@ -84,11 +84,6 @@ - - - - - diff --git a/klp-ui/vue.config.js b/klp-ui/vue.config.js index a4091ae8..d45c9c5c 100644 --- a/klp-ui/vue.config.js +++ b/klp-ui/vue.config.js @@ -7,7 +7,7 @@ function resolve(dir) { const CompressionPlugin = require('compression-webpack-plugin') -const name = process.env.VUE_APP_TITLE || 'RuoYi-Flowable-Plus后台管理系统' // 网页标题 +const name = process.env.VUE_APP_TITLE || '科伦普WMS系统' // 网页标题 const port = process.env.port || process.env.npm_config_port || 80 // 端口