diff --git a/package.json b/package.json
index 39758dd..ed37e71 100755
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"oug": "npx openapi -i http://46.146.209.148/swagger/v1/swagger.json -o src/services/api",
"oug_dev": "npx openapi -i http://46.146.209.148:89/swagger/v1/swagger.json -o src/services/api"
},
- "proxy": "http://46.146.209.148:89",
+ "proxy": "http://46.146.209.148:88",
"eslintConfig": {
"extends": [
"react-app",
diff --git a/src/pages/Reports/DailyReport/ReportEditor.jsx b/src/pages/Reports/DailyReport/ReportEditor.jsx
index 6e3c1b8..8b56887 100644
--- a/src/pages/Reports/DailyReport/ReportEditor.jsx
+++ b/src/pages/Reports/DailyReport/ReportEditor.jsx
@@ -7,39 +7,60 @@ 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 }) => (
- -
-
-
- )}),
+ makeColumn('От (дата, время)', 'dateStart', {
+ width: 200,
+ render: (_, { disabled, onChange, checkIsDateBusy }) => (
+ -
+
+
+ ),
+ }),
]),
makeGroupColumn('Забой за отчётный период, м', [
- makeColumn('От', 'depthStart', { width: 200, render: () => (
- -
-
-
- )}),
- makeColumn('До', 'depthEnd', { width: 200, render: () => (
- -
-
-
- )}),
- ])
+ makeColumn('От', 'depthStart', {
+ width: 200,
+ render: () => (
+ -
+
+
+ ),
+ }),
+ makeColumn('До', 'depthEnd', {
+ width: 200,
+ render: () => (
+ -
+
+
+ ),
+ }),
+ ]),
+]
+const names = [
+ ['head', ['wellName', 'clusterName','contractor','countLaunchesMSE','customer','bottomholeDepth','verticalDepth','firstDriller','secondDriller','zenithAngle','azimuthAngle','penetrationSAUB','penetrationSpinMaster','penetrationTorkMaster','secondDriller','wellDepthIntervalFinishDate','wellDepthIntervalStartDate','workTimeSAUB','workTimeSpinMaster','workTimeTorkMaster','reportDate']],
+ ['bha', ['bhaDescription','extensionDrillingOneBegin','extensionDrillingOneFinish','sluiceBegin','sluiceFinish','climbBegin','climbFinish','descentBegin','descentFinish','extensionDrillingTwoBegin','extensionDrillingTwoFinish']],
+ ['noDrilling', ['actualTimeBarrelPreparation','actualTimeExtension','standardTimeBarrelPreparation','standardTimeExtension']],
+ ['timeBalance', ['drilling','flushing','building','elaboration','extension','repair','knbk','spo','pzr','pzr','pgr','gis','ozc','engineeringWorks','takingMeasure','cementing','simple','npv']],
+ ['saub', ['avgDiffDropRotor','avgDiffPressureSlide','declinesReasonsROP','deviationFromTVD','drillingTimeInRotor','declinesReasonsROP','extensionsCount','extensionsCount','penetrationInRotor','penetrationInSlide','rotorDrillingModes','rotorSlidePercent','reductionTimeDrilling','increaseSpeedSection','increaseSpeedDay','sectionDrillingTimeTotal','sectionPenetrationTotal','sectionROPPlan','slideDrillingModes','mspSection']],
+ ['sign', ['drillingMaster','supervisor']],
]
const cellData = {
@@ -48,7 +69,15 @@ const cellData = {
-
- )
+ ),
+}
+const Name1 = {
+ width: 200,
+ render: (name) => (
+ -
+
+
+ ),
}
const table2Columns = [
@@ -60,7 +89,12 @@ const table2Columns = [
const table2Data = [
{ key: '1', label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' },
{ key: '2', label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' },
- { key: '3', label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' },
+ {
+ key: '3',
+ label: 'Торк Мастер (демпфирование), ч/м:',
+ hours: 'workTimeTorkMaster',
+ meters: 'penetrationTorkMaster',
+ },
]
const table3Columns = [
@@ -71,7 +105,9 @@ const table3Columns = [
]),
]
-const table3Data = [{ key: '', sinking: 'penetrationInRotor', hours: 'numberDrillingHours', pressure: 'avgDiffDropRotor' }]
+const table3Data = [
+ { key: '', sinking: 'penetrationInRotor', hours: 'numberDrillingHours', pressure: 'avgDiffDropRotor' },
+]
const table4Columns = [
makeGroupColumn('Бурение в слайде (за отчётный период) с использованием САУБ-1', [
@@ -81,10 +117,12 @@ const table4Columns = [
]),
]
-const table4Data = [{ key: '', sinking: 'penetrationInSlide', hours: 'drillingTimeInRotor', pressure: 'avgDiffPressureSlide' }]
+const table4Data = [
+ { key: '', sinking: 'penetrationInSlide', hours: 'drillingTimeInRotor', pressure: 'avgDiffPressureSlide' },
+]
const table6Columns = [
- makeGroupColumn('БЕЗМЕТРАЖНЫЕ РАБОТЫ', [
+ makeGroupColumn('', [
makeColumn('Подготовка ствола скважины к наращиванию', 'l_label', { colSpan: 2, width: 200 }),
makeColumn('', 'l_value', { colSpan: 0, ...cellData }),
makeColumn('Наращивание', 'r_label', { colSpan: 2, width: 200 }),
@@ -92,30 +130,97 @@ const table6Columns = [
]),
]
-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 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 table10Columns = [
+ makeGroupColumn('', [
+ makeColumn('Бурение с наращиваниями в инт. 2195-2763м', 'l_label', { colSpan: 2, width: 200 }),
+ makeColumn('', 'l_value', { colSpan: 0, ...Name1 }),
+ makeColumn('Промывка', 'r_label', { colSpan: 2, width: 200 }),
+ makeColumn('', 'r_value', { colSpan: 0, ...Name1 }),
+ ]),
+]
-const table6Summary = () => (
-
-
- Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи.
-
-
- Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика.
-
-
-)
+const table10Data = [
+ {
+ key: '1',
+ l_label: 'Время начала:',
+ r_label: 'Время начала',
+ l_value: 'extensionDrillingOneBegin',
+ r_value: 'extensionDrillingOneFinish',
+ },
+ {
+ key: '2',
+ l_label: 'Время окончания',
+ r_label: 'Время окончания',
+ l_value: 'sluiceBegin',
+ r_value: 'sluiceFinish',
+ },
+]
+const table11Columns = [
+ makeGroupColumn('', [
+ makeColumn('Подъем КНБК', 'l_label', { colSpan: 2, width: 200 }),
+ makeColumn('', 'l_value', { colSpan: 0, ...Name1 }),
+ makeColumn('Спуск КНБК', 'r_label', { colSpan: 2, width: 200 }),
+ makeColumn('', 'r_value', { colSpan: 0, ...Name1 }),
+ ]),
+]
+
+const table11Data = [
+ {
+ key: '1',
+ l_label: 'Время начала:',
+ r_label: 'Время начала',
+ l_value: 'climbBegin',
+ r_value: 'climbFinish',
+ },
+ {
+ key: '2',
+ l_label: 'Время окончания',
+ r_label: 'Время окончания',
+ l_value: 'descentBegin',
+ r_value: 'descentFinish',
+ },
+]
+const table12Columns = [
+ 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 table12Data = [
+ {
+ key: '1',
+ l_label: 'По стволу:',
+ r_label: 'По вертикали',
+ l_value: 'climbBegin',
+ r_value: 'climbFinish',
+ },
+ {
+ key: '2',
+ l_label: 'Зенитный',
+ r_label: 'Азимутальный',
+ l_value: 'descentBegin',
+ r_value: 'descentFinish',
+ },
+]
const table2Summary = () => (
@@ -135,46 +240,69 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel, checkIsDate
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])
+ const setFields = useCallback(
+ (data) =>
+ form.setFieldsValue(
+ data
+ ? {
+ ...data.head,
+ ...data.bha,
+ ...data.noDrilling,
+ ...data.timeBalance,
+ ...data.saub,
+ ...data.sign,
+ reportDate: moment.utc(data.head.reportDate).local(),
+ }
+ : {}
+ ),
+ [form]
+ )
useEffect(() => setFields(data), [data, setFields])
- const onFormChange = useCallback(async () => await form.validateFields()
- .then(() => setIsInvalid(false))
- .catch(() => setIsInvalid(true))
- , [form])
+ 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 onFormFinish = useCallback(
+ (formData) =>
+ invokeWebApiWrapperAsync(
+ async () => {
+ console.log(formData)
+ const payload = Object.fromEntries(names.map(([head, names]) => [head, Object.fromEntries(names.map((name) => [name, formdata[name]]))]))
+ if (data) await DailyReportService.update(idWell, data.head.reportDate, payload)
+ else await DailyReportService.add(idWell, payload)
+ 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])
+ 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уточная сводка бурения скважины>
+ title={
+ data ? (
+ <>
+ Суточная сводка бурения скважины № {data?.wellName} куст № {data?.clusterName}
+ >
+ ) : (
+ <>Новая cуточная сводка бурения скважины>
+ )
}
onOk={form.submit}
okButtonProps={{
@@ -194,11 +327,7 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel, checkIsDate
}}
>
-