fix: changed SP list order field to StepOrder
This commit is contained in:
@@ -3,7 +3,7 @@ import '@pnp/sp/webs';
|
||||
import '@pnp/sp/lists';
|
||||
import '@pnp/sp/items';
|
||||
import { ApprovalListService } from './approvalList.service';
|
||||
import { REQUEST_STATUS } from './models/statuses';
|
||||
import { REQUEST_STATUS, APPROVAL_PHASE } from './models/statuses';
|
||||
import { IApprovalRow } from './models/IApprovalRow';
|
||||
import { ISiteUser } from './models/ISiteUser';
|
||||
|
||||
@@ -52,11 +52,13 @@ export class ApproverService {
|
||||
const prevOrder = before.length > 0 ? before[before.length - 1].order : current.order - 1;
|
||||
const newOrder = (prevOrder + current.order) / 2;
|
||||
const position = await this.approval.getJobTitle(user.loginName);
|
||||
// Делегат наследует фазу той строки, вместо которой согласует (согласование/исполнение).
|
||||
await this.approval.addApproverRow(
|
||||
requestId,
|
||||
{ email: user.email, position, allowReassign: false },
|
||||
newOrder,
|
||||
REQUEST_STATUS.onApproval
|
||||
REQUEST_STATUS.onApproval,
|
||||
current.phase
|
||||
);
|
||||
}
|
||||
|
||||
@@ -75,13 +77,28 @@ export class ApproverService {
|
||||
return requestStatus;
|
||||
}
|
||||
|
||||
// Статус заявки из строк маршрута с учётом фазы:
|
||||
// 1) фаза согласования: отклонение/возврат → соответствующий статус;
|
||||
// не все согласовали → «На согласовании».
|
||||
// 2) согласование завершено: нет исполнителей → «Согласовано» (финал);
|
||||
// исполнители есть и не все выполнили → «Выполнение»;
|
||||
// все выполнили → «Закрыта».
|
||||
// Строка «выполнена» исполнителем помечается тем же статусом «Согласовано»
|
||||
// (действие «Выполнено» в DecisionPanel), фазы различаются колонкой Phase.
|
||||
private computeRequestStatus(rows: IApprovalRow[]): string {
|
||||
if (rows.some((r) => r.status === REQUEST_STATUS.rejected)) return REQUEST_STATUS.rejected;
|
||||
if (rows.some((r) => r.status === REQUEST_STATUS.returned)) return REQUEST_STATUS.returned;
|
||||
if (rows.length > 0 && rows.every((r) => r.status === REQUEST_STATUS.approved)) {
|
||||
return REQUEST_STATUS.approved;
|
||||
}
|
||||
return REQUEST_STATUS.onApproval;
|
||||
const execRows = rows.filter((r) => r.phase === APPROVAL_PHASE.execution);
|
||||
const approvalRows = rows.filter((r) => r.phase !== APPROVAL_PHASE.execution);
|
||||
|
||||
if (approvalRows.some((r) => r.status === REQUEST_STATUS.rejected)) return REQUEST_STATUS.rejected;
|
||||
if (approvalRows.some((r) => r.status === REQUEST_STATUS.returned)) return REQUEST_STATUS.returned;
|
||||
|
||||
const approvalDone =
|
||||
approvalRows.length === 0 || approvalRows.every((r) => r.status === REQUEST_STATUS.approved);
|
||||
if (!approvalDone) return REQUEST_STATUS.onApproval;
|
||||
|
||||
if (execRows.length === 0) return REQUEST_STATUS.approved;
|
||||
if (execRows.every((r) => r.status === REQUEST_STATUS.approved)) return REQUEST_STATUS.closed;
|
||||
return REQUEST_STATUS.execution;
|
||||
}
|
||||
|
||||
private async updateRequestStatus(id: number, status: string): Promise<void> {
|
||||
|
||||
Reference in New Issue
Block a user