forked from CITKParus/P8-Panels
merge upstream
This commit is contained in:
commit
0d03edbd17
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта
|
Парус 8 - Панели мониторинга
|
||||||
Компонент панели: Форма
|
Компонент: Диалог
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//---------------------
|
//---------------------
|
||||||
@ -10,33 +10,33 @@
|
|||||||
import React, { useEffect, useState } from "react"; //Классы React
|
import React, { useEffect, useState } from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material"; //Интерфейсные компоненты
|
import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material"; //Интерфейсные компоненты
|
||||||
import { BUTTONS } from "../../../../app.text"; //Общие текстовые ресурсы
|
import { BUTTONS } from "../../app.text"; //Общие текстовые ресурсы
|
||||||
import { FORM_FILED, FormField } from "./form_field"; //Элемент формы
|
import { P8P_INPUT, P8PInput } from "./p8p_input"; //Поле ввода
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
|
|
||||||
//Форма
|
//Диалог
|
||||||
const Form = ({ title, fields = [], children, onOk, onCancel, onClose }) => {
|
const P8PDialog = ({ title, inputs = [], children, onOk, onCancel, onClose }) => {
|
||||||
//Состояние формы
|
//Состояние диалога
|
||||||
const [state, setState] = useState({});
|
const [state, setState] = useState({});
|
||||||
|
|
||||||
//При изменении элемента формы
|
//При изменении элемента ввода
|
||||||
const handleFieldChange = (name, value) => setState(pv => ({ ...pv, [name]: value }));
|
const handleInputChange = (name, value) => setState(pv => ({ ...pv, [name]: value }));
|
||||||
|
|
||||||
//При нажатии на "ОК" формы
|
//При нажатии на "ОК" диалога
|
||||||
const handleOk = () => onOk && onOk(state);
|
const handleOk = () => onOk && onOk(state);
|
||||||
|
|
||||||
//При нажатии на "Отмена" формы
|
//При нажатии на "Отмена" диалога
|
||||||
const handleCancel = () => onCancel && onCancel();
|
const handleCancel = () => onCancel && onCancel();
|
||||||
|
|
||||||
//При нажатии на "Закрыть" формы
|
//При нажатии на "Закрыть" диалога
|
||||||
const handleClose = () => (onClose ? onClose() : onCancel ? onCancel() : null);
|
const handleClose = () => (onClose ? onClose() : onCancel ? onCancel() : null);
|
||||||
|
|
||||||
//При подключении к старнице
|
//При подключении к старнице
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setState(fields.reduce((res, f) => ({ ...res, [f.elementCode]: f.elementValue == undefined ? null : f.elementValue }), {}));
|
setState(inputs.reduce((res, input) => ({ ...res, [input.name]: input.value == undefined ? null : input.value }), {}));
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@ -45,8 +45,8 @@ const Form = ({ title, fields = [], children, onOk, onCancel, onClose }) => {
|
|||||||
<Dialog onClose={handleClose} open>
|
<Dialog onClose={handleClose} open>
|
||||||
<DialogTitle>{title}</DialogTitle>
|
<DialogTitle>{title}</DialogTitle>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
{fields.map((f, i) => (
|
{inputs.map((input, i) => (
|
||||||
<FormField key={i} {...f} elementValue={state[f.elementCode]} formValues={state} onChange={handleFieldChange} />
|
<P8PInput key={i} {...input} value={state[input.name]} formValues={state} onChange={handleInputChange} />
|
||||||
))}
|
))}
|
||||||
{children}
|
{children}
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
@ -59,10 +59,10 @@ const Form = ({ title, fields = [], children, onOk, onCancel, onClose }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Контроль свойств - Форма
|
//Контроль свойств - Диалог
|
||||||
Form.propTypes = {
|
P8PDialog.propTypes = {
|
||||||
title: PropTypes.string.isRequired,
|
title: PropTypes.string.isRequired,
|
||||||
fields: PropTypes.arrayOf(PropTypes.shape(FORM_FILED)),
|
inputs: PropTypes.arrayOf(PropTypes.shape(P8P_INPUT)),
|
||||||
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
|
||||||
onOk: PropTypes.func,
|
onOk: PropTypes.func,
|
||||||
onCancel: PropTypes.func,
|
onCancel: PropTypes.func,
|
||||||
@ -73,4 +73,4 @@ Form.propTypes = {
|
|||||||
//Интерфейс модуля
|
//Интерфейс модуля
|
||||||
//----------------
|
//----------------
|
||||||
|
|
||||||
export { Form };
|
export { P8PDialog };
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта
|
Парус 8 - Панели мониторинга
|
||||||
Компонент панели: Поле ввода формы
|
Компонент: Поле ввода
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//---------------------
|
//---------------------
|
||||||
@ -15,11 +15,11 @@ import { Box, Icon, Input, InputAdornment, FormControl, Select, InputLabel, Menu
|
|||||||
//Константы
|
//Константы
|
||||||
//---------
|
//---------
|
||||||
|
|
||||||
//Формат свойств поля формы
|
//Формат свойств поля ввода
|
||||||
const FORM_FILED = {
|
const P8P_INPUT = {
|
||||||
elementCode: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
elementValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]),
|
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]),
|
||||||
labelText: PropTypes.string.isRequired,
|
label: PropTypes.string.isRequired,
|
||||||
onChange: PropTypes.func,
|
onChange: PropTypes.func,
|
||||||
dictionary: PropTypes.func,
|
dictionary: PropTypes.func,
|
||||||
list: PropTypes.array,
|
list: PropTypes.array,
|
||||||
@ -33,71 +33,59 @@ const FORM_FILED = {
|
|||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
|
|
||||||
//Поле ввода формы
|
//Поле ввода
|
||||||
const FormField = ({
|
const P8PInput = ({ name, value, label, onChange, dictionary, list, type, freeSolo = false, disabled = false, formValues, ...other }) => {
|
||||||
elementCode,
|
|
||||||
elementValue,
|
|
||||||
labelText,
|
|
||||||
onChange,
|
|
||||||
dictionary,
|
|
||||||
list,
|
|
||||||
type,
|
|
||||||
freeSolo = false,
|
|
||||||
disabled = false,
|
|
||||||
formValues,
|
|
||||||
...other
|
|
||||||
}) => {
|
|
||||||
//Значение элемента
|
//Значение элемента
|
||||||
const [value, setValue] = useState(elementValue);
|
const [currentValue, setCurrentValue] = useState(value);
|
||||||
|
|
||||||
//При получении нового значения из вне
|
//При получении нового значения из вне
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setValue(elementValue);
|
setCurrentValue(value);
|
||||||
}, [elementValue]);
|
}, [value]);
|
||||||
|
|
||||||
//Выбор значения из словаря
|
//Выбор значения из словаря
|
||||||
const handleDictionaryClick = () => dictionary && dictionary(formValues, res => (res ? res.map(i => handleChangeByName(i.name, i.value)) : null));
|
const handleDictionaryClick = () => dictionary && dictionary(formValues, res => (res ? res.map(i => handleChangeByName(i.name, i.value)) : null));
|
||||||
|
|
||||||
//Изменение значения элемента (по событию)
|
//Изменение значения элемента (по событию)
|
||||||
const handleChange = e => {
|
const handleChange = e => {
|
||||||
setValue(e.target.value);
|
setCurrentValue(e.target.value);
|
||||||
if (onChange) onChange(e.target.name, e.target.value);
|
if (onChange) onChange(e.target.name, e.target.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Изменение значения элемента (по имени и значению)
|
//Изменение значения элемента (по имени и значению)
|
||||||
const handleChangeByName = (name, value) => {
|
const handleChangeByName = (targetName, value) => {
|
||||||
if (name === elementCode) setValue(value);
|
if (targetName === name) setCurrentValue(value);
|
||||||
if (onChange) onChange(name, value);
|
if (onChange) onChange(targetName, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Box p={1}>
|
<Box p={1}>
|
||||||
<FormControl variant="standard" fullWidth {...other}>
|
<FormControl variant={"standard"} fullWidth {...other}>
|
||||||
{list ? (
|
{list ? (
|
||||||
freeSolo ? (
|
freeSolo ? (
|
||||||
<Autocomplete
|
<Autocomplete
|
||||||
id={elementCode}
|
id={name}
|
||||||
name={elementCode}
|
name={name}
|
||||||
freeSolo
|
freeSolo
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
inputValue={value ? value : ""}
|
inputValue={currentValue ? currentValue : ""}
|
||||||
onChange={(event, newValue) => handleChangeByName(elementCode, newValue)}
|
onChange={(event, newValue) => handleChangeByName(name, newValue)}
|
||||||
onInputChange={(event, newInputValue) => handleChangeByName(elementCode, newInputValue)}
|
onInputChange={(event, newInputValue) => handleChangeByName(name, newInputValue)}
|
||||||
options={list}
|
options={list}
|
||||||
renderInput={params => <TextField {...params} label={labelText} name={elementCode} variant={"standard"} />}
|
renderInput={params => <TextField {...params} label={label} name={name} variant={"standard"} />}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<InputLabel id={`${elementCode}Lable`} shrink>
|
<InputLabel id={`${name}Lable`} shrink>
|
||||||
{labelText}
|
{label}
|
||||||
</InputLabel>
|
</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
labelId={`${elementCode}Lable`}
|
labelId={`${name}Lable`}
|
||||||
id={elementCode}
|
id={name}
|
||||||
name={elementCode}
|
name={name}
|
||||||
label={labelText}
|
label={label}
|
||||||
value={[undefined, null].includes(value) ? "" : value}
|
value={[undefined, null].includes(currentValue) ? "" : currentValue}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
displayEmpty
|
displayEmpty
|
||||||
@ -112,17 +100,17 @@ const FormField = ({
|
|||||||
)
|
)
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<InputLabel {...(type == "date" ? { shrink: true } : {})} htmlFor={elementCode}>
|
<InputLabel {...(type == "date" ? { shrink: true } : {})} htmlFor={name}>
|
||||||
{labelText}
|
{label}
|
||||||
</InputLabel>
|
</InputLabel>
|
||||||
<Input
|
<Input
|
||||||
id={elementCode}
|
id={name}
|
||||||
name={elementCode}
|
name={name}
|
||||||
value={value ? value : ""}
|
value={currentValue ? currentValue : ""}
|
||||||
endAdornment={
|
endAdornment={
|
||||||
dictionary ? (
|
dictionary ? (
|
||||||
<InputAdornment position="end">
|
<InputAdornment position="end">
|
||||||
<IconButton aria-label={`${elementCode} select`} onClick={handleDictionaryClick} edge="end">
|
<IconButton aria-label={`${name} select`} onClick={handleDictionaryClick} edge="end">
|
||||||
<Icon>list</Icon>
|
<Icon>list</Icon>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</InputAdornment>
|
</InputAdornment>
|
||||||
@ -139,11 +127,11 @@ const FormField = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Контроль свойств - Поле ввода формы
|
//Контроль свойств - Поле ввода
|
||||||
FormField.propTypes = FORM_FILED;
|
P8PInput.propTypes = P8P_INPUT;
|
||||||
|
|
||||||
//----------------
|
//----------------
|
||||||
//Интерфейс модуля
|
//Интерфейс модуля
|
||||||
//----------------
|
//----------------
|
||||||
|
|
||||||
export { FORM_FILED, FormField };
|
export { P8P_INPUT, P8PInput };
|
@ -59,7 +59,7 @@ const useUserProcDesc = ({ code, refresh }) => {
|
|||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_EDITOR.USERPROCS_DESC",
|
stored: "PKG_P8PANELS_PE.USERPROCS_DESC",
|
||||||
args: { SCODE: code },
|
args: { SCODE: code },
|
||||||
respArg: "COUT",
|
respArg: "COUT",
|
||||||
isArray: name => name === "arguments",
|
isArray: name => name === "arguments",
|
||||||
|
@ -17,10 +17,6 @@ import {
|
|||||||
Typography,
|
Typography,
|
||||||
Divider,
|
Divider,
|
||||||
Chip,
|
Chip,
|
||||||
Dialog,
|
|
||||||
DialogTitle,
|
|
||||||
DialogContent,
|
|
||||||
DialogActions,
|
|
||||||
Button,
|
Button,
|
||||||
TextField,
|
TextField,
|
||||||
InputAdornment,
|
InputAdornment,
|
||||||
@ -34,6 +30,7 @@ import {
|
|||||||
import client from "../../../core/client"; //Клиент БД
|
import client from "../../../core/client"; //Клиент БД
|
||||||
import { ApplicationСtx } from "../../../context/application"; //Контекст приложения
|
import { ApplicationСtx } from "../../../context/application"; //Контекст приложения
|
||||||
import { BUTTONS } from "../../../../app.text"; //Общие текстовые ресурсы
|
import { BUTTONS } from "../../../../app.text"; //Общие текстовые ресурсы
|
||||||
|
import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог
|
||||||
import { useUserProcDesc } from "./components_hooks"; //Общие хуки компонентов
|
import { useUserProcDesc } from "./components_hooks"; //Общие хуки компонентов
|
||||||
import "../panels_editor.css"; //Стили редактора
|
import "../panels_editor.css"; //Стили редактора
|
||||||
|
|
||||||
@ -168,14 +165,9 @@ EditorSubHeader.propTypes = {
|
|||||||
const ConfigDialog = ({ title, children, onOk, onCancel }) => {
|
const ConfigDialog = ({ title, children, onOk, onCancel }) => {
|
||||||
//Формирование представления
|
//Формирование представления
|
||||||
return (
|
return (
|
||||||
<Dialog onClose={onCancel} open>
|
<P8PDialog title={title} onOk={onOk} onCancel={onCancel}>
|
||||||
<DialogTitle>{title}</DialogTitle>
|
{children}
|
||||||
<DialogContent>{children}</DialogContent>
|
</P8PDialog>
|
||||||
<DialogActions>
|
|
||||||
<Button onClick={() => onOk && onOk()}>{BUTTONS.OK}</Button>
|
|
||||||
<Button onClick={() => onCancel && onCancel()}>{BUTTONS.CANCEL}</Button>
|
|
||||||
</DialogActions>
|
|
||||||
</Dialog>
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
import React from "react"; //Классы React
|
import React from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import { Typography, List, ListItem } from "@mui/material"; //Интерфейсные элементы
|
import { Typography, List, ListItem } from "@mui/material"; //Интерфейсные элементы
|
||||||
import { Form } from "./form"; //Типовая форма
|
import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог
|
||||||
|
|
||||||
//---------
|
//---------
|
||||||
//Константы
|
//Константы
|
||||||
@ -53,7 +53,7 @@ const DialogHelp = ({ onClose }) => {
|
|||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Form title={"Информация"} onClose={handleClose}>
|
<P8PDialog title={"Информация"} onClose={handleClose}>
|
||||||
<Typography>Карточки показателей содержат сокращенную информацию о типе состава показателя. Список сокращений:</Typography>
|
<Typography>Карточки показателей содержат сокращенную информацию о типе состава показателя. Список сокращений:</Typography>
|
||||||
<List disablePadding={true}>
|
<List disablePadding={true}>
|
||||||
<HelpListItem name={"fx"} desc={"формула"} />
|
<HelpListItem name={"fx"} desc={"формула"} />
|
||||||
@ -71,7 +71,7 @@ const DialogHelp = ({ onClose }) => {
|
|||||||
<HelpListItem name={"ДПНП"} desc={"декларация по налогу на прибыль"} />
|
<HelpListItem name={"ДПНП"} desc={"декларация по налогу на прибыль"} />
|
||||||
<HelpListItem name={"РО"} desc={"регламентированный отчет"} />
|
<HelpListItem name={"РО"} desc={"регламентированный отчет"} />
|
||||||
</List>
|
</List>
|
||||||
</Form>
|
</P8PDialog>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
import React from "react"; //Классы React
|
import React from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import { useDictionary } from "../hooks"; //Кастомные хуки
|
import { useDictionary } from "../hooks"; //Кастомные хуки
|
||||||
import { Form } from "./form"; //Типовая форма
|
import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
@ -67,15 +67,15 @@ const DialogMarkIU = ({
|
|||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Form
|
<P8PDialog
|
||||||
title={`${insert === true ? "Добавление" : "Исправление"} показателя`}
|
title={`${insert === true ? "Добавление" : "Исправление"} показателя`}
|
||||||
fields={[
|
inputs={[
|
||||||
{ elementCode: "code", elementValue: code, labelText: "Мнемокод" },
|
{ name: "code", value: code, label: "Мнемокод" },
|
||||||
{ elementCode: "name", elementValue: name, labelText: "Наименование" },
|
{ name: "name", value: name, label: "Наименование" },
|
||||||
{ elementCode: "rowCode", elementValue: rowCode, labelText: "Строка", dictionary: selectRow },
|
{ name: "rowCode", value: rowCode, label: "Строка", dictionary: selectRow },
|
||||||
{ elementCode: "rowVersion", elementValue: rowVersion, labelText: "Редакция строки", disabled: true },
|
{ name: "rowVersion", value: rowVersion, label: "Редакция строки", disabled: true },
|
||||||
{ elementCode: "columnCode", elementValue: columnCode, labelText: "Графа", dictionary: selectColumn },
|
{ name: "columnCode", value: columnCode, label: "Графа", dictionary: selectColumn },
|
||||||
{ elementCode: "columnVersion", elementValue: columnVersion, labelText: "Редакция графы", disabled: true }
|
{ name: "columnVersion", value: columnVersion, label: "Редакция графы", disabled: true }
|
||||||
]}
|
]}
|
||||||
onOk={handleOk}
|
onOk={handleOk}
|
||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
import React from "react"; //Классы React
|
import React from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import { Form } from "./form"; //Типовая форма
|
import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог
|
||||||
import { COL_ROW_ORDER } from "../common"; //Обще стили и константы
|
import { COL_ROW_ORDER } from "../common"; //Обще стили и константы
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
@ -26,11 +26,11 @@ const DialogOrder = ({ rowOrder = 0, columnOrder = 0, onOk, onCancel }) => {
|
|||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Form
|
<P8PDialog
|
||||||
title={"Сортировка"}
|
title={"Сортировка"}
|
||||||
fields={[
|
inputs={[
|
||||||
{ elementCode: "rowOrder", elementValue: rowOrder, labelText: "Строки", list: COL_ROW_ORDER },
|
{ name: "rowOrder", value: rowOrder, label: "Строки", list: COL_ROW_ORDER },
|
||||||
{ elementCode: "columnOrder", elementValue: columnOrder, labelText: "Графы", list: COL_ROW_ORDER }
|
{ name: "columnOrder", value: columnOrder, label: "Графы", list: COL_ROW_ORDER }
|
||||||
]}
|
]}
|
||||||
onOk={handleOk}
|
onOk={handleOk}
|
||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
import React from "react"; //Классы React
|
import React from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import { Form } from "./form"; //Типовая форма
|
import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
@ -25,11 +25,11 @@ const DialogSectionIU = ({ code = "", name = "", insert = true, onOk, onCancel }
|
|||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<Form
|
<P8PDialog
|
||||||
title={`${insert === true ? "Добавление" : "Исправление"} раздела`}
|
title={`${insert === true ? "Добавление" : "Исправление"} раздела`}
|
||||||
fields={[
|
inputs={[
|
||||||
{ elementCode: "code", elementValue: code, labelText: "Мнемокод" },
|
{ name: "code", value: code, label: "Мнемокод" },
|
||||||
{ elementCode: "name", elementValue: name, labelText: "Наименование" }
|
{ name: "name", value: name, label: "Наименование" }
|
||||||
]}
|
]}
|
||||||
onOk={handleOk}
|
onOk={handleOk}
|
||||||
onCancel={handleCancel}
|
onCancel={handleCancel}
|
||||||
|
@ -103,14 +103,14 @@ const Marks = ({ marks, order, marksLoading, marksInit, onRefresh, onMarkInsert,
|
|||||||
//При переходе к составу показателя
|
//При переходе к составу показателя
|
||||||
const handleMarkCnOpen = (mark, constitution) => showMarkCn(mark, constitution, res => res.success && handleRefresh());
|
const handleMarkCnOpen = (mark, constitution) => showMarkCn(mark, constitution, res => res.success && handleRefresh());
|
||||||
|
|
||||||
//При закрытии формы добавления/исправления по "ОК"
|
//При закрытии диалога добавления/исправления по "ОК"
|
||||||
const handleIUFormOk = values => {
|
const handleIUDialogOk = values => {
|
||||||
if (modMark === true) onMarkInsert && onMarkInsert(values, res => res && setModMark(null));
|
if (modMark === true) onMarkInsert && onMarkInsert(values, res => res && setModMark(null));
|
||||||
else onMarkUpdate && onMarkUpdate({ ...modMark, ...values }, res => res && setModMark(null));
|
else onMarkUpdate && onMarkUpdate({ ...modMark, ...values }, res => res && setModMark(null));
|
||||||
};
|
};
|
||||||
|
|
||||||
//При закрытии формы добавления/исправления по "Отмена"
|
//При закрытии диалога добавления/исправления по "Отмена"
|
||||||
const handleIUFormCancel = () => setModMark(null);
|
const handleIUDialogCancel = () => setModMark(null);
|
||||||
|
|
||||||
//Формирование представления
|
//Формирование представления
|
||||||
return (
|
return (
|
||||||
@ -118,7 +118,12 @@ const Marks = ({ marks, order, marksLoading, marksInit, onRefresh, onMarkInsert,
|
|||||||
{dialogOrder && <DialogOrder {...order} onOk={handleOrderChange} onCancel={toggleOrderDialog} />}
|
{dialogOrder && <DialogOrder {...order} onOk={handleOrderChange} onCancel={toggleOrderDialog} />}
|
||||||
{dialogHelp && <DialogHelp onClose={toggleHelpDialog} />}
|
{dialogHelp && <DialogHelp onClose={toggleHelpDialog} />}
|
||||||
{modMark && (
|
{modMark && (
|
||||||
<DialogMarkIU {...(modMark === true ? {} : modMark)} insert={modMark === true} onOk={handleIUFormOk} onCancel={handleIUFormCancel} />
|
<DialogMarkIU
|
||||||
|
{...(modMark === true ? {} : modMark)}
|
||||||
|
insert={modMark === true}
|
||||||
|
onOk={handleIUDialogOk}
|
||||||
|
onCancel={handleIUDialogCancel}
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
{marksInit &&
|
{marksInit &&
|
||||||
(marks ? (
|
(marks ? (
|
||||||
|
@ -118,15 +118,15 @@ const Sections = ({ conf, onSectionChange, onSectionCountChange }) => {
|
|||||||
//При удалении раздела настройки
|
//При удалении раздела настройки
|
||||||
const handleSectionDelete = section => showMsgWarn("Удалить раздел?", () => deleteSection(section));
|
const handleSectionDelete = section => showMsgWarn("Удалить раздел?", () => deleteSection(section));
|
||||||
|
|
||||||
//При закрытии формы добавления/исправления по "ОК"
|
//При закрытии диалога добавления/исправления по "ОК"
|
||||||
const handleIUFormOk = async values => {
|
const handleIUDialogOk = async values => {
|
||||||
if (modSection === true) await insertSection({ conf, ...values });
|
if (modSection === true) await insertSection({ conf, ...values });
|
||||||
else await updateSection({ rn: modSection.NRN, ...values });
|
else await updateSection({ rn: modSection.NRN, ...values });
|
||||||
setModSection(null);
|
setModSection(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
//При закрытии формы добавления/исправления по "Отмена"
|
//При закрытии диалога добавления/исправления по "Отмена"
|
||||||
const handleIUFormCancel = () => setModSection(null);
|
const handleIUDialogCancel = () => setModSection(null);
|
||||||
|
|
||||||
//При изменении состава разделов
|
//При изменении состава разделов
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -155,8 +155,8 @@ const Sections = ({ conf, onSectionChange, onSectionCountChange }) => {
|
|||||||
code={modSection?.SCODE}
|
code={modSection?.SCODE}
|
||||||
name={modSection?.SNAME}
|
name={modSection?.SNAME}
|
||||||
insert={modSection === true}
|
insert={modSection === true}
|
||||||
onOk={handleIUFormOk}
|
onOk={handleIUDialogOk}
|
||||||
onCancel={handleIUFormCancel}
|
onCancel={handleIUDialogCancel}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{sections.length > 0 ? (
|
{sections.length > 0 ? (
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
create or replace package PKG_P8PANELS_EDITOR as
|
create or replace package PKG_P8PANELS_PE as
|
||||||
|
|
||||||
/* Список аргументов пользовательской процедуры */
|
/* Список аргументов пользовательской процедуры */
|
||||||
procedure USERPROCS_DESC
|
procedure USERPROCS_DESC
|
||||||
@ -7,9 +7,9 @@ create or replace package PKG_P8PANELS_EDITOR as
|
|||||||
COUT out clob -- Сериализованный список аргументов
|
COUT out clob -- Сериализованный список аргументов
|
||||||
);
|
);
|
||||||
|
|
||||||
end PKG_P8PANELS_EDITOR;
|
end PKG_P8PANELS_PE;
|
||||||
/
|
/
|
||||||
create or replace package body PKG_P8PANELS_EDITOR as
|
create or replace package body PKG_P8PANELS_PE as
|
||||||
|
|
||||||
/* Описание пользовательской процедуры */
|
/* Описание пользовательской процедуры */
|
||||||
procedure USERPROCS_DESC
|
procedure USERPROCS_DESC
|
||||||
@ -123,5 +123,5 @@ create or replace package body PKG_P8PANELS_EDITOR as
|
|||||||
end if;
|
end if;
|
||||||
end USERPROCS_DESC;
|
end USERPROCS_DESC;
|
||||||
|
|
||||||
end PKG_P8PANELS_EDITOR;
|
end PKG_P8PANELS_PE;
|
||||||
/
|
/
|
Loading…
x
Reference in New Issue
Block a user