diff --git a/src/pages/WellOperations/WellOperationsEditor.jsx b/src/pages/WellOperations/WellOperationsEditor.jsx
index 1266d49..4f0a6a9 100644
--- a/src/pages/WellOperations/WellOperationsEditor.jsx
+++ b/src/pages/WellOperations/WellOperationsEditor.jsx
@@ -1,21 +1,21 @@
import moment from 'moment'
import { Input } from 'antd'
-import { useState, useEffect, memo } from 'react'
+import { useLocation } from 'react-router-dom'
+import { useState, useEffect, memo, useMemo, useCallback } from 'react'
import {
EditableTable,
- DatePickerWrapper,
makeColumn,
- makeDateSorter,
makeNumericColumnOptions,
makeSelectColumn,
makeActionHandler,
+ makeDateColumn,
} from '@components/Table'
-import { WellOperationService} from '@api'
import LoaderPortal from '@components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '@components/factory'
import { hasPermission } from '@utils/permissions'
-import { formatDate } from '@utils'
+import { arrayOrDefault } from '@utils'
+import { WellOperationService } from '@api'
const { TextArea } = Input
@@ -25,7 +25,7 @@ const defaultColumns = [
makeSelectColumn('Конструкция секции', 'idWellSectionType', [], undefined, {
editable: true,
width: 160,
- formItemRules: [({ getFieldValue }) => ({
+ formItemRules: [() => ({
validator(_, value) {
if (value?.length > 0)
return Promise.resolve()
@@ -37,43 +37,41 @@ const defaultColumns = [
makeColumn('Доп. инфо', 'categoryInfo', { editable: true, width: 300, input: }),
makeColumn('Глубина забоя на начало, м', 'depthStart', makeNumericColumnOptions(2, 'depthStart')),
makeColumn('Глубина забоя при завершении, м', 'depthEnd', makeNumericColumnOptions(2, 'depthEnd')),
- makeColumn('Время начала', 'dateStart', {
+ makeDateColumn('Время начала', 'dateStart', undefined, undefined, {
editable: true,
width: 200,
- input: ,
initialValue: moment().format(),
- sorter: makeDateSorter('dateStart'),
- render: (_, record) => (
-
- {formatDate(record.dateStart)}
-
- )
}),
makeColumn('Часы', 'durationHours', makeNumericColumnOptions(2, 'durationHours')),
makeColumn('Комментарий', 'comment', { editable: true, input: }),
]
export const WellOperationsEditor = memo(({ idWell, idType, ...other }) => {
- const [pageNumAndPageSize, setPageNumAndPageSize] = useState({current:1, pageSize:basePageSize})
+ const [pageNumAndPageSize, setPageNumAndPageSize] = useState({ current: 1, pageSize: basePageSize })
const [paginationTotal, setPaginationTotal] = useState(0)
const [operations, setOperations] = useState([])
const [showLoader, setShowLoader] = useState(false)
const [columns, setColumns] = useState(defaultColumns)
+ const location = useLocation()
+ const selectedIds = useMemo(() => {
+ const query = new URLSearchParams(location.search)
+ return arrayOrDefault(query.get('selectedId')?.split(',')?.map(parseInt))
+ }, [location])
+
useEffect(() => invokeWebApiWrapperAsync(
async () => {
- let categories = await WellOperationService.getCategories(idWell) ?? []
+ let categories = arrayOrDefault(await WellOperationService.getCategories(idWell))
categories = categories.map((item) => ({ value: item.id, label: item.name }))
- let sectionTypes = await WellOperationService.getSectionTypes(idWell) ?? []
- sectionTypes = Object.keys(sectionTypes).map((key) => ({ value: parseInt(key), label: sectionTypes[key] }))
+ let sectionTypes = await WellOperationService.getSectionTypes(idWell) ?? {}
+ sectionTypes = Object.entries(sectionTypes).map(([id, label]) => ({ value: parseInt(id), label }))
- setColumns(preColumns => {
- const newColumns = [...preColumns]
- newColumns[0] = makeSelectColumn('Конструкция секции', 'idWellSectionType', sectionTypes, undefined, { editable: true, width: 160 })
- newColumns[1] = makeSelectColumn('Операция', 'idCategory', categories, undefined, { editable: true, width: 200 })
- return newColumns
- })
+ setColumns(preColumns => [
+ makeSelectColumn('Конструкция секции', 'idWellSectionType', sectionTypes, undefined, { editable: true, width: 160 }),
+ makeSelectColumn('Операция', 'idCategory', categories, undefined, { editable: true, width: 200 }),
+ ...preColumns.slice(2),
+ ])
},
setShowLoader,
'Не удалось загрузить список операций по скважине',
@@ -107,6 +105,11 @@ export const WellOperationsEditor = memo(({ idWell, idType, ...other }) => {
idWell
}
+ const onRow = useCallback((record) => {
+ if (selectedIds?.includes(record.id))
+ return { style: { background: '#BF0000A0' } }
+ }, [selectedIds])
+
const recordParser = (record) => ({
...record,
idType,
@@ -133,6 +136,7 @@ export const WellOperationsEditor = memo(({ idWell, idType, ...other }) => {
onChange: (page, pageSize) => setPageNumAndPageSize({ current: page, pageSize })
}}
tableName={'well_operationse_editor'}
+ onRow={onRow}
/>
)