diff --git a/frontend/src/app/procurement/page.tsx b/frontend/src/app/procurement/page.tsx index d044c8c1..b057364d 100644 --- a/frontend/src/app/procurement/page.tsx +++ b/frontend/src/app/procurement/page.tsx @@ -287,6 +287,7 @@ export default function ProcurementPage() { handleLoadMore, handleReject, handleSave, + handleSaveAndSubmit, handleStart, handleSubmit, isFinal, @@ -1160,11 +1161,26 @@ export default function ProcurementPage() { - + {modalMode === "create" && form.requireApproval ? ( + + ) : null} }> diff --git a/frontend/src/hooks/useProcurementPage.ts b/frontend/src/hooks/useProcurementPage.ts index 550406c4..36dd9c87 100644 --- a/frontend/src/hooks/useProcurementPage.ts +++ b/frontend/src/hooks/useProcurementPage.ts @@ -426,9 +426,9 @@ export function useProcurementPage(user: User | null) { return detail; }, []); - const handleSave = useCallback(async () => { + const saveRequest = useCallback(async (submitAfterCreate = false) => { try { - setBusyKey("save"); + setBusyKey(submitAfterCreate ? "save-submit" : "save"); setActionError(null); if (!form.title.trim()) { @@ -483,8 +483,13 @@ export function useProcurementPage(user: User | null) { }; if (modalMode === "create") { - await apiClient.createProcurementRequest(payload); - setActionSuccess(form.requireApproval ? "Заявка создана (черновик)." : "Заявка направлена в отдел."); + const created = await apiClient.createProcurementRequest(payload) as ProcurementRequest; + if (submitAfterCreate && form.requireApproval && created.id) { + await apiClient.submitProcurementRequest(created.id); + setActionSuccess("Заявка создана и отправлена на согласование."); + } else { + setActionSuccess(form.requireApproval ? "Заявка создана (черновик)." : "Заявка направлена в отдел."); + } setCreateOpen(false); } else if (editingId) { await apiClient.updateProcurementRequest(editingId, { @@ -506,6 +511,10 @@ export function useProcurementPage(user: User | null) { } }, [editingId, form, loadPage1, modalMode, resetForm]); + const handleSave = useCallback(() => saveRequest(false), [saveRequest]); + + const handleSaveAndSubmit = useCallback(() => saveRequest(true), [saveRequest]); + const doAction = useCallback(async (key: string, action: () => Promise, id: number, successMessage: string) => { try { setBusyKey(key); @@ -792,6 +801,7 @@ export function useProcurementPage(user: User | null) { modalMode, isModalOpen, handleSave, + handleSaveAndSubmit, handleLoadMore, toggleExpand, toggleComments,