diff --git a/src/pages/Reports/DailyReport/ReportEditor.jsx b/src/pages/Reports/DailyReport/ReportEditor.jsx index 89c6abd..c871b20 100644 --- a/src/pages/Reports/DailyReport/ReportEditor.jsx +++ b/src/pages/Reports/DailyReport/ReportEditor.jsx @@ -16,9 +16,9 @@ const Item = memo(({ style, ...other }) => ( + makeColumn('От (дата, время)', 'dateStart', { width: 200, render: (_, { disabled, onChange }) => ( - + )}), ]), @@ -52,9 +52,9 @@ const table2Columns = [ ] const table2Data = [ - { label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' }, - { label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' }, - { label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' }, + { key: '1', label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' }, + { key: '2', label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' }, + { key: '3', label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' }, ] const table3Columns = [ @@ -65,7 +65,7 @@ const table3Columns = [ ]), ] -const table3Data = [{ sinking: 'penetrationInRotor', hours: 'numberDrillingHours', pressure: 'avgDiffDropRotor' }] +const table3Data = [{ key: '', sinking: 'penetrationInRotor', hours: 'numberDrillingHours', pressure: 'avgDiffDropRotor' }] const table4Columns = [ makeGroupColumn('Бурение в слайде (за отчётный период) с использованием САУБ-1', [ @@ -75,7 +75,7 @@ const table4Columns = [ ]), ] -const table4Data = [{ sinking: 'penetrationInSlide', hours: 'drillingTimeInRotor', pressure: 'avgDiffPressureSlide' }] +const table4Data = [{ key: '', sinking: 'penetrationInSlide', hours: 'drillingTimeInRotor', pressure: 'avgDiffPressureSlide' }] const table6Columns = [ makeGroupColumn('БЕЗМЕТРАЖНЫЕ РАБОТЫ', [ @@ -87,11 +87,13 @@ 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', @@ -127,12 +129,14 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => { const idWell = useContext(IdWellContext) - useEffect(() => form.setFieldsValue(data ? { + 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(), - } : {}), [data, form]) + } : {}), [form]) + + useEffect(() => setFields(data), [data, setFields]) const onFormChange = useCallback(async () => await form.validateFields() .then(() => setIsInvalid(false)) @@ -152,6 +156,17 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => { 'Сохранение суточного рапорта', ), [data, onDone, idWell]) + const onDateChange = useCallback((date) => invokeWebApiWrapperAsync( + async () => { + if (data) return + const newData = await DailyReportService.getOrGenerate(idWell, date.toISOString()) + setFields(newData) + }, + setIsLoading, + 'Не удалось загрузить автозаполняемые данные для нового рапорта', + 'Получение автозаполняемых данных суточного рапорта', + )) + return ( { onChange={onFormChange} > - + @@ -186,7 +201,7 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => { bordered size={'small'} columns={table1Columns} - dataSource={[{ dateStart: !!data }]} + dataSource={[{ key: '', disabled: !!data, onChange: onDateChange }]} pagination={false} />