feat(打包模块): 新增打包单据功能及相关组件

refactor(CoilSelector): 修改change事件返回参数包含完整钢卷信息

chore: 添加打包模块相关图标和API文件

test: 添加打包模块单元测试

docs: 更新打包模块API文档
This commit is contained in:
砂糖
2026-03-24 09:16:22 +08:00
parent f5a8d35831
commit 396f861882
37 changed files with 1727 additions and 33 deletions

View File

@@ -0,0 +1,88 @@
import request from '@/utils/request'
// 查询打包单据列表
export function listPacking(query) {
return request({
url: '/wms/coilPackingRecord/list',
method: 'get',
params: query
})
}
// 查询打包单据详细
export function getPacking(packingId) {
return request({
url: '/wms/coilPackingRecord/' + packingId,
method: 'get'
})
}
// 新增打包单据
export function addPacking(data) {
return request({
url: '/wms/coilPackingRecord',
method: 'post',
data: data
})
}
// 修改打包单据
export function updatePacking(data) {
return request({
url: '/wms/coilPackingRecord',
method: 'put',
data: data
})
}
// 删除打包单据
export function delPacking(packingId) {
return request({
url: '/wms/coilPackingRecord/' + packingId,
method: 'delete'
})
}
// 查询打包明细列表
export function listPackingDetail(query) {
return request({
url: '/wms/coilPackingDetail/list',
method: 'get',
params: query
})
}
// 新增打包明细
export function addPackingDetail(data) {
return request({
url: '/wms/coilPackingDetail',
method: 'post',
data: data
})
}
// 修改打包明细
export function updatePackingDetail(data) {
return request({
url: '/wms/coilPackingDetail',
method: 'put',
data: data
})
}
// 删除打包明细
export function delPackingDetail(detailId) {
return request({
url: '/wms/coilPackingDetail/' + detailId,
method: 'delete'
})
}
// 创建打包单据及明细
export function createPacking(data) {
return request({
url: '/wms/coilPackingRecord/execute',
method: 'post',
data: data
})
}

View File

@@ -0,0 +1,288 @@
/**
* 打包模块 API 测试用例
* 测试打包单据和明细表相关的 API 接口
*/
import { expect, test, describe, beforeEach, afterEach, jest } from '@jest/globals';
// Mock request 模块
jest.mock('@/utils/request', () => ({
default: jest.fn(() => Promise.resolve({ code: 200, data: {} }))
}));
import {
listPacking,
getPacking,
addPacking,
updatePacking,
delPacking,
listPackingDetail,
listPackedCoil,
addPackingDetail,
updatePackingDetail,
delPackingDetail,
batchAddPackingDetail,
getPackingByNo,
submitPacking,
cancelSubmitPacking
} from './packing';
import request from '@/utils/request';
describe('Packing API Tests', () => {
beforeEach(() => {
jest.clearAllMocks();
});
describe('打包单据主表 API', () => {
test('listPacking - 查询打包单据列表', () => {
const query = {
pageNum: 1,
pageSize: 20,
packingNo: 'PK20260323001'
};
listPacking(query);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/list',
method: 'get',
params: query
});
});
test('getPacking - 查询单个打包单据详情', () => {
const packingId = '1';
getPacking(packingId);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/1',
method: 'get'
});
});
test('addPacking - 新增打包单据', () => {
const data = {
batchNo: 'BATCH001',
packingDate: '2026-03-23',
team: '甲',
operator: '张三',
remark: '测试备注'
};
addPacking(data);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing',
method: 'post',
data: data
});
});
test('updatePacking - 修改打包单据', () => {
const data = {
packingId: '1',
batchNo: 'BATCH001',
packingDate: '2026-03-23',
team: '甲',
operator: '张三',
remark: '修改后的备注'
};
updatePacking(data);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing',
method: 'put',
data: data
});
});
test('delPacking - 删除打包单据', () => {
const packingId = '1';
delPacking(packingId);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/1',
method: 'delete'
});
});
test('getPackingByNo - 根据单据号查询打包单据', () => {
const packingNo = 'PK20260323001';
getPackingByNo(packingNo);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/no/PK20260323001',
method: 'get'
});
});
test('submitPacking - 提交打包单据', () => {
const packingId = '1';
submitPacking(packingId);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/submit/1',
method: 'post'
});
});
test('cancelSubmitPacking - 取消提交打包单据', () => {
const packingId = '1';
cancelSubmitPacking(packingId);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/cancelSubmit/1',
method: 'post'
});
});
});
describe('打包明细表 API', () => {
test('listPackingDetail - 查询打包明细列表', () => {
const query = {
packingId: '1',
pageNum: 1,
pageSize: 20
};
listPackingDetail(query);
expect(request).toHaveBeenCalledWith({
url: '/wms/packingDetail/list',
method: 'get',
params: query
});
});
test('addPackingDetail - 新增打包明细', () => {
const data = {
packingId: '1',
coilId: '1001',
coilNo: '26L0312345',
itemName: '镀锌板',
specification: '1.0*1000*C',
material: 'DX51D+Z',
netWeight: 5.5,
beforePosition: 'A区01号位',
afterPosition: ''
};
addPackingDetail(data);
expect(request).toHaveBeenCalledWith({
url: '/wms/packingDetail',
method: 'post',
data: data
});
});
test('updatePackingDetail - 修改打包明细', () => {
const data = {
detailId: '1',
packingId: '1',
afterPosition: 'B区02号位'
};
updatePackingDetail(data);
expect(request).toHaveBeenCalledWith({
url: '/wms/packingDetail',
method: 'put',
data: data
});
});
test('delPackingDetail - 删除打包明细', () => {
const detailId = '1';
delPackingDetail(detailId);
expect(request).toHaveBeenCalledWith({
url: '/wms/packingDetail/1',
method: 'delete'
});
});
test('batchAddPackingDetail - 批量新增打包明细', () => {
const data = [
{
packingId: '1',
coilId: '1001',
coilNo: '26L0312345',
itemName: '镀锌板',
specification: '1.0*1000*C',
material: 'DX51D+Z',
netWeight: 5.5,
beforePosition: 'A区01号位',
afterPosition: ''
},
{
packingId: '1',
coilId: '1002',
coilNo: '26L0312346',
itemName: '镀锌板',
specification: '1.0*1000*C',
material: 'DX51D+Z',
netWeight: 5.2,
beforePosition: 'A区02号位',
afterPosition: ''
}
];
batchAddPackingDetail(data);
expect(request).toHaveBeenCalledWith({
url: '/wms/packingDetail/batch',
method: 'post',
data: data
});
});
});
describe('已打包钢卷查询 API', () => {
test('listPackedCoil - 查询已打包钢卷列表', () => {
const query = {
pageNum: 1,
pageSize: 20,
packingNo: 'PK20260323001',
batchNo: 'BATCH001',
coilNo: '26L0312345',
team: '甲'
};
listPackedCoil(query);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/packedCoilList',
method: 'get',
params: query
});
});
test('listPackedCoil - 带日期范围参数查询已打包钢卷', () => {
const query = {
pageNum: 1,
pageSize: 20,
params: {
beginPackingDate: '2026-03-01',
endPackingDate: '2026-03-31'
}
};
listPackedCoil(query);
expect(request).toHaveBeenCalledWith({
url: '/wms/packing/packedCoilList',
method: 'get',
params: query
});
});
});
});