import React, { useEffect, useState, useRef, useMemo } from 'react';
import { UploadOutlined } from '@ant-design/icons';
import { Form } from '@ant-design/compatible';
import '@ant-design/compatible/assets/index.css';
import { Button, Modal, message, Table, Spin, Tabs, Upload, Select, Space } from 'antd';
const { TabPane } = Tabs;
const { confirm } = Modal;
import moment from 'moment/moment';
import PreviewFile from '@/components/PreviewFile';
import { getToken, GetTokenFromUrl } from '@/utils/utils';
import FileViewerModal from '@/components/FileViewer';
// 历史清单
function FilesModal(props) {
const {
projectId,
visible,
onClose,
onUpload,
data,
// uploadProps,
queryFiles,
DeleteFile,
downloadFile,
loading,
typeOptions,
} = props;
const [value, setValue] = useState();
const [showData, setShowData] = useState();
const [exportUrl, setExportUrl] = useState();
const [fileVisible, setFileVisible] = useState(false);
useEffect(() => {
if (!value) {
setShowData(data);
return;
}
const newData = data.filter(item => item.classify_id == value);
setShowData(newData);
}, [data, value]);
const uploadProps = useMemo(() => {
const token = getToken() || GetTokenFromUrl();
const uploadProps = {
name: 'file',
showUploadList: false,
action: `/api/v1/purchase/attachment/${projectId}`,
headers: {
'JWT-TOKEN': token,
},
data: {
classify_id: value,
},
beforeUpload(file) {
if (!value) {
message.error('请先选择附件分类');
return false;
}
},
onChange(info) {
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
message.success(`${info.file.name} 文件上传成功`);
queryFiles();
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 文件上传失败`);
}
},
};
return uploadProps;
}, [value, projectId]);
const columns = [
{
title: '预览',
dataIndex: 'name',
render: (text, item) => {
return ;
},
},
{
title: '上传时间',
dataIndex: 'c_time',
render: text => {
return text ? moment(text).format('YYYY年MM月DD日 HH:mm:ss') : null;
},
},
{
title: '上传人',
dataIndex: 'CreatorUser',
render: record => record.CName || '',
},
{
title: '分类',
dataIndex: 'classify_id',
render: id => typeOptions.find(item => item.id == id)?.name,
},
{
title: '操作',
render: record => (
<>
{
downloadFile(record);
}}
>
下载
{
setExportUrl(record.url);
setFileVisible(true);
}}
>
预览
{
confirm({
title: '提醒',
content: '确认删除该文件,删除后无法复原',
okText: '确认',
cancelText: '取消',
onOk() {
DeleteFile(record.id);
},
});
}}
style={{ marginLeft: 10 }}
>
删除
>
),
},
];
return (
<>
附件类型:
{
setFileVisible(false);
}}
/>
>
);
}
export default FilesModal;