From 2201fa40043ec44436ea61f39f89e274aa74fe2b Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 15 Aug 2024 02:08:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=B0=D1=80=D1=82=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B5=D1=85.=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B0:=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=B4=D1=83=D1=8E=D1=89=D0=B5=D0=B3=D0=BE=20=D0=A2?= =?UTF-8?q?=D0=9E,=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0=20=D0=A2?= =?UTF-8?q?=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EQUIPTCF.pck | 145 ++++++++++++++ .../eqs_tech_cond_forecast_layout.js | 2 +- panels/eqs_tech_cond_forecast/forecast_tab.js | 44 ++++- .../forecast_tab_hooks.js | 4 +- .../forecast_tab_layout.js | 180 ++++++++++++++++-- 5 files changed, 352 insertions(+), 23 deletions(-) diff --git a/db/UDO_PKG_EQUIPTCF.pck b/db/UDO_PKG_EQUIPTCF.pck index 38c92a6..382df1c 100644 --- a/db/UDO_PKG_EQUIPTCF.pck +++ b/db/UDO_PKG_EQUIPTCF.pck @@ -22,6 +22,15 @@ create or replace package UDO_PKG_EQUIPTCF as COUT out clob -- Сериализованная таблица данных ); + /* Выбор графиков технического обслуживания и ремонта технического объекта */ + procedure EQCONFIG_THOBJ_SELECT_EQTCHSRV + ( + NEQTCHSRV in number := null, -- Рег. номер графика ТО и ремонтов (null - любой) + NEQCONFIG in number := null, -- Рег. номер технического объекта (null - любой) + NSTATE in number := null, -- Состояние (null - любое) + NIDENT out number -- Идентификатор списка + ); + /* Формирование карточки технического объекта */ procedure EQCONFIG_THOBJ_CARD ( @@ -36,6 +45,14 @@ create or replace package UDO_PKG_EQUIPTCF as NEQUIPDSCMML in number -- Рег. номер модели ); + /* Модификация графика ТО и ремонтов для технического объекта */ + procedure EQCONFIG_THOBJ_CHNG_EQTCHSRV + ( + NEQCONFIG in number, -- Рег. номер технического объекта + NEQTCHSRV in number, -- Рег. номер графика ТО и ремонтов + DPLANDATE_FROM in date -- Уточнённая плановая дата начала ремонта + ); + /* Формирование ремонтной ведомости для технического объекта */ procedure EQCONFIG_THOBJ_MAKE_EQRPSHEET ( @@ -390,6 +407,57 @@ text="Проверка прав доступа при формировании COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end EQCONFIG_THOBJ_LIST; + /* Получение даты следующего технического обслуживания технического объекта */ + function EQCONFIG_THOBJ_GET_NXTEQTCHSRV + ( + NEQCONFIG in number, -- Рег. номер технического объекта + NSTATE in number := null -- Состояние (null - любое) + ) return date -- Дата следующего технического обслуживания + is + DRES PKG_STD.TLDATE; -- Буфер для результата + begin + /* Найдем график ТО и ремонтов, утвержденный, с минимальной датой по данному тех. объекту */ + select min(T.DATEPRD_BEG) + into DRES + from EQTCHSRV T + where T.EQCONFIG_TECH = NEQCONFIG + and ((NSTATE is null) or ((NSTATE is not null) and (T.STATE = NSTATE))) + and T.DATEPRD_BEG >= sysdate; + /* Вернём результат */ + return DRES; + exception + when others then + return null; + end EQCONFIG_THOBJ_GET_NXTEQTCHSRV; + + /* Выбор графиков технического обслуживания и ремонта технического объекта */ + procedure EQCONFIG_THOBJ_SELECT_EQTCHSRV + ( + NEQTCHSRV in number := null, -- Рег. номер графика ТО и ремонтов (null - любой) + NEQCONFIG in number := null, -- Рег. номер технического объекта (null - любой) + NSTATE in number := null, -- Состояние (null - любое) + NIDENT out number -- Идентификатор списка + ) + is + NTMP PKG_STD.TREF; -- Рег. номер записи буфера отобранных + begin + /* Обходим графики по тех. объекту */ + for C in (select T.RN + from EQTCHSRV T + where ((NEQTCHSRV is null) or ((NEQTCHSRV is not null) and (T.RN = NEQTCHSRV))) + and ((NEQCONFIG is null) or ((NEQCONFIG is not null) and (T.EQCONFIG_TECH = NEQCONFIG))) + and ((NEQTCHSRV is not null) or ((NEQTCHSRV is null) and (T.DATEPRD_BEG >= sysdate))) + and ((NSTATE is null) or ((NSTATE is not null) and (T.STATE = NSTATE)))) + loop + /* Формируем идентификатор списка если необходимо */ + if (NIDENT is null) then + NIDENT := GEN_IDENT(); + end if; + /* Добавляем отобранное в список */ + P_SELECTLIST_INSERT(NIDENT => NIDENT, NDOCUMENT => C.RN, SUNITCODE => 'EquipTechServices', NRN => NTMP); + end loop; + end EQCONFIG_THOBJ_SELECT_EQTCHSRV; + /* Формирование карточки технического объекта */ procedure EQCONFIG_THOBJ_CARD ( @@ -431,6 +499,10 @@ text="Проверка прав доступа при формировании SNAME => 'DOPER_DATE', DVALUE => C.DOPER_DATE), RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'DNEXT_EQTCHSRV', + SVALUE => TO_CHAR(EQCONFIG_THOBJ_GET_NXTEQTCHSRV(NEQCONFIG => C.NRN), + 'dd.mm.yyyy hh24:mi:ss')), + RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SEQOBJKIND', SVALUE => C.SEQOBJKIND))); end loop; @@ -472,6 +544,79 @@ text="Проверка прав доступа при формировании end loop; end EQCONFIG_THOBJ_FORECAST; + /* Модификация графика ТО и ремонтов для технического объекта */ + procedure EQCONFIG_THOBJ_CHNG_EQTCHSRV + ( + NEQCONFIG in number, -- Рег. номер технического объекта + NEQTCHSRV in number, -- Рег. номер графика ТО и ремонтов + DPLANDATE_FROM in date -- Уточнённая плановая дата начала ремонта + ) + is + REQTCHSRV EQTCHSRV%rowtype; -- Запись графика ТО и ремонтов + RDSCMMLH UDO_T_EQUIPDSCMMLH%rowtype; -- Запись истории прогнозов + NDIFF PKG_STD.TNUMBER; -- Отклонение старой и новой дат + DDATEPRD_BEG PKG_STD.TLDATE; -- Новая дата начала + DDATEPRD_END PKG_STD.TLDATE; -- Новая дата окончания + SNOTE PKG_STD.TSTRING; -- Новое примечание + begin + /* Считаем график */ + begin + select T.* into REQTCHSRV from EQTCHSRV T where T.RN = NEQTCHSRV; + exception + when NO_DATA_FOUND then + PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NEQTCHSRV, SUNIT_TABLE => 'EquipTechServices'); + end; + /* Считаем запись истории прогнозов */ + begin + select T.* + into RDSCMMLH + from UDO_T_EQUIPDSCMMLH T + where T.RN = (select max(TT.RN) from UDO_T_EQUIPDSCMMLH TT where TT.EQCONFIG = NEQCONFIG); + exception + when others then + P_EXCEPTION(0, + 'Не удалось определить запись-основание истории прогнозов модели.'); + end; + /* Проверим, что из графика не сформирована ремонтная ведомость */ + if (F_DOCLINKS_LINK_OUT_DOC(SIN_UNITCODE => 'EquipTechServices', + NIN_DOCUMENT => REQTCHSRV.RN, + SOUT_UNITCODE => 'EquipRepairSheets') is not null) then + P_EXCEPTION(0, + 'Из графика ТО и ремонтов (RN: %s) уже создана ремонтная ведомость.', + TO_CHAR(REQTCHSRV.RN)); + end if; + /* Проверим, что есть на что менять */ + if (TRUNC(DPLANDATE_FROM) = TRUNC(REQTCHSRV.DATEPRD_BEG)) then + P_EXCEPTION(0, + 'Выбранный график ТО и ремонтов уже запланирован на %s', + TO_CHAR(DPLANDATE_FROM, 'dd.mm.yyyy')); + end if; + /* Определим отклонение и новые даты графика */ + NDIFF := DPLANDATE_FROM - REQTCHSRV.DATEPRD_BEG; + DDATEPRD_BEG := REQTCHSRV.DATEPRD_BEG + NDIFF; + DDATEPRD_END := REQTCHSRV.DATEPRD_END + NDIFF; + /* Формируем новое примечание */ + SNOTE := 'Автоматически перенесён с "' || TO_CHAR(REQTCHSRV.DATEPRD_BEG, 'dd.mm.yyyy hh24:mi:ss') || '" на "' || + TO_CHAR(DDATEPRD_BEG, 'dd.mm.yyyy hh24:mi:ss') || '" на основании прогноза от "' || + TO_CHAR(RDSCMMLH.RQ_DATE, 'dd.mm.yyyy hh24:mi:ss') || '" (RN: ' || TO_CHAR(RDSCMMLH.RN) || + ', пользователь: ' || RDSCMMLH.RQ_AUTHID || ').'; + /* Изменим заголовок графика */ + update EQTCHSRV T + set T.DATEPRD_BEG = DDATEPRD_BEG, + T.DATEPRD_END = DDATEPRD_END, + T.NOTE = SNOTE + where T.RN = REQTCHSRV.RN; + /* Сдвинем работы */ + P_EQTCHSRV_MOVE_WORK(NCOMPANY => REQTCHSRV.COMPANY, + NRN => REQTCHSRV.RN, + NDUP_RN => null, + DDATEPRD_BEG => DDATEPRD_BEG, + DOLD_DATEPRD_BEG => REQTCHSRV.DATEPRD_BEG, + DDATEPRD_END => DDATEPRD_END, + NPERIOD => null, + NMODE => 1); + end EQCONFIG_THOBJ_CHNG_EQTCHSRV; + /* Формирование ремонтной ведомости для технического объекта */ procedure EQCONFIG_THOBJ_MAKE_EQRPSHEET ( diff --git a/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js b/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js index 3880842..f0a9751 100644 --- a/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js +++ b/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js @@ -240,7 +240,7 @@ const IUDFormTextField = ({ elementCode, elementValue, labelText, onChange, dict //Контроль свойств - Поле ввода формы IUDFormTextField.propTypes = { elementCode: PropTypes.string.isRequired, - elementValue: PropTypes.string, + elementValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]), labelText: PropTypes.string.isRequired, onChange: PropTypes.func, dictionary: PropTypes.func, diff --git a/panels/eqs_tech_cond_forecast/forecast_tab.js b/panels/eqs_tech_cond_forecast/forecast_tab.js index f99885f..6d08e6c 100644 --- a/panels/eqs_tech_cond_forecast/forecast_tab.js +++ b/panels/eqs_tech_cond_forecast/forecast_tab.js @@ -21,6 +21,7 @@ import { TechObjCard, eqConfigTechObjTableValueFormatter, eqConfigTechObjTableDataCellRender, + TechObjChangeEqTchSrv, TechObjMakeEqRpSheet, TechObjMakeDataSet } from "./forecast_tab_layout"; //Вспомогательные компоненты и вёрстка @@ -40,15 +41,16 @@ import { //Начальное состояние флагов обновления const REFRESH_INITIAL = { techObjSpec: 0, + techObjCard: 0, techObjForecastHistList: 0 }; //Начальное состояние диалогов -const DIALOGS_INITIAL = { makeEqRpSheet: false, makeEqDataSet: false, techObjCard: false }; +const DIALOGS_INITIAL = { makeEqRpSheet: false, makeEqDataSet: false, techObjCard: false, changeEqTchSrv: false }; //Начальное состояние спецификации технических объектов const TECH_OBJ_SPEC_INITIAL = { - parent: null, + parent: 8938140, filters: [], orders: [], pageNumber: 1 @@ -120,7 +122,7 @@ const ForecastTab = ({ onGoToAdmin }) => { ); //Загрузчик карточки выбранного технического объекта - const { techObjCard, techObjCardIsLoading } = useEqConfigTechObjCard(techObj.id); + const { techObjCard } = useEqConfigTechObjCard(techObj.id, refresh.techObjCard); //Загрузчик моделей выбранного технического объекта const { techObjModelsList } = useTechObjModelsList(techObj.id); @@ -173,9 +175,15 @@ const ForecastTab = ({ onGoToAdmin }) => { setTechObj(TECH_OBJ_INITIAL); }; + //При нажатии на "Изменить график ТО" в карточке технического объекта + const handleTechObjeCardChangeEqTchSrv = () => setDialogs(pv => ({ ...pv, changeEqTchSrv: true })); + //При нажатии на "Ремонтировать" в карточке технического объекта const handleTechObjeCardMakeEqRpSheet = () => setDialogs(pv => ({ ...pv, makeEqRpSheet: true })); + //При необходимости обновления карточки технического объекта + const handleCardDataRefresh = () => setRefresh(pv => ({ ...pv, techObjCard: pv.techObjCard + 1 })); + //При нажатии "ОК" в диалоге формирования ремонтной ведомости const handleTechObjMakeEqRpSheetOk = async values => { const data = await executeStored({ @@ -194,6 +202,29 @@ const ForecastTab = ({ onGoToAdmin }) => { //При нажитии "Отмена" в диалоге формирования ремонтной ведомости const handleTechObjMakeEqRpSheetCancel = () => setDialogs(pv => ({ ...pv, makeEqRpSheet: false })); + //При нажатии "ОК" в диалоге корректировки графика ТО и ремонтов + const handleTechObjChangeEqTchSrvOk = async values => { + await executeStored({ + stored: "UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_CHNG_EQTCHSRV", + args: { + NEQCONFIG: techObj.id, + NEQTCHSRV: values.eQTchSrv, + DPLANDATE_FROM: new Date(values.planDateFrom) + } + }); + handleCardDataRefresh(); + setDialogs(pv => ({ ...pv, changeEqTchSrv: false })); + const data = await executeStored({ stored: "UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_SELECT_EQTCHSRV", args: { NEQTCHSRV: values.eQTchSrv } }); + if (data.NIDENT) + pOnlineShowUnit({ + unitCode: "EquipTechServices", + inputParameters: [{ name: "in_SelectList_Ident", value: data.NIDENT }] + }); + }; + + //При нажитии "Отмена" в диалоге корректировки графика ТО и ремонтов + const handleTechObjChangeEqTchSrvCancel = () => setDialogs(pv => ({ ...pv, changeEqTchSrv: false })); + //При нажатии "ОК" в диалоге формирования выборки данных const handleTechObjMakeDataSetOk = async values => { const data = await executeStored({ @@ -234,7 +265,7 @@ const ForecastTab = ({ onGoToAdmin }) => { return (
{dialogs.techObjCard ? ( - techObj.id && !techObjCardIsLoading && techObjCard?.SCODE ? ( + techObj.id && techObjCard?.SCODE ? ( { onClose={handleTechObjeCardClose} onGoToModel={handleTechObjeCardGoToModel} onGetPrediction={handleTechObjeCardGetPrediction} + onChangeEqTchSrv={handleTechObjeCardChangeEqTchSrv} onMakeEqRpSheet={handleTechObjeCardMakeEqRpSheet} + onCardDataRefresh={handleCardDataRefresh} /> ) : null ) : null} @@ -255,6 +288,9 @@ const ForecastTab = ({ onGoToAdmin }) => { onOk={handleTechObjMakeDataSetOk} /> ) : null} + {dialogs.changeEqTchSrv ? ( + + ) : null} diff --git a/panels/eqs_tech_cond_forecast/forecast_tab_hooks.js b/panels/eqs_tech_cond_forecast/forecast_tab_hooks.js index f13591e..3c3a535 100644 --- a/panels/eqs_tech_cond_forecast/forecast_tab_hooks.js +++ b/panels/eqs_tech_cond_forecast/forecast_tab_hooks.js @@ -147,7 +147,7 @@ const useEqConfigTechObjTable = (parent, filters, orders, pageNumber, refresh) = }; //Загрузка карточки технического объекта -const useEqConfigTechObjCard = id => { +const useEqConfigTechObjCard = (id, refresh) => { //Собственное состояние - флаг загрузки const [isLoading, setLoading] = useState(false); @@ -174,7 +174,7 @@ const useEqConfigTechObjCard = id => { } }; if (id) loadData(); - }, [id, executeStored]); + }, [id, refresh, executeStored]); //Вернём данные return { techObjCard: card, techObjCardIsLoading: isLoading }; diff --git a/panels/eqs_tech_cond_forecast/forecast_tab_layout.js b/panels/eqs_tech_cond_forecast/forecast_tab_layout.js index df37be2..710dd50 100644 --- a/panels/eqs_tech_cond_forecast/forecast_tab_layout.js +++ b/panels/eqs_tech_cond_forecast/forecast_tab_layout.js @@ -12,7 +12,9 @@ import PropTypes from "prop-types"; //Контроль свойств компо import { Stack, Card, CardContent, Typography, Button, Link, Dialog, DialogTitle, DialogContent, DialogActions } from "@mui/material"; //Интерфейсные компоненты import { useTheme } from "@mui/material/styles"; //Темы оформления import { ApplicationСtx } from "../../context/application"; //Контекст приложения -import { BUTTONS } from "../../../app.text"; //Текстовые ресурсы и константы +import { BackEndСtx } from "../../context/backend"; //Контекст взаимодействия с серверомs +import { MessagingСtx } from "../../context/messaging"; //Контекст сообщений +import { BUTTONS, TEXTS } from "../../../app.text"; //Текстовые ресурсы и константы import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения import { formatDateRF, xml2JSON } from "../../core/utils"; //Вспомогательные функции @@ -189,7 +191,26 @@ const eqConfigTechObjTableDataCellRender = ({ row, columnDef, onCMMLStatus }) => }; //Карточка технического объекта -const TechObjCard = ({ cardData, modelsList, forecastHistList, onClose, onGoToModel, onGetPrediction, onMakeEqRpSheet }) => { +const TechObjCard = ({ + cardData, + modelsList, + forecastHistList, + onClose, + onGoToModel, + onGetPrediction, + onChangeEqTchSrv, + onMakeEqRpSheet, + onCardDataRefresh +}) => { + //Подключение к контексту приложения + const { pOnlineShowDictionary } = useContext(ApplicationСtx); + + //Подключение к контексту взаимодействия с сервером + const { executeStored } = useContext(BackEndСtx); + + //Подключение к контексту сообщений + const { showMsgErr } = useContext(MessagingСtx); + //Подключаемся к теме const theme = useTheme(); @@ -205,6 +226,9 @@ const TechObjCard = ({ cardData, modelsList, forecastHistList, onClose, onGoToMo //При нажатии на запрос предсказания const handleGetPredictionClick = model => (onGetPrediction ? onGetPrediction(model) : null); + //При нажатии на изменение графика ТО и ремонтов + const handleChangeEqTchSrvClick = () => (onChangeEqTchSrv ? onChangeEqTchSrv() : null); + //При нажатии на формирование ремонтной ведомости const handleMakeEqRpSheetClick = () => (onMakeEqRpSheet ? onMakeEqRpSheet() : null); @@ -216,6 +240,18 @@ const TechObjCard = ({ cardData, modelsList, forecastHistList, onClose, onGoToMo //При нажатии на закрытие деталей прогноза const handleCloseForecastDetailClick = () => setState(pv => ({ ...pv, forecastDetail: null, forecastDate: null })); + //При нажатии на дату следующего обслуживания + const handleNextRepairClick = async () => { + const data = await executeStored({ stored: "UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_SELECT_EQTCHSRV", args: { NEQCONFIG: cardData.NRN } }); + if (data.NIDENT) + pOnlineShowDictionary({ + unitCode: "EquipTechServices", + inputParameters: [{ name: "in_SelectList_Ident", value: data.NIDENT }], + callBack: res => (res.success && onCardDataRefresh ? onCardDataRefresh() : null) + }); + else showMsgErr(TEXTS.NO_DATA_FOUND); + }; + //Генерация содержимого return ( <> @@ -227,9 +263,19 @@ const TechObjCard = ({ cardData, modelsList, forecastHistList, onClose, onGoToMo {cardData.SNAME} - - {`${formatDateRF(cardData.DOPER_DATE)}, ${cardData.SEQOBJKIND}`} - + + + {`${formatDateRF(cardData.DOPER_DATE)}, ${cardData.SEQOBJKIND}`} + + {cardData.DNEXT_EQTCHSRV ? ( + + Следующее ТО:{" "} + + {cardData.DNEXT_EQTCHSRV} + + + ) : null} + {modelsList.init ? ( @@ -287,6 +333,11 @@ const TechObjCard = ({ cardData, modelsList, forecastHistList, onClose, onGoToMo + {cardData.DNEXT_EQTCHSRV ? ( + + ) : null} @@ -305,7 +356,97 @@ TechObjCard.propTypes = { onClose: PropTypes.func, onGoToModel: PropTypes.func, onGetPrediction: PropTypes.func, - onMakeEqRpSheet: PropTypes.func + onChangeEqTchSrv: PropTypes.func, + onMakeEqRpSheet: PropTypes.func, + onCardDataRefresh: PropTypes.func +}; + +//Диалог модификации гарфика ТО и ремонтов +const TechObjChangeEqTchSrv = ({ eQConfig, onOk, onCancel }) => { + //Подключение к контексту приложения + const { pOnlineShowDictionary } = useContext(ApplicationСtx); + + //Подключение к контексту взаимодействия с сервером + const { executeStored } = useContext(BackEndСtx); + + //Подключение к контексту сообщений + const { showMsgErr } = useContext(MessagingСtx); + + //Собственное состояние - значения формы + const [values, setValues] = useState({ + eQTchSrv: "", + eQTchSrvDesc: "", + planDateFrom: "" + }); + + //Отработка воода значения в форму + const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value })); + + //Выбор графика ТО и ремонтов + const selectEquipTechService = async (name, callBack) => { + const data = await executeStored({ stored: "UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_SELECT_EQTCHSRV", args: { NEQCONFIG: eQConfig } }); + if (data.NIDENT) + pOnlineShowDictionary({ + unitCode: "EquipTechServices", + inputParameters: [{ name: "in_SelectList_Ident", value: data.NIDENT }], + callBack: res => + callBack( + res.success + ? [ + { name: "eQTchSrv", value: res.outParameters.out_RN }, + { + name, + value: `${res.outParameters.out_DOCTYPES_DOCCODE} №${String(res.outParameters.out_PREF).trim()}-${String( + res.outParameters.out_NUMB + ).trim()} от ${formatDateRF(res.outParameters.out_DOCDATE)}` + } + ] + : null + ) + }); + else showMsgErr(TEXTS.NO_DATA_FOUND); + }; + + //Генерация содержимого + return ( + (onOk ? onCancel() : null)}> + Корректировка графика ТО и ремонтов + + selectEquipTechService("eQTchSrvDesc", callBack)} + /> + + + + + + + + + ); +}; + +//Контроль свойств - Диалог модификации гарфика ТО и ремонтов +TechObjChangeEqTchSrv.propTypes = { + eQConfig: PropTypes.number.isRequired, + onOk: PropTypes.func, + onCancel: PropTypes.func }; //Диалог формирования ремонтной ведомости @@ -393,16 +534,16 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => { const [values, setValues] = useState({ dataSet: "", eqobjKind: eqobjKind, - measureUnit: measureUnit || "", - userprocsData: "", - exsServiceUpload: "", - exsServiceFnUpload: "", - exsServiceSendMd: "", - exsServiceFnSendMd: "", - exsServiceSendRq: "", - exsServiceFnSendRq: "", + measureUnit: measureUnit || "СУТ", + userprocsData: "ФормДанВыгрОбучМод", + exsServiceUpload: "Загрузка_на_SCP", + exsServiceFnUpload: "Загрузка_на_SCP", + exsServiceSendMd: "Загрузка_на_Фреймворк", + exsServiceFnSendMd: "Передача данных", + exsServiceSendRq: "Загрузка_на_Фреймворк", + exsServiceFnSendRq: "Запрос на обучение", task: "RUL", - precisionP: null + precisionP: 99 }); //Отработка воода значения в форму @@ -519,4 +660,11 @@ TechObjMakeDataSet.propTypes = { //Интерфейс модуля //---------------- -export { eqConfigTechObjTableValueFormatter, eqConfigTechObjTableDataCellRender, TechObjCard, TechObjMakeEqRpSheet, TechObjMakeDataSet }; +export { + eqConfigTechObjTableValueFormatter, + eqConfigTechObjTableDataCellRender, + TechObjCard, + TechObjChangeEqTchSrv, + TechObjMakeEqRpSheet, + TechObjMakeDataSet +};