diff --git a/src/pages/Analytics/WellCompositeEditor/WellCompositeSections.jsx b/src/pages/Analytics/WellCompositeEditor/WellCompositeSections.jsx index c9cba37..12d819b 100644 --- a/src/pages/Analytics/WellCompositeEditor/WellCompositeSections.jsx +++ b/src/pages/Analytics/WellCompositeEditor/WellCompositeSections.jsx @@ -1,6 +1,6 @@ import { Link, useLocation } from 'react-router-dom' import { useState, useEffect, memo, useMemo } from 'react' -import { LineChartOutlined, ProfileOutlined } from '@ant-design/icons' +import { LineChartOutlined, ProfileOutlined, TeamOutlined } from '@ant-design/icons' import { Table, Tag, Button, Badge, Divider, Modal, Row, Col } from 'antd' import { useIdWell } from '@asb/context' @@ -20,6 +20,7 @@ import { import Tvd from '@pages/WellOperations/Tvd' import WellOperationsTable from '@pages/Cluster/WellOperationsTable' import NewParamsTable from './NewParamsTable' +import CompaniesTable from '@pages/Cluster/CompaniesTable' const filtersMinMax = [ { text: 'min', value: 'min' }, @@ -34,11 +35,13 @@ const DAY_IN_MS = 1000 * 60 * 60 * 24 const WellCompositeSections = memo(({ statsWells, selectedSections }) => { const [selectedWells, setSelectedWells] = useState([]) const [wellOperations, setWellOperations] = useState([]) + const [companies, setCompanies] = useState([]) const [selectedWellsKeys, setSelectedWellsKeys] = useState([]) const [selectedWellId, setSelectedWellId] = useState(0) const [showLoader, setShowLoader] = useState(false) const [isTVDModalVisible, setIsTVDModalVisible] = useState(false) const [isOpsModalVisible, setIsOpsModalVisible] = useState(false) + const [isCompaniesModalVisible, setIsCompaniesModalVisible] = useState(false) const idWell = useIdWell() @@ -177,11 +180,14 @@ const WellCompositeSections = memo(({ statsWells, selectedSections }) => { { title: 'Участники', dataIndex: 'companies', - render: (item) => item?.map((company) => ( - - - - )) ?? '-', + render: (value) => ( + + ), }, ], [location.pathname]) @@ -236,6 +242,19 @@ const WellCompositeSections = memo(({ statsWells, selectedSections }) => { + + setIsCompaniesModalVisible(false)} + width={1500} + footer={null} + > + + + + ) }) diff --git a/src/pages/Cluster/ClusterWells.jsx b/src/pages/Cluster/ClusterWells.jsx index 604a10a..bdafb5e 100755 --- a/src/pages/Cluster/ClusterWells.jsx +++ b/src/pages/Cluster/ClusterWells.jsx @@ -1,7 +1,7 @@ import { Link, useLocation } from 'react-router-dom' import { useState, useEffect, memo, useMemo } from 'react' import { Tag, Button, Modal } from 'antd' -import { LineChartOutlined, ProfileOutlined } from '@ant-design/icons' +import { LineChartOutlined, ProfileOutlined, TeamOutlined } from '@ant-design/icons' import { makeTextColumn, @@ -27,6 +27,7 @@ import { import Tvd from '@pages/WellOperations/Tvd' import WellOperationsTable from './WellOperationsTable' +import CompaniesTable from '@pages/Cluster/CompaniesTable' const filtersMinMax = [ { text: 'min', value: 'min' }, @@ -44,7 +45,9 @@ const ClusterWells = memo(({ statsWells }) => { const [selectedWellId, setSelectedWellId] = useState(0) const [isTVDModalVisible, setIsTVDModalVisible] = useState(false) const [isOpsModalVisible, setIsOpsModalVisible] = useState(false) + const [isCompaniesModalVisible, setIsCompaniesModalVisible] = useState(false) const [wellOperations, setWellOperations] = useState([]) + const [companies, setCompanies] = useState([]) const [tableData, setTableData] = useState([]) const [showLoader, setShowLoader] = useState(false) @@ -135,18 +138,29 @@ const ClusterWells = memo(({ statsWells }) => { makeNumericColumnPlanFact('Рейсовая скорость, м/ч', 'routeSpeed', filtersMinMax, makeFilterMinMaxFunction, numericRender), makeNumericColumn('НПВ, ч', 'notProductiveTimeFact', filtersMinMax, makeFilterMinMaxFunction, numericRender), makeColumn('TVD', 'tvd', { align: 'center', render: (_, value) => ( - ) }), makeColumn('Операции', 'operations', { align: 'center', render: (_, value) => ( - ) }), - makeColumn('Участники', 'companies', { - render: (item) => item?.map((company) => ( - - - - )) ?? '-', - }), + makeColumn('Участники', 'companies', { align: 'center', render: (value) => ( + + ) }), ], [location.pathname]) return ( @@ -184,6 +198,19 @@ const ClusterWells = memo(({ statsWells }) => { + + setIsCompaniesModalVisible(false)} + width={1500} + footer={null} + > + + + + ) }) diff --git a/src/pages/Cluster/CompaniesTable.jsx b/src/pages/Cluster/CompaniesTable.jsx new file mode 100644 index 0000000..7520c23 --- /dev/null +++ b/src/pages/Cluster/CompaniesTable.jsx @@ -0,0 +1,33 @@ +import React, { memo, useMemo } from 'react' +import { BankOutlined } from '@ant-design/icons' + +import { makeTextColumn, Table } from '@components/Table' + +const columns = [ + makeTextColumn('', 'logo'), + makeTextColumn('Название компании', 'caption'), + makeTextColumn('Тип компании', 'companyTypeCaption'), +] + +const CompaniesTable = memo(({companies}) => { + const dataCompanies = useMemo(() => companies?.map((company) => ({ + key: company.id, + logo: company?.logo ? : , + caption: company.caption, + companyTypeCaption: company.companyTypeCaption, + })), [companies]) + + return ( + record.key} + pagination={{ defaultPageSize: 10 }} + tableName={'well_operations'} + /> + ) +}) + +export default CompaniesTable \ No newline at end of file