fix: improve error handling in expense form submissions

This commit is contained in:
xyx
2026-07-13 12:16:39 +08:00
parent 619b3b22bd
commit 187e4f2af0

View File

@@ -31,6 +31,11 @@ import { message } from '../../ui/app-message';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const isFormValidationError = (error: unknown) =>
typeof error === 'object'
&& error !== null
&& Array.isArray((error as { errorFields?: unknown }).errorFields);
const ExpensesPage: React.FC = () => { const ExpensesPage: React.FC = () => {
@@ -157,6 +162,7 @@ const ExpensesPage: React.FC = () => {
const handleRoomExpense = async () => { const handleRoomExpense = async () => {
setSaving(true); setSaving(true);
try {
const values = await roomForm.validateFields(); const values = await roomForm.validateFields();
const payload = { const payload = {
roomId: values.roomId, roomId: values.roomId,
@@ -166,7 +172,6 @@ const ExpensesPage: React.FC = () => {
periodEnd: values.period[1].format('YYYY-MM-DD'), periodEnd: values.period[1].format('YYYY-MM-DD'),
description: values.description, description: values.description,
}; };
try {
if (editingRoom) { if (editingRoom) {
await api.put(`/expenses/room/${editingRoom.id}`, payload); await api.put(`/expenses/room/${editingRoom.id}`, payload);
message.success('更新成功'); message.success('更新成功');
@@ -179,7 +184,9 @@ const ExpensesPage: React.FC = () => {
roomForm.resetFields(); roomForm.resetFields();
fetchData(); fetchData();
} catch (e: any) { } catch (e: any) {
if (!isFormValidationError(e)) {
message.error(e?.message || '操作失败'); message.error(e?.message || '操作失败');
}
} finally { } finally {
setSaving(false); setSaving(false);
} }
@@ -187,6 +194,7 @@ const ExpensesPage: React.FC = () => {
const handlePersonalExpense = async () => { const handlePersonalExpense = async () => {
setSaving(true); setSaving(true);
try {
const values = await personalForm.validateFields(); const values = await personalForm.validateFields();
const payload = { const payload = {
studentId: values.studentId, studentId: values.studentId,
@@ -196,7 +204,6 @@ const ExpensesPage: React.FC = () => {
expenseDate: values.expenseDate.format('YYYY-MM-DD'), expenseDate: values.expenseDate.format('YYYY-MM-DD'),
description: values.description, description: values.description,
}; };
try {
if (editingPersonal) { if (editingPersonal) {
await api.put(`/expenses/personal/${editingPersonal.id}`, payload); await api.put(`/expenses/personal/${editingPersonal.id}`, payload);
message.success('更新成功'); message.success('更新成功');
@@ -209,7 +216,9 @@ const ExpensesPage: React.FC = () => {
personalForm.resetFields(); personalForm.resetFields();
fetchData(); fetchData();
} catch (e: any) { } catch (e: any) {
if (!isFormValidationError(e)) {
message.error(e?.message || '操作失败'); message.error(e?.message || '操作失败');
}
} finally { } finally {
setSaving(false); setSaving(false);
} }