From c7835eac66cc4a322dd71a79610f5f4f351f304b Mon Sep 17 00:00:00 2001 From: dminyi <1301963064@qq.com> Date: Tue, 03 Sep 2024 11:40:40 +0800 Subject: [PATCH] 文件上传接口 --- gz-customerSystem/src/components/ArcoUpload/index.jsx | 103 ++++++++++++-------- gz-customerSystem/src/views/register/index.less | 11 +- gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx | 137 +++++++++++++------------- 3 files changed, 136 insertions(+), 115 deletions(-) diff --git a/gz-customerSystem/src/components/ArcoUpload/index.jsx b/gz-customerSystem/src/components/ArcoUpload/index.jsx index 61f5fd4..e9f5cca 100644 --- a/gz-customerSystem/src/components/ArcoUpload/index.jsx +++ b/gz-customerSystem/src/components/ArcoUpload/index.jsx @@ -1,3 +1,11 @@ +/* + * @Author: dminyi 1301963064@qq.com + * @Date: 2024-09-02 19:56:05 + * @LastEditors: dminyi 1301963064@qq.com + * @LastEditTime: 2024-09-03 11:34:07 + * @FilePath: \gzDyh\gz-customerSystem\src\components\ArcoUpload\index.jsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ import React, { useEffect, useState } from 'react' import { Upload, Form } from '@arco-design/web-react'; import { @@ -19,6 +27,14 @@ export default function ArcoUpload(props) { const [myFileList, setMyFileList] = useState([]) + + const handleFileListChange = (fileList) => { + setMyFileList(fileList); + if (props.onFileListChange) { + props.onFileListChange(fileList.length); + } + }; + useEffect(() => { if (props.editData) { console.log(props.editData[props.field]); @@ -27,48 +43,53 @@ }, [props.editData]) return ( - <FormItem - label={props.label} - field={props.field} - triggerPropName='fileList' - > - <Upload - drag - multiple - accept='.png,.jpg,.pdf' - onDrop={(e) => { - }} - tip='支持png、jpg、pdf格式的图片上传,每次上传大小不超过10M' - showUploadList={{ - fileIcon: <IconAttachment style={{ color: '#1D2129' }} />, - }} - headers={{ Authorization: $$.getSessionStorage('customerSystemToken') }} - onChange={(fileList, file) => { - const { status, response } = file - //因为字节upLoad组件有bug,不能区分添加文件还是删除文件,所以用这种办法来判断是不是删除 - const isDel = myFileList && myFileList.length > fileList.length - //上传失败 - if (status === 'error' && !isDel) { - $$.info({ type: 'error', content: '抱歉,网络错误附件上传失败,请稍后重试' }); - } - //上传成功 - if (status === 'done' && !isDel) { - if (response.code === 0 || response.code === '0') { - // 返回附件成功上传的回调 - $$.infoSuccess({ content: response.msg }); - if (props.handleChangeFile) { - props.handleChangeFile(response); + <> + <FormItem + label={props.label} + field={props.field} + triggerPropName='fileList' + > + <Upload + drag + multiple + accept='.png,.jpg,.pdf' + onDrop={(e) => { + }} + tip='支持png、jpg、pdf格式的图片上传,每次上传大小不超过10M' + showUploadList={{ + fileIcon: <IconAttachment style={{ color: '#1D2129' }} />, + }} + headers={{ Authorization: $$.getSessionStorage('customerSystemToken') }} + onChange={(fileList, file) => { + const { status, response } = file + //因为字节upLoad组件有bug,不能区分添加文件还是删除文件,所以用这种办法来判断是不是删除 + const isDel = myFileList && myFileList.length > fileList.length + //上传失败 + if (status === 'error' && !isDel) { + $$.info({ type: 'error', content: '抱歉,网络错误附件上传失败,请稍后重试' }); + } + //上传成功 + if (status === 'done' && !isDel) { + if (response.code === 0 || response.code === '0') { + // 返回附件成功上传的回调 + $$.infoSuccess({ content: response.msg }); + if (props.handleChangeFile) { + props.handleChangeFile(response); + } } } - } - //删除文件 - if (isDel && props.handleDelFile) { - props.handleDelFile(response.data[0].id) - } - setMyFileList(fileList) - }} - {...props.params}//自定义 - /> - </FormItem> + //删除文件 + if (isDel && props.handleDelFile) { + props.handleDelFile(response.data[0].id) + } + // setMyFileList(fileList) + handleFileListChange(fileList); + }} + {...props.params}//自定义 + /> + </FormItem> + + </> + ) } diff --git a/gz-customerSystem/src/views/register/index.less b/gz-customerSystem/src/views/register/index.less index 0672fc1..c3f7746 100644 --- a/gz-customerSystem/src/views/register/index.less +++ b/gz-customerSystem/src/views/register/index.less @@ -178,11 +178,11 @@ } } -// .arco-upload-list-type-text .arco-upload-list-item:first-of-type, -// .arco-upload-list-type-picture-list .arco-upload-list-item:first-of-type { -// margin-top: 34px; +.arco-upload-list-type-text .arco-upload-list-item:first-of-type, +.arco-upload-list-type-picture-list .arco-upload-list-item:first-of-type { + margin-top: 34px; -// } +} .unitDialogResult { font-size: 16px; @@ -434,4 +434,5 @@ display: flex; gap: 8px; margin-bottom: 8px; -} \ No newline at end of file +} + diff --git a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx index 89134f4..7f00626 100644 --- a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx +++ b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx @@ -17,17 +17,25 @@ import AgentDialog from "./agentDialog"; import NewFileCheck from '../../../filesCheck/newFileCheck'; import { IconLink } from '@arco-design/web-react/icon'; -import MapView from './map' -import { scan } from '@/assets/images/icon' -import { EventLevelDrawer, MattersDetail } from './levelDetail' -import DocumentScanner from '../../handleFeedback/component/FileUpLoad' +import MapView from './map'; +import { scan } from '@/assets/images/icon'; +import { EventLevelDrawer, MattersDetail } from './levelDetail'; +import DocumentScanner from '../../handleFeedback/component/FileUpLoad'; +import ArcoUpload from '@/components/ArcoUpload'; + const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息 const FormItem = Form.Item; const InputSearch = Input.Search; +const appUrl = $$.appUrl; + +function delFile(id) { + return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'get', service: 'sys', data: { id } }); +} const VisitorRegister = (props) => { + const formRef = useRef(); const [dialogType, setDialogType] = useState();//添加当事人的类型 const [addVisabled, setAddVisabled] = useState(false);//添加当事人弹窗控制 const [fakeData, setFakeData] = useState([]);//当事人信息数据 @@ -35,7 +43,7 @@ const [scanImage, setScanImage] = useState(false); const [scaned, setScaned] = useState(false); const [upload, setUpLoad] = useState(false); - const [sourceType, setSourceType] = useState('09_01010-1'); + const [sourceType, setSourceType] = useState('1'); const [filesCheck, setFilesCheck] = useState(false); const [fileView, setFileView] = useState(); const [fileTip, setFileTip] = useState('0'); @@ -44,12 +52,18 @@ const [apply, setApply] = useState(false); const [editData, setEditData] = useState(null); const [agentVisible, setAgentVisible] = useState(false); + const [fileLength, setFileLength] = useState(''); const peopleMap = { '15_020008-1': '申请方', '15_020008-2': '被申请方', '24_00006-1': '申请方代理人', '24_00006-2': '被申请方代理人' } + + const fileType = [ + { value: '1', label: '申请材料' }, + { value: '2', label: '证据材料' }, + ] useEffect(() => { if (props.formRef.current) { @@ -60,89 +74,74 @@ const personIconType = (v) => { switch (v) { - case '09_01010-1': + case '1': return [applyMaterials, applyMaterials_active, ]; - case '09_01010-2': + case '2': return [evidenceMaterials, evidenceMaterials_active]; } } + const handleChangeFile = (data) => { + console.log(data, 'handleChangeFile') + if (data.data && data.data.length != 0) { + if (data.data[0].idcardOcrResult) { + const { birthday, ...rest } = data.data[0].idcardOcrResult + //回填信息 + formRef.current.setFieldsValue({ + ...rest + }) + } + } + } + + //删除文件 + const handleDelFile = async (id) => { + const res = await delFile(id) + if (res.type) { + $$.infoSuccess({ content: '删除成功!' }); + } + } + + const formType = (type) => { - if (type === '09_01010-1') { + if (type === '1') { //申请材料 return ( <> <Col span={24}> - <FormItem + <ArcoUpload + params={{ + action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.mainId}&&ownerId=${props.mainId}&ownerType=22_00014-1`, + }} field='file' - - > - <Upload - drag - multiple - accept='image/*' - action='/' - height={158} - onDrop={(e) => { - }} - showUploadList={{ - // Please dont remove this comment - fileIcon: <IconLink style={{ color: '#1D2129' }} />, - }} - onChange={(v) => { - setFileTip((prevLength) => { - if (v.length > 0) { - console.log(v, 'vvvvvvv'); - return v.length; - } - return v.length; - }); - }} - tip='支持png、 jpg、excel、word、pdf等格式的文件上传,每次上传大小不超过10M' - /> - - </FormItem> - {fileTip > 0 && <div style={{ position: 'absolute', top: '203px', left: '16px', color: '#86909C' }}> 申请材料累计上传:<span style={{ color: '#1A6FB8' }}>{fileTip}</span></div>} - </Col> + handleChangeFile={handleChangeFile} + label='身份证明材料' + editData={props.editData} + handleDelFile={handleDelFile} + onFileListChange={(v) => setFileLength(v)} + fileTip + /> + {fileLength && <div style={{ position: 'absolute', top: '233px', left: '16px', color: '#86909C' }} > 申请材料累计上传:<span style={{ color: '#1A6FB8' }}>{fileLength}</span></div>} + </Col > </> ) } - if (type === '09_01010-2') { + if (type === '2') { //证据材料 return ( <> <Col span={24}> - <FormItem + <ArcoUpload + params={{ + action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.mainId}&&ownerId=${props.mainId}&ownerType=22_00014-2`, + }} field='file' - - > - <Upload - drag - multiple - accept='image/*' - action='/' - height={158} - onDrop={(e) => { - }} - showUploadList={{ - // Please dont remove this comment - fileIcon: <IconLink style={{ color: '#1D2129' }} />, - }} - onChange={(v) => { - setFileTip((prevLength) => { - if (v.length > 0) { - console.log(v, 'vvvvvvv'); - return v.length; - } - return v.length; - }); - }} - tip='支持png、 jpg、excel、word、pdf等格式的文件上传,每次上传大小不超过10M' - /> - - </FormItem> - {fileTip > 0 && <div style={{ position: 'absolute', top: '203px', left: '16px', color: '#86909C' }}> 证据材料累计上传:<span style={{ color: '#1A6FB8' }}>{fileTip}</span></div>} + handleChangeFile={handleChangeFile} + label='身份证明材料' + editData={props.editData} + handleDelFile={handleDelFile} + /> </Col> </> ) @@ -584,7 +583,7 @@ <Modal style={{ width: '512px' }} visible={upload} onCancel={() => setUpLoad(false)} footer={null} title='上传材料' centered> <div style={{ paddingTop: '8px' }}> <Row gutter={[30, 24]}> - {$$.options.fileOwnerType.map((x, t) => { + {fileType.map((x, t) => { return ( <Col span={12} key={t}> <div -- Gitblit v1.8.0