fix(contract-number): локальный mode и отдельный customerInput без сброса value
This commit is contained in:
@@ -60,17 +60,13 @@ export default function ContractNumberField({
|
||||
}: ContractNumberFieldProps) {
|
||||
const parsed = parseValue(value);
|
||||
const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode);
|
||||
const customerValue = parsed.mode === 'customer' ? parsed.value : '';
|
||||
const [customerInput, setCustomerInput] = useState(
|
||||
parsed.mode === 'customer' ? parsed.value : ''
|
||||
);
|
||||
const [preview, setPreview] = useState<string>('');
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [error, setError] = useState<string>('');
|
||||
|
||||
// Синхронизируем локальное состояние mode с value prop, чтобы при повторном открытии
|
||||
// глобального редактирования переключатель соответствовал сохранённому значению.
|
||||
useEffect(() => {
|
||||
setMode(parsed.mode);
|
||||
}, [parsed.mode]);
|
||||
|
||||
const legalEntityFormId = config?.legalEntityFormId;
|
||||
const legalEntityTaskId = parsed.legalEntityTaskId;
|
||||
|
||||
@@ -118,19 +114,20 @@ export default function ContractNumberField({
|
||||
const handleModeChange = (newMode: 'mine' | 'customer') => {
|
||||
setMode(newMode);
|
||||
if (newMode === 'mine') {
|
||||
onChange({ mode: 'mine', value: '', legalEntityTaskId: parsed.legalEntityTaskId });
|
||||
onChange({ mode: 'mine', value: parsed.value || '', legalEntityTaskId: parsed.legalEntityTaskId });
|
||||
} else {
|
||||
onChange({ mode: 'customer', value: parsed.value || '', legalEntityTaskId: parsed.legalEntityTaskId });
|
||||
}
|
||||
};
|
||||
|
||||
const handleCustomerChange = (val: string) => {
|
||||
setCustomerInput(val);
|
||||
onChange({ mode: 'customer', value: val, legalEntityTaskId: parsed.legalEntityTaskId });
|
||||
};
|
||||
|
||||
const handleLegalEntityChange = (taskId: string) => {
|
||||
const num = taskId ? parseInt(taskId) : undefined;
|
||||
onChange({ mode, value: mode === 'mine' ? (parsed.value || '') : customerValue, legalEntityTaskId: num });
|
||||
onChange({ mode, value: mode === 'mine' ? (parsed.value || '') : customerInput, legalEntityTaskId: num });
|
||||
};
|
||||
|
||||
const isGenerated = !!(parsed.mode === 'mine' && parsed.value && parsed.value !== '');
|
||||
@@ -174,7 +171,7 @@ export default function ContractNumberField({
|
||||
{mode === 'customer' ? (
|
||||
<Input
|
||||
type="text"
|
||||
value={customerValue}
|
||||
value={customerInput}
|
||||
onChange={(e) => handleCustomerChange(e.target.value)}
|
||||
placeholder={compact ? 'Шифр' : 'Введите шифр заказчика'}
|
||||
disabled={disabled}
|
||||
|
||||
Reference in New Issue
Block a user