forked from ddrilling/asb_cloud_front
refactor DrillingProgram is based on DocumentsTemplate
This commit is contained in:
parent
33146c59d8
commit
615e0d4031
@ -11,6 +11,7 @@ import { EditableTable, makePaginationObject } from "../../components/Table"
|
|||||||
import UploadForm from "../../components/UploadForm"
|
import UploadForm from "../../components/UploadForm"
|
||||||
import LoaderPortal from "../../components/LoaderPortal"
|
import LoaderPortal from "../../components/LoaderPortal"
|
||||||
import {UserView} from '../../components/UserView'
|
import {UserView} from '../../components/UserView'
|
||||||
|
import {CompanyView} from '../../components/CompanyView'
|
||||||
|
|
||||||
const pageSize = 12
|
const pageSize = 12
|
||||||
const { RangePicker } = DatePicker
|
const { RangePicker } = DatePicker
|
||||||
@ -19,7 +20,7 @@ const { Search } = Input
|
|||||||
export default function DocumentsTemplate({ idCategory, idWell }) {
|
export default function DocumentsTemplate({ idCategory, idWell }) {
|
||||||
const [page, setPage] = useState(1)
|
const [page, setPage] = useState(1)
|
||||||
const [filterDataRange, setFilterDataRange] = useState([])
|
const [filterDataRange, setFilterDataRange] = useState([])
|
||||||
const [filterCompaniesIds, setFilterCompany] = useState([])
|
const [filterCompanyName, setFilterCompanyName] = useState([])
|
||||||
const [filterFileName, setFilterFileName] = useState('')
|
const [filterFileName, setFilterFileName] = useState('')
|
||||||
const [pagination, setPagination] = useState(null)
|
const [pagination, setPagination] = useState(null)
|
||||||
const [files, setFiles] = useState([])
|
const [files, setFiles] = useState([])
|
||||||
@ -47,7 +48,7 @@ export default function DocumentsTemplate({ idCategory, idWell }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const hanleCompanySearch = (value, _) => {
|
const hanleCompanySearch = (value, _) => {
|
||||||
setFilterCompany(value)
|
setFilterCompanyName(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const hanleFileNameSearch = (value, _) => {
|
const hanleFileNameSearch = (value, _) => {
|
||||||
@ -86,19 +87,10 @@ export default function DocumentsTemplate({ idCategory, idWell }) {
|
|||||||
{
|
{
|
||||||
title: "Компания",
|
title: "Компания",
|
||||||
key: "company",
|
key: "company",
|
||||||
dataIndex: "company",
|
render: (_, record) => <CompanyView company={record?.author?.company}/>
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const addKeysAndUpdateFiles = (items) => {
|
|
||||||
const mappedFiles = items?.map((fileInfo) => ({
|
|
||||||
key: fileInfo.id,
|
|
||||||
begin: fileInfo.date,
|
|
||||||
...fileInfo,
|
|
||||||
}))
|
|
||||||
setFiles(mappedFiles ?? [])
|
|
||||||
}
|
|
||||||
|
|
||||||
const update = () => {
|
const update = () => {
|
||||||
let begin = null
|
let begin = null
|
||||||
let end = null
|
let end = null
|
||||||
@ -112,15 +104,20 @@ export default function DocumentsTemplate({ idCategory, idWell }) {
|
|||||||
const paginatedFiles = await FileService.getFilesInfo(
|
const paginatedFiles = await FileService.getFilesInfo(
|
||||||
idWell,
|
idWell,
|
||||||
idCategory,
|
idCategory,
|
||||||
filterCompaniesIds,
|
filterCompanyName,
|
||||||
filterFileName,
|
filterFileName,
|
||||||
begin,
|
begin,
|
||||||
end,
|
end,
|
||||||
(page - 1) * pageSize,
|
(page - 1) * pageSize,
|
||||||
pageSize,
|
pageSize,
|
||||||
)
|
)
|
||||||
if (!paginatedFiles) return
|
|
||||||
addKeysAndUpdateFiles(paginatedFiles?.items)
|
if (!paginatedFiles)
|
||||||
|
return
|
||||||
|
|
||||||
|
const filesInfos = paginatedFiles.items??[]
|
||||||
|
|
||||||
|
setFiles(filesInfos)
|
||||||
|
|
||||||
const newPagination = makePaginationObject(paginatedFiles)
|
const newPagination = makePaginationObject(paginatedFiles)
|
||||||
setPagination(newPagination)
|
setPagination(newPagination)
|
||||||
@ -130,7 +127,7 @@ export default function DocumentsTemplate({ idCategory, idWell }) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(update, [idWell, idCategory, page, filterDataRange, filterCompaniesIds, filterFileName])
|
useEffect(update, [idWell, idCategory, page, filterDataRange, filterCompanyName, filterFileName])
|
||||||
|
|
||||||
const companies = [...new Set(files.map(file=>file.company))]
|
const companies = [...new Set(files.map(file=>file.company))]
|
||||||
.filter(company=>company)
|
.filter(company=>company)
|
||||||
|
26
src/pages/Documents/DrillingProgram.jsx
Normal file
26
src/pages/Documents/DrillingProgram.jsx
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import {Button} from 'antd'
|
||||||
|
import { useState } from "react"
|
||||||
|
import {invokeWebApiWrapperAsync, download} from '../../components/factory'
|
||||||
|
import DocumentsTemplate from './DocumentsTemplate'
|
||||||
|
import LoaderPortal from '../../components/LoaderPortal'
|
||||||
|
|
||||||
|
const idFileCategoryDrillingProgramItems = 13;
|
||||||
|
|
||||||
|
export default function DrillingProgram({idWell}) {
|
||||||
|
const [showLoader, setShowLoader] = useState(false)
|
||||||
|
|
||||||
|
const urlDownloadProgram =`api/well/${idWell}/drillingProgram`
|
||||||
|
|
||||||
|
const downloadProgram = () => invokeWebApiWrapperAsync(async()=>{
|
||||||
|
await download(urlDownloadProgram)
|
||||||
|
},
|
||||||
|
setShowLoader,
|
||||||
|
"Не удалось загрузить программу бурения")
|
||||||
|
|
||||||
|
return(<LoaderPortal show={showLoader}>
|
||||||
|
<Button onClick={downloadProgram}>Сформировать программу бурения</Button>
|
||||||
|
<DocumentsTemplate
|
||||||
|
idWell={idWell}
|
||||||
|
idCategory={idFileCategoryDrillingProgramItems}/>
|
||||||
|
</LoaderPortal>)
|
||||||
|
}
|
@ -1,67 +0,0 @@
|
|||||||
import {Table, Button} from 'antd'
|
|
||||||
import {useEffect, useState} from 'react'
|
|
||||||
import {invokeWebApiWrapperAsync, download} from '../components/factory'
|
|
||||||
import { FileService } from '../services/api'
|
|
||||||
import UploadForm from '../components/UploadForm'
|
|
||||||
import LoaderPortal from '../components/LoaderPortal'
|
|
||||||
|
|
||||||
const idFileCategoryDrillingProgramItems = 13;
|
|
||||||
//const idFileCategoryDrillingProgram = 14;
|
|
||||||
|
|
||||||
const FileInfo = (fileInfo) => {
|
|
||||||
return <div>{fileInfo?.name}</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function DrillingProgram({idWell}) {
|
|
||||||
const [data, setData] = useState([])
|
|
||||||
const [showLoader, setShowLoader] = useState(false)
|
|
||||||
|
|
||||||
const update = () => invokeWebApiWrapperAsync( async () => {
|
|
||||||
const files = await FileService.getInfosByCategory(idWell, idFileCategoryDrillingProgramItems)
|
|
||||||
setData(files??[])
|
|
||||||
},setShowLoader,null)
|
|
||||||
|
|
||||||
useEffect(update, [idWell])
|
|
||||||
|
|
||||||
const columns = [
|
|
||||||
{
|
|
||||||
title: 'Файл',
|
|
||||||
dataIndex: 'fileInfo',
|
|
||||||
key: 'fileInfo',
|
|
||||||
render: (_, record) => <FileInfo idCategory={record.key} fileInfo={record.fileInfo} onUploadComplete={update}/>
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Автор',
|
|
||||||
key: 'owner',
|
|
||||||
render: (_,record) => record.fileInfo?.owner
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Дата загрузки',
|
|
||||||
key: 'uploadDate',
|
|
||||||
render: (_, record) => record.fileInfo ? new Date(record.fileInfo.uploadDate).toLocaleString() : ''
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
const urlDownloadProgram =`api/well/${idWell}/drillingProgram`
|
|
||||||
|
|
||||||
return(<>
|
|
||||||
<LoaderPortal show={showLoader}>
|
|
||||||
<Button
|
|
||||||
type="primary"
|
|
||||||
htmlType="button"
|
|
||||||
disabled={!data.some((el) => !!el.fileInfo)}
|
|
||||||
onClick={()=>{download(urlDownloadProgram)}}
|
|
||||||
>
|
|
||||||
Сформировать программу бурения
|
|
||||||
</Button>
|
|
||||||
<div> </div>
|
|
||||||
<Table
|
|
||||||
bordered
|
|
||||||
dataSource={data}
|
|
||||||
columns={columns}
|
|
||||||
pagination={false}
|
|
||||||
/>
|
|
||||||
<UploadForm idCategory={idFileCategoryDrillingProgramItems}/>
|
|
||||||
</LoaderPortal>
|
|
||||||
</>)
|
|
||||||
}
|
|
@ -15,7 +15,7 @@ import Documents from "./Documents";
|
|||||||
import Measure from "./Measure";
|
import Measure from "./Measure";
|
||||||
import { makeMenuItems } from "./Documents/menuItems";
|
import { makeMenuItems } from "./Documents/menuItems";
|
||||||
import WellOperations from "./WellOperations";
|
import WellOperations from "./WellOperations";
|
||||||
import DrillingProgram from "./DrillingProgram";
|
import DrillingProgram from "./Documents/DrillingProgram";
|
||||||
|
|
||||||
const { Content } = Layout;
|
const { Content } = Layout;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user