Исправлено отображение подразделения при отборе, открытие ссылок таблицы в новой вкладке
This commit is contained in:
parent
199d27fe14
commit
a277d780bf
@ -79,7 +79,11 @@ const Filter = ({ filter, onFilterOpen }) => {
|
||||
<Stack direction="row" spacing={1} alignItems={"center"} sx={STYLES.FILTERS_STACK}>
|
||||
{filter.dDate ? <FilterItem caption={"На дату"} value={formatDateRF(filter.dDate)} onClick={handleClick} /> : null}
|
||||
{filter.sCustomerDept ? (
|
||||
<FilterItem caption={"Транспортный участок"} value={filter.sCustomerDept} onClick={handleClick} />
|
||||
<FilterItem
|
||||
caption={"Транспортный участок"}
|
||||
value={`${filter.sCustomerDeptName} (${filter.sCustomerDept})`}
|
||||
onClick={handleClick}
|
||||
/>
|
||||
) : null}
|
||||
{filter.dDateKOAFrom ? (
|
||||
<FilterItem caption="КОА с" value={formatDateTimeRF(filter.dDateKOAFrom)} onClick={handleClick} />
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
import React, { useState } from "react"; //Классы React
|
||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||
import { Dialog, DialogTitle, IconButton, Icon, DialogContent, DialogActions, Button, Box, TextField, InputAdornment } from "@mui/material"; //Интерфейсные компоненты
|
||||
import { useDictionary } from "./hooks/dict_hooks"; //Хуки открытий разделов
|
||||
import { useDictionary, useProcedures } from "./hooks/dict_hooks"; //Хуки открытий разделов
|
||||
import { hasValue, formatDateJSONDateOnly } from "../../core/utils"; //Вспомогательные функции
|
||||
|
||||
//---------
|
||||
@ -52,15 +52,20 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
|
||||
//Вспомогательные функции открытия раздела
|
||||
const { handleInsDepartmentOpen } = useDictionary();
|
||||
|
||||
//Вспомогательные функции
|
||||
const { handleInsDepartmentNameGet } = useProcedures();
|
||||
|
||||
//Отработка воода значения в фильтр
|
||||
const handleValueChanged = e => setFilter(pv => ({ ...pv, [e.target.name]: e.target.value }));
|
||||
const handleValueChanged = e => {
|
||||
setFilter(pv => ({ ...pv, [e.target.name]: e.target.value, ...(e.target.name === "sCustomerDept" ? { sCustomerDeptName: "" } : {}) }));
|
||||
};
|
||||
|
||||
//При изменении каталога фильтра
|
||||
const handleCustomerDeptSelect = () =>
|
||||
handleInsDepartmentOpen({
|
||||
sCode: filter.sCustomerDept,
|
||||
callBack: res => {
|
||||
setFilter(pv => ({ ...pv, sCustomerDept: res.outParameters.out_CODE }));
|
||||
setFilter(pv => ({ ...pv, sCustomerDept: res.outParameters.out_CODE, sCustomerDeptName: res.outParameters.out_NAME }));
|
||||
}
|
||||
});
|
||||
|
||||
@ -74,14 +79,25 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
|
||||
|
||||
//При очистке фильтра
|
||||
const handleClear = () => {
|
||||
setFilter({ dDate: "", sCustomerDept: "", dDateKOAFrom: "", dDateKOATo: "" });
|
||||
setFilter({ dDate: "", sCustomerDept: "", sCustomerDeptName: "", dDateKOAFrom: "", dDateKOATo: "" });
|
||||
};
|
||||
|
||||
//При закрытии диалога без изменения фильтра
|
||||
const handleCancel = () => (isActionAllow(initial, isFiltersInit) ? onCancel && onCancel() : null);
|
||||
|
||||
//При закрытии диалога с изменением фильтра
|
||||
const handleOK = () => (isActionAllow(filter) && onOk ? onOk(filter) : null);
|
||||
const handleOK = async () => {
|
||||
let filterRes = { ...filter };
|
||||
//Если наименование подразделения пустое
|
||||
if (!filterRes.sCustomerDeptName) {
|
||||
//Если мнемокоды подразделений совпадают
|
||||
filterRes.sCustomerDeptName =
|
||||
filterRes.sCustomerDept === initial.sCustomerDept
|
||||
? initial.sCustomerDeptName
|
||||
: await handleInsDepartmentNameGet({ code: filterRes.sCustomerDept });
|
||||
}
|
||||
isActionAllow(filterRes) && onOk ? onOk(filterRes) : null;
|
||||
};
|
||||
|
||||
//Генерация содержимого
|
||||
return (
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
import { useContext, useCallback } from "react"; //Классы React
|
||||
import { ApplicationСtx } from "../../../context/application"; //Контекст приложения
|
||||
import { BackEndСtx } from "../../../context/backend"; //Контекст взаимодействия с сервером
|
||||
|
||||
//-----------
|
||||
//Тело модуля
|
||||
@ -17,7 +18,7 @@ import { ApplicationСtx } from "../../../context/application"; //Контекс
|
||||
//Состояние открытия разделов
|
||||
const useDictionary = () => {
|
||||
//Подключение к контексту приложения
|
||||
const { pOnlineShowDictionary } = useContext(ApplicationСtx);
|
||||
const { pOnlineShowDictionary, pOnlineShowUnit } = useContext(ApplicationСtx);
|
||||
|
||||
//Отображение раздела "Штатные подразделения"
|
||||
const handleInsDepartmentOpen = useCallback(
|
||||
@ -64,29 +65,40 @@ const useDictionary = () => {
|
||||
//Отображение раздела "Ремонтные ведомости"
|
||||
const handleEquipRepairSheetsOpen = useCallback(
|
||||
async prms => {
|
||||
pOnlineShowDictionary({
|
||||
// pOnlineShowDictionary({
|
||||
// unitCode: "EquipRepairSheets",
|
||||
// inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
// callBack: res => {
|
||||
// res.success ? prms.callBack(res) : null;
|
||||
// }
|
||||
// });
|
||||
|
||||
pOnlineShowUnit({
|
||||
unitCode: "EquipRepairSheets",
|
||||
inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
callBack: res => {
|
||||
res.success ? prms.callBack(res) : null;
|
||||
}
|
||||
modal: false
|
||||
});
|
||||
},
|
||||
[pOnlineShowDictionary]
|
||||
[pOnlineShowUnit]
|
||||
);
|
||||
|
||||
//Отображение раздела "Картотека АТС"
|
||||
const handleHaulerUnitsCardsOpen = useCallback(
|
||||
async prms => {
|
||||
pOnlineShowDictionary({
|
||||
// pOnlineShowDictionary({
|
||||
// unitCode: "HaulerUnitsCards",
|
||||
// inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
// callBack: res => {
|
||||
// res.success ? prms.callBack(res) : null;
|
||||
// }
|
||||
// });
|
||||
pOnlineShowUnit({
|
||||
unitCode: "HaulerUnitsCards",
|
||||
inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
callBack: res => {
|
||||
res.success ? prms.callBack(res) : null;
|
||||
}
|
||||
modal: false
|
||||
});
|
||||
},
|
||||
[pOnlineShowDictionary]
|
||||
[pOnlineShowUnit]
|
||||
);
|
||||
|
||||
//Возвращаем функции открытия разделов
|
||||
@ -99,8 +111,31 @@ const useDictionary = () => {
|
||||
};
|
||||
};
|
||||
|
||||
//Состояние дополнительных общих процедур
|
||||
const useProcedures = () => {
|
||||
//Подключение к контексту взаимодействия с сервером
|
||||
const { executeStored } = useContext(BackEndСtx);
|
||||
|
||||
//Считывание наименования подразделения по мнемокоду
|
||||
const handleInsDepartmentNameGet = useCallback(
|
||||
async prms => {
|
||||
//Считываем наименование подразделения
|
||||
const departmentName = await executeStored({
|
||||
stored: "UDO_PKG_P8PANELS_HAULER_ANL.GET_INS_DEPARTMENT_NAME",
|
||||
args: { SCODE: prms.code }
|
||||
});
|
||||
//Возвращаем наименование подразделения
|
||||
return departmentName.SNAME;
|
||||
},
|
||||
[executeStored]
|
||||
);
|
||||
|
||||
//Возвращаем дополнительные функции
|
||||
return { handleInsDepartmentNameGet };
|
||||
};
|
||||
|
||||
//----------------
|
||||
//Интерфейс модуля
|
||||
//----------------
|
||||
|
||||
export { useDictionary };
|
||||
export { useDictionary, useProcedures };
|
||||
|
||||
@ -22,6 +22,7 @@ const useFilters = () => {
|
||||
loaded: false,
|
||||
dDate: "",
|
||||
sCustomerDept: "",
|
||||
sCustomerDeptName: "",
|
||||
dDateKOAFrom: "",
|
||||
dDateKOATo: ""
|
||||
});
|
||||
|
||||
@ -75,7 +75,7 @@ const useChartCalcs = ({ storedArgs = {} }) => {
|
||||
const loadChart = async () => {
|
||||
try {
|
||||
const chart = await executeStored({
|
||||
stored: "UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_KGT_KOA",
|
||||
stored: "UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_KTG_KOA",
|
||||
args: {
|
||||
SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,
|
||||
DDATE_KOA_FROM: storedArgs.dDateKOAFrom ? new Date(storedArgs.dDateKOAFrom) : null,
|
||||
|
||||
36
p8-panels.js
36
p8-panels.js
File diff suppressed because one or more lines are too long
@ -16,8 +16,8 @@
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsPanelsRoot" caption="Панели мониторинга" url="Modules/P8-Panels/"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsPrfrm" caption="Выполнение работ по ТОиР" panelName="EqsPrfrm"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowRepairAnlATC" caption="Аналитика по ремонтам АТС" panelName="RepairAnlATC"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowHaulerAnl" caption="Гаражка" panelName="HaulerAnl"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsRepairAnlATC" caption="Аналитика по ремонтам АТС" panelName="RepairAnlATC"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsHaulerAnl" caption="Гаражка" panelName="HaulerAnl"/>
|
||||
</App>
|
||||
<App name="MechanicalRecords">
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
|
||||
@ -36,6 +36,12 @@
|
||||
<MenuItem parent="{CA9A9853-AC90-412A-85B1-E39927147846}" separator="true"/>
|
||||
<MenuItem parent="{CA9A9853-AC90-412A-85B1-E39927147846}" name="ShowClntTaskBoard" caption="Доски задач" panelName="ClntTaskBoard"/>
|
||||
</App>
|
||||
<App name="Hauler">
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowHaulerPanelsRoot" caption="Панели мониторинга" url="Modules/P8-Panels/"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
|
||||
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowHaulerHaulerAnl" caption="Гаражка" panelName="HaulerAnl"/>
|
||||
</App>
|
||||
</MenuItems>
|
||||
<Panels urlBase="Modules/P8-Panels/#/">
|
||||
<Panel
|
||||
|
||||
@ -80,7 +80,11 @@ const Filter = ({ filter, onFilterOpen }) => {
|
||||
{filter.dDateBegin ? <FilterItem caption={"Дата с"} value={formatDateRF(filter.dDateBegin)} onClick={handleClick} /> : null}
|
||||
{filter.dDateEnd ? <FilterItem caption={"Дата по"} value={formatDateRF(filter.dDateEnd)} onClick={handleClick} /> : null}
|
||||
{filter.sCustomerDept ? (
|
||||
<FilterItem caption={"Транспортный участок"} value={filter.sCustomerDept} onClick={handleClick} />
|
||||
<FilterItem
|
||||
caption={"Транспортный участок"}
|
||||
value={`${filter.sCustomerDeptName} (${filter.sCustomerDept})`}
|
||||
onClick={handleClick}
|
||||
/>
|
||||
) : null}
|
||||
{filter.sWorkType ? <FilterItem caption={"Типовая работа"} value={filter.sWorkType} onClick={handleClick} /> : null}
|
||||
{filter.sWorkKind ? <FilterItem caption={"Вид типовых работ"} value={filter.sWorkKind} onClick={handleClick} /> : null}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
import React, { useState } from "react"; //Классы React
|
||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||
import { Dialog, DialogTitle, IconButton, Icon, DialogContent, DialogActions, Button, Box, TextField, InputAdornment } from "@mui/material"; //Интерфейсные компоненты
|
||||
import { useDictionary } from "./hooks/dict_hooks"; //Хуки открытий разделов
|
||||
import { useDictionary, useProcedures } from "./hooks/dict_hooks"; //Хуки открытий разделов
|
||||
import { hasValue } from "../../core/utils"; //Вспомогательные функции
|
||||
|
||||
//---------
|
||||
@ -50,15 +50,20 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
|
||||
//Вспомогательные функции открытия раздела
|
||||
const { handleInsDepartmentOpen, handleEquipTypeWorksOpen, handleEquipWorkKindsOpen } = useDictionary();
|
||||
|
||||
//Вспомогательные функции
|
||||
const { handleInsDepartmentNameGet } = useProcedures();
|
||||
|
||||
//Отработка воода значения в фильтр
|
||||
const handleValueChanged = e => setFilter(pv => ({ ...pv, [e.target.name]: e.target.value }));
|
||||
const handleValueChanged = e => {
|
||||
setFilter(pv => ({ ...pv, [e.target.name]: e.target.value, ...(e.target.name === "sCustomerDept" ? { sCustomerDeptName: "" } : {}) }));
|
||||
};
|
||||
|
||||
//При изменении каталога фильтра
|
||||
const handleCustomerDeptSelect = () =>
|
||||
handleInsDepartmentOpen({
|
||||
sCode: filter.sCustomerDept,
|
||||
callBack: res => {
|
||||
setFilter(pv => ({ ...pv, sCustomerDept: res.outParameters.out_CODE }));
|
||||
setFilter(pv => ({ ...pv, sCustomerDept: res.outParameters.out_CODE, sCustomerDeptName: res.outParameters.out_NAME }));
|
||||
}
|
||||
});
|
||||
|
||||
@ -82,14 +87,25 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
|
||||
|
||||
//При очистке фильтра
|
||||
const handleClear = () => {
|
||||
setFilter({ dDateBegin: "", dDateEnd: "", sCustomerDept: "", sWorkType: "", sWorkKind: "" });
|
||||
setFilter({ dDateBegin: "", dDateEnd: "", sCustomerDept: "", sCustomerDeptName: "", sWorkType: "", sWorkKind: "" });
|
||||
};
|
||||
|
||||
//При закрытии диалога без изменения фильтра
|
||||
const handleCancel = () => (isActionAllow(initial, isFiltersInit) ? onCancel && onCancel() : null);
|
||||
|
||||
//При закрытии диалога с изменением фильтра
|
||||
const handleOK = () => (isActionAllow(filter) && onOk ? onOk(filter) : null);
|
||||
const handleOK = async () => {
|
||||
let filterRes = { ...filter };
|
||||
//Если наименование подразделения пустое
|
||||
if (!filterRes.sCustomerDeptName) {
|
||||
//Если мнемокоды подразделений совпадают
|
||||
filterRes.sCustomerDeptName =
|
||||
filterRes.sCustomerDept === initial.sCustomerDept
|
||||
? initial.sCustomerDeptName
|
||||
: await handleInsDepartmentNameGet({ code: filterRes.sCustomerDept });
|
||||
}
|
||||
isActionAllow(filterRes) && onOk ? onOk(filterRes) : null;
|
||||
};
|
||||
|
||||
//Генерация содержимого
|
||||
return (
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
import { useContext, useCallback } from "react"; //Классы React
|
||||
import { ApplicationСtx } from "../../../context/application"; //Контекст приложения
|
||||
import { BackEndСtx } from "../../../context/backend"; //Контекст взаимодействия с сервером
|
||||
|
||||
//-----------
|
||||
//Тело модуля
|
||||
@ -17,7 +18,7 @@ import { ApplicationСtx } from "../../../context/application"; //Контекс
|
||||
//Состояние открытия разделов
|
||||
const useDictionary = () => {
|
||||
//Подключение к контексту приложения
|
||||
const { pOnlineShowDictionary } = useContext(ApplicationСtx);
|
||||
const { pOnlineShowDictionary, pOnlineShowUnit } = useContext(ApplicationСtx);
|
||||
|
||||
//Отображение раздела "Штатные подразделения"
|
||||
const handleInsDepartmentOpen = useCallback(
|
||||
@ -64,15 +65,21 @@ const useDictionary = () => {
|
||||
//Отображение раздела "Ремонтные ведомости"
|
||||
const handleEquipRepairSheetsOpen = useCallback(
|
||||
async prms => {
|
||||
pOnlineShowDictionary({
|
||||
// pOnlineShowDictionary({
|
||||
// unitCode: "EquipRepairSheets",
|
||||
// inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
// callBack: res => {
|
||||
// res.success ? prms.callBack(res) : null;
|
||||
// }
|
||||
// });
|
||||
|
||||
pOnlineShowUnit({
|
||||
unitCode: "EquipRepairSheets",
|
||||
inputParameters: [{ name: "in_RN", value: prms.nRn }],
|
||||
callBack: res => {
|
||||
res.success ? prms.callBack(res) : null;
|
||||
}
|
||||
modal: false
|
||||
});
|
||||
},
|
||||
[pOnlineShowDictionary]
|
||||
[pOnlineShowUnit]
|
||||
);
|
||||
|
||||
//Возвращаем функции открытия разделов
|
||||
@ -84,8 +91,31 @@ const useDictionary = () => {
|
||||
};
|
||||
};
|
||||
|
||||
//Состояние дополнительных общих процедур
|
||||
const useProcedures = () => {
|
||||
//Подключение к контексту взаимодействия с сервером
|
||||
const { executeStored } = useContext(BackEndСtx);
|
||||
|
||||
//Считывание наименования подразделения по мнемокоду
|
||||
const handleInsDepartmentNameGet = useCallback(
|
||||
async prms => {
|
||||
//Считываем наименование подразделения
|
||||
const departmentName = await executeStored({
|
||||
stored: "UDO_PKG_P8PANELS_RPR_ANL.GET_INS_DEPARTMENT_NAME",
|
||||
args: { SCODE: prms.code }
|
||||
});
|
||||
//Возвращаем наименование подразделения
|
||||
return departmentName.SNAME;
|
||||
},
|
||||
[executeStored]
|
||||
);
|
||||
|
||||
//Возвращаем дополнительные функции
|
||||
return { handleInsDepartmentNameGet };
|
||||
};
|
||||
|
||||
//----------------
|
||||
//Интерфейс модуля
|
||||
//----------------
|
||||
|
||||
export { useDictionary };
|
||||
export { useDictionary, useProcedures };
|
||||
|
||||
@ -23,6 +23,7 @@ const useFilters = () => {
|
||||
dDateBegin: "",
|
||||
dDateEnd: "",
|
||||
sCustomerDept: "",
|
||||
sCustomerDeptName: "",
|
||||
sWorkType: "",
|
||||
sWorkKind: ""
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user