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