feat: предзаполнение «Куда» в ТМЦ, разморозка 1С, readOnly «Отдел»
Tests / frontend-test (push) Successful in 1m16s
Tests / frontend-test (push) Successful in 1m16s
- СЗ на перемещение ТМЦ: поле «Куда» предзаполняется проектом-получателем по строке-источнику Dataverse (cree9_demandline -> lzk position -> LZK -> project id), см. shared/dataverse/lzkPosition.service.ts - Заявка 1С досрочно разморожена для всех пользователей (UNFROZEN_FORMS в SubmitActions), остальные формы остаются замороженными - Поле «Отдел» в заявке 1С сделано read-only Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,9 +19,19 @@ import { isCurrentUserTester } from './testerGroupAccess';
|
||||
*/
|
||||
const SUBMISSION_FROZEN = true;
|
||||
|
||||
/**
|
||||
* Формы, для которых заморозка снята досрочно (для всех пользователей, не
|
||||
* только тестировщиков) — id передаётся через проп formId. Пример: заявка 1С
|
||||
* разморожена 2026-09-22 по просьбе Тимура Городецкого, остальные формы
|
||||
* остаются замороженными.
|
||||
*/
|
||||
const UNFROZEN_FORMS = new Set<string>(['ticket1c']);
|
||||
|
||||
export interface ISubmitActionsProps {
|
||||
submit: IRequestSubmit;
|
||||
isValid: boolean;
|
||||
/** Идентификатор формы — используется, чтобы точечно снимать заморозку (см. UNFROZEN_FORMS). */
|
||||
formId?: string;
|
||||
/**
|
||||
* Доп. условие для кнопки «Отправить», когда у отправки более строгие
|
||||
* требования, чем у черновика (например, поля обязательные только при
|
||||
@@ -46,6 +56,7 @@ export const SubmitActions: React.FC<ISubmitActionsProps> = ({
|
||||
submit,
|
||||
isValid,
|
||||
submitValid,
|
||||
formId,
|
||||
readOnly,
|
||||
onCancel,
|
||||
onSaveDraft,
|
||||
@@ -53,12 +64,13 @@ export const SubmitActions: React.FC<ISubmitActionsProps> = ({
|
||||
submitLabel = 'Отправить на согласование',
|
||||
}) => {
|
||||
const { saving, kind } = submit;
|
||||
const unfrozenForm = formId != null && UNFROZEN_FORMS.has(formId);
|
||||
// false, пока не пришёл ответ о членстве в группе, — безопасный дефолт: не
|
||||
// мигать разблокированными кнопками до подтверждения, что это тестировщик.
|
||||
const [isTester, setIsTester] = React.useState<boolean>(false);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (!SUBMISSION_FROZEN) return;
|
||||
if (!SUBMISSION_FROZEN || unfrozenForm) return;
|
||||
let alive = true;
|
||||
isCurrentUserTester()
|
||||
.then((v) => {
|
||||
@@ -68,9 +80,9 @@ export const SubmitActions: React.FC<ISubmitActionsProps> = ({
|
||||
return () => {
|
||||
alive = false;
|
||||
};
|
||||
}, []);
|
||||
}, [unfrozenForm]);
|
||||
|
||||
const frozen = SUBMISSION_FROZEN && !isTester;
|
||||
const frozen = SUBMISSION_FROZEN && !unfrozenForm && !isTester;
|
||||
const locked = saving || readOnly || frozen;
|
||||
const canSubmit = submitValid ?? isValid;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user