tsg-web/src/views/rcgl/byfz/fzxc/form.js

146 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import React,{useEffect,useState,useRef} from 'react';
import { Form, Button, Input, Row, Col, Upload,message,Image } from 'antd';
import {PaperClipOutlined,DeleteOutlined} from '@ant-design/icons';
import { formItemLayout, btnItemLayout } from '../../../../components/crud/FormLayoutProps';
import apiurl from '../../../../service/apiurl';
const ModalForm = ({ mode, record, onEdit, onSave, onCrudSuccess }) => {
const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const [form] = Form.useForm();
const [fileList, setFileList] = useState([]) //上传文件列表
const [loading, setLoading] = useState(false)
const fileChange = (info) => {
if (info.file.status === "done") {
setLoading(false);
setFileList(info.fileList)
}
if (info.file.status === "uploading") {
setLoading(true);
}
if (info.file.status === "error") {
message.error("文件上传失败")
setLoading(false);
}
setFileList(info.fileList)
}
const beforeUpload = (file) => {
if (fileList.length == 1) {
message.error("只能上传一张图片!")
return false;
}
const isJpgOrPng =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png';
if (!isJpgOrPng) {
message.error('请上传jpeg/png/jpg格式的图片!');
}
return isJpgOrPng
};
const onFinish = async (values) => {
let oldFiles = fileList.map(item => ({ fileId: item.response?.data?.fileId }))
values.pic = oldFiles[0];
delete values.files
if (mode === 'save') {
onSave(apiurl.rcgl.byfz.fzxc.picSave,values)
}
}
const deleteFile = (fileId) => {
let filterFile = fileList.filter(item => item.response?.data?.fileId !== fileId);
setFileList(filterFile)
}
return (
<>
<Form form={form} {...formItemLayout} onFinish={onFinish} initialValues={record}>
<Row>
<Col span={24}>
<Form.Item
label="图片标题"
name="picTitle"
labelCol={{ span: 3, offset: 0 }}
wrapperCol={{span:20,offset:0}}
rules={[{ required: true }]}
>
<Input
style={{ width: '100%' }}
allowClear
/>
</Form.Item>
</Col>
</Row>
<Row>
<Col span={24}>
<Form.Item
label="图片"
name="files"
labelCol={{ span: 3, offset: 0 }}
wrapperCol={{span:21,offset:0}}
rules={[{ required: true }]}
>
<Upload
name='file'
action="/gunshiApp/xyt/termite/pic/file/upload/singleSimple"
onChange={fileChange}
fileList={fileList}
disabled={loading}
showUploadList={false}
beforeUpload={beforeUpload}
>
{mode == "view" ? null :
<div style={{display:"flex",alignItems:"center",columnGap:10,color:"#4f85ec",cursor:"pointer"}}>
<PaperClipOutlined />
<a style={{ cursor: "pointer" }}>上传图片
<span style={{ marginLeft:10,color:"#dfdfdf" }}>(支持扩展名.jpg .png)</span></a>
</div>
}
</Upload>
</Form.Item>
</Col>
</Row>
<Row gutter={[16]}>
{
loading ? <span>文件正在上传中请等待</span> :
fileList.length > 0 && fileList.map(file => {
return (
<Col span={12}>
<div className={mode == "view" ? 'file-item' : 'file-item'}>
<div className='file-description'>
<Image width={60} src={url +file.response?.data?.filePath} alt='' />
<span>{file.name}</span>
</div>
{mode !== "view" &&
<div
className="delete-icon"
onClick={() => deleteFile(file.response?.data?.fileId)}
>
<DeleteOutlined />
</div>
}
</div>
</Col>
)
})
}
</Row>
{
mode==='view'?null:(
<>
<Form.Item {...btnItemLayout}>
<Button type="primary" htmlType="submit">
{mode === 'save' ? '提交' : '修改'}
</Button>
</Form.Item>
</>
)
}
</Form>
</>
);
}
export default ModalForm;