forked from wangziqi/gongxue-base
fix: improve error handling in expense form submissions
This commit is contained in:
@@ -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,16 +162,16 @@ const ExpensesPage: React.FC = () => {
|
|||||||
|
|
||||||
const handleRoomExpense = async () => {
|
const handleRoomExpense = async () => {
|
||||||
setSaving(true);
|
setSaving(true);
|
||||||
const values = await roomForm.validateFields();
|
|
||||||
const payload = {
|
|
||||||
roomId: values.roomId,
|
|
||||||
expenseType: values.expenseType,
|
|
||||||
amount: values.amount,
|
|
||||||
periodStart: values.period[0].format('YYYY-MM-DD'),
|
|
||||||
periodEnd: values.period[1].format('YYYY-MM-DD'),
|
|
||||||
description: values.description,
|
|
||||||
};
|
|
||||||
try {
|
try {
|
||||||
|
const values = await roomForm.validateFields();
|
||||||
|
const payload = {
|
||||||
|
roomId: values.roomId,
|
||||||
|
expenseType: values.expenseType,
|
||||||
|
amount: values.amount,
|
||||||
|
periodStart: values.period[0].format('YYYY-MM-DD'),
|
||||||
|
periodEnd: values.period[1].format('YYYY-MM-DD'),
|
||||||
|
description: values.description,
|
||||||
|
};
|
||||||
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) {
|
||||||
message.error(e?.message || '操作失败');
|
if (!isFormValidationError(e)) {
|
||||||
|
message.error(e?.message || '操作失败');
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
setSaving(false);
|
setSaving(false);
|
||||||
}
|
}
|
||||||
@@ -187,16 +194,16 @@ const ExpensesPage: React.FC = () => {
|
|||||||
|
|
||||||
const handlePersonalExpense = async () => {
|
const handlePersonalExpense = async () => {
|
||||||
setSaving(true);
|
setSaving(true);
|
||||||
const values = await personalForm.validateFields();
|
|
||||||
const payload = {
|
|
||||||
studentId: values.studentId,
|
|
||||||
roomId: values.roomId,
|
|
||||||
expenseType: values.expenseType,
|
|
||||||
amount: values.amount,
|
|
||||||
expenseDate: values.expenseDate.format('YYYY-MM-DD'),
|
|
||||||
description: values.description,
|
|
||||||
};
|
|
||||||
try {
|
try {
|
||||||
|
const values = await personalForm.validateFields();
|
||||||
|
const payload = {
|
||||||
|
studentId: values.studentId,
|
||||||
|
roomId: values.roomId,
|
||||||
|
expenseType: values.expenseType,
|
||||||
|
amount: values.amount,
|
||||||
|
expenseDate: values.expenseDate.format('YYYY-MM-DD'),
|
||||||
|
description: values.description,
|
||||||
|
};
|
||||||
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) {
|
||||||
message.error(e?.message || '操作失败');
|
if (!isFormValidationError(e)) {
|
||||||
|
message.error(e?.message || '操作失败');
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
setSaving(false);
|
setSaving(false);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user