ЦИТК-979 - Редактор запросов - исправлена ошибка сброса состояния диалога редактирования аргумента запроса при возникновении серверной ошибки

This commit is contained in:
Mikhail Chechnev 2025-10-14 14:13:03 +03:00
parent 1530bfa3bf
commit 3df01a36c6

View File

@ -19,24 +19,21 @@ import { DATA_TYPE } from "../../common"; //Общие константы ред
//Диалог добавления/исправления аргумента запроса //Диалог добавления/исправления аргумента запроса
const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandatory = 0, value = "", insert = true, onOk, onCancel }) => { const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandatory = 0, value = "", insert = true, onOk, onCancel }) => {
//Собственное состояние - текущее состояние аргумента //Собственное состояние - текущие значения полей аргумента запроса
const [current, setCurrent] = useState({ value, dataType }); const [current, setCurrent] = useState({ name, title, dataType, mandatory, value });
//Нажатие на кнопку "Ok" //Нажатие на кнопку "Ok"
const handleOk = values => onOk && onOk({ ...values }); const handleOk = () => onOk && onOk(current);
//Нажатие на кнопку "Отмена" //Нажатие на кнопку "Отмена"
const handleCancel = () => onCancel && onCancel(); const handleCancel = () => onCancel && onCancel();
//При изменении значений в поле ввода //При изменении значений в поле ввода
const handleInputChange = (name, value) => { const handleInputChange = (name, value) => {
//Если поменяли тип данных - надо пересмотреть поля для ввода //Сохраним в состоянии новое значение, если сменили тип данных - сбросим "отладочное значение"
if (name === "dataType") { setCurrent(pv => ({ ...pv, [name]: value, ...(name === "dataType" ? { value: "" } : {}) }));
//Сохраним в состоянии новый тип данных и сбросим "отладочное значение", ведь оно зависит от типа данных (от этого состояния зависит свойство inputs, передаваемое в P8PDialog ниже) //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога
setCurrent({ dataType: value, value: "" }); return true;
//Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога
return true;
}
}; };
//Генерация содержимого //Генерация содержимого
@ -44,8 +41,8 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato
<P8PDialog <P8PDialog
title={`${insert === true ? TITLES.INSERT : TITLES.UPDATE} аргумента`} title={`${insert === true ? TITLES.INSERT : TITLES.UPDATE} аргумента`}
inputs={[ inputs={[
{ name: "name", value: name, label: "Имя", disabled: insert != true }, { name: "name", value: current.name, label: "Имя", disabled: insert != true },
{ name: "title", value: title, label: "Приглашение" }, { name: "title", value: current.title, label: "Приглашение" },
{ {
name: "dataType", name: "dataType",
value: current.dataType, value: current.dataType,
@ -58,7 +55,7 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato
}, },
{ {
name: "mandatory", name: "mandatory",
value: mandatory, value: current.mandatory,
label: "Обязательный", label: "Обязательный",
list: [ list: [
{ name: "Нет", value: 0 }, { name: "Нет", value: 0 },