as_query 方法的参数类型定义有问题。receipt_id: int = None 应该是 receipt_id: Optional[int] = None
parent
44522f2572
commit
49a9cfc035
|
|
@ -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)
|
sample_list = await WarehouseSampleService.get_sample_list(query_db, query_object, is_page=True)
|
||||||
logger.info('获取成功')
|
logger.info('获取成功')
|
||||||
return ResponseUtil.success(dict_content=sample_list)
|
return ResponseUtil.success(dict_content=sample_list)
|
||||||
|
|
|
||||||
|
|
@ -49,12 +49,12 @@ class WarehouseSamplePageQueryModel(BaseModel):
|
||||||
page_size: int = Field(default=10, description='每页记录数')
|
page_size: int = Field(default=10, description='每页记录数')
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def as_query(cls, page_num: int = 1, page_size: int = 10, receipt_id: int = None,
|
def as_query(cls, page_num: int = 1, page_size: int = 10, receiptId: Optional[int] = None,
|
||||||
receipt_no: str = None, sample_model: str = None, sample_sn: str = None,
|
receiptNo: Optional[str] = None, sampleModel: Optional[str] = None, sampleSn: Optional[str] = None,
|
||||||
external_status: str = None, status: str = None):
|
externalStatus: Optional[str] = None, status: Optional[str] = None):
|
||||||
return cls(pageNum=page_num, pageSize=page_size, receiptId=receipt_id,
|
return cls(pageNum=page_num, pageSize=page_size, receiptId=receiptId,
|
||||||
receiptNo=receipt_no, sampleModel=sample_model, sampleSn=sample_sn,
|
receiptNo=receiptNo, sampleModel=sampleModel, sampleSn=sampleSn,
|
||||||
externalStatus=external_status, status=status)
|
externalStatus=externalStatus, status=status)
|
||||||
|
|
||||||
|
|
||||||
class AddWarehouseSampleModel(WarehouseSampleModel):
|
class AddWarehouseSampleModel(WarehouseSampleModel):
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,18 @@ class WarehouseReceiptService:
|
||||||
# 获取样品列表
|
# 获取样品列表
|
||||||
from module_admin.entity.vo.warehouse_sample_vo import WarehouseSamplePageQueryModel
|
from module_admin.entity.vo.warehouse_sample_vo import WarehouseSamplePageQueryModel
|
||||||
sample_query = WarehouseSamplePageQueryModel(receipt_id=receipt.receipt_id, page_num=1, page_size=1000)
|
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)
|
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 []
|
samples_list = [CamelCaseUtil.transform_result(sample) for sample in samples] if samples else []
|
||||||
receipt_dict['samples'] = samples_list
|
receipt_dict['samples'] = samples_list
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,14 @@
|
||||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||||
<el-table-column label="样品型号" width="120">
|
<el-table-column label="样品型号" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.sampleModel" placeholder="样品型号" size="small" />
|
<el-autocomplete
|
||||||
|
v-model="scope.row.sampleModel"
|
||||||
|
:fetch-suggestions="querySampleModelForReceipt"
|
||||||
|
placeholder="样品型号"
|
||||||
|
size="small"
|
||||||
|
style="width: 100%"
|
||||||
|
:trigger-on-focus="false"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="样品SN" width="120">
|
<el-table-column label="样品SN" width="120">
|
||||||
|
|
@ -250,7 +257,14 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="硬件版本号" width="120">
|
<el-table-column label="硬件版本号" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input v-model="scope.row.hardwareVersion" placeholder="硬件版本号" size="small" />
|
<el-autocomplete
|
||||||
|
v-model="scope.row.hardwareVersion"
|
||||||
|
:fetch-suggestions="queryHardwareVersionForReceipt"
|
||||||
|
placeholder="硬件版本号"
|
||||||
|
size="small"
|
||||||
|
style="width: 100%"
|
||||||
|
:trigger-on-focus="false"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="样品外观状态" width="120">
|
<el-table-column label="样品外观状态" width="120">
|
||||||
|
|
@ -553,6 +567,70 @@ export default {
|
||||||
/** 删除样品 */
|
/** 删除样品 */
|
||||||
handleDeleteSample(index) {
|
handleDeleteSample(index) {
|
||||||
this.form.samples.splice(index, 1);
|
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([]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue