diff --git a/frontend/src/pages/ConsumableManagement.jsx b/frontend/src/pages/ConsumableManagement.jsx
index 74b3373..bdb4867 100644
--- a/frontend/src/pages/ConsumableManagement.jsx
+++ b/frontend/src/pages/ConsumableManagement.jsx
@@ -103,6 +103,7 @@ const animations = {
function ConsumableManagement() {
const [consumables, setConsumables] = useState([]);
+ const [allConsumablesForScan, setAllConsumablesForScan] = useState([]);
const [loading, setLoading] = useState(true);
const [modalVisible, setModalVisible] = useState(false);
const [editingConsumable, setEditingConsumable] = useState(null);
@@ -182,6 +183,8 @@ function ConsumableManagement() {
const data = response.data.consumables || [];
setConsumables(data);
setPagination(prev => ({ ...prev, current: page, pageSize, total: response.data.total }));
+ // 同步刷新扫码入库用的全量列表
+ fetchAllConsumablesForScan();
} catch (error) {
message.error('获取耗材列表失败');
console.error('获取耗材列表失败:', error);
@@ -189,7 +192,7 @@ function ConsumableManagement() {
setLoading(false);
}
},
- [debouncedKeyword, category, status]
+ [debouncedKeyword, category, status, fetchAllConsumablesForScan]
);
const fetchCategories = useCallback(async () => {
@@ -201,10 +204,23 @@ function ConsumableManagement() {
}
}, []);
+ // 获取全部耗材(用于扫码入库下拉框,不受分页限制)
+ const fetchAllConsumablesForScan = useCallback(async () => {
+ try {
+ const response = await axios.get('/api/consumables', {
+ params: { page: 1, pageSize: 9999, status: 'active' },
+ });
+ setAllConsumablesForScan(response.data.consumables || []);
+ } catch (error) {
+ console.error('获取全部耗材失败:', error);
+ }
+ }, []);
+
useEffect(() => {
fetchConsumables();
fetchCategories();
- }, [fetchConsumables, fetchCategories]);
+ fetchAllConsumablesForScan();
+ }, [fetchConsumables, fetchCategories, fetchAllConsumablesForScan]);
const showModal = useCallback(
(consumable = null) => {
@@ -3845,15 +3861,13 @@ function ConsumableManagement() {
placeholder="选择要入库的耗材"
style={{ width: '100%' }}
showSearch
- optionFilterProp="children"
- filterOption={(input, option) =>
- option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
- }
+ optionFilterProp="label"
value={selectedScanInConsumable}
onChange={value => setSelectedScanInConsumable(value)}
+ filterOption={true}
>
- {consumables.map(item => (
-
))}