diff --git a/klp-ui/src/api/wms/packing.js b/klp-ui/src/api/wms/packing.js
new file mode 100644
index 00000000..87dd0371
--- /dev/null
+++ b/klp-ui/src/api/wms/packing.js
@@ -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
+ })
+}
diff --git a/klp-ui/src/api/wms/packing.test.js b/klp-ui/src/api/wms/packing.test.js
new file mode 100644
index 00000000..e26754cc
--- /dev/null
+++ b/klp-ui/src/api/wms/packing.test.js
@@ -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
+ });
+ });
+ });
+});
diff --git a/klp-ui/src/assets/icons/svg/packing.svg b/klp-ui/src/assets/icons/svg/packing.svg
new file mode 100644
index 00000000..b82ab319
--- /dev/null
+++ b/klp-ui/src/assets/icons/svg/packing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue
index 4939f1cc..1185589e 100644
--- a/klp-ui/src/components/CoilSelector/index.vue
+++ b/klp-ui/src/components/CoilSelector/index.vue
@@ -318,7 +318,7 @@ export default {
// 同步到v-model
if (this.useTrigger && val.coilId) {
this.$emit('input', val.coilId);
- this.$emit('change', val.coilId);
+ this.$emit('change', val.coilId, val);
}
}
},
@@ -529,7 +529,7 @@ export default {
// 触发器模式下,支持v-model双向绑定
if (this.useTrigger) {
this.$emit('input', row.coilId);
- this.$emit('change', row.coilId); // 兼容v-model的change事件
+ this.$emit('change', row.coilId, row); // 兼容v-model的change事件
}
// 选择后关闭对话框
this.handleClose();
@@ -540,7 +540,7 @@ export default {
this.selectedCoil = null;
this.selectedCoils = []; // 清空多选数据
this.$emit('input', '');
- this.$emit('change', '');
+ this.$emit('change', '', null); // 兼容v-model的change事件
this.$emit('clear', true); // 触发清除事件
},
diff --git a/klp-ui/src/views/wms/delivery/grading/index.vue b/klp-ui/src/views/wms/delivery/grading/index.vue
index 97f8a364..ec2c39e0 100644
--- a/klp-ui/src/views/wms/delivery/grading/index.vue
+++ b/klp-ui/src/views/wms/delivery/grading/index.vue
@@ -22,8 +22,8 @@ export default {
qrcode: false,
querys: {
dataType: 1,
- materialType: '成品',
- itemType: 'product',
+ // materialType: '成品',
+ // itemType: 'product',
status: 0
},
labelType: '3',
diff --git a/klp-ui/src/views/wms/packing/coil.vue b/klp-ui/src/views/wms/packing/coil.vue
new file mode 100644
index 00000000..be207063
--- /dev/null
+++ b/klp-ui/src/views/wms/packing/coil.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/klp-ui/src/views/wms/packing/packing.test.js b/klp-ui/src/views/wms/packing/packing.test.js
new file mode 100644
index 00000000..a175a88a
--- /dev/null
+++ b/klp-ui/src/views/wms/packing/packing.test.js
@@ -0,0 +1,389 @@
+/**
+ * 打包模块页面测试用例
+ * 测试打包单据创建、查询和修正功能
+ */
+
+import { expect, test, describe, beforeEach, afterEach, jest } from '@jest/globals';
+
+// Mock Element UI 组件
+jest.mock('element-ui', () => ({
+ Button: jest.fn(),
+ Form: jest.fn(),
+ FormItem: jest.fn(),
+ Input: jest.fn(),
+ Select: jest.fn(),
+ Option: jest.fn(),
+ DatePicker: jest.fn(),
+ Table: jest.fn(),
+ TableColumn: jest.fn(),
+ Dialog: jest.fn(),
+ Descriptions: jest.fn(),
+ DescriptionsItem: jest.fn(),
+ Tag: jest.fn(),
+ Message: {
+ success: jest.fn(),
+ warning: jest.fn(),
+ error: jest.fn(),
+ info: jest.fn()
+ },
+ MessageBox: {
+ confirm: jest.fn(() => Promise.resolve())
+ }
+}));
+
+// Mock Vue Router
+jest.mock('vue-router', () => ({
+ useRouter: jest.fn(() => ({
+ push: jest.fn(),
+ query: {}
+ })),
+ useRoute: jest.fn(() => ({
+ query: {}
+ }))
+}));
+
+// Mock API
+jest.mock('@/api/wms/packing', () => ({
+ addPacking: jest.fn(() => Promise.resolve({ code: 200, data: { packingId: '1', packingNo: 'PK20260323001' } })),
+ updatePacking: jest.fn(() => Promise.resolve({ code: 200 })),
+ listPacking: jest.fn(() => Promise.resolve({ code: 200, rows: [], total: 0 })),
+ getPacking: jest.fn(() => Promise.resolve({ code: 200, data: {} })),
+ delPacking: jest.fn(() => Promise.resolve({ code: 200 })),
+ listPackingDetail: jest.fn(() => Promise.resolve({ code: 200, rows: [], total: 0 })),
+ updatePackingDetail: jest.fn(() => Promise.resolve({ code: 200 })),
+ delPackingDetail: jest.fn(() => Promise.resolve({ code: 200 })),
+ batchAddPackingDetail: jest.fn(() => Promise.resolve({ code: 200 }))
+}));
+
+// Mock CoilSelector 组件
+jest.mock('@/components/CoilSelector', () => ({
+ name: 'CoilSelector',
+ props: ['multiple', 'filters', 'disableO', 'dialogWidth', 'useTrigger'],
+ template: '
'
+}));
+
+// Mock CurrentCoilNo 组件
+jest.mock('@/components/KLPService/Renderer/CurrentCoilNo', () => ({
+ name: 'CurrentCoilNo',
+ props: ['currentCoilNo'],
+ template: '{{ currentCoilNo }}'
+}));
+
+import { addPacking, updatePacking, listPacking, listPackingDetail, updatePackingDetail, delPackingDetail, batchAddPackingDetail } from '@/api/wms/packing';
+
+describe('Packing Module Tests', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe('创建打包单据 (packing.vue) 功能测试', () => {
+ test('初始化表单数据', () => {
+ // 测试表单初始数据结构
+ const initialForm = {
+ packingNo: '',
+ batchNo: '',
+ packingDate: expect.any(String),
+ team: '',
+ operator: '',
+ remark: ''
+ };
+
+ expect(initialForm).toHaveProperty('packingNo');
+ expect(initialForm).toHaveProperty('batchNo');
+ expect(initialForm).toHaveProperty('packingDate');
+ expect(initialForm).toHaveProperty('team');
+ expect(initialForm).toHaveProperty('operator');
+ expect(initialForm).toHaveProperty('remark');
+ });
+
+ test('验证表单必填项', () => {
+ const rules = {
+ batchNo: [{ required: true, message: '批次号不能为空', trigger: 'blur' }],
+ packingDate: [{ required: true, message: '打包日期不能为空', trigger: 'change' }]
+ };
+
+ expect(rules.batchNo).toHaveLength(1);
+ expect(rules.batchNo[0].required).toBe(true);
+ expect(rules.packingDate).toHaveLength(1);
+ expect(rules.packingDate[0].required).toBe(true);
+ });
+
+ test('计算总重量', () => {
+ const detailList = [
+ { netWeight: 5.5 },
+ { netWeight: 5.2 },
+ { netWeight: 4.8 }
+ ];
+
+ const totalWeight = detailList.reduce((acc, item) => acc + Number(item.netWeight || 0), 0).toFixed(3);
+
+ expect(totalWeight).toBe('15.500');
+ });
+
+ test('计算已填位置的明细数量', () => {
+ const detailList = [
+ { afterPosition: 'A区01号位' },
+ { afterPosition: '' },
+ { afterPosition: 'B区02号位' }
+ ];
+
+ const filledCount = detailList.filter(item => item.afterPosition).length;
+
+ expect(filledCount).toBe(2);
+ });
+
+ test('批量添加钢卷数据转换', () => {
+ const coils = [
+ {
+ coilId: '1001',
+ currentCoilNo: '26L0312345',
+ itemName: '镀锌板',
+ itemSpecification: '1.0*1000*C',
+ itemMaterial: 'DX51D+Z',
+ netWeight: 5.5,
+ actualWarehouseName: 'A区01号位'
+ }
+ ];
+
+ const packingId = '1';
+ const payload = coils.map(coil => ({
+ packingId: packingId,
+ coilId: coil.coilId,
+ coilNo: coil.currentCoilNo,
+ itemName: coil.itemName,
+ specification: coil.itemSpecification,
+ material: coil.itemMaterial,
+ netWeight: coil.netWeight,
+ beforePosition: coil.actualWarehouseName || '',
+ afterPosition: ''
+ }));
+
+ expect(payload[0]).toEqual({
+ packingId: '1',
+ coilId: '1001',
+ coilNo: '26L0312345',
+ itemName: '镀锌板',
+ specification: '1.0*1000*C',
+ material: 'DX51D+Z',
+ netWeight: 5.5,
+ beforePosition: 'A区01号位',
+ afterPosition: ''
+ });
+ });
+
+ test('格式化日期函数', () => {
+ const formatDate = (date) => {
+ const y = date.getFullYear();
+ const m = String(date.getMonth() + 1).padStart(2, '0');
+ const d = String(date.getDate()).padStart(2, '0');
+ return `${y}-${m}-${d}`;
+ };
+
+ const testDate = new Date('2026-03-23');
+ const formatted = formatDate(testDate);
+
+ expect(formatted).toBe('2026-03-23');
+ });
+
+ test('重置表单数据', () => {
+ const formatDate = (date) => {
+ const y = date.getFullYear();
+ const m = String(date.getMonth() + 1).padStart(2, '0');
+ const d = String(date.getDate()).padStart(2, '0');
+ return `${y}-${m}-${d}`;
+ };
+
+ const resetForm = () => {
+ return {
+ packingNo: '',
+ batchNo: '',
+ packingDate: formatDate(new Date()),
+ team: '',
+ operator: '',
+ remark: ''
+ };
+ };
+
+ const resetData = resetForm();
+
+ expect(resetData.packingNo).toBe('');
+ expect(resetData.batchNo).toBe('');
+ expect(resetData.team).toBe('');
+ expect(resetData.operator).toBe('');
+ expect(resetData.remark).toBe('');
+ expect(resetData.packingDate).toMatch(/^\d{4}-\d{2}-\d{2}$/);
+ });
+ });
+
+ describe('查询已打包钢卷 (coil.vue) 功能测试', () => {
+ test('查询参数结构', () => {
+ const queryParams = {
+ pageNum: 1,
+ pageSize: 20,
+ packingNo: 'PK20260323001',
+ batchNo: 'BATCH001',
+ coilNo: '26L0312345',
+ team: '甲',
+ itemName: '镀锌板'
+ };
+
+ expect(queryParams).toHaveProperty('pageNum');
+ expect(queryParams).toHaveProperty('pageSize');
+ expect(queryParams.pageNum).toBe(1);
+ expect(queryParams.pageSize).toBe(20);
+ });
+
+ test('日期范围查询参数处理', () => {
+ const dateRange = ['2026-03-01', '2026-03-31'];
+ const params = {};
+
+ if (dateRange && dateRange.length === 2) {
+ params.params = {
+ beginPackingDate: dateRange[0],
+ endPackingDate: dateRange[1]
+ };
+ }
+
+ expect(params.params).toEqual({
+ beginPackingDate: '2026-03-01',
+ endPackingDate: '2026-03-31'
+ });
+ });
+
+ test('计算列表总卷数', () => {
+ const total = 10;
+ const totalCoilCount = total;
+
+ expect(totalCoilCount).toBe(10);
+ });
+
+ test('计算列表总重量', () => {
+ const coilList = [
+ { netWeight: 5.5 },
+ { netWeight: 5.2 },
+ { netWeight: 4.8 }
+ ];
+
+ const totalWeight = coilList.reduce((acc, item) => acc + Number(item.netWeight || 0), 0).toFixed(3);
+
+ expect(totalWeight).toBe('15.500');
+ });
+
+ test('重置查询参数', () => {
+ const resetQuery = () => {
+ return {
+ pageNum: 1,
+ pageSize: 20,
+ packingNo: null,
+ batchNo: null,
+ coilNo: null,
+ team: null,
+ itemName: null
+ };
+ };
+
+ const resetParams = resetQuery();
+
+ expect(resetParams.packingNo).toBeNull();
+ expect(resetParams.batchNo).toBeNull();
+ expect(resetParams.coilNo).toBeNull();
+ expect(resetParams.team).toBeNull();
+ expect(resetParams.itemName).toBeNull();
+ });
+ });
+
+ describe('查看和修正打包单据 (record.vue) 功能测试', () => {
+ test('修正模式切换', () => {
+ let isEditMode = false;
+
+ const handleStartEdit = () => {
+ isEditMode = true;
+ };
+
+ handleStartEdit();
+
+ expect(isEditMode).toBe(true);
+ });
+
+ test('对话框标题根据模式变化', () => {
+ const getDialogTitle = (isEditMode) => {
+ return isEditMode ? '修正打包单据' : '打包单据详情';
+ };
+
+ expect(getDialogTitle(false)).toBe('打包单据详情');
+ expect(getDialogTitle(true)).toBe('修正打包单据');
+ });
+
+ test('全屏模式切换', () => {
+ let isFullscreen = false;
+
+ const toggleFullscreen = () => {
+ isFullscreen = !isFullscreen;
+ };
+
+ toggleFullscreen();
+ expect(isFullscreen).toBe(true);
+
+ toggleFullscreen();
+ expect(isFullscreen).toBe(false);
+ });
+
+ test('编辑表单验证规则', () => {
+ const editRules = {
+ batchNo: [{ required: true, message: '批次号不能为空', trigger: 'blur' }],
+ packingDate: [{ required: true, message: '打包日期不能为空', trigger: 'change' }]
+ };
+
+ expect(editRules.batchNo[0].required).toBe(true);
+ expect(editRules.packingDate[0].required).toBe(true);
+ });
+
+ test('保存明细修改数据结构', () => {
+ const row = {
+ detailId: '1',
+ packingId: '1',
+ afterPosition: 'B区02号位'
+ };
+
+ expect(row).toHaveProperty('detailId');
+ expect(row).toHaveProperty('packingId');
+ expect(row).toHaveProperty('afterPosition');
+ });
+ });
+
+ describe('钢卷选择器筛选参数', () => {
+ test('钢卷选择器筛选条件', () => {
+ const coilFilters = {
+ dataType: 1,
+ status: 0,
+ selectType: 'product'
+ };
+
+ expect(coilFilters.dataType).toBe(1);
+ expect(coilFilters.status).toBe(0);
+ expect(coilFilters.selectType).toBe('product');
+ });
+ });
+
+ describe('分页功能', () => {
+ test('分页参数结构', () => {
+ const pagination = {
+ pageNum: 1,
+ pageSize: 20
+ };
+
+ expect(pagination.pageNum).toBe(1);
+ expect(pagination.pageSize).toBe(20);
+ });
+
+ test('重置分页到第一页', () => {
+ const handleQuery = () => {
+ return { pageNum: 1, pageSize: 20 };
+ };
+
+ const result = handleQuery();
+
+ expect(result.pageNum).toBe(1);
+ });
+ });
+});
diff --git a/klp-ui/src/views/wms/packing/packing.vue b/klp-ui/src/views/wms/packing/packing.vue
new file mode 100644
index 00000000..1531e24f
--- /dev/null
+++ b/klp-ui/src/views/wms/packing/packing.vue
@@ -0,0 +1,441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.coilNetWeight }}t
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+ 取消
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+ {{ detailList.length }} 卷
+
+
+ {{ totalWeight }} 吨
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.totalNetWeight }}t
+
+
+
+
+
+
+
+
+
+
+
diff --git a/klp-ui/src/views/wms/packing/record.vue b/klp-ui/src/views/wms/packing/record.vue
new file mode 100644
index 00000000..3e026110
--- /dev/null
+++ b/klp-ui/src/views/wms/packing/record.vue
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+ 新建单据
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.packingNo }}
+
+
+
+
+
+
+
+ {{ scope.row.totalNetWeight }}t
+
+
+
+
+ 查看
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectedPacking.coilCount }}
+ {{ selectedPacking.totalNetWeight }}t
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+ 保存
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/klp-ui/src/views/wms/report/duge/comprehensive.vue b/klp-ui/src/views/wms/report/duge/comprehensive.vue
index 3dacb83a..7935da20 100644
--- a/klp-ui/src/views/wms/report/duge/comprehensive.vue
+++ b/klp-ui/src/views/wms/report/duge/comprehensive.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [505, 120],
actionQueryParams: {
- updateBy: 'dugekuguan'
+ createBy: 'dugekuguan'
},
baseQueryParams: {
createBy: 'dugekuguan',
diff --git a/klp-ui/src/views/wms/report/duge/day.vue b/klp-ui/src/views/wms/report/duge/day.vue
index 0a8ac17d..945dcdc3 100644
--- a/klp-ui/src/views/wms/report/duge/day.vue
+++ b/klp-ui/src/views/wms/report/duge/day.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [505, 120],
actionQueryParams: {
- updateBy: 'dugekuguan'
+ createBy: 'dugekuguan'
},
baseQueryParams: {
createBy: 'dugekuguan',
diff --git a/klp-ui/src/views/wms/report/duge/month.vue b/klp-ui/src/views/wms/report/duge/month.vue
index dbadea3b..b17ac87a 100644
--- a/klp-ui/src/views/wms/report/duge/month.vue
+++ b/klp-ui/src/views/wms/report/duge/month.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [505, 120],
actionQueryParams: {
- updateBy: 'dugekuguan'
+ createBy: 'dugekuguan'
},
baseQueryParams: {
createBy: 'dugekuguan',
diff --git a/klp-ui/src/views/wms/report/duge/team.vue b/klp-ui/src/views/wms/report/duge/team.vue
index 78d5cadf..8774d1ca 100644
--- a/klp-ui/src/views/wms/report/duge/team.vue
+++ b/klp-ui/src/views/wms/report/duge/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [505, 120],
actionQueryParams: {
- updateBy: 'dugekuguan'
+ createBy: 'dugekuguan'
},
baseQueryParams: {
createBy: 'dugekuguan',
diff --git a/klp-ui/src/views/wms/report/duge/year.vue b/klp-ui/src/views/wms/report/duge/year.vue
index c7285178..467eb9e7 100644
--- a/klp-ui/src/views/wms/report/duge/year.vue
+++ b/klp-ui/src/views/wms/report/duge/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [505, 120],
actionQueryParams: {
- updateBy: 'dugekuguan'
+ createBy: 'dugekuguan'
},
baseQueryParams: {
createBy: 'dugekuguan',
diff --git a/klp-ui/src/views/wms/report/lajiao/day.vue b/klp-ui/src/views/wms/report/lajiao/day.vue
index 4d2e9104..fdc5f96c 100644
--- a/klp-ui/src/views/wms/report/lajiao/day.vue
+++ b/klp-ui/src/views/wms/report/lajiao/day.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [503, 120],
actionQueryParams: {
- updateBy: 'lajiaokuguan'
+ createBy: 'lajiaokuguan'
},
baseQueryParams: {
createBy: 'lajiaokuguan',
diff --git a/klp-ui/src/views/wms/report/lajiao/loss.vue b/klp-ui/src/views/wms/report/lajiao/loss.vue
index 615b15b3..be1cf80b 100644
--- a/klp-ui/src/views/wms/report/lajiao/loss.vue
+++ b/klp-ui/src/views/wms/report/lajiao/loss.vue
@@ -17,7 +17,7 @@
return {
actionTypes: [503, 120],
actionQueryParams: {
- updateBy: 'lajiaokuguan'
+ createBy: 'lajiaokuguan'
},
}
}
diff --git a/klp-ui/src/views/wms/report/lajiao/month.vue b/klp-ui/src/views/wms/report/lajiao/month.vue
index 27457529..587d9ed3 100644
--- a/klp-ui/src/views/wms/report/lajiao/month.vue
+++ b/klp-ui/src/views/wms/report/lajiao/month.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [503, 120],
actionQueryParams: {
- updateBy: 'lajiaokuguan'
+ createBy: 'lajiaokuguan'
},
baseQueryParams: {
createBy: 'lajiaokuguan',
diff --git a/klp-ui/src/views/wms/report/lajiao/team.vue b/klp-ui/src/views/wms/report/lajiao/team.vue
index e79658ea..4f710905 100644
--- a/klp-ui/src/views/wms/report/lajiao/team.vue
+++ b/klp-ui/src/views/wms/report/lajiao/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [503, 120],
actionQueryParams: {
- updateBy: 'lajiaokuguan'
+ createBy: 'lajiaokuguan'
},
baseQueryParams: {
createBy: 'lajiaokuguan',
diff --git a/klp-ui/src/views/wms/report/lajiao/year.vue b/klp-ui/src/views/wms/report/lajiao/year.vue
index 326ece5f..e4ba889a 100644
--- a/klp-ui/src/views/wms/report/lajiao/year.vue
+++ b/klp-ui/src/views/wms/report/lajiao/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [503, 120],
actionQueryParams: {
- updateBy: 'lajiaokuguan'
+ createBy: 'lajiaokuguan'
},
baseQueryParams: {
createBy: 'lajiaokuguan',
diff --git a/klp-ui/src/views/wms/report/shuang/comprehensive.vue b/klp-ui/src/views/wms/report/shuang/comprehensive.vue
index 363a0419..607de7c8 100644
--- a/klp-ui/src/views/wms/report/shuang/comprehensive.vue
+++ b/klp-ui/src/views/wms/report/shuang/comprehensive.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [504, 120],
actionQueryParams: {
- updateBy: 'shuangkuguan'
+ createBy: 'shuangkuguan'
},
baseQueryParams: {
createBy: 'shuangkuguan',
diff --git a/klp-ui/src/views/wms/report/shuang/day.vue b/klp-ui/src/views/wms/report/shuang/day.vue
index c2a8a5cc..5314e8d0 100644
--- a/klp-ui/src/views/wms/report/shuang/day.vue
+++ b/klp-ui/src/views/wms/report/shuang/day.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [504, 120],
actionQueryParams: {
- updateBy: 'shuangkuguan'
+ createBy: 'shuangkuguan'
},
baseQueryParams: {
createBy: 'shuangkuguan',
diff --git a/klp-ui/src/views/wms/report/shuang/month.vue b/klp-ui/src/views/wms/report/shuang/month.vue
index 0d111237..021d07a5 100644
--- a/klp-ui/src/views/wms/report/shuang/month.vue
+++ b/klp-ui/src/views/wms/report/shuang/month.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [504, 120],
actionQueryParams: {
- updateBy: 'shuangkuguan'
+ createBy: 'shuangkuguan'
},
baseQueryParams: {
createBy: 'shuangkuguan',
diff --git a/klp-ui/src/views/wms/report/shuang/team.vue b/klp-ui/src/views/wms/report/shuang/team.vue
index a8646bac..b42c47f3 100644
--- a/klp-ui/src/views/wms/report/shuang/team.vue
+++ b/klp-ui/src/views/wms/report/shuang/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [504, 120],
actionQueryParams: {
- updateBy: 'shuangkuguan'
+ createBy: 'shuangkuguan'
},
baseQueryParams: {
createBy: 'shuangkuguan',
diff --git a/klp-ui/src/views/wms/report/shuang/year.vue b/klp-ui/src/views/wms/report/shuang/year.vue
index c32609a0..5900d077 100644
--- a/klp-ui/src/views/wms/report/shuang/year.vue
+++ b/klp-ui/src/views/wms/report/shuang/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [504, 120],
actionQueryParams: {
- updateBy: 'shuangkuguan'
+ createBy: 'shuangkuguan'
},
baseQueryParams: {
createBy: 'shuangkuguan',
diff --git a/klp-ui/src/views/wms/report/tuozhi/comprehensive.vue b/klp-ui/src/views/wms/report/tuozhi/comprehensive.vue
index 162674a2..a0b210db 100644
--- a/klp-ui/src/views/wms/report/tuozhi/comprehensive.vue
+++ b/klp-ui/src/views/wms/report/tuozhi/comprehensive.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [502, 120],
actionQueryParams: {
- updateBy: 'tuozhikuguan'
+ createBy: 'tuozhikuguan'
},
baseQueryParams: {
createBy: 'tuozhikuguan',
diff --git a/klp-ui/src/views/wms/report/tuozhi/day.vue b/klp-ui/src/views/wms/report/tuozhi/day.vue
index 9ca94252..38904d39 100644
--- a/klp-ui/src/views/wms/report/tuozhi/day.vue
+++ b/klp-ui/src/views/wms/report/tuozhi/day.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [502, 120],
actionQueryParams: {
- updateBy: 'tuozhikuguan'
+ createBy: 'tuozhikuguan'
},
baseQueryParams: {
createBy: 'tuozhikuguan',
diff --git a/klp-ui/src/views/wms/report/tuozhi/month.vue b/klp-ui/src/views/wms/report/tuozhi/month.vue
index 1a9064c0..0893497d 100644
--- a/klp-ui/src/views/wms/report/tuozhi/month.vue
+++ b/klp-ui/src/views/wms/report/tuozhi/month.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [502, 120],
actionQueryParams: {
- updateBy: 'tuozhikuguan'
+ createBy: 'tuozhikuguan'
},
baseQueryParams: {
createBy: 'tuozhikuguan',
diff --git a/klp-ui/src/views/wms/report/tuozhi/team.vue b/klp-ui/src/views/wms/report/tuozhi/team.vue
index 45532de4..89a9b811 100644
--- a/klp-ui/src/views/wms/report/tuozhi/team.vue
+++ b/klp-ui/src/views/wms/report/tuozhi/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [502, 120],
actionQueryParams: {
- updateBy: 'tuozhikuguan'
+ createBy: 'tuozhikuguan'
},
baseQueryParams: {
createBy: 'tuozhikuguan',
diff --git a/klp-ui/src/views/wms/report/tuozhi/year.vue b/klp-ui/src/views/wms/report/tuozhi/year.vue
index 99b5edb5..3105333b 100644
--- a/klp-ui/src/views/wms/report/tuozhi/year.vue
+++ b/klp-ui/src/views/wms/report/tuozhi/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [502, 120],
actionQueryParams: {
- updateBy: 'tuozhikuguan'
+ createBy: 'tuozhikuguan'
},
baseQueryParams: {
createBy: 'tuozhikuguan',
diff --git a/klp-ui/src/views/wms/report/zha/team.vue b/klp-ui/src/views/wms/report/zha/team.vue
index d0d93546..be8bdac1 100644
--- a/klp-ui/src/views/wms/report/zha/team.vue
+++ b/klp-ui/src/views/wms/report/zha/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [11, 120],
actionQueryParams: {
- updateBy: 'suanzhakuguan'
+ createBy: 'suanzhakuguan'
},
baseQueryParams: {
createBy: 'suanzhakuguan',
diff --git a/klp-ui/src/views/wms/report/zha/year.vue b/klp-ui/src/views/wms/report/zha/year.vue
index 6e9762e0..67f66a88 100644
--- a/klp-ui/src/views/wms/report/zha/year.vue
+++ b/klp-ui/src/views/wms/report/zha/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [11, 120],
actionQueryParams: {
- updateBy: 'suanzhakuguan'
+ createBy: 'suanzhakuguan'
},
baseQueryParams: {
createBy: 'suanzhakuguan',
diff --git a/klp-ui/src/views/wms/report/zinc/comprehensive.vue b/klp-ui/src/views/wms/report/zinc/comprehensive.vue
index 5be7bad7..96508929 100644
--- a/klp-ui/src/views/wms/report/zinc/comprehensive.vue
+++ b/klp-ui/src/views/wms/report/zinc/comprehensive.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
baseQueryParams: {
createBy: 'duxinkuguan',
diff --git a/klp-ui/src/views/wms/report/zinc/day.vue b/klp-ui/src/views/wms/report/zinc/day.vue
index be6338c9..de32fcd6 100644
--- a/klp-ui/src/views/wms/report/zinc/day.vue
+++ b/klp-ui/src/views/wms/report/zinc/day.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
baseQueryParams: {
createBy: 'duxinkuguan',
diff --git a/klp-ui/src/views/wms/report/zinc/month.vue b/klp-ui/src/views/wms/report/zinc/month.vue
index f8f689c7..3b4725b4 100644
--- a/klp-ui/src/views/wms/report/zinc/month.vue
+++ b/klp-ui/src/views/wms/report/zinc/month.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
baseQueryParams: {
createBy: 'duxinkuguan',
diff --git a/klp-ui/src/views/wms/report/zinc/team.vue b/klp-ui/src/views/wms/report/zinc/team.vue
index 6b991d20..4eef62cd 100644
--- a/klp-ui/src/views/wms/report/zinc/team.vue
+++ b/klp-ui/src/views/wms/report/zinc/team.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
baseQueryParams: {
createBy: 'duxinkuguan',
diff --git a/klp-ui/src/views/wms/report/zinc/year.vue b/klp-ui/src/views/wms/report/zinc/year.vue
index 7b404205..03ef8ba9 100644
--- a/klp-ui/src/views/wms/report/zinc/year.vue
+++ b/klp-ui/src/views/wms/report/zinc/year.vue
@@ -19,7 +19,7 @@ export default {
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
baseQueryParams: {
createBy: 'duxinkuguan',
diff --git a/klp-ui/src/views/wms/report/zinc_.vue b/klp-ui/src/views/wms/report/zinc_.vue
index 2bf91697..478ddaab 100644
--- a/klp-ui/src/views/wms/report/zinc_.vue
+++ b/klp-ui/src/views/wms/report/zinc_.vue
@@ -17,7 +17,7 @@
return {
actionTypes: [501, 120],
actionQueryParams: {
- updateBy: 'duxinkuguan'
+ createBy: 'duxinkuguan'
},
}
}