* Добавлена подгрузка автозаполняемых значений

* Исправлена ошибка с отсутствием 'key'
This commit is contained in:
goodmice 2022-04-19 19:26:35 +05:00
parent f9ddf172f5
commit 148dd2e96c

View File

@ -16,9 +16,9 @@ const Item = memo(({ style, ...other }) => <RawItem style={{ margin: 0, ...style
const table1Columns = [ const table1Columns = [
makeGroupColumn('Отчётный период', [ makeGroupColumn('Отчётный период', [
makeColumn('От (дата, время)', 'dateStart', { width: 200, render: (disabled) => ( makeColumn('От (дата, время)', 'dateStart', { width: 200, render: (_, { disabled, onChange }) => (
<Item name={'reportDate'}> <Item name={'reportDate'}>
<DatePicker disabled={disabled} format={'DD.MM.YYYY'} style={{ width: '100%' }} /> <DatePicker disabled={disabled} format={'DD.MM.YYYY'} style={{ width: '100%' }} onChange={onChange} />
</Item> </Item>
)}), )}),
]), ]),
@ -52,9 +52,9 @@ const table2Columns = [
] ]
const table2Data = [ const table2Data = [
{ label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' }, { key: '1', label: 'АПД (автоматическая подача долота), ч/м:', hours: 'workTimeSAUB', meters: 'penetrationSAUB' },
{ label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' }, { key: '2', label: 'Спин Мастер (осцилляция), ч/м:', hours: 'workTimeSpinMaster', meters: 'penetrationSpinMaster' },
{ label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' }, { key: '3', label: 'Торк Мастер (демпфирование), ч/м:', hours: 'workTimeTorkMaster', meters: 'penetrationTorkMaster' },
] ]
const table3Columns = [ 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 = [ const table4Columns = [
makeGroupColumn('Бурение в слайде (за отчётный период) с использованием САУБ-1', [ 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 = [ const table6Columns = [
makeGroupColumn('БЕЗМЕТРАЖНЫЕ РАБОТЫ', [ makeGroupColumn('БЕЗМЕТРАЖНЫЕ РАБОТЫ', [
@ -87,11 +87,13 @@ const table6Columns = [
] ]
const table6Data = [{ const table6Data = [{
key: '1',
l_label: 'Норматив на одну операцию, (мин):', l_label: 'Норматив на одну операцию, (мин):',
r_label: 'Норматив на одну операцию, (мин):', r_label: 'Норматив на одну операцию, (мин):',
l_value: 'standardTimeBarrelPreparation', l_value: 'standardTimeBarrelPreparation',
r_value: 'standardTimeExtension' r_value: 'standardTimeExtension'
}, { }, {
key: '2',
l_label: 'Проработка при бур, факт (ч):', l_label: 'Проработка при бур, факт (ч):',
r_label: 'Наращивание, факт (ч):', r_label: 'Наращивание, факт (ч):',
l_value: 'actualTimeBarrelPreparation', l_value: 'actualTimeBarrelPreparation',
@ -127,12 +129,14 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => {
const idWell = useContext(IdWellContext) const idWell = useContext(IdWellContext)
useEffect(() => form.setFieldsValue(data ? { const setFields = useCallback((data) => form.setFieldsValue(data ? {
...data, ...data,
rotorDrillingModes: Array.isArray(data.rotorDrillingModes) ? data.rotorDrillingModes ?? [] : [], rotorDrillingModes: Array.isArray(data.rotorDrillingModes) ? data.rotorDrillingModes ?? [] : [],
slideDrillingModes: Array.isArray(data.slideDrillingModes) ? data.slideDrillingModes ?? [] : [], slideDrillingModes: Array.isArray(data.slideDrillingModes) ? data.slideDrillingModes ?? [] : [],
reportDate: moment.utc(data.reportDate).local(), reportDate: moment.utc(data.reportDate).local(),
} : {}), [data, form]) } : {}), [form])
useEffect(() => setFields(data), [data, setFields])
const onFormChange = useCallback(async () => await form.validateFields() const onFormChange = useCallback(async () => await form.validateFields()
.then(() => setIsInvalid(false)) .then(() => setIsInvalid(false))
@ -152,6 +156,17 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => {
'Сохранение суточного рапорта', 'Сохранение суточного рапорта',
), [data, onDone, idWell]) ), [data, onDone, idWell])
const onDateChange = useCallback((date) => invokeWebApiWrapperAsync(
async () => {
if (data) return
const newData = await DailyReportService.getOrGenerate(idWell, date.toISOString())
setFields(newData)
},
setIsLoading,
'Не удалось загрузить автозаполняемые данные для нового рапорта',
'Получение автозаполняемых данных суточного рапорта',
))
return ( return (
<Modal <Modal
centered centered
@ -176,7 +191,7 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => {
onChange={onFormChange} onChange={onFormChange}
> >
<Item name={'reportDate'} label={'Дата рапорта'} rules={[{ required: true }]}> <Item name={'reportDate'} label={'Дата рапорта'} rules={[{ required: true }]}>
<DatePicker disabled={!!data} format={'DD.MM.YYYY'}/> <DatePicker disabled={!!data} format={'DD.MM.YYYY'} onChange={onDateChange} />
</Item> </Item>
<Divider /> <Divider />
<Space direction={'vertical'} size={'middle'} style={{ width: '100%' }}> <Space direction={'vertical'} size={'middle'} style={{ width: '100%' }}>
@ -186,7 +201,7 @@ export const ReportEditor = memo(({ visible, data, onDone, onCancel }) => {
bordered bordered
size={'small'} size={'small'}
columns={table1Columns} columns={table1Columns}
dataSource={[{ dateStart: !!data }]} dataSource={[{ key: '', disabled: !!data, onChange: onDateChange }]}
pagination={false} pagination={false}
/> />
<Item label={'Бурильщик 1 смена'} name={'firstDriller'}><Input /></Item> <Item label={'Бурильщик 1 смена'} name={'firstDriller'}><Input /></Item>