diff --git a/klp-ui/src/components/KLPUI/KLPTable/readme.md b/klp-ui/src/components/KLPUI/KLPTable/readme.md new file mode 100644 index 00000000..17852e2d --- /dev/null +++ b/klp-ui/src/components/KLPUI/KLPTable/readme.md @@ -0,0 +1,4 @@ +## 组件用法 +1. 将原有的el-table标签改为KLPTable标签,该组件已经全局注册,可以直接使用,无需带入。 +2. 要展示浮层需要在表格组件上设置props,将floatLayer设置为true,这时表格中有哪些列,浮层就会展示哪些信息。 +3. 如果需要单独设置浮层展示的信息,例如展示表格中不存在但数据中存在的列,需要在标签上增加一个props配置,设置floatLayerConfig.columns为要展示的列,示例[ { label: 'xxx', props: 'xxx.xxx' // 支持展示多层的数据 }, { label: '标签', props: 'xxx' } ] diff --git a/klp-ui/src/views/wms/coil/do/warehousing.vue b/klp-ui/src/views/wms/coil/do/warehousing.vue index dc8a7fa2..58b2bdd0 100644 --- a/klp-ui/src/views/wms/coil/do/warehousing.vue +++ b/klp-ui/src/views/wms/coil/do/warehousing.vue @@ -8,6 +8,18 @@

新增入库

+ + + + + + + + + + @@ -33,12 +45,12 @@ clearable /> - + @@ -121,7 +133,7 @@
-
+

入库记录

刷新
@@ -133,45 +145,46 @@ 查询 - - -
-
- -

暂无入库记录

-
-
-
- {{ item.currentCoilNo }} -
- -
-
-
- 创建人: - {{ item.createBy || '—' }} -
-
- 创建时间: - {{ parseTime(item.createTime, '{m}-{d} {h}:{i}') || '—' }} -
-
-
-
-
- +
+ +

暂无入库记录

+
+ + + + + + + + + + + + + + + + + + + + + -
- +
@@ -186,6 +199,7 @@ import WarehouseSelect from "@/components/KLPService/WarehouseSelect"; import ProductSelect from "@/components/KLPService/ProductSelect"; import RawMaterialSelect from "@/components/KLPService/RawMaterialSelect"; import { Pagination } from 'element-ui'; +import { listDeliveryPlan } from '@/api/wms/deliveryPlan' // 键值为[400, 500), 不包含在字典中,但后续可以加入的特殊操作,这类操作录入后会立刻完成,例如入库(401)和发货(402) @@ -211,6 +225,7 @@ export default { netWeight: null, grossWeight: null, remark: null, + dataType: 10, // 表示将要入库但是还未入库的钢卷,一般用于钢卷入库的操作去创建一个无法被检索到的钢卷 trimmingRequirement: null, packingStatus: null, packagingRequirement: null, @@ -222,12 +237,15 @@ export default { }, // 分页参数 pagination: { - currentPage: 1, + pageNum: 1, pageSize: 10, }, total: 0, // 表单校验 rules: { + planId: [ + { required: true, message: "请选择收货计划", trigger: "change" } + ], enterCoilNo: [ { required: true, message: "入场钢卷号不能为空", trigger: "blur" } ], @@ -248,6 +266,7 @@ export default { { required: true, message: "毛重不能为空", trigger: "blur" } ], }, + planList: [], } }, mounted() { @@ -276,6 +295,11 @@ export default { this.form.itemType = 'raw_material'; } }, + remoteMethod(query) { + listDeliveryPlan({ planName: query, pageNum: 1, pageSize: 5, planType: 1 }).then(res => { + this.planList = res.rows + }) + }, getList() { // 获取入库历史 this.loading = true @@ -292,13 +316,16 @@ export default { this.buttonLoading = true; addMaterialCoil(this.form).then(response => { addPendingAction({ + // 计划ID 对应 warehouseId, warehouseId字段并不是仓库ID,而是一个根据操作类型自适应的查询字段 + warehouseId: this.form.planId, actionType: 401, currentCoilNo: this.form.currentCoilNo, sourceType: 'manual', coilId: response.data.coilId, + // coilId: 0, priority: 0, remark: this.form.remark, - actionStatus: 2, + actionStatus: 0, }).then(res => { this.$modal.msgSuccess("入库成功"); this.getList() @@ -306,6 +333,8 @@ export default { }).finally(() => { this.buttonLoading = false; }); + + } }); }, @@ -354,6 +383,7 @@ export default { .section-header { border-bottom-color: #409eff; } + .section-title { color: #409eff; } @@ -363,6 +393,7 @@ export default { .section-header { border-bottom-color: #67c23a; } + .section-title { color: #67c23a; } @@ -384,25 +415,25 @@ export default { max-height: calc(100vh - 320px); overflow-y: auto; padding-right: 4px; - + &::-webkit-scrollbar { width: 6px; } - + &::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } - + &::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; - + &:hover { background: #a8a8a8; } } - + @media (min-width: 1600px) { grid-template-columns: repeat(4, 1fr); } @@ -413,14 +444,14 @@ export default { text-align: center; padding: 60px 20px; color: #909399; - + i { font-size: 48px; margin-bottom: 16px; display: block; color: #c0c4cc; } - + p { margin: 0; font-size: 14px; @@ -436,51 +467,51 @@ export default { flex-direction: column; transition: all 0.3s ease; height: 100%; - + &:hover { border-color: #409eff; box-shadow: 0 2px 6px rgba(64, 158, 255, 0.12); } - + .card-header { padding: 6px 8px; border-bottom: 1px solid #e4e7ed; background-color: #fafafa; - + .header-left { display: flex; align-items: center; gap: 6px; } - + .coil-no-tag { font-weight: 600; font-size: 11px; padding: 2px 6px; } - + .material-type { font-size: 11px; color: #606266; font-weight: 500; } - + .param-icon { font-size: 13px; color: #909399; cursor: pointer; transition: color 0.3s; - + &:hover { color: #409eff; } } } - + .card-body { padding: 8px; flex: 1; - + .info-list { .info-item { display: flex; @@ -488,11 +519,11 @@ export default { margin-bottom: 4px; font-size: 11px; line-height: 1.4; - + &:last-child { margin-bottom: 0; } - + .info-label { color: #909399; white-space: nowrap; @@ -500,7 +531,7 @@ export default { min-width: 40px; font-size: 11px; } - + .info-value { color: #303133; flex: 1; @@ -512,14 +543,14 @@ export default { } } } - + .card-footer { padding: 6px 8px; border-top: 1px solid #e4e7ed; background-color: #fafafa; display: flex; justify-content: center; - + .action-btn { width: 100%; padding: 5px 10px; @@ -537,32 +568,32 @@ export default { flex-direction: column; transition: all 0.3s ease; height: 100%; - + &:hover { border-color: #67c23a; box-shadow: 0 2px 8px rgba(103, 194, 58, 0.15); } - + &.urgent-card { border-left: 4px solid #f56c6c; background-color: #fef0f0; - + &:hover { border-color: #f56c6c; box-shadow: 0 2px 8px rgba(245, 108, 108, 0.2); } } - + &.important-card { border-left: 4px solid #e6a23c; background-color: #fdf6ec; - + &:hover { border-color: #e6a23c; box-shadow: 0 2px 8px rgba(230, 162, 60, 0.2); } } - + .card-header { padding: 10px 12px; border-bottom: 1px solid #e4e7ed; @@ -570,41 +601,41 @@ export default { display: flex; justify-content: space-between; align-items: center; - + .coil-no-tag { font-weight: 600; font-size: 12px; } - + .status-tags { display: flex; gap: 4px; flex-wrap: wrap; } } - + .card-body { padding: 12px; flex: 1; - + .info-list { .info-item { display: flex; align-items: center; margin-bottom: 8px; font-size: 12px; - + &:last-child { margin-bottom: 0; } - + .info-label { color: #909399; white-space: nowrap; margin-right: 6px; min-width: 50px; } - + .info-value { color: #303133; flex: 1; @@ -612,14 +643,14 @@ export default { text-overflow: ellipsis; white-space: nowrap; } - + .action-type-tag { font-size: 11px; } } } } - + .card-footer { padding: 10px 12px; border-top: 1px solid #e4e7ed; @@ -627,7 +658,7 @@ export default { display: flex; justify-content: center; gap: 6px; - + .action-btn { flex: 1; font-size: 12px; @@ -656,7 +687,7 @@ export default { padding-bottom: 8px; border-bottom: 1px solid #e4e7ed; } - + .params-list { .param-item { .param-row { @@ -664,17 +695,17 @@ export default { margin-bottom: 6px; font-size: 12px; line-height: 1.5; - + &:last-child { margin-bottom: 0; } - + .param-label { color: #909399; min-width: 70px; margin-right: 8px; } - + .param-value { color: #303133; flex: 1; @@ -682,7 +713,7 @@ export default { } } } - + .param-divider { height: 1px; background-color: #e4e7ed; diff --git a/klp-ui/src/views/wms/delivery/plan/index.vue b/klp-ui/src/views/wms/delivery/plan/index.vue index e738fca5..5ebf5c09 100644 --- a/klp-ui/src/views/wms/delivery/plan/index.vue +++ b/klp-ui/src/views/wms/delivery/plan/index.vue @@ -175,6 +175,7 @@ export default { pageSize: 10, planName: undefined, planDate: undefined, + planType: 0, }, // 表单参数 form: {}, @@ -214,6 +215,7 @@ export default { planId: undefined, planName: undefined, planDate: undefined, + planType: 0, remark: undefined, delFlag: undefined, createTime: undefined, @@ -247,6 +249,8 @@ export default { this.form.planDate = new Date().toLocaleString().replace('T', ' ').replace().replace(/\//g, '-') // 发货计划名称格式为年-月-日命名 this.form.planName = new Date().toLocaleDateString().replace(/\//g, '-') + '发货计划' + // 计划类型为发货计划 + this.form.planType = 0 this.open = true; this.title = "添加发货计划"; }, diff --git a/klp-ui/src/views/wms/delivery/waybill/index.vue b/klp-ui/src/views/wms/delivery/waybill/index.vue index 3acb44ee..fe35a2d0 100644 --- a/klp-ui/src/views/wms/delivery/waybill/index.vue +++ b/klp-ui/src/views/wms/delivery/waybill/index.vue @@ -82,13 +82,12 @@ - - + @@ -168,7 +167,7 @@ export default { showSearch: true, // 总条数 total: 0, - // 发货单主表格数据 + // 发货单表格数据 deliveryWaybillList: [], waybillId: null, // 打印相关数据 @@ -213,7 +212,8 @@ export default { planQueryParams: { pageNum: 1, pageSize: 100, // 增大分页大小以确保树形结构显示足够数据 - planName: undefined + planName: undefined, + planType: 0, } }; }, @@ -222,7 +222,7 @@ export default { this.getPlanList(); }, methods: { - /** 查询发货单主列表 */ + /** 查询发货单列表 */ getList() { this.loading = true; // 确保查询参数包含planId @@ -334,7 +334,7 @@ export default { } } this.open = true; - this.title = "添加发货单主"; + this.title = "添加发货单"; }, /** 修改按钮操作 */ handleUpdate(row) { @@ -345,7 +345,7 @@ export default { this.loading = false; this.form = response.data; this.open = true; - this.title = "修改发货单主"; + this.title = "修改发货单"; }); }, /** 提交按钮 */ @@ -376,7 +376,7 @@ export default { /** 删除按钮操作 */ handleDelete(row) { const waybillIds = row.waybillId || this.ids; - this.$modal.confirm('是否确认删除发货单主编号为"' + waybillIds + '"的数据项?').then(() => { + this.$modal.confirm('是否确认删除发货单编号为"' + waybillIds + '"的数据项?').then(() => { this.loading = true; return delDeliveryWaybill(waybillIds); }).then(() => { diff --git a/klp-ui/src/views/wms/receive/detail/index.vue b/klp-ui/src/views/wms/receive/detail/index.vue new file mode 100644 index 00000000..4629f6cc --- /dev/null +++ b/klp-ui/src/views/wms/receive/detail/index.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPendingActionBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPendingActionBo.java index f6f1cbf6..d4d2b87f 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPendingActionBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsCoilPendingActionBo.java @@ -28,6 +28,7 @@ public class WmsCoilPendingActionBo extends BaseEntity { /** * 关联的钢卷ID */ + // 对于入库操作,这个时候还不存在钢卷,因此无法关联钢卷ID,因此先关联为0,如果id为0则跟未关联是相同的 @NotNull(message = "关联的钢卷ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long coilId;