diff --git a/src/components/SmboPlate.jsx b/src/components/SmboPlate.jsx
new file mode 100644
index 0000000..fe501ec
--- /dev/null
+++ b/src/components/SmboPlate.jsx
@@ -0,0 +1,61 @@
+import {Modal} from 'antd'
+import '../styles/smbo.css'
+
+import {useState} from "react";
+
+export const SqueareIndicator = ({state}) =>{
+ let bgColor = "#AAA"
+ switch (state){
+ case 1:
+ bgColor = "#1B1"
+ break;
+ case 2:
+ bgColor = "#DD1"
+ break;
+ case 3:
+ bgColor = "#D11"
+ break;
+ }
+ return ()
+}
+
+export default function SmboPlate({title, state, operatingTime, units, children}){
+ const [isModalVisible, setIsModalVisible] = useState(false)
+
+
+ const openModal = () => {
+ setIsModalVisible(!!children)
+ }
+
+ const closeModal = () => {
+ setIsModalVisible(false)
+ }
+
+ return(<>
+
{title}
+
+
+
наработка:
+
{operatingTime}
+
{units??'ч'}
+
+
+
+
+
+ {children}
+
+
+ >)
+}
\ No newline at end of file
diff --git a/src/components/modalWindows/EquipmentDetails.jsx b/src/components/modalWindows/EquipmentDetails.jsx
new file mode 100644
index 0000000..7a21bff
--- /dev/null
+++ b/src/components/modalWindows/EquipmentDetails.jsx
@@ -0,0 +1,61 @@
+import {Row, Col} from 'antd'
+import {InboxOutlined} from '@ant-design/icons'
+import {useState} from "react"
+import {useParams} from 'react-router-dom'
+import '../../styles/equipment_details.css'
+import Documents from '../Documents'
+
+const collectionOfLinesForStates = [
+ {label: 'Состояние', unit: ''},
+ {label: 'Полная наработка', unit: 'ч'},
+ {label: 'Наработка после ТО1', unit: 'ч'},
+ {label: 'Наработка после ТО1', unit: 'ч'},
+ {label: 'Наработка вне р/р', unit: 'ч'},
+ {label: 'Периодичность ТО1', unit: 'ч'},
+ {label: 'Периодичность ТО2', unit: 'ч'},
+]
+
+const collectionOfLinesForIndicators = [
+ {label: 'Скорость вращения', unit: 'Об/мин'},
+ {label: 'Крутящий момент', unit: 'кН*м'},
+ {label: 'Общий уровень вибрации', unit: 'мм/с'},
+ {label: 'Уровень масла в баке', unit: 'м'},
+ {label: 'Т верхнего подшипника', unit: '°C'},
+ {label: 'Т нижнего подшипника', unit: '°C'},
+ {label: 'Состояние ПЧ1', unit: ''},
+ {label: 'Состояние ПЧ2', unit: ''},
+]
+
+export default function EquipmentDetails() {
+ let stateOfEquipmentDetails = collectionOfLinesForStates.map(item => {
+ return(
+ {item.label}: {item.unit}
+ )
+ })
+
+ let indicatorsOfEquipmentDetail = collectionOfLinesForIndicators.map(item => {
+ return(
+ {item.label}: {item.unit}
+ )
+ })
+
+ return (<>
+
+
+ Тест 1
+
+
+ {stateOfEquipmentDetails}
+
+
+
+
+
+
+
+
+ {indicatorsOfEquipmentDetail}
+
+
+ >)
+}
\ No newline at end of file
diff --git a/src/pages/Well.jsx b/src/pages/Well.jsx
index f8ac02b..8372e8a 100644
--- a/src/pages/Well.jsx
+++ b/src/pages/Well.jsx
@@ -9,6 +9,7 @@ import WellAnalysis from "../pages/WellAnalysis";
import TelemetryView from "../pages/TelemetryView";
import MenuDocuments from "../components/MenuDocuments";
import WellStat from "./WellStat";
+import Smbo from "./Smbo";
const { Content } = Layout
@@ -77,6 +78,9 @@ export default function Well() {
Последние данные
+ }>
+ СМБО
+
@@ -106,6 +110,9 @@ export default function Well() {
+
+
+
diff --git a/src/styles/equipment_details.css b/src/styles/equipment_details.css
new file mode 100644
index 0000000..8ad648f
--- /dev/null
+++ b/src/styles/equipment_details.css
@@ -0,0 +1,3 @@
+span.right-text {
+ float: right;
+}
\ No newline at end of file
diff --git a/src/styles/smbo.css b/src/styles/smbo.css
new file mode 100644
index 0000000..762a80f
--- /dev/null
+++ b/src/styles/smbo.css
@@ -0,0 +1,83 @@
+.smbo_container{
+ display: grid;
+ column-gap: 4px;
+ row-gap: 4px;
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
+ grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
+ justify-items: stretch;
+ align-items: stretch;
+}
+
+.smbo_rig_plan{
+ grid-column-start: 2;
+ grid-row-start: 2;
+}
+
+.plate_container{
+ background-color: #00000010;
+ display: grid;
+ grid-template-columns: 3fr 1fr;
+ grid-template-rows: auto;
+ padding: 6px;
+ margin: 4px;
+ height: 100%;
+ width: 100%;
+}
+
+.plate_title{
+ grid-column: 1 / span 2;
+ grid-row: 1 / 1;
+ font-weight: bold;
+}
+
+.plate_state{
+ grid-column: 3 / span 1;
+ grid-row: 1 / span 1;
+}
+
+.plate_param{
+ grid-row: 2 / span 1;
+}
+
+.plate_param_title{
+ grid-column: 1 / span 1;
+}
+
+.plate_param_value{
+ grid-column: 2 / span 1;
+ font-weight: bold;
+ place-self: start end;
+ margin-right: 4px;
+}
+
+.plate_param_units{
+ grid-column: 3 / span 1;
+}
+
+.c1{ grid-column-start: 1; }
+.c2{ grid-column-start: 2; }
+.c3{ grid-column-start: 3; }
+.c4{ grid-column-start: 4; }
+.c5{ grid-column-start: 5; }
+.c6{ grid-column-start: 6; }
+.c7{ grid-column-start: 7; }
+.c8{ grid-column-start: 8; }
+
+.r1{ grid-row-start: 1; }
+.r2{ grid-row-start: 2; }
+.r3{ grid-row-start: 3; }
+.r4{ grid-row-start: 4; }
+.r5{ grid-row-start: 5; }
+.r6{ grid-row-start: 6; }
+.r7{ grid-row-start: 7; }
+.r8{ grid-row-start: 8; }
+
+.cspan-4{ grid-column-end: 4 start;}
+
+.rspan-6{ grid-row-end: 6 start;}
+
+.rspan-7{ grid-row-end: 7 start;}
+
+.center{
+ place-self: center stretch;
+}