Добавление параметра "Технический объект"

This commit is contained in:
Dollerino 2026-05-06 18:54:55 +03:00
parent e953ec7b76
commit e6d4296b9d
9 changed files with 111 additions and 29 deletions

View File

@ -6,7 +6,7 @@ create or replace package UDO_PKG_P8PANELS_USETTINGS as
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
); );
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */ /* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET procedure SETTINGS_GET
( (
@ -40,7 +40,7 @@ create or replace package body UDO_PKG_P8PANELS_USETTINGS as
values values
(NRN, NCOMPANY, SAUTHID, SPANEL, CPANEL_SETTINGS); (NRN, NCOMPANY, SAUTHID, SPANEL, CPANEL_SETTINGS);
end P8PANELS_USETTING_INSERT; end P8PANELS_USETTING_INSERT;
/* Žáíîâëåíèå çàïèñè íàñòðîéêè ïàíåëè */ /* Žáíîâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_UPDATE procedure P8PANELS_USETTING_UPDATE
( (
@ -65,12 +65,12 @@ create or replace package body UDO_PKG_P8PANELS_USETTINGS as
TO_CHAR(NRN)); TO_CHAR(NRN));
end if; end if;
end P8PANELS_USETTING_UPDATE; end P8PANELS_USETTING_UPDATE;
/* “äàëåíèå çàïèñè íàñòðîéêè ïàíåëè */ /* “äàëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_DELETE procedure P8PANELS_USETTING_DELETE
( (
NRN in number, -- <20>åã. íîìåð çàïèñè NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
) )
is is
begin begin
@ -78,14 +78,14 @@ create or replace package body UDO_PKG_P8PANELS_USETTINGS as
delete from UDO_P8PANELS_USETTING delete from UDO_P8PANELS_USETTING
where RN = NRN where RN = NRN
and COMPANY = NCOMPANY; and COMPANY = NCOMPANY;
if (sql%notfound) then if (sql%notfound) then
P_EXCEPTION(0, P_EXCEPTION(0,
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.', '‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
TO_CHAR(NRN)); TO_CHAR(NRN));
end if; end if;
end P8PANELS_USETTING_DELETE; end P8PANELS_USETTING_DELETE;
/* ‘÷èòûâàíèå çàïèñè íàñòðîéêè ïàíåëè */ /* ‘÷èòûâàíèå çàïèñè íàñòðîéêè ïàíåëè */
function P8PANELS_USETTING_GET function P8PANELS_USETTING_GET
( (
@ -110,7 +110,7 @@ create or replace package body UDO_PKG_P8PANELS_USETTINGS as
/* ‚îçâðàùàåì ðåçóëüòàò */ /* ‚îçâðàùàåì ðåçóëüòàò */
return RRESULT; return RRESULT;
end P8PANELS_USETTING_GET; end P8PANELS_USETTING_GET;
/* ‘÷èòûâàíèå ðåã. íîìåðà çàïèñè íàñòðîéêè ïàíåëè òåêóùåãî ïîëüçîâàòåëß ïî íàèìåíîâàíèþ ïàíåëè */ /* ‘÷èòûâàíèå ðåã. íîìåðà çàïèñè íàñòðîéêè ïàíåëè òåêóùåãî ïîëüçîâàòåëß ïî íàèìåíîâàíèþ ïàíåëè */
procedure P8PANELS_USETTING_FIND procedure P8PANELS_USETTING_FIND
( (
@ -196,7 +196,7 @@ create or replace package body UDO_PKG_P8PANELS_USETTINGS as
NRN => NUDO_P8PANELS_USETTING); NRN => NUDO_P8PANELS_USETTING);
end if; end if;
end SETTINGS_SET; end SETTINGS_SET;
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */ /* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET procedure SETTINGS_GET
( (

File diff suppressed because one or more lines are too long

View File

@ -88,6 +88,7 @@ const Filter = ({ filter, onFilterOpen }) => {
) : null} ) : null}
{filter.sWorkType ? <FilterItem caption={"Типовая работа"} value={filter.sWorkType} onClick={handleClick} /> : null} {filter.sWorkType ? <FilterItem caption={"Типовая работа"} value={filter.sWorkType} onClick={handleClick} /> : null}
{filter.sWorkKind ? <FilterItem caption={"Вид типовых работ"} value={filter.sWorkKind} onClick={handleClick} /> : null} {filter.sWorkKind ? <FilterItem caption={"Вид типовых работ"} value={filter.sWorkKind} onClick={handleClick} /> : null}
{filter.sEqconfig ? <FilterItem caption={"Технический объект"} value={filter.sEqconfig} onClick={handleClick} /> : null}
</Stack> </Stack>
</Stack> </Stack>
</Box> </Box>

View File

@ -48,7 +48,7 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
const [filter, setFilter] = useState({ ...initial }); const [filter, setFilter] = useState({ ...initial });
//Вспомогательные функции открытия раздела //Вспомогательные функции открытия раздела
const { handleInsDepartmentOpen, handleEquipTypeWorksOpen, handleEquipWorkKindsOpen } = useDictionary(); const { handleInsDepartmentOpen, handleEquipTypeWorksOpen, handleEquipWorkKindsOpen, handleEquipConfigurationOpen } = useDictionary();
//Вспомогательные функции //Вспомогательные функции
const { handleInsDepartmentNameGet } = useProcedures(); const { handleInsDepartmentNameGet } = useProcedures();
@ -85,6 +85,16 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
} }
}); });
//При изменении технического объекта
const handleEqconfigSelect = () =>
handleEquipConfigurationOpen({
sCode: filter.sEqconfig,
callBack: res => {
console.log(res.outParameters);
setFilter(pv => ({ ...pv, sEqconfig: res.outParameters.out_CODE }));
}
});
//При очистке фильтра //При очистке фильтра
const handleClear = () => { const handleClear = () => {
setFilter({ dDateBegin: "", dDateEnd: "", sCustomerDept: "", sCustomerDeptName: "", sWorkType: "", sWorkKind: "" }); setFilter({ dDateBegin: "", dDateEnd: "", sCustomerDept: "", sCustomerDeptName: "", sWorkType: "", sWorkKind: "" });
@ -192,6 +202,23 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
}} }}
fullWidth fullWidth
/> />
<TextField
name="sEqconfig"
value={filter.sEqconfig}
onChange={handleValueChanged}
label="Технический объект"
variant="standard"
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton aria-label={`sEqconfig select`} onClick={handleEqconfigSelect} edge="end">
<Icon>list</Icon>
</IconButton>
</InputAdornment>
)
}}
fullWidth
/>
</Box> </Box>
</DialogContent> </DialogContent>
<DialogActions sx={STYLES.DIALOG_ACTIONS}> <DialogActions sx={STYLES.DIALOG_ACTIONS}>

View File

@ -82,12 +82,44 @@ const useDictionary = () => {
[pOnlineShowUnit] [pOnlineShowUnit]
); );
//Отображение раздела "Состав оборудования"
const handleEquipConfigurationOpen = useCallback(
async prms => {
pOnlineShowDictionary({
unitCode: "EquipConfiguration",
inputParameters: [{ name: "in_CODE", value: prms.sCode ? prms.sCode.toString() : null }],
callBack: res => {
res.success ? prms.callBack(res) : null;
}
});
},
[pOnlineShowDictionary]
);
//Отображение раздела "Присоединенные документы"
const handleFileLinksOpen = useCallback(
async prms => {
pOnlineShowUnit({
unitCode: "FileLinks",
showMethod: "link",
inputParameters: [
{ name: "sel_document", value: prms.nRn },
{ name: "sel_unitcode", value: "EquipRepairSheets" }
],
modal: false
});
},
[pOnlineShowUnit]
);
//Возвращаем функции открытия разделов //Возвращаем функции открытия разделов
return { return {
handleInsDepartmentOpen, handleInsDepartmentOpen,
handleEquipTypeWorksOpen, handleEquipTypeWorksOpen,
handleEquipWorkKindsOpen, handleEquipWorkKindsOpen,
handleEquipRepairSheetsOpen handleEquipRepairSheetsOpen,
handleEquipConfigurationOpen,
handleFileLinksOpen
}; };
}; };

View File

@ -19,13 +19,13 @@ import { object2Base64XML } from "../../../core/utils"; //Вспомогател
const useFilters = () => { const useFilters = () => {
//Собственное состояние - общие значения фильтров //Собственное состояние - общие значения фильтров
const [filterValues, setFilterValues] = useState({ const [filterValues, setFilterValues] = useState({
loaded: false,
dDateBegin: "", dDateBegin: "",
dDateEnd: "", dDateEnd: "",
sCustomerDept: "", sCustomerDept: "",
sCustomerDeptName: "", sCustomerDeptName: "",
sWorkType: "", sWorkType: "",
sWorkKind: "" sWorkKind: "",
sEqconfig: ""
}); });
//Собственное состояние - признак загрузки настроек //Собственное состояние - признак загрузки настроек
@ -75,7 +75,7 @@ const useFilters = () => {
respArg: "COUT" respArg: "COUT"
}); });
//Если есть настройки - указываем //Если есть настройки - указываем
if (data) setFilterValues({ ...data }); if (data) setFilterValues(pv => ({ ...pv, ...data }));
} finally { } finally {
setIsFiltersLoaded(true); setIsFiltersLoaded(true);
} }

View File

@ -43,6 +43,7 @@ const useChartStatuses = ({ storedArgs = {} }) => {
SINS_DEPARTMENT: storedArgs.sCustomerDept, SINS_DEPARTMENT: storedArgs.sCustomerDept,
SEQTYPEWRK: storedArgs.sWorkType, SEQTYPEWRK: storedArgs.sWorkType,
SEQWRKKIND: storedArgs.sWorkKind, SEQWRKKIND: storedArgs.sWorkKind,
SEQCONFIG: storedArgs.sEqconfig.toString(),
NSTATE: storedArgs.nState, NSTATE: storedArgs.nState,
NTYPESPEND: storedArgs.nType NTYPESPEND: storedArgs.nType
}, },
@ -86,6 +87,7 @@ const useChartSpendings = ({ storedArgs = {} }) => {
SINS_DEPARTMENT: storedArgs.sCustomerDept, SINS_DEPARTMENT: storedArgs.sCustomerDept,
SEQTYPEWRK: storedArgs.sWorkType, SEQTYPEWRK: storedArgs.sWorkType,
SEQWRKKIND: storedArgs.sWorkKind, SEQWRKKIND: storedArgs.sWorkKind,
SEQCONFIG: storedArgs.sEqconfig.toString(),
NSTATE: storedArgs.nState, NSTATE: storedArgs.nState,
NTYPESPEND: storedArgs.nType NTYPESPEND: storedArgs.nType
}, },

View File

@ -8,7 +8,7 @@
//--------------------- //---------------------
import React from "react"; //Классы React import React from "react"; //Классы React
import { Icon, Stack, Link } from "@mui/material"; //Интерфейсные компоненты import { Icon, Stack, Link, IconButton } from "@mui/material"; //Интерфейсные компоненты
import { formatDateRF } from "../../core/utils"; //Вспомогательные функции import { formatDateRF } from "../../core/utils"; //Вспомогательные функции
//--------- //---------
@ -25,10 +25,10 @@ const formatStateValue = (value, addText = false) => {
value == 0 value == 0
? ["Не утвержден", "clear"] ? ["Не утвержден", "clear"]
: value == 2 : value == 2
? ["Утвержден", "done"] ? ["Утвержден", "done"]
: value == 3 : value == 3
? ["Закрыт", "lock_outlined"] ? ["Закрыт", "lock_outlined"]
: ["Не определен", "question_mark"]; : ["Не определен", "question_mark"];
return ( return (
<Stack direction="row" gap={0.5} alignItems="center" justifyContent="center"> <Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
<Icon title={text}>{icon}</Icon> <Icon title={text}>{icon}</Icon>
@ -46,11 +46,28 @@ const formatNumbValue = (row, columnDef, showEquipRepairSheets) => {
); );
}; };
//Формирование значения для колонки "Присоединенные документы"
const formatFileLinksValue = (row, columnDef, showFileLinks) => {
return (
<>
{row["NFILELINKS"] == 1 ? (
<Stack direction="row" gap={0.5} alignItems="center" justifyContent="center">
<IconButton onClick={() => showFileLinks({ nRn: row["NRN"] })}>
<Icon>launch</Icon>
</IconButton>
</Stack>
) : null}
</>
);
};
//Генерация представления ячейки c данными //Генерация представления ячейки c данными
export const dataCellRender = ({ row, columnDef, showEquipRepairSheets }) => { export const dataCellRender = ({ row, columnDef, showEquipRepairSheets, showFileLinks }) => {
switch (columnDef.name) { switch (columnDef.name) {
case "SNUMB": case "SNUMB":
return { data: formatNumbValue(row, columnDef, showEquipRepairSheets) }; return { data: formatNumbValue(row, columnDef, showEquipRepairSheets) };
case "NFILELINKS":
return { data: formatFileLinksValue(row, columnDef, showFileLinks) };
} }
}; };
@ -70,6 +87,7 @@ export const formatFilterValues = filter => {
{ name: "SCUSTOMERDEPT_FILTER", from: filter.sCustomerDept, to: "" }, { name: "SCUSTOMERDEPT_FILTER", from: filter.sCustomerDept, to: "" },
{ name: "SWORKTYPE_FILTER", from: filter.sWorkType, to: "" }, { name: "SWORKTYPE_FILTER", from: filter.sWorkType, to: "" },
{ name: "SWORKKIND_FILTER", from: filter.sWorkKind, to: "" }, { name: "SWORKKIND_FILTER", from: filter.sWorkKind, to: "" },
{ name: "SEQCONFIG_FILTER", from: filter.sEqconfig, to: "" },
{ name: "NSTATE_FILTER", from: filter.nState, to: "" }, { name: "NSTATE_FILTER", from: filter.nState, to: "" },
{ name: "NTYPESPEND_FILTER", from: filter.nType, to: "" } { name: "NTYPESPEND_FILTER", from: filter.nType, to: "" }
]; ];

View File

@ -94,7 +94,7 @@ const RepairAnlATC = () => {
}); });
//Вспомогательные функции открытия раздела //Вспомогательные функции открытия раздела
const { handleEquipRepairSheetsOpen } = useDictionary(); const { handleEquipRepairSheetsOpen, handleFileLinksOpen } = useDictionary();
//При изменении фильтра в диалоге //При изменении фильтра в диалоге
const handleFilterOk = filter => { const handleFilterOk = filter => {
@ -208,7 +208,9 @@ const RepairAnlATC = () => {
onOrderChanged={handleOrderChanged} onOrderChanged={handleOrderChanged}
onFilterChanged={handleFilterChanged} onFilterChanged={handleFilterChanged}
onPagesCountChanged={handlePagesCountChanged} onPagesCountChanged={handlePagesCountChanged}
dataCellRender={prms => dataCellRender({ ...prms, showEquipRepairSheets: handleEquipRepairSheetsOpen })} dataCellRender={prms =>
dataCellRender({ ...prms, showEquipRepairSheets: handleEquipRepairSheetsOpen, showFileLinks: handleFileLinksOpen })
}
valueFormatter={valueFormatter} valueFormatter={valueFormatter}
/> />
) : null} ) : null}