diff --git a/apps/hand-factory/components/panels/code/apart.vue b/apps/hand-factory/components/panels/code/apart.vue
index d318bac..e2bea94 100644
--- a/apps/hand-factory/components/panels/code/apart.vue
+++ b/apps/hand-factory/components/panels/code/apart.vue
@@ -117,8 +117,22 @@
+
+
+ 选择原材料
+
+
+ {{ item.rawMaterialName || '请选择原材料' }}
+
+ ▼
+
+
+
- 毛重 (kg)
+ 毛重 (吨)
- 净重 (kg)
+ 净重 (吨)
+
+
+
+
+
@@ -225,6 +271,7 @@ import { getGenerateRecord } from '@/api/wms/code.js'
import { updateMaterialCoil, getMaterialCoil, getMaterialCoilTrace } from '@/api/wms/coil.js'
import { listWarehouse } from '@/api/wms/warehouse.js'
import { listProduct } from '@/api/wms/product.js'
+import { listRawMaterial } from '@/api/wms/rawMaterial.js'
export default {
data() {
@@ -233,39 +280,50 @@ export default {
coilId: undefined,
hasMergeSplit: 1 // 1表示分卷
},
- coilDetail: {},
- splitCoils: [
- {
- currentCoilNo: '',
- team: '',
- hasMergeSplit: 1,
- warehouseId: undefined,
- warehouseName: '',
- warehouseKeyword: '',
- filteredWarehouses: [],
- showWarehouseList: false,
- grossWeight: '',
- netWeight: ''
- },
- {
- currentCoilNo: '',
- team: '',
- hasMergeSplit: 1,
+ coilDetail: {},
+ splitCoils: [
+ {
+ currentCoilNo: '',
+ team: '',
+ hasMergeSplit: 1,
+ warehouseId: undefined,
+ warehouseName: '',
+ warehouseKeyword: '',
+ filteredWarehouses: [],
+ showWarehouseList: false,
+ itemType: '',
+ itemId: undefined,
+ productName: '',
+ rawMaterialName: '',
+ grossWeight: '',
+ netWeight: ''
+ },
+ {
+ currentCoilNo: '',
+ team: '',
+ hasMergeSplit: 1,
warehouseId: undefined,
- warehouseName: '',
- warehouseKeyword: '',
- filteredWarehouses: [],
- showWarehouseList: false,
- grossWeight: '',
- netWeight: ''
- }
- ],
+ warehouseName: '',
+ warehouseKeyword: '',
+ filteredWarehouses: [],
+ showWarehouseList: false,
+ itemType: '',
+ itemId: undefined,
+ productName: '',
+ rawMaterialName: '',
+ grossWeight: '',
+ netWeight: ''
+ }
+ ],
warehouses: [],
warehouseSearchKeyword: '',
filteredWarehousesInPicker: [],
products: [], // 产品列表
productSearchKeyword: '',
filteredProductsInPicker: [],
+ rawMaterials: [], // 原材料列表
+ rawMaterialSearchKeyword: '',
+ filteredRawMaterialsInPicker: [],
currentPickerItemIndex: -1,
loading: false
}
@@ -279,10 +337,14 @@ export default {
onLoad() {
this.loadWarehouses();
+ this.loadProducts();
+ this.loadRawMaterials();
},
mounted() {
this.loadWarehouses();
+ this.loadProducts();
+ this.loadRawMaterials();
},
methods: {
@@ -326,6 +388,24 @@ export default {
}
},
+ // 加载原材料列表
+ async loadRawMaterials() {
+ console.log('开始加载原材料列表...');
+ try {
+ const res = await listRawMaterial({ pageNum: 1, pageSize: 1000 });
+ console.log("原材料返回值", res);
+ if (res.code === 200) {
+ this.rawMaterials = res.rows || res.data || [];
+ this.filteredRawMaterialsInPicker = this.rawMaterials;
+ console.log('原材料加载成功,数量:', this.rawMaterials.length);
+ } else {
+ console.error('原材料加载失败:', res.msg);
+ }
+ } catch (err) {
+ console.error('加载原材料异常:', err);
+ }
+ },
+
// 过滤库区(在选择器中)
filterWarehousesInPicker() {
const keyword = this.warehouseSearchKeyword.trim().toLowerCase();
@@ -344,16 +424,23 @@ export default {
if (this.currentPickerItemIndex === -1) return;
const item = this.splitCoils[this.currentPickerItemIndex];
- item.warehouseId = warehouse.warehouseId;
- item.warehouseName = warehouse.warehouseName;
+ const currentIndex = this.currentPickerItemIndex;
+
+ // 使用 $set 确保响应式更新
+ this.$set(item, 'warehouseId', warehouse.warehouseId);
+ this.$set(item, 'warehouseName', warehouse.warehouseName);
+
this.closeWarehousePickerForItem();
- // 检查是否选择了成品库区
- if (warehouse.warehouseName && warehouse.warehouseName.includes('成品')) {
- // 加载产品列表
- await this.loadProducts();
- // 弹出产品选择框
- this.showProductPickerForItem(this.currentPickerItemIndex);
+ // 根据库区ID判断类型:999为成品库,其他为原材料库
+ if (warehouse.warehouseId === 999) {
+ // 成品库,显示产品选择器
+ this.$set(item, 'itemType', 'product');
+ this.showProductPickerForItem(currentIndex);
+ } else {
+ // 其他库区,显示原材料选择器
+ this.$set(item, 'itemType', 'raw_material');
+ this.showRawMaterialPickerForItem(currentIndex);
}
},
@@ -413,6 +500,48 @@ export default {
this.closeProductPickerForItem();
},
+ // 显示原材料选择器(为特定分卷)
+ showRawMaterialPickerForItem(index) {
+ this.currentPickerItemIndex = index;
+ this.rawMaterialSearchKeyword = '';
+ this.filteredRawMaterialsInPicker = [...this.rawMaterials];
+ this.$refs.rawMaterialPopup.open();
+ },
+
+ // 关闭原材料选择器
+ closeRawMaterialPickerForItem() {
+ this.$refs.rawMaterialPopup.close();
+ this.currentPickerItemIndex = -1;
+ },
+
+ // 过滤原材料(在选择器中)
+ filterRawMaterialsInPicker() {
+ const keyword = this.rawMaterialSearchKeyword.trim().toLowerCase();
+ if (!keyword) {
+ this.filteredRawMaterialsInPicker = [...this.rawMaterials];
+ } else {
+ this.filteredRawMaterialsInPicker = this.rawMaterials.filter(material => {
+ const name = (material.rawMaterialName || '').toLowerCase();
+ return name.includes(keyword);
+ });
+ }
+ },
+
+ // 从选择器中选择原材料
+ selectRawMaterialFromPicker(material) {
+ if (this.currentPickerItemIndex === -1) return;
+
+ const item = this.splitCoils[this.currentPickerItemIndex];
+ item.itemId = material.rawMaterialId;
+ item.itemType = 'raw_material';
+ item.rawMaterialName = material.rawMaterialName; // 保存原材料名称用于显示
+ uni.showToast({
+ title: `分卷 ${this.currentPickerItemIndex + 1} 已选择原材料:${material.rawMaterialName}`,
+ icon: 'success'
+ });
+ this.closeRawMaterialPickerForItem();
+ },
+
// 过滤库区(为特定分卷)
filterWarehousesForItem(index) {
console.log(`分卷页面过滤库区,分卷${index + 1},关键词:`, this.splitCoils[index].warehouseKeyword);
@@ -474,17 +603,6 @@ export default {
}
},
- // 从选择器中选择库区
- selectWarehouseFromPicker(warehouse) {
- if (this.currentPickerItemIndex !== -1) {
- const item = this.splitCoils[this.currentPickerItemIndex];
- item.warehouseId = warehouse.warehouseId;
- item.warehouseName = warehouse.warehouseName;
- item.warehouseKeyword = warehouse.warehouseName;
- }
- this.closeWarehousePickerForItem();
- },
-
// 扫码
handleScan() {
uni.scanCode({
@@ -594,6 +712,10 @@ export default {
warehouseKeyword: '',
filteredWarehouses: this.warehouses,
showWarehouseList: false,
+ itemType: '',
+ itemId: undefined,
+ productName: '',
+ rawMaterialName: '',
grossWeight: '',
netWeight: ''
});
@@ -614,33 +736,41 @@ export default {
coilId: undefined,
hasMergeSplit: 1
};
- this.coilDetail = {};
- this.splitCoils = [
- {
- currentCoilNo: '',
- team: '',
- hasMergeSplit: 1,
- warehouseId: undefined,
- warehouseName: '',
- warehouseKeyword: '',
- filteredWarehouses: this.warehouses,
- showWarehouseList: false,
- grossWeight: '',
- netWeight: ''
- },
- {
- currentCoilNo: '',
- team: '',
- hasMergeSplit: 1,
- warehouseId: undefined,
- warehouseName: '',
- warehouseKeyword: '',
- filteredWarehouses: this.warehouses,
- showWarehouseList: false,
- grossWeight: '',
- netWeight: ''
- }
- ];
+ this.coilDetail = {};
+ this.splitCoils = [
+ {
+ currentCoilNo: '',
+ team: '',
+ hasMergeSplit: 1,
+ warehouseId: undefined,
+ warehouseName: '',
+ warehouseKeyword: '',
+ filteredWarehouses: this.warehouses,
+ showWarehouseList: false,
+ itemType: '',
+ itemId: undefined,
+ productName: '',
+ rawMaterialName: '',
+ grossWeight: '',
+ netWeight: ''
+ },
+ {
+ currentCoilNo: '',
+ team: '',
+ hasMergeSplit: 1,
+ warehouseId: undefined,
+ warehouseName: '',
+ warehouseKeyword: '',
+ filteredWarehouses: this.warehouses,
+ showWarehouseList: false,
+ itemType: '',
+ itemId: undefined,
+ productName: '',
+ rawMaterialName: '',
+ grossWeight: '',
+ netWeight: ''
+ }
+ ];
}
}
});
diff --git a/apps/hand-factory/components/panels/code/merge.vue b/apps/hand-factory/components/panels/code/merge.vue
index aa1a8fb..371cd13 100644
--- a/apps/hand-factory/components/panels/code/merge.vue
+++ b/apps/hand-factory/components/panels/code/merge.vue
@@ -97,9 +97,23 @@
+
+
+ 选择原材料
+
+
+ {{ selectedRawMaterialName || '请选择原材料' }}
+
+ ▼
+
+
+
- 毛重 (kg)
+ 毛重 (吨)
- 净重 (kg)
+ 净重 (吨)
+
+
+
+
+
@@ -210,6 +256,7 @@ import { getGenerateRecord } from '@/api/wms/code.js'
import { updateMaterialCoil, getMaterialCoil, getMaterialCoilTrace } from '@/api/wms/coil.js'
import { listWarehouse } from '@/api/wms/warehouse.js'
import { listProduct } from '@/api/wms/product.js'
+import { listRawMaterial } from '@/api/wms/rawMaterial.js'
export default {
data() {
@@ -228,9 +275,13 @@ export default {
products: [], // 产品列表
productSearchKeyword: '',
filteredProductsInPicker: [],
+ rawMaterials: [], // 原材料列表
+ rawMaterialSearchKeyword: '',
+ filteredRawMaterialsInPicker: [],
itemType: '', // 合卷后的物品类型
itemId: undefined, // 合卷后的物品ID
selectedProductName: '', // 已选择的产品名称
+ selectedRawMaterialName: '', // 已选择的原材料名称
grossWeight: '',
netWeight: '',
loading: false
@@ -240,10 +291,14 @@ export default {
onLoad() {
this.loadWarehouses();
+ this.loadProducts();
+ this.loadRawMaterials();
},
mounted() {
this.loadWarehouses();
+ this.loadProducts();
+ this.loadRawMaterials();
},
computed: {
@@ -289,6 +344,24 @@ export default {
}
},
+ // 加载原材料列表
+ async loadRawMaterials() {
+ console.log('开始加载原材料列表...');
+ try {
+ const res = await listRawMaterial({ pageNum: 1, pageSize: 1000 });
+ console.log("原材料返回值", res);
+ if (res.code === 200) {
+ this.rawMaterials = res.rows || res.data || [];
+ this.filteredRawMaterialsInPicker = this.rawMaterials;
+ console.log('原材料加载成功,数量:', this.rawMaterials.length);
+ } else {
+ console.error('原材料加载失败:', res.msg);
+ }
+ } catch (err) {
+ console.error('加载原材料异常:', err);
+ }
+ },
+
// 显示产品选择器
showProductPicker() {
this.productSearchKeyword = '';
@@ -326,6 +399,43 @@ export default {
this.closeProductPicker();
},
+ // 显示原材料选择器
+ showRawMaterialPicker() {
+ this.rawMaterialSearchKeyword = '';
+ this.filteredRawMaterialsInPicker = [...this.rawMaterials];
+ this.$refs.rawMaterialPopup.open();
+ },
+
+ // 关闭原材料选择器
+ closeRawMaterialPicker() {
+ this.$refs.rawMaterialPopup.close();
+ },
+
+ // 过滤原材料(在选择器中)
+ filterRawMaterialsInPicker() {
+ const keyword = this.rawMaterialSearchKeyword.trim().toLowerCase();
+ if (!keyword) {
+ this.filteredRawMaterialsInPicker = [...this.rawMaterials];
+ } else {
+ this.filteredRawMaterialsInPicker = this.rawMaterials.filter(material => {
+ const name = (material.rawMaterialName || '').toLowerCase();
+ return name.includes(keyword);
+ });
+ }
+ },
+
+ // 从选择器中选择原材料
+ selectRawMaterialFromPicker(material) {
+ this.itemId = material.rawMaterialId;
+ this.itemType = 'raw_material';
+ this.selectedRawMaterialName = material.rawMaterialName;
+ uni.showToast({
+ title: `已选择原材料:${material.rawMaterialName}`,
+ icon: 'success'
+ });
+ this.closeRawMaterialPicker();
+ },
+
// 过滤库区
filterWarehouses() {
console.log('合卷页面过滤库区,关键词:', this.warehouseKeyword);
@@ -388,14 +498,15 @@ export default {
this.warehouseKeyword = warehouse.warehouseName;
this.closeWarehousePicker();
- // 检查是否选择了成品库区
- if (warehouse.warehouseName && warehouse.warehouseName.includes('成品')) {
- // 切换为产品类型
+ // 根据库区ID判断类型:999为成品库,其他为原材料库
+ if (warehouse.warehouseId === 999) {
+ // 成品库,显示产品选择器
this.itemType = 'product';
- // 加载产品列表
- await this.loadProducts();
- // 弹出产品选择框
this.showProductPicker();
+ } else {
+ // 其他库区,显示原材料选择器
+ this.itemType = 'raw_material';
+ this.showRawMaterialPicker();
}
},
@@ -528,6 +639,7 @@ export default {
this.itemType = '';
this.itemId = undefined;
this.selectedProductName = '';
+ this.selectedRawMaterialName = '';
this.grossWeight = '';
this.netWeight = '';
this.showWarehouseList = false;
diff --git a/apps/hand-factory/components/panels/code/typing.vue b/apps/hand-factory/components/panels/code/typing.vue
index d7138ac..6344038 100644
--- a/apps/hand-factory/components/panels/code/typing.vue
+++ b/apps/hand-factory/components/panels/code/typing.vue
@@ -114,6 +114,21 @@
+
+
+ 选择原材料
+
+
+ {{ selectedRawMaterialName || '请选择原材料' }}
+
+ ▼
+
+
+
毛重 (吨)
@@ -224,6 +239,38 @@
+
+
+
+
+