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

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

File diff suppressed because one or more lines are too long

View File

@ -88,6 +88,7 @@ const Filter = ({ filter, onFilterOpen }) => {
) : null}
{filter.sWorkType ? <FilterItem caption={"Типовая работа"} value={filter.sWorkType} 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>
</Box>

View File

@ -48,7 +48,7 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
const [filter, setFilter] = useState({ ...initial });
//Вспомогательные функции открытия раздела
const { handleInsDepartmentOpen, handleEquipTypeWorksOpen, handleEquipWorkKindsOpen } = useDictionary();
const { handleInsDepartmentOpen, handleEquipTypeWorksOpen, handleEquipWorkKindsOpen, handleEquipConfigurationOpen } = useDictionary();
//Вспомогательные функции
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 = () => {
setFilter({ dDateBegin: "", dDateEnd: "", sCustomerDept: "", sCustomerDeptName: "", sWorkType: "", sWorkKind: "" });
@ -192,6 +202,23 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
}}
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>
</DialogContent>
<DialogActions sx={STYLES.DIALOG_ACTIONS}>

View File

@ -82,12 +82,44 @@ const useDictionary = () => {
[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 {
handleInsDepartmentOpen,
handleEquipTypeWorksOpen,
handleEquipWorkKindsOpen,
handleEquipRepairSheetsOpen
handleEquipRepairSheetsOpen,
handleEquipConfigurationOpen,
handleFileLinksOpen
};
};

View File

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

View File

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

View File

@ -8,7 +8,7 @@
//---------------------
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"; //Вспомогательные функции
//---------
@ -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 данными
export const dataCellRender = ({ row, columnDef, showEquipRepairSheets }) => {
export const dataCellRender = ({ row, columnDef, showEquipRepairSheets, showFileLinks }) => {
switch (columnDef.name) {
case "SNUMB":
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: "SWORKTYPE_FILTER", from: filter.sWorkType, to: "" },
{ name: "SWORKKIND_FILTER", from: filter.sWorkKind, to: "" },
{ name: "SEQCONFIG_FILTER", from: filter.sEqconfig, to: "" },
{ name: "NSTATE_FILTER", from: filter.nState, 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 => {
@ -208,7 +208,9 @@ const RepairAnlATC = () => {
onOrderChanged={handleOrderChanged}
onFilterChanged={handleFilterChanged}
onPagesCountChanged={handlePagesCountChanged}
dataCellRender={prms => dataCellRender({ ...prms, showEquipRepairSheets: handleEquipRepairSheetsOpen })}
dataCellRender={prms =>
dataCellRender({ ...prms, showEquipRepairSheets: handleEquipRepairSheetsOpen, showFileLinks: handleFileLinksOpen })
}
valueFormatter={valueFormatter}
/>
) : null}