fix(contract-number): input шифра заказчика снова редактируемый

- Убрано локальное состояние customerValue, теперь значение берётся напрямую из parsed.value

- Убран лишний useEffect, который мог сбрасывать ввод при глобальном редактировании

- Состояние mode продолжает синхронизироваться с value prop
This commit is contained in:
2026-07-16 15:21:50 +03:00
parent a4a3a9ca18
commit 509eb05c0b

View File

@@ -60,23 +60,17 @@ export default function ContractNumberField({
}: ContractNumberFieldProps) { }: ContractNumberFieldProps) {
const parsed = parseValue(value); const parsed = parseValue(value);
const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode); const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode);
const [customerValue, setCustomerValue] = useState(parsed.mode === 'customer' ? parsed.value : ''); const customerValue = parsed.mode === 'customer' ? parsed.value : '';
const [preview, setPreview] = useState<string>(''); const [preview, setPreview] = useState<string>('');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [error, setError] = useState<string>(''); const [error, setError] = useState<string>('');
// Синхронизируем локальное состояние с value prop, чтобы при повторном открытии // Синхронизируем локальное состояние mode с value prop, чтобы при повторном открытии
// глобального редактирования mode и customerValue соответствовали сохранённому значению. // глобального редактирования переключатель соответствовал сохранённому значению.
useEffect(() => { useEffect(() => {
setMode(parsed.mode); setMode(parsed.mode);
}, [parsed.mode]); }, [parsed.mode]);
useEffect(() => {
if (parsed.mode === 'customer') {
setCustomerValue(parsed.value);
}
}, [parsed.mode, parsed.value]);
const legalEntityFormId = config?.legalEntityFormId; const legalEntityFormId = config?.legalEntityFormId;
const legalEntityTaskId = parsed.legalEntityTaskId; const legalEntityTaskId = parsed.legalEntityTaskId;
@@ -125,12 +119,11 @@ export default function ContractNumberField({
if (newMode === 'mine') { if (newMode === 'mine') {
onChange({ mode: 'mine', value: '', legalEntityTaskId: parsed.legalEntityTaskId }); onChange({ mode: 'mine', value: '', legalEntityTaskId: parsed.legalEntityTaskId });
} else { } else {
onChange({ mode: 'customer', value: customerValue, legalEntityTaskId: parsed.legalEntityTaskId }); onChange({ mode: 'customer', value: parsed.value || '', legalEntityTaskId: parsed.legalEntityTaskId });
} }
}; };
const handleCustomerChange = (val: string) => { const handleCustomerChange = (val: string) => {
setCustomerValue(val);
onChange({ mode: 'customer', value: val, legalEntityTaskId: parsed.legalEntityTaskId }); onChange({ mode: 'customer', value: val, legalEntityTaskId: parsed.legalEntityTaskId });
}; };