tsg-web/src/views/sz/szzf/ajdj/bajz.js

211 lines
8.0 KiB
JavaScript
Raw Normal View History

2024-09-23 18:03:30 +08:00
import { Space, Table, Radio, DatePicker, Form, Select, Button, message, Upload, Input, Row, Col, Switch, Image } from 'antd';
2024-09-26 17:59:26 +08:00
import { InboxOutlined, LinkOutlined, DeleteOutlined, LoadingOutlined, VerticalAlignBottomOutlined } from '@ant-design/icons'
2024-09-23 18:03:30 +08:00
import { useForm } from 'antd/lib/form/Form';
2024-09-26 17:59:26 +08:00
import { useEffect, useState } from 'react';
import { httpgetExport, httppostAddfile } from '../../../../utils/request';
import { exportFile } from '../../../../utils/tools';
2024-09-23 18:03:30 +08:00
const { Dragger } = Upload;
2024-09-24 14:37:41 +08:00
const list = [
{
2024-09-26 17:59:26 +08:00
type: '立案',
key: 'files3'
2024-09-24 14:37:41 +08:00
},
{
2024-09-26 17:59:26 +08:00
type: '调查取证',
key: 'files4'
2024-09-24 14:37:41 +08:00
},
{
2024-09-26 17:59:26 +08:00
type: '审查处理',
key: 'files5'
2024-09-24 14:37:41 +08:00
},
{
2024-09-26 17:59:26 +08:00
type: '送达执行',
key: 'files6'
2024-09-24 14:37:41 +08:00
},
{
2024-09-26 17:59:26 +08:00
type: '结案',
key: 'files7'
2024-09-24 14:37:41 +08:00
}
]
2024-09-26 17:59:26 +08:00
const baseUrl = "http://223.75.53.141:9102/test.by-lyf.tmp"
const Page = ({ uploadUrl, downloadUrl, type, getFormInfo, formJsonData }) => {
2024-09-24 14:37:41 +08:00
const [form] = Form.useForm();
2024-09-26 17:59:26 +08:00
const [fileList, setFileList] = useState([])
const [fileListHj, setFileHj] = useState({'files3': [],'files4': [],'files5': [],'files6': [],'files7': []})
const [url, setUrl] = useState('')
const [isModal, setIsModal] = useState(false)
const getInfo = () => {
form.validateFields().then((values) => {
getFormInfo({ ...values, ...fileListHj })
form.resetFields()
setFileList([])
}).catch((errorInfo) => {
console.log(errorInfo, 'error');
})
//
}
const cancel = () => {
getFormInfo(false)
form.resetFields()
setFileList([])
}
const deleteFile = (e,key) => {
fileListHj[key] = fileListHj[key].filter(item => item.fileId !== e)
setFileHj({ ...fileListHj })
}
const props = (keys) => {
return {
name: 'file',
multiple: true,
fileList: fileList,
showUploadList: false,
beforeUpload: (file, fileList) => {
// if (fileType == "pic" &&
// (file.type != "image/jpeg" || file.type != "image/png" || file.type != "image/jpg")) {
// message.error('仅支持上传jpg/png/jpeg格式的图片');
// return false;
// } else {
// return true;
// }
},
customRequest(e) {
httppostAddfile(uploadUrl, e).then(res => {
if(fileListHj[keys]){
fileListHj[keys].push(res.data)
}else{
fileListHj[keys]=[]
fileListHj[keys].push(res.data)
}
setFileHj({ ...fileListHj })
})
}
2024-09-23 18:03:30 +08:00
}
};
2024-09-26 17:59:26 +08:00
function checkMediaType(url) {
// 创建URL对象
var link = url;
// 获取路径的最后一个点之后的内容作为文件扩展名
var extension = link?.split('.').pop().toLowerCase();
2024-09-23 18:03:30 +08:00
2024-09-26 17:59:26 +08:00
// 声明支持的图片和视频文件扩展名
var imageExtensions = ['jpg', 'jpeg', 'gif', 'png'];
var file = ['pdf', 'word', 'xslx', 'xsl', 'txt', "pptx"];
//
// 判断文件扩展名是否在图片扩展名数组中
if (imageExtensions.includes(extension)) {
return 'image';
}
// 判断文件扩展名是否在视频扩展名数组中
if (file.includes(extension)) {
return extension;
}
// 扩展名不在图片或视频数组中返回null表示无法确定媒体类型
return null;
2024-09-23 18:03:30 +08:00
}
2024-09-26 17:59:26 +08:00
const preView = (item) => {
if (checkMediaType(item.name) == 'pdf') {
// window.open(baseUrl + item.previewUrl)
setUrl(item.previewUrl)
setIsModal(true)
}
}
/**
* @description 文件下载
* @param {String} params 文件fileId
*/
const download = (id, name) => {
httpgetExport(downloadUrl+id).then(res => {
exportFile(name,res.data)
})
}
const onFinish = () => {
}
useEffect(() => {
setFileHj(formJsonData)
}, [])
2024-09-23 18:03:30 +08:00
return (
2024-09-26 17:59:26 +08:00
<Form form={form} onFinish={onFinish} >
2024-09-23 18:03:30 +08:00
<Row>
2024-09-26 17:59:26 +08:00
<Col span={2}>
<div style={{ display: 'flex', alignItems: 'center' }}>
<div style={{ width: 3, height: 12, background: '#259def', marginRight: 5 }}></div>
案卷存档</div>
2024-09-24 14:37:41 +08:00
</Col>
<Col span={10}>
2024-09-23 18:03:30 +08:00
<Form.Item
label='保管人员'
2024-09-26 17:59:26 +08:00
name='custodian'
2024-09-23 18:03:30 +08:00
>
<Input />
</Form.Item>
</Col>
2024-09-24 14:37:41 +08:00
<Col span={10}>
2024-09-23 18:03:30 +08:00
<Form.Item
label='保管地点'
2024-09-26 17:59:26 +08:00
name='storageLocation'
2024-09-23 18:03:30 +08:00
>
<Input />
</Form.Item>
</Col>
</Row>
2024-09-26 17:59:26 +08:00
{list.map(item1 => (
2024-09-24 14:37:41 +08:00
<Row>
2024-09-26 17:59:26 +08:00
<Col span={2}>
<div style={{ display: 'flex', alignItems: 'center' }}>
<div style={{ width: 3, height: 12, background: '#259def', marginRight: 5 }}></div>
{item1.type}</div>
</Col>
<Col span={22}>
<Form.Item
label='附件'
name='files'
>
<Dragger {...props(item1.key)}>
<p className="ant-upload-drag-icon">
<InboxOutlined />
</p>
<p className="ant-upload-text">点击或将文件拖拽到这里上传 支持扩展名jpegpng</p>
</Dragger>
2024-09-27 10:15:58 +08:00
<div className='flex'>
2024-09-26 17:59:26 +08:00
{fileListHj?.[item1.key]?.map((item) => {
2024-09-27 10:15:58 +08:00
return <div className='flex align-center file-item' style={{marginTop:5,marginRight:'3%',width:'30%', minHeight: "50px", fontSize: 14, columnGap: 10, cursor: checkMediaType(item.fileName) == 'image' || checkMediaType(item.fileName) == 'pdf' ? 'pointer' : "not-allowed" }}>
2024-09-26 17:59:26 +08:00
<div style={{ width: 40, height: 40, display: "flex", alignItems: 'center' }}>
{checkMediaType(item.fileName) == 'image' && <Image
height={40}
src={baseUrl + item.filePath}
/>}
{
checkMediaType(item.fileName) !== 'image' &&
<span >{checkMediaType(item.fileName)?.toUpperCase()}</span>
}
</div>
<span onClick={() => preView(item)}>{item.fileName}</span>
{type !== 'view' && <DeleteOutlined onClick={() => deleteFile(item.fileId,item1.key)} />}
<VerticalAlignBottomOutlined onClick={() => download(item.fileId, item.fileName)} />
</div>
})}
</div>
</Form.Item>
</Col>
</Row>))}
<div className="flex flex-end" style={{ marginTop: 10, justifyContent: "flex-end" }}>
<Button type="" style={{ marginRight: 10 }} onClick={cancel}>取消</Button>
<Button type="primary" onClick={getInfo}>确定</Button>
</div>
2024-09-23 18:03:30 +08:00
</Form >
)
}
export default Page