From b71db7662968f043fe367244b782e9bc3fa68b24 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Fri, 24 May 2024 20:28:50 +0300 Subject: [PATCH] =?UTF-8?q?WEB=20APP:=20=D0=9F=D0=B0=D0=BD=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=20"=D0=9C=D0=BE=D0=BD=D0=B8=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D0=B3=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8=D1=8F"=20-=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BA=D0=B0=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=BA=D0=B0=D1=80=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=BD=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=B3=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BC=D0=B5=D0=B6=D0=B4?= =?UTF-8?q?=D1=83=20=D0=BD=D0=B8=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/plan_detail.js | 23 +++++++++++---- app/panels/mech_rec_assembly_mon/hooks.js | 28 ++++++++----------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/app/panels/mech_rec_assembly_mon/components/plan_detail.js b/app/panels/mech_rec_assembly_mon/components/plan_detail.js index 03f2971..9a9c47a 100644 --- a/app/panels/mech_rec_assembly_mon/components/plan_detail.js +++ b/app/panels/mech_rec_assembly_mon/components/plan_detail.js @@ -123,11 +123,11 @@ PlanInfo.propTypes = { }; //Модель выпуска плана -const PlanProductCompositionModel = ({ model, products, setCostProductComposition }) => { +const PlanProductCompositionModel = ({ model, products, onProductSelect }) => { //При выборе детали на модели const handleProductClick = ({ item }) => { const product = products.find(p => p.SMODEL_ID == item.id); - if (product) setCostProductComposition(pv => ({ ...pv, selectedProduct: { ...product } })); + if (product && onProductSelect) onProductSelect(product); }; //Генерация содержимого @@ -153,7 +153,7 @@ const PlanProductCompositionModel = ({ model, products, setCostProductCompositio PlanProductCompositionModel.propTypes = { model: PropTypes.any, products: PropTypes.array, - setCostProductComposition: PropTypes.func + onProductSelect: PropTypes.func }; //Генерация представления ячейки заголовка @@ -239,13 +239,24 @@ const PlanDetail = ({ plan, disableNavigatePrev = false, disableNavigateNext = f //Собственное состояние - данные производственных составов SVG const [costProductComposition, setCostProductComposition] = useCostProductComposition(plan.NRN); + //Выбор элемента изделия + const setProduct = product => { + setCostProductComposition(pv => ({ ...pv, selectedProduct: product ? { ...product } : null })); + }; + + //При навигации между карточками + const handleNavigate = direction => { + setProduct(null); + if (onNavigate) onNavigate(direction); + }; + //Формируем представление return ( - (onNavigate ? onNavigate(-1) : null)}> + handleNavigate(-1)}> navigate_before @@ -289,7 +300,7 @@ const PlanDetail = ({ plan, disableNavigatePrev = false, disableNavigateNext = f @@ -298,7 +309,7 @@ const PlanDetail = ({ plan, disableNavigatePrev = false, disableNavigateNext = f - (onNavigate ? onNavigate(1) : null)}> + handleNavigate(1)}> navigate_next diff --git a/app/panels/mech_rec_assembly_mon/hooks.js b/app/panels/mech_rec_assembly_mon/hooks.js index 41a5a6a..de1c9a1 100644 --- a/app/panels/mech_rec_assembly_mon/hooks.js +++ b/app/panels/mech_rec_assembly_mon/hooks.js @@ -123,10 +123,9 @@ const useMechRecAssemblyMon = () => { }; //Хук для информации по производственным составам -const useCostProductComposition = nProdPlan => { +const useCostProductComposition = plan => { //Собственное состояние let [costProductComposition, setCostProductComposition] = useState({ - init: false, showPlanList: false, products: [], productsLoaded: false, @@ -137,32 +136,27 @@ const useCostProductComposition = nProdPlan => { //Подключение к контексту взаимодействия с сервером const { executeStored } = useContext(BackEndСtx); - //Инициализация производственных составов - const initCostProductComposition = useCallback(async () => { - if (!costProductComposition.init) { + //При подключении компонента к странице + useEffect(() => { + const loadData = async () => { const data = await executeStored({ stored: "PKG_P8PANELS_MECHREC.FCPRODCMP_DETAILS_GET", - args: { NFCPRODPLAN: nProdPlan }, + args: { NFCPRODPLAN: plan }, respArg: "COUT", isArray: name => name === "XFCPRODCMP" }); setCostProductComposition(pv => ({ ...pv, - init: true, products: [...(data?.XFCPRODCMP || [])], productsLoaded: true, - model: data?.BMODEL + model: data?.BMODEL, + selectedProduct: null })); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [costProductComposition.init, executeStored]); - - //При подключении компонента к странице - useEffect(() => { - initCostProductComposition(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }; + if (plan) loadData(); + }, [plan, executeStored]); + //Вернём данные return [costProductComposition, setCostProductComposition]; };