diff --git a/ruoyi-fastapi-backend/module_admin/controller/warehouse_sample_controller.py b/ruoyi-fastapi-backend/module_admin/controller/warehouse_sample_controller.py
index 22bb51d..c7fa713 100644
--- a/ruoyi-fastapi-backend/module_admin/controller/warehouse_sample_controller.py
+++ b/ruoyi-fastapi-backend/module_admin/controller/warehouse_sample_controller.py
@@ -28,6 +28,9 @@ async def get_warehouse_sample_list(
"""
获取样品列表
"""
+ # 添加日志
+ print(f"DEBUG: 样品列表查询参数 - receipt_id={query_object.receipt_id}, receipt_no={query_object.receipt_no}")
+
sample_list = await WarehouseSampleService.get_sample_list(query_db, query_object, is_page=True)
logger.info('获取成功')
return ResponseUtil.success(dict_content=sample_list)
diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/warehouse_sample_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/warehouse_sample_vo.py
index b4ed7e1..2cc89b1 100644
--- a/ruoyi-fastapi-backend/module_admin/entity/vo/warehouse_sample_vo.py
+++ b/ruoyi-fastapi-backend/module_admin/entity/vo/warehouse_sample_vo.py
@@ -49,12 +49,12 @@ class WarehouseSamplePageQueryModel(BaseModel):
page_size: int = Field(default=10, description='每页记录数')
@classmethod
- def as_query(cls, page_num: int = 1, page_size: int = 10, receipt_id: int = None,
- receipt_no: str = None, sample_model: str = None, sample_sn: str = None,
- external_status: str = None, status: str = None):
- return cls(pageNum=page_num, pageSize=page_size, receiptId=receipt_id,
- receiptNo=receipt_no, sampleModel=sample_model, sampleSn=sample_sn,
- externalStatus=external_status, status=status)
+ def as_query(cls, page_num: int = 1, page_size: int = 10, receiptId: Optional[int] = None,
+ receiptNo: Optional[str] = None, sampleModel: Optional[str] = None, sampleSn: Optional[str] = None,
+ externalStatus: Optional[str] = None, status: Optional[str] = None):
+ return cls(pageNum=page_num, pageSize=page_size, receiptId=receiptId,
+ receiptNo=receiptNo, sampleModel=sampleModel, sampleSn=sampleSn,
+ externalStatus=externalStatus, status=status)
class AddWarehouseSampleModel(WarehouseSampleModel):
diff --git a/ruoyi-fastapi-backend/module_admin/service/warehouse_receipt_service.py b/ruoyi-fastapi-backend/module_admin/service/warehouse_receipt_service.py
index e551ae8..6122790 100644
--- a/ruoyi-fastapi-backend/module_admin/service/warehouse_receipt_service.py
+++ b/ruoyi-fastapi-backend/module_admin/service/warehouse_receipt_service.py
@@ -58,8 +58,18 @@ class WarehouseReceiptService:
# 获取样品列表
from module_admin.entity.vo.warehouse_sample_vo import WarehouseSamplePageQueryModel
sample_query = WarehouseSamplePageQueryModel(receipt_id=receipt.receipt_id, page_num=1, page_size=1000)
+
+ # 添加日志
+ print(f"DEBUG: 查询入库单 {receipt_id} 的样品,receipt.receipt_id={receipt.receipt_id}")
+
samples = await WarehouseSampleDao.get_sample_list(db, sample_query, is_page=False)
+ # 添加日志
+ print(f"DEBUG: 查询到 {len(samples) if samples else 0} 个样品")
+ if samples:
+ for sample in samples[:3]: # 只打印前3个
+ print(f"DEBUG: 样品 ID={sample.sample_id}, receipt_id={sample.receipt_id}, SN={sample.sample_sn}")
+
# 转换样品列表
samples_list = [CamelCaseUtil.transform_result(sample) for sample in samples] if samples else []
receipt_dict['samples'] = samples_list
diff --git a/ruoyi-fastapi-frontend/src/views/warehouse/receipt/index.vue b/ruoyi-fastapi-frontend/src/views/warehouse/receipt/index.vue
index 0363466..cd431b3 100644
--- a/ruoyi-fastapi-frontend/src/views/warehouse/receipt/index.vue
+++ b/ruoyi-fastapi-frontend/src/views/warehouse/receipt/index.vue
@@ -240,7 +240,14 @@
-
+
@@ -250,7 +257,14 @@
-
+
@@ -553,6 +567,70 @@ export default {
/** 删除样品 */
handleDeleteSample(index) {
this.form.samples.splice(index, 1);
+ },
+ /** 查询样品型号建议(用于入库单编辑) */
+ async querySampleModelForReceipt(queryString, cb) {
+ try {
+ // 从后端获取所有样品数据
+ const { listSample } = await import("@/api/warehouse/sample");
+ const response = await listSample({ pageNum: 1, pageSize: 1000 });
+ const allSamples = response.rows || [];
+
+ // 提取不重复的样品型号
+ const models = [...new Set(
+ allSamples
+ .map(item => item.sampleModel)
+ .filter(model => model && model.trim() !== '')
+ )];
+
+ // 转换为 autocomplete 需要的格式
+ const suggestions = models.map(model => ({ value: model }));
+
+ // 如果有输入内容,进行模糊匹配(不区分大小写)
+ const results = queryString
+ ? suggestions.filter(item =>
+ item.value.toLowerCase().includes(queryString.toLowerCase())
+ )
+ : suggestions;
+
+ // 限制返回最多20项
+ cb(results.slice(0, 20));
+ } catch (error) {
+ console.error('查询样品型号失败:', error);
+ cb([]);
+ }
+ },
+ /** 查询硬件版本号建议(用于入库单编辑) */
+ async queryHardwareVersionForReceipt(queryString, cb) {
+ try {
+ // 从后端获取所有样品数据
+ const { listSample } = await import("@/api/warehouse/sample");
+ const response = await listSample({ pageNum: 1, pageSize: 1000 });
+ const allSamples = response.rows || [];
+
+ // 提取不重复的硬件版本号
+ const versions = [...new Set(
+ allSamples
+ .map(item => item.hardwareVersion)
+ .filter(version => version && version.trim() !== '')
+ )];
+
+ // 转换为 autocomplete 需要的格式
+ const suggestions = versions.map(version => ({ value: version }));
+
+ // 如果有输入内容,进行模糊匹配(不区分大小写)
+ const results = queryString
+ ? suggestions.filter(item =>
+ item.value.toLowerCase().includes(queryString.toLowerCase())
+ )
+ : suggestions;
+
+ // 限制返回最多20项
+ cb(results.slice(0, 20));
+ } catch (error) {
+ console.error('查询硬件版本号失败:', error);
+ cb([]);
+ }
}
}
};