diff --git a/src/api/mes/sparepart.js b/src/api/mes/sparepart.js
index 7f7bf50..25b0578 100644
--- a/src/api/mes/sparepart.js
+++ b/src/api/mes/sparepart.js
@@ -91,3 +91,11 @@ export function getWarehouseSimpleList() {
method: 'get'
})
}
+
+// 供应商列表
+export function getSupplierSimpleList() {
+ return request({
+ url: '/admin-api/erp/supplier/simple-list',
+ method: 'get'
+ })
+}
diff --git a/src/pages.json b/src/pages.json
index d7c3c62..a12622d 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -402,6 +402,13 @@
"navigationStyle": "custom"
}
},
+ {
+ "path": "sparepartInbound/supplierSelect",
+ "style": {
+ "navigationBarTitleText": "选择供应商",
+ "navigationStyle": "custom"
+ }
+ },
{
"path": "productInbound/index",
"style": {
diff --git a/src/pages_function/pages/materialInbound/create.vue b/src/pages_function/pages/materialInbound/create.vue
index 746bad0..fba5ae2 100644
--- a/src/pages_function/pages/materialInbound/create.vue
+++ b/src/pages_function/pages/materialInbound/create.vue
@@ -207,7 +207,7 @@ async function handleSubmit() {
let totalCount = 0
const items = itemList.value.map(item => {
totalCount += item.count || 0
- return { warehouseId: item.warehouseId, areaId: item.areaId, productId: item.productId, productName: item.productName, productBarCode: item.productBarCode, productUnitName: item.productUnitName, purchaseUnitName: item.purchaseUnitName, purchaseUnitConvertQuantity: item.purchaseUnitConvertQuantity, inputCount: item.inputCount, count: item.count }
+ return { warehouseId: item.warehouseId, areaId: item.areaId, productId: item.productId, productName: item.productName, productBarCode: item.productBarCode, productUnitName: item.productUnitName, purchaseUnitName: item.purchaseUnitName, purchaseUnitConvertQuantity: item.purchaseUnitConvertQuantity, inputCount: item.inputCount, count: item.count, supplierId: item.supplierId, supplierName: item.supplierName }
})
const now = new Date()
diff --git a/src/pages_function/pages/materialInbound/materialConfirm.vue b/src/pages_function/pages/materialInbound/materialConfirm.vue
index 9c4ed65..f799e39 100644
--- a/src/pages_function/pages/materialInbound/materialConfirm.vue
+++ b/src/pages_function/pages/materialInbound/materialConfirm.vue
@@ -129,11 +129,12 @@
供应商
-
+
-
- {{ defaultSupplierName || '未配置默认供应商' }}
+
+ {{ currentSupplierName || '点击选择供应商' }}
+ ›
@@ -191,6 +192,12 @@ const defaultSupplierName = computed(() => {
return firstDefault?.supplierName || ''
})
+const selectedSupplierInfo = ref(null)
+const currentSupplierName = computed(() => {
+ if (selectedSupplierInfo.value) return selectedSupplierInfo.value.name
+ return defaultSupplierName.value || ''
+})
+
function textValue(v) {
if (v === 0) return '0'
if (v == null) return '-'
@@ -208,6 +215,19 @@ function stockUnitLabel(item) {
return item.unitName || item.minStockUnitName || '个'
}
+function getDefaultSupplierId(product) {
+ if (!product) return undefined
+ if (product.supplierId || product.supplierName) return product.supplierId
+ const suppliers = Array.isArray(product.suppliers) ? product.suppliers : []
+ const supplier = suppliers.find(s => Number(s?.defaultStatus) === 1) || suppliers[0]
+ if (!supplier) return undefined
+ return supplier.supplierId ?? supplier.id
+}
+
+function openSupplierSelect() {
+ uni.navigateTo({ url: '/pages_function/pages/sparepartInbound/supplierSelect' })
+}
+
function handleCancel() {
uni.navigateBack()
}
@@ -222,6 +242,7 @@ function handleConfirm() {
return
}
+ const defaultSid = getDefaultSupplierId(material.value)
const item = {
productId: material.value.id,
productName: material.value.name || '',
@@ -231,8 +252,8 @@ function handleConfirm() {
purchaseUnitConvertQuantity: Number(material.value.purchaseUnitConvertQuantity) || 1,
inputCount: Number(inboundQty.value),
count: Number(inboundQty.value) * (Number(material.value.purchaseUnitConvertQuantity) || 1),
- supplierId: material.value.defaultSupplierId,
- supplierName: defaultSupplierName.value,
+ supplierId: selectedSupplierInfo.value ? selectedSupplierInfo.value.id : defaultSid,
+ supplierName: currentSupplierName.value,
warehouseId: selectedWarehouse.value.value,
warehouseName: selectedWarehouse.value.label,
areaId: selectedArea.value.value,
@@ -323,6 +344,11 @@ onShow(async () => {
}
}
loadWarehouses()
+ const supplier = getApp().globalData._supplierSelectResult
+ if (supplier) {
+ selectedSupplierInfo.value = supplier
+ getApp().globalData._supplierSelectResult = null
+ }
})
async function loadStockCount() {
@@ -412,6 +438,7 @@ onHide(() => {
.full-dropdown { display: flex; align-items: center; justify-content: space-between; width: 100%; font-size: 28rpx; color: #374151;
.placeholder { color: #9ca3af; }
}
+.click-arrow { font-size: 36rpx; color: #9ca3af; }
.warehouse-area-card { align-items: flex-start; }
.warehouse-area-rows { width: 100%; display: flex; flex-direction: column; gap: 16rpx; }
diff --git a/src/pages_function/pages/sparepartInbound/create.vue b/src/pages_function/pages/sparepartInbound/create.vue
index 4d2df0b..12a6203 100644
--- a/src/pages_function/pages/sparepartInbound/create.vue
+++ b/src/pages_function/pages/sparepartInbound/create.vue
@@ -341,7 +341,9 @@ async function handleSubmit() {
purchaseUnitName: item.purchaseUnitName,
purchaseUnitConvertQuantity: item.purchaseUnitConvertQuantity,
inputCount: item.inputCount,
- count: item.count
+ count: item.count,
+ supplierId: item.supplierId,
+ supplierName: item.supplierName
}
})
diff --git a/src/pages_function/pages/sparepartInbound/sparepartConfirm.vue b/src/pages_function/pages/sparepartInbound/sparepartConfirm.vue
index 35e759a..5db0e4c 100644
--- a/src/pages_function/pages/sparepartInbound/sparepartConfirm.vue
+++ b/src/pages_function/pages/sparepartInbound/sparepartConfirm.vue
@@ -130,11 +130,12 @@
供应商
-
+
-
- {{ defaultSupplierName || '未配置默认供应商' }}
+
+ {{ currentSupplierName || '点击选择供应商' }}
+ ›
@@ -194,6 +195,16 @@ const defaultSupplierName = computed(() => {
return firstDefault?.supplierName || ''
})
+const selectedSupplierInfo = ref(null)
+const currentSupplierName = computed(() => {
+ if (selectedSupplierInfo.value) return selectedSupplierInfo.value.name
+ return defaultSupplierName.value || ''
+})
+
+function openSupplierSelect() {
+ uni.navigateTo({ url: '/pages_function/pages/sparepartInbound/supplierSelect' })
+}
+
function textValue(v) {
if (v === 0) return '0'
if (v == null) return '-'
@@ -211,6 +222,15 @@ function stockUnitLabel(item) {
return item.unitName || item.minStockUnitName || '个'
}
+function getDefaultSupplierId(product) {
+ if (!product) return undefined
+ if (product.supplierId || product.supplierName) return product.supplierId
+ const suppliers = Array.isArray(product.suppliers) ? product.suppliers : []
+ const supplier = suppliers.find(s => Number(s?.defaultStatus) === 1) || suppliers[0]
+ if (!supplier) return undefined
+ return supplier.supplierId ?? supplier.id
+}
+
function handleCancel() {
uni.navigateBack()
}
@@ -230,6 +250,7 @@ function handleConfirm() {
}
// 构建入库项,存入 globalData 列表
+ const defaultSid = getDefaultSupplierId(sparepart.value)
const item = {
// 备件信息
productId: sparepart.value.id,
@@ -242,8 +263,8 @@ function handleConfirm() {
inputCount: Number(inboundQty.value),
count: Number(inboundQty.value) * (Number(sparepart.value.purchaseUnitConvertQuantity) || 1),
// 供应商
- supplierId: sparepart.value.defaultSupplierId,
- supplierName: defaultSupplierName.value,
+ supplierId: selectedSupplierInfo.value ? selectedSupplierInfo.value.id : defaultSid,
+ supplierName: currentSupplierName.value,
// 仓库库区
warehouseId: selectedWarehouse.value.value,
warehouseName: selectedWarehouse.value.label,
@@ -339,6 +360,11 @@ onShow(async () => {
}
}
loadWarehouses()
+ const supplier = getApp().globalData._supplierSelectResult
+ if (supplier) {
+ selectedSupplierInfo.value = supplier
+ getApp().globalData._supplierSelectResult = null
+ }
})
async function loadStockCount() {
@@ -433,6 +459,7 @@ onHide(() => {
.full-dropdown { display: flex; align-items: center; justify-content: space-between; width: 100%; font-size: 28rpx; color: #374151;
.placeholder { color: #9ca3af; }
}
+.click-arrow { font-size: 36rpx; color: #9ca3af; }
.warehouse-area-card { align-items: flex-start; }
.warehouse-area-rows { width: 100%; display: flex; flex-direction: column; gap: 16rpx; }
diff --git a/src/pages_function/pages/sparepartInbound/supplierSelect.vue b/src/pages_function/pages/sparepartInbound/supplierSelect.vue
new file mode 100644
index 0000000..afb6974
--- /dev/null
+++ b/src/pages_function/pages/sparepartInbound/supplierSelect.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ ✕
+
+
+
+
+
+ {{ textValue(item.name) }}
+
+ {{ item.contact }}
+ {{ item.mobile }}
+
+
+
+
+
+ 加载中...
+ 暂无供应商数据
+
+
+
+
+ 确认
+
+
+
+
+