import {Table, DatePicker, Button, Modal, ConfigProvider} from 'antd' import { UploadOutlined } from '@ant-design/icons' import DocumentCreationForm from './modalWindows/DocumentCreationForm' import { FileService } from '../services/api' import {useState, useEffect} from "react" import {useParams} from 'react-router-dom' import notify from './notify' import LoaderPortal from './LoaderPortal' import locale from "antd/lib/locale/ru_RU" import moment from 'moment' const pageSize = 12 const {RangePicker} = DatePicker; export default function Documents({selectedFileCategory}) { let {id} = useParams() const [page, setPage] = useState(1) const [range, setRange] = useState([]) const [pagination, setPagination] = useState(null) const [files, setFiles] = useState([]) const [isModalVisible, setIsModalVisible] = useState(false) const [isTableUpdating, setTableUpdating] = useState(false) const [loader, setLoader] = useState(false) const handleFileNameCLick = async (event, row) => { const element = event.target if(!element.href.length) { try { setLoader(true) await fetch(`/api/files/${id}/${row.id}`, { headers: { Authorization: 'Bearer ' + localStorage['token'] } }) .then(async (response) => { const blob = await response.blob(); let reader = new FileReader(); reader.readAsDataURL(blob); reader.onload = function (e) { element.href = e.target.result element.click() }; setLoader(false) }); } catch (error) { notify(`Не удалось скачать файл ${row}`, 'error') console.log(error) } } } const columns = [ { title: 'Документ', key: 'document', dataIndex: 'name', render: (name, row) => handleFileNameCLick(ev, row)} download={name}>{name} }, { title: 'Дата загрузки', key: 'uploadDate', dataIndex: 'uploadDate', render: (item) => moment.utc(item).local().format('DD MMM YYYY, HH:mm:ss') }, { title: 'Ф.И.О.', key: 'userName', dataIndex: 'userName', } ]; const openModal = () => { setIsModalVisible(true) } const closeModal = () => { setIsModalVisible(false) } const onChangeRange = (range) => { setRange(range) } useEffect(() => { const GetDocuments = async () => { setLoader(true) try { let begin = null let end = null if (range?.length > 1) { begin = range[0].toISOString() end = range[1].toISOString() } await FileService.getFilesInfo( `${id}`, (page - 1) * pageSize, pageSize, selectedFileCategory, begin, end ).then((paginatedFiles) => { setFiles(paginatedFiles?.items.map(f => { return { key: f.id, begin: f.date, ...f } })) setPagination({ total: paginatedFiles?.count, current: Math.floor(paginatedFiles?.skip / pageSize), }) setTableUpdating(false) setLoader(false) } ) } catch (ex) { notify(`Не удалось загрузить файлы по скважине "${id}"`, 'error') console.log(ex) } } GetDocuments() }, [id, range, page, selectedFileCategory, isTableUpdating]) return (