diff --git a/src/webparts/requestPortal/shared/approval/approverDecision.service.ts b/src/webparts/requestPortal/shared/approval/approverDecision.service.ts index 82a1224..8a72b0a 100644 --- a/src/webparts/requestPortal/shared/approval/approverDecision.service.ts +++ b/src/webparts/requestPortal/shared/approval/approverDecision.service.ts @@ -120,6 +120,7 @@ export class ApproverService { // activateNextQueued затем активирует первого делеганта (у него меньший order). await this.approval.setStatus(current.id, REQUEST_STATUS.queued); await this.approval.activateNextQueued(requestId); + await this.touchRequest(requestId); emitRequestsChanged(); } @@ -171,6 +172,7 @@ export class ApproverService { const row = this.editableExecutionRow(rows, rowId); const position = await this.approval.getJobTitle(user.loginName).catch(() => ''); await this.approval.replaceApprover(rowId, { email: user.email, position }); + await this.touchRequest(requestId); emitRequestsChanged(); return row.status === REQUEST_STATUS.onExecution; } @@ -205,6 +207,7 @@ export class ApproverService { await this.approval.activateNextQueued(requestId); const rowsAfter = await this.approval.getForRequest(requestId); + await this.touchRequest(requestId); emitRequestsChanged(); return rowsAfter .filter((r) => r.status === REQUEST_STATUS.onExecution && !activeBefore.has(r.id)) @@ -270,4 +273,16 @@ export class ApproverService { RequestStatus: status, }); } + + // Права на заявку новым участникам маршрута выдаёт бэкенд по вебхуку на + // изменение элемента СПИСКА ДАННЫХ. Делегирование и замена/удаление + // исполнителя меняют только список согласования — без этой записи вебхук не + // приходит, и новый человек видит «Элемент не найден». Пишем текущий статус + // как есть: значение не меняется, но у элемента появляется новая версия. + private async touchRequest(id: number): Promise { + const item = (await this.dataList().items.getById(id).select('RequestStatus')()) as { + RequestStatus?: string; + }; + await this.updateRequestStatus(id, item.RequestStatus || ''); + } }