fix(client): 修复导入静默失败问题

捕获所有异常(非仅 DioException),兼容 ImportProducts 响应格式(无 total/skipped),
确保任何错误都在 UI 上显示而不是静默消失。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-04-30 19:39:39 +08:00
parent 6923a0585c
commit 97ca4c7f72
@@ -1514,19 +1514,25 @@ class _BatchImportWidgetState extends ConsumerState<_BatchImportWidget> {
'file': MultipartFile.fromBytes(bytes, filename: slot.file!.name),
});
final resp = await dio.post(slot.endpoint, data: formData);
final data = resp.data as Map<String, dynamic>;
final data = (resp.data is Map) ? resp.data as Map<String, dynamic> : <String, dynamic>{};
if (mounted) setState(() {
slot.success = true;
slot.total = (data['total'] ?? 0) as int;
slot.total = (data['total'] ?? data['imported'] ?? 0) as int;
slot.imported = (data['imported'] ?? 0) as int;
slot.skipped = (data['skipped'] ?? 0) as int;
});
} on DioException catch (e) {
final msg = (e.response?.data as Map?)?['error'] ?? e.message ?? '未知错误';
final raw = e.response?.data;
final msg = (raw is Map ? raw['error'] : null) ?? e.message ?? '未知错误';
if (mounted) setState(() {
slot.success = false;
slot.error = msg.toString();
});
} catch (e) {
if (mounted) setState(() {
slot.success = false;
slot.error = e.toString();
});
}
}