修复盘点失败和机柜统计不准确的问题

This commit is contained in:
root
2026-06-09 16:02:09 +08:00
parent 8c9e82c8a7
commit e7a0cbb9d1
5 changed files with 197 additions and 68 deletions
+11 -11
View File
@@ -75,8 +75,8 @@ const InventoryTaskExecution = () => {
setLoading(true);
try {
const res = await api.get(`/inventory/plans/${planId}`);
setPlan(res.data.plan);
setTasks(res.data.tasks || []);
setPlan(res.plan);
setTasks(res.tasks || []);
} catch (error) {
message.error('获取盘点计划失败');
} finally {
@@ -87,9 +87,9 @@ const InventoryTaskExecution = () => {
const fetchTaskRecords = async taskId => {
try {
const res = await api.get(`/inventory/tasks/${taskId}`);
setCurrentTask(res.data.task);
setRecords(res.data.records || []);
setRecordPagination(prev => ({ ...prev, total: res.data.records?.length || 0, current: 1 }));
setCurrentTask(res.task);
setRecords(res.records || []);
setRecordPagination(prev => ({ ...prev, total: res.records?.length || 0, current: 1 }));
setSelectedRowKeys([]);
setActiveTab('2');
} catch (error) {
@@ -378,7 +378,7 @@ const InventoryTaskExecution = () => {
const fetchDeviceFields = async () => {
try {
const res = await api.get('/deviceFields');
const sortedFields = res.data.sort((a, b) => a.order - b.order);
const sortedFields = res.sort((a, b) => a.order - b.order);
setDeviceFields(sortedFields);
} catch (error) {
console.error('获取字段配置失败:', error);
@@ -389,7 +389,7 @@ const InventoryTaskExecution = () => {
const fetchRooms = async () => {
try {
const res = await api.get('/rooms');
setRooms(res.data.rooms || res.data || []);
setRooms(res.rooms || res || []);
} catch (error) {
console.error('获取机房列表失败', error);
}
@@ -398,7 +398,7 @@ const InventoryTaskExecution = () => {
const fetchRacks = async () => {
try {
const res = await api.get('/racks', { params: { pageSize: 1000 } });
setRacks(res.data.racks || res.data || []);
setRacks(res.racks || res || []);
} catch (error) {
console.error('获取机柜列表失败', error);
}
@@ -644,9 +644,9 @@ const InventoryTaskExecution = () => {
quickAddForm.resetFields();
setScanResult({
success: true,
message: `设备 "${res.data.pendingDevice.deviceName}" 已暂存,请前往「暂存设备」页面完善信息后同步到设备管理`,
pendingDevice: res.data.pendingDevice,
sn: res.data.pendingDevice.serialNumber,
message: `设备 "${res.pendingDevice.deviceName}" 已暂存,请前往「暂存设备」页面完善信息后同步到设备管理`,
pendingDevice: res.pendingDevice,
sn: res.pendingDevice.serialNumber,
});
} catch (error) {
message.error(error.response?.data?.error || '暂存设备失败');
+24 -26
View File
@@ -310,6 +310,7 @@ function RackManagement() {
const debouncedSearchKeyword = useDebounce(searchKeyword, 300);
const [statusFilter, setStatusFilter] = useState('all');
const [roomFilter, setRoomFilter] = useState('all');
const [stats, setStats] = useState({ total: 0, active: 0, totalPower: 0, totalDevices: 0 });
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
@@ -324,18 +325,28 @@ function RackManagement() {
async (page = 1, pageSize = 10) => {
try {
setLoading(true);
const response = await api.get('/racks', {
params: {
page,
pageSize,
roomId: roomFilter,
status: statusFilter,
keyword: debouncedSearchKeyword || undefined,
},
});
const { racks: data, total } = response;
const [racksRes, statsRes] = await Promise.all([
api.get('/racks', {
params: {
page,
pageSize,
roomId: roomFilter,
status: statusFilter,
keyword: debouncedSearchKeyword || undefined,
},
}),
api.get('/racks/stats', {
params: {
roomId: roomFilter,
status: statusFilter,
keyword: debouncedSearchKeyword || undefined,
},
}),
]);
const { racks: data, total } = racksRes;
setRacks(data);
setPagination(prev => ({ ...prev, current: page, pageSize, total }));
setStats(statsRes);
} catch (error) {
message.error('获取机柜列表失败');
console.error('获取机柜列表失败:', error);
@@ -616,19 +627,6 @@ function RackManagement() {
);
// 后端已过滤,直接使用 racks 数据
const filteredRacks = racks;
const stats = useMemo(
() => ({
total: racks.length,
active: racks.filter(r => r.status === 'active').length,
maintenance: racks.filter(r => r.status === 'maintenance').length,
totalPower: racks.reduce((sum, r) => sum + (r.currentPower || 0), 0),
totalDevices: racks.reduce((sum, r) => sum + (r.Devices?.length || 0), 0),
}),
[racks]
);
const tableColumns = [
{
title: '机柜信息',
@@ -967,7 +965,7 @@ function RackManagement() {
{viewMode === 'table' ? (
<Table
columns={tableColumns}
dataSource={filteredRacks}
dataSource={racks}
rowKey="rackId"
loading={loading}
rowSelection={rowSelection}
@@ -978,8 +976,8 @@ function RackManagement() {
/>
) : (
<Row gutter={[16, 16]}>
{filteredRacks.length > 0 ? (
filteredRacks.map(rack => (
{racks.length > 0 ? (
racks.map(rack => (
<Col xs={24} sm={12} lg={8} xl={6} key={rack.rackId}>
<RackCard
rack={rack}