procurement: add create and submit action
This commit is contained in:
parent
2cd2263083
commit
c4fd4cf032
@ -287,6 +287,7 @@ export default function ProcurementPage() {
|
||||
handleLoadMore,
|
||||
handleReject,
|
||||
handleSave,
|
||||
handleSaveAndSubmit,
|
||||
handleStart,
|
||||
handleSubmit,
|
||||
isFinal,
|
||||
@ -1160,11 +1161,26 @@ export default function ProcurementPage() {
|
||||
<Modal isOpen={isModalOpen} onClose={closeModal} title={modalMode === "create" ? "Новая заявка на закупку" : "Редактировать заявку"} size="lg" footer={
|
||||
<div className="flex flex-wrap items-center justify-end gap-2">
|
||||
<button type="button" onClick={closeModal} className="app-action-secondary rounded-lg px-3 py-2 text-sm font-medium">Отмена</button>
|
||||
<button type="button" onClick={handleSave} disabled={busyKey === "save"} className="app-action-primary rounded-lg px-3 py-2 text-sm font-medium disabled:opacity-60">
|
||||
<button
|
||||
type="button"
|
||||
onClick={handleSave}
|
||||
disabled={busyKey === "save" || busyKey === "save-submit"}
|
||||
className={`${modalMode === "create" && form.requireApproval ? "app-action-secondary" : "app-action-primary"} rounded-lg px-3 py-2 text-sm font-medium disabled:opacity-60`}
|
||||
>
|
||||
{modalMode === "create"
|
||||
? form.requireApproval ? "Создать черновик" : "Создать и направить в отдел"
|
||||
: "Сохранить"}
|
||||
</button>
|
||||
{modalMode === "create" && form.requireApproval ? (
|
||||
<button
|
||||
type="button"
|
||||
onClick={handleSaveAndSubmit}
|
||||
disabled={busyKey === "save" || busyKey === "save-submit"}
|
||||
className="app-action-primary rounded-lg px-3 py-2 text-sm font-medium disabled:opacity-60"
|
||||
>
|
||||
Отправить на согласование
|
||||
</button>
|
||||
) : null}
|
||||
</div>
|
||||
}>
|
||||
|
||||
|
||||
@ -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<unknown>, id: number, successMessage: string) => {
|
||||
try {
|
||||
setBusyKey(key);
|
||||
@ -792,6 +801,7 @@ export function useProcurementPage(user: User | null) {
|
||||
modalMode,
|
||||
isModalOpen,
|
||||
handleSave,
|
||||
handleSaveAndSubmit,
|
||||
handleLoadMore,
|
||||
toggleExpand,
|
||||
toggleComments,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user