diff --git a/ReportEditor.jsx b/ReportEditor.jsx deleted file mode 100644 index 827469d..0000000 --- a/ReportEditor.jsx +++ /dev/null @@ -1,499 +0,0 @@ -import { DatePicker, Descriptions, Divider, Form, Input, InputNumber, Modal, Select, Space, Table } from 'antd' -import { memo, useCallback, useEffect, useState } from 'react' -import moment from 'moment' - -import { useIdWell } from '@asb/context' -import LoaderPortal from '@components/LoaderPortal' -import { invokeWebApiWrapperAsync } from '@components/factory' -import { makeColumn, makeGroupColumn } from '@components/Table' -import { DailyReportService } from '@api' -import { Tabs } from 'antd' - - - -const { Item: RawItem } = Form -const { Summary } = Table -const { TabPane } = Tabs; - -const onChange = (key) => { - console.log(key); -}; - -const Item = memo(({ style, ...other }) => ) - -const table1Columns = [ - makeGroupColumn('Отчётный период', [ - makeColumn('От (дата, время)', 'dateStart', { width: 200, render: (_, { disabled, onChange, checkIsDateBusy }) => ( - - - - )}), - ]), - makeGroupColumn('Забой за отчётный период, м', [ - makeColumn('От', 'depthStart', { width: 200, render: () => ( - - - - )}), - makeColumn('До', 'depthEnd', { width: 200, render: () => ( - - - - )}), - ]) -] - -const cellData = { - width: 200, - render: (name) => ( - - - - ) -} - -const table2Columns = [ - makeColumn('Работа модулей САУБ', 'label', { width: 400 }), - makeColumn('Часов:', 'hours', cellData), - makeColumn('Метров:', 'meters', cellData), -] - -const table2Data = [ - { key: '1', label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' }, - { key: '2', label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' }, - { key: '3', label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' }, -] - -const table3Columns = [ - makeGroupColumn('Бурение в роторе (за отчётный период) с использованием САУБ-1', [ - makeColumn('Проходка', 'sinking', cellData), - makeColumn('Часы бурения', 'hours', cellData), - makeColumn('Среднее диф. Давление', 'pressure', cellData), - ]), -] - -const table3Data = [{ key: '', sinking: 'penetrationInRotor', hours: 'numberDrillingHours', pressure: 'avgDiffDropRotor' }] - -const table4Columns = [ - makeGroupColumn('Бурение в слайде (за отчётный период) с использованием САУБ-1', [ - makeColumn('Проходка', 'sinking', cellData), - makeColumn('Часы бурения', 'hours', cellData), - makeColumn('Среднее диф. Давление', 'pressure', cellData), - ]), -] - -const table4Data = [{ key: '', sinking: 'penetrationInSlide', hours: 'drillingTimeInRotor', pressure: 'avgDiffPressureSlide' }] - -const table6Columns = [ - makeGroupColumn('БЕЗМЕТРАЖНЫЕ РАБОТЫ', [ - makeColumn('Подготовка ствола скважины к наращиванию', 'l_label', { colSpan: 2, width: 200 }), - makeColumn('', 'l_value', { colSpan: 0, ...cellData }), - makeColumn('Наращивание', 'r_label', { colSpan: 2, width: 200 }), - makeColumn('', 'r_value', { colSpan: 0, ...cellData }), - ]), -] - -const table6Data = [{ - key: '1', - l_label: 'Норматив на одну операцию, (мин):', - r_label: 'Норматив на одну операцию, (мин):', - l_value: 'standardTimeBarrelPreparation', - r_value: 'standardTimeExtension' -}, { - key: '2', - l_label: 'Проработка при бур, факт (ч):', - r_label: 'Наращивание, факт (ч):', - l_value: 'actualTimeBarrelPreparation', - r_value: 'actualTimeExtension' -}] - -const table6Summary = () => ( - - - Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи. - - - Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика. - - -) - -const table2Summary = () => ( - - МСЕ, колличество запусков, раз: - - - - - - -) - -export const ReportEditor = memo(({ visible, data, onDone, onCancel, checkIsDateBusy }) => { - const [form] = Form.useForm() - const [isInvalid, setIsInvalid] = useState(false) - const [isLoading, setIsLoading] = useState(false) - - const idWell = useIdWell() - - const setFields = useCallback((data) => form.setFieldsValue(data ? { - ...data, - rotorDrillingModes: Array.isArray(data.rotorDrillingModes) ? data.rotorDrillingModes ?? [] : [], - slideDrillingModes: Array.isArray(data.slideDrillingModes) ? data.slideDrillingModes ?? [] : [], - reportDate: moment.utc(data.reportDate).local(), - } : {}), [form]) - - useEffect(() => setFields(data), [data, setFields]) - - const onFormChange = useCallback(async () => await form.validateFields() - .then(() => setIsInvalid(false)) - .catch(() => setIsInvalid(true)) - , [form]) - - const onFormFinish = useCallback((formData) => invokeWebApiWrapperAsync( - async () => { - if (data) - await DailyReportService.update(idWell, data.reportDate, formData) - else - await DailyReportService.add(idWell, formData) - onDone?.(formData) - form.resetFields() - }, - setIsLoading, - 'Не удалось сохранить суточный рапорт', - 'Сохранение суточного рапорта', - ), [data, onDone, idWell, form]) - - const onDateChange = useCallback((date) => invokeWebApiWrapperAsync( - async () => { - if (data) return - const newData = await DailyReportService.getOrGenerate(idWell, date.format('YYYY-MM-DD') + 'Z') - if (checkIsDateBusy(moment(newData.reportDate))) - throw new Error('Рапорт на данную дату уже существует') - setFields(newData) - }, - setIsLoading, - (e) => `Не удалось загрузить автозаполняемые данные для нового рапорта: ${e}`, - 'Получение автозаполняемых данных суточного рапорта', - ), [idWell, data, setFields, checkIsDateBusy]) - - return ( - Суточная сводка бурения скважины № {data?.wellName} куст № {data?.clusterName} : - <>Новая cуточная сводка бурения скважины - } - onOk={form.submit} - okButtonProps={{ - disabled: isInvalid, - loading: isLoading, - }} - > - -
- - - -
Имя скважины:
- - -
Имя кластера:
- - -
Заказчик:
- - -
Подрядчик:
- - -
Дата рапорта:
- - -
Глубина забоя на дату начала интервала:
- - -
Глубина забоя на дату окончания интервала:
- - -
Глубина забоя по стволу на окончание отчетного периода:
- - -
Глубина забоя по вертикали на дату окончания отчетного периода:
- - -
Зенитный угол на дату окончания отчетного периода:
- - -
Азимутальный угол на дату окончания отчетного периода:
- - -
ФИО бурильщиков:
- - -
ФИО бурильщиков:
- - -
Время работы АПД:
- - -
Время работы спин мастер:
- - -
Время работы torqueMaster:
- - -
Количество метров пробуренных с включенным АПД:
- - -
Количество метров пробуренных с включенным Спин мастер:
- - -
Количество метров пробуренных с включенным torqueMaster:
- - -
Количество запусков МСЕ:
- -
- -
КНБК описание:
-
Бурение с наращиваниями в инт. 2195-2763м. Время начала:
-
Бурение с наращиваниями в инт. 2195-2763м. Время окончания:
-
Промывка. Время начала:
-
Промывка. Время окончания:
-
Подьем КНБК. Время начала:
-
Подьем КНБК. Время окончания:
-
Спуск КНБК. Время начала:
-
Бурение с наращиваниями в инт. 2763-2850м. Время начала:
-
Бурение с наращиваниями в инт. 2763-2850м. Время окончания:
- -
- -
Нормативное время на одну операцию по подготовке ствола скважины к наращиванию:
- -
Нормативное время на одну операцию по наращиванию:
- -
Фактическое время проработок при подготовке ствола скважины к наращиванию.:
- -
Фактическое время наращиваний:
- -
- -
Бурение:
- -
Промывка:
- -
Наращивание:
- -
Проработка:
- -
Расширка:
- -
Ремонт:
- -
КНБК:
- -
СПО:
- -
ПЗР:
- -
ПВО:
- -
ПГР:
- -
ГИС:
- -
ОЗЦ:
- -
Тех.работы:
- -
Снятие замера:
- -
Цементирование:
- -
Простой:
- -
НПВ:
- -
- -
Режимы бурения на роторе:
- -
Режимы бурения на слайде:
- -
Количество метров пробуренных в роторе за отчетный период:
- -
Количество часов бурения в роторе за отчетный период:
- -
Средний диф. перепад в роторе за отчетный период:
- -
Количество метров пробуренных в слайде за отчетный период:
- -
Время бурения в роторе за отчетный период:
- -
Средний диф. перепад в слайде за отчетный период:
- -
Плановая МСП за секцию:
- -
Общее время бурения за секцию:
- -
Общая проходка за секцию:
- -
Количество наращиваний за отчетный период:
- -
Отклонение относительно ГГД:
- -
Указываются все причины, которые влияют на снижение МСП.:
- -
- -
ФИО Мастера буровой:
- -
ФИО супервайзера:
- -
-
- - {/* - - - - - - - - - - -
- - - - - -
- - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */} - - - - ) -}) - -export default ReportEditor diff --git a/src/pages/Reports/DailyReport/ReportEditor.jsx b/src/pages/Reports/DailyReport/ReportEditor.jsx index 6e3c1b8..827469d 100644 --- a/src/pages/Reports/DailyReport/ReportEditor.jsx +++ b/src/pages/Reports/DailyReport/ReportEditor.jsx @@ -7,10 +7,17 @@ import LoaderPortal from '@components/LoaderPortal' import { invokeWebApiWrapperAsync } from '@components/factory' import { makeColumn, makeGroupColumn } from '@components/Table' import { DailyReportService } from '@api' +import { Tabs } from 'antd' + const { Item: RawItem } = Form const { Summary } = Table +const { TabPane } = Tabs; + +const onChange = (key) => { + console.log(key); +}; const Item = memo(({ style, ...other }) => ) @@ -198,8 +205,205 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel, checkIsDate form={form} onFinish={onFormFinish} onChange={onFormChange} + > - + + + +
Имя скважины:
+ + +
Имя кластера:
+ + +
Заказчик:
+ + +
Подрядчик:
+ + +
Дата рапорта:
+ + +
Глубина забоя на дату начала интервала:
+ + +
Глубина забоя на дату окончания интервала:
+ + +
Глубина забоя по стволу на окончание отчетного периода:
+ + +
Глубина забоя по вертикали на дату окончания отчетного периода:
+ + +
Зенитный угол на дату окончания отчетного периода:
+ + +
Азимутальный угол на дату окончания отчетного периода:
+ + +
ФИО бурильщиков:
+ + +
ФИО бурильщиков:
+ + +
Время работы АПД:
+ + +
Время работы спин мастер:
+ + +
Время работы torqueMaster:
+ + +
Количество метров пробуренных с включенным АПД:
+ + +
Количество метров пробуренных с включенным Спин мастер:
+ + +
Количество метров пробуренных с включенным torqueMaster:
+ + +
Количество запусков МСЕ:
+ +
+ +
КНБК описание:
+
Бурение с наращиваниями в инт. 2195-2763м. Время начала:
+
Бурение с наращиваниями в инт. 2195-2763м. Время окончания:
+
Промывка. Время начала:
+
Промывка. Время окончания:
+
Подьем КНБК. Время начала:
+
Подьем КНБК. Время окончания:
+
Спуск КНБК. Время начала:
+
Бурение с наращиваниями в инт. 2763-2850м. Время начала:
+
Бурение с наращиваниями в инт. 2763-2850м. Время окончания:
+ +
+ +
Нормативное время на одну операцию по подготовке ствола скважины к наращиванию:
+ +
Нормативное время на одну операцию по наращиванию:
+ +
Фактическое время проработок при подготовке ствола скважины к наращиванию.:
+ +
Фактическое время наращиваний:
+ +
+ +
Бурение:
+ +
Промывка:
+ +
Наращивание:
+ +
Проработка:
+ +
Расширка:
+ +
Ремонт:
+ +
КНБК:
+ +
СПО:
+ +
ПЗР:
+ +
ПВО:
+ +
ПГР:
+ +
ГИС:
+ +
ОЗЦ:
+ +
Тех.работы:
+ +
Снятие замера:
+ +
Цементирование:
+ +
Простой:
+ +
НПВ:
+ +
+ +
Режимы бурения на роторе:
+ +
Режимы бурения на слайде:
+ +
Количество метров пробуренных в роторе за отчетный период:
+ +
Количество часов бурения в роторе за отчетный период:
+ +
Средний диф. перепад в роторе за отчетный период:
+ +
Количество метров пробуренных в слайде за отчетный период:
+ +
Время бурения в роторе за отчетный период:
+ +
Средний диф. перепад в слайде за отчетный период:
+ +
Плановая МСП за секцию:
+ +
Общее время бурения за секцию:
+ +
Общая проходка за секцию:
+ +
Количество наращиваний за отчетный период:
+ +
Отклонение относительно ГГД:
+ +
Указываются все причины, которые влияют на снижение МСП.:
+ +
+ +
ФИО Мастера буровой:
+ +
ФИО супервайзера:
+ +
+
+ + {/* - +
- + */}