{
+ // Клик по всей строке открывает заявку — кнопке это не нужно.
+ e.stopPropagation();
+ onDelete(r);
+ }}
+ />
+ ) : null
+ });
+ }
return (
@@ -300,6 +335,18 @@ export const RequestsTableView: React.FC = ({
const [rows, setRows] = React.useState(undefined);
const [totalRows, setTotalRows] = React.useState(0);
const [error, setError] = React.useState('');
+ const [deleteError, setDeleteError] = React.useState('');
+
+ // Список перечитается сам: confirmAndDeleteDraft шлёт rp-requests-changed.
+ const handleDelete = (request: IMyRequest): void => {
+ setDeleteError('');
+ confirmAndDeleteDraft({
+ formKey: request.formKey,
+ itemId: request.id,
+ listId: request.listId,
+ code: request.code
+ }).catch((e) => setDeleteError(`Не удалось удалить черновик: ${friendlyErrorMessage(e)}`));
+ };
// input — то, что в поле ввода (меняется сразу); в маршрут значение уходит
// после паузы в наборе. Данные грузятся по МАРШРУТНОМУ query — он и так уже
@@ -545,6 +592,7 @@ export const RequestsTableView: React.FC = ({
{error && Не удалось загрузить заявки: {error}
}
+ {deleteError && {deleteError}
}
{!error && !loaded && Загрузка…
}
{!error && loaded && total === 0 && (
@@ -553,7 +601,13 @@ export const RequestsTableView: React.FC
= ({
)}
{!error && rows && total > 0 && (
<>
-
+
>
)}
diff --git a/src/webparts/requestPortal/forms/Clearance/ClearanceForm.tsx b/src/webparts/requestPortal/forms/Clearance/ClearanceForm.tsx
index db25869..d7df482 100644
--- a/src/webparts/requestPortal/forms/Clearance/ClearanceForm.tsx
+++ b/src/webparts/requestPortal/forms/Clearance/ClearanceForm.tsx
@@ -9,6 +9,7 @@ import {
Icon,
RequestNumber,
SubmitActions,
+ getDraftDeleteHandler,
useRequestSubmit
} from '../../shared/ui';
import {
@@ -277,6 +278,17 @@ const ClearanceForm: React.FC = ({
const sectionProps = { data, set, context, onEmployeeChange: handleEmployeeChange };
+ // «Удалить черновик» — только у сохранённой заявки в статусе «Черновик».
+ const handleDelete = getDraftDeleteHandler({
+ formKey: FORM_ID,
+ requestId,
+ requestStatus,
+ listId: editListId,
+ code: requestCode,
+ submit,
+ onDeleted: onCancel
+ });
+
return (