diff --git a/src/components/CementFluid.jsx b/src/components/CementFluid.jsx new file mode 100644 index 0000000..45fa840 --- /dev/null +++ b/src/components/CementFluid.jsx @@ -0,0 +1,106 @@ +let date = new Date().toLocaleString() + +export function CementFluid() { + return (<> +
+ Наименование | +Температура, °C | +Плотность, г/см³ | +Усл. вязкость, сек | +R300 | +R600 | +R3/R6 | +ДНС, дПа | +Пластич. вязкость, сПз | +СНС, дПа | +R3/R6 49С | +ДНС 49С, дПа | +Пластич. вязкость 49С, сПз | +СНС 49С, дПа | +МВТ, кг/м³ | +Песок, % | +Фильтрация, см³/30мин | +Корка, мм | +КТК | +рН | +Жесткость, мг/л | +Хлориды, мг/л | +Pf | +Mf | +Pm | +Твердая фаза раствора, % | +Смазка, % | +Карбонат кальция, кг/м³ | +
План | ++ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
Факт | ++ | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
{date}
+ > + ) +} \ No newline at end of file diff --git a/src/components/Disposition.jsx b/src/components/Disposition.jsx new file mode 100644 index 0000000..b40e30b --- /dev/null +++ b/src/components/Disposition.jsx @@ -0,0 +1,19 @@ +let date = new Date().toLocaleString() + + +export default function Disposition() { + return ( + <> ++ Текст +
+ +Ф.И.О.
+Должность
+Компания
+{date}
+ > + ) +} \ No newline at end of file diff --git a/src/components/Documents.jsx b/src/components/Documents.jsx new file mode 100644 index 0000000..b7cb274 --- /dev/null +++ b/src/components/Documents.jsx @@ -0,0 +1,230 @@ +import {Table, DatePicker, Form, Button, Upload, ConfigProvider} from 'antd' +import { UploadOutlined } from '@ant-design/icons' +import MenuDocuments from "./MenuDocuments" +import { FileService } from '../services/api' +import {useState, useEffect} from "react" +import {useParams} from 'react-router-dom' +import notify from './notify' +import LoaderPortal from './LoaderPortal' +import locale from "antd/lib/locale/ru_RU" +import moment from 'moment' + +const pageSize = 12 +const {RangePicker} = DatePicker; + + +export default function Documents({selectedFileCategory}) { + let {id} = useParams() + + const [page, setPage] = useState(1) + const [range, setRange] = useState([]) + const [pagination, setPagination] = useState(null) + const [files, setFiles] = useState([]) + const [selectedFiles, setSelectedFiles] = useState([]) + const [isTableUpdating, setTableUpdating] = useState(false) + + const [loader, setLoader] = useState(false) + const [form] = Form.useForm(); + + const handleFileNameCLick = async (event, row) => { + const element = event.target + + if(!element.href.length) { + try { + setLoader(true) + + await fetch(`/api/files/${id}/${row.id}`, { + headers: { + Authorization: 'Bearer ' + localStorage['token'] + } + }) + .then(async (response) => { + const blob = await response.blob(); + + let reader = new FileReader(); + reader.readAsDataURL(blob); + reader.onload = function (e) { + element.href = e.target.result + element.click() + }; + setLoader(false) + }); + } catch (error) { + notify(`Не удалось скачать файл ${row}`, 'error') + console.log(error) + } + } + } + + const columns = [ + { + title: 'Документ', + key: 'document', + dataIndex: 'name', + render: (name, row) => + handleFileNameCLick(ev, row)} download={name}>{name} + }, + { + title: 'Дата загрузки', + key: 'uploadDate', + dataIndex: 'uploadDate', + render: (item) => moment.utc(item).local().format('DD MMM YYYY, HH:mm:ss') + }, + { + title: 'Ф.И.О.', + key: 'userName', + dataIndex: 'userName', + } + ]; + + const submitFileFormProps = { + progress: { + strokeColor: { + '0%': '#108ee9', + '100%': '#87d068', + }, + strokeWidth: 3, + format: percent => `${parseFloat(percent.toFixed(2))}%`, + }, + onChange({ file, fileList }) { + if (file.status !== 'uploading') { + setSelectedFiles(fileList) + } + } + } + + const onChangeRange = (range) => { + setRange(range) + } + + const onFinish = (values, form) => { + var fileList = values.fileInput.fileList + + if (fileList.length > 0) + { + setLoader(true) + const formData = new FormData(); + + fileList.forEach(val => { + formData.append('files', val.originFileObj) + }) + + fetch(`/api/files/${id}/files?idCategory=${selectedFileCategory}&idUser=${localStorage['userId']}`, { + headers: { + Authorization: 'Bearer ' + localStorage['token'] + }, + method: 'POST', + body: formData + }) + .then(async (response) => { + setLoader(false) + form.resetFields() + setTableUpdating(true) + }); + } + } + + const onFinishFailed = (errorInfo) => { + notify(`Не удалось отправить файлы по скважине "${id}".`, 'error') + } + + useEffect(() => { + const GetDocuments = async () => { + setLoader(true) + + try { + let begin = null + let end = null + if (range?.length > 1) { + begin = range[0].toISOString() + end = range[1].toISOString() + } + + await FileService.getFilesInfo( + `${id}`, + (page - 1) * pageSize, + pageSize, + selectedFileCategory, + begin, + end + ).then((paginatedFiles) => { + setFiles(paginatedFiles?.items.map(f => { + return { + key: f.id, + begin: f.date, + ...f + } + })) + + setPagination({ + total: paginatedFiles?.count, + current: Math.floor(paginatedFiles?.skip / pageSize), + }) + + setTableUpdating(false) + setLoader(false) + } + ) + } catch (ex) { + notify(`Не удалось загрузить файлы по скважине "${id}"`, 'error') + console.log(ex) + } + } + GetDocuments() + }, [id, range,page, selectedFileCategory, isTableUpdating]) + + return ( +Глубина по + стволу, м | +Зенитный + угол, град | +Азимут + магнитный, град | +Азимут + истинный, град | +Азимут + дирекц., град | +Глубина по + вертикали, м | +Абсолютная + отметка, м | +Лок. + смещение к северу, м | +Лок. + смещение к востоку, м | +Отклонение + от устья, м | +Азимут + смещения, град | +Отклонение + от устья, м | +Пространст. + интенсивность, град/10 м | +Угол + установки отклон., град | +Интенсив. + по зениту, град/10 м | +Комментарий | +Разница вертикальных глубин + между ХХХ (план) и ХХХ (факт) | +Расстояние в пространстве между + ХХХ (план) и ХХХ (факт) | +
{date}
+ >) +} \ No newline at end of file diff --git a/src/components/Sludge.jsx b/src/components/Sludge.jsx new file mode 100644 index 0000000..4705892 --- /dev/null +++ b/src/components/Sludge.jsx @@ -0,0 +1,383 @@ +let date = new Date().toLocaleString() + +export function Sludge() { + return (<> +N пробы + | +Глубина + отбора пробы | +Литология | +Краткое + описание | +ЛБА + бурового раствора | +ЛБА + (шлама) | +Газопоказания + | +Мех. + скорость | +Предварительное заключение о насыщении по ГК | +|||||||||||||
Песчаник + (%) | +Алевролит + (%) | +Аргиллит + (%) | +Аргиллит + бит. (%) | +Уголь + (%) | +Песок + (%) | +Глина + (%) | +Известняк + (%) | +Цемент + (%) | +Сумма + УВ мах. (абс%) | +С1 + метан (отн%) | +С2 этан + (отн%) | +С3 + пропан (отн%) | +С4 + бутан (отн%) | +С5 + пентан (отн%) | +|||||||
{date}
+ > + ) +} \ No newline at end of file diff --git a/src/pages/FluidService.jsx b/src/pages/FluidService.jsx new file mode 100644 index 0000000..2022289 --- /dev/null +++ b/src/pages/FluidService.jsx @@ -0,0 +1,8 @@ +import Documents from "../components/Documents" + +export default function FluidService({selectedFileCategory}) { + + return( +