diff --git a/src/webparts/requestPortal/forms/PaymentRequest/model.ts b/src/webparts/requestPortal/forms/PaymentRequest/model.ts index 0de3cd1..d0f0ca6 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/model.ts +++ b/src/webparts/requestPortal/forms/PaymentRequest/model.ts @@ -20,6 +20,12 @@ export interface IPreviousPayment { /** Уникальный код заявки на оплату. */ code: string; amount: number; + /** Id элемента списка данных — для ссылки на заявку. Нет у снимков, сохранённых до появления ссылок. */ + id?: number; + /** Список партиции (серверный относительный URL), где лежит заявка; '' — текущая. */ + listId?: string; + /** Статус заявки на момент чтения. */ + status?: string; } /** diff --git a/src/webparts/requestPortal/forms/PaymentRequest/sections/AmountsSection.tsx b/src/webparts/requestPortal/forms/PaymentRequest/sections/AmountsSection.tsx index 95ba1b1..e840795 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/sections/AmountsSection.tsx +++ b/src/webparts/requestPortal/forms/PaymentRequest/sections/AmountsSection.tsx @@ -2,7 +2,8 @@ import * as React from 'react'; import styles from './PaymentSections.module.scss'; import { FormField, TextInput, TextArea } from '../../../shared/ui'; import { formatAmount, overLimitAmount, previousPaymentsTotal } from '../amounts'; -import { ISectionProps } from '../model'; +import { FORM_ID, ISectionProps } from '../model'; +import { routeUrl } from '../../../shared/routing'; import { AmountInput } from './AmountInput'; /** @@ -51,20 +52,35 @@ export const AmountsSection: React.FC = ({ data, set }) => { Номер заявки на оплату + Статус Сумма оплаты {data.PreviousPayments.map((p) => ( - {p.code} + + {p.id ? ( + + {p.code} + + ) : ( + p.code + )} + + {p.status || ''} {formatAmount(p.amount)} ))} - Итого ранее + Итого ранее {formatAmount(previousTotal)} diff --git a/src/webparts/requestPortal/forms/PaymentRequest/sections/PaymentSections.module.scss b/src/webparts/requestPortal/forms/PaymentRequest/sections/PaymentSections.module.scss index 5523301..8db7f96 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/sections/PaymentSections.module.scss +++ b/src/webparts/requestPortal/forms/PaymentRequest/sections/PaymentSections.module.scss @@ -108,3 +108,13 @@ grid-column: 1 / -1; min-width: 0; } + +.link { + color: $navy-700; + font-weight: 600; + text-decoration: underline; + + &:hover { + color: $gold-600; + } +} diff --git a/src/webparts/requestPortal/forms/PaymentRequest/services/previousPayments.service.ts b/src/webparts/requestPortal/forms/PaymentRequest/services/previousPayments.service.ts index bd422ad..21d9340 100644 --- a/src/webparts/requestPortal/forms/PaymentRequest/services/previousPayments.service.ts +++ b/src/webparts/requestPortal/forms/PaymentRequest/services/previousPayments.service.ts @@ -1,6 +1,6 @@ import { getSP } from '../../../shared/pnp/pnpjs'; import { dataListTitle } from '../../../shared/listTitles'; -import { REQUEST_STATUS } from '../../../shared/approval'; +import { REQUEST_STATUS, currentPartitionForPageUrl } from '../../../shared/approval'; import { FORM_ID, IPreviousPayment } from '../model'; /** @@ -34,7 +34,14 @@ export async function loadPreviousPayments(basisKey: string, excludeId?: number) .filter(`BasisKey eq '${safeKey}'`) .top(MAX_PAYMENTS)()) as IPaymentRow[]; + const listId = currentPartitionForPageUrl(FORM_ID)?.listId || ''; return rows .filter((row) => row.Id !== excludeId && NOT_COUNTED_STATUSES.indexOf(row.RequestStatus || '') === -1) - .map((row) => ({ code: row.RequestUniqueCode || `№${row.Id}`, amount: Number(row.PayAmount || 0) })); + .map((row) => ({ + code: row.RequestUniqueCode || `№${row.Id}`, + amount: Number(row.PayAmount || 0), + id: row.Id, + listId, + status: row.RequestStatus || '' + })); }