From f5d2600e1423afe6a49dee541ea5599d588b19f3 Mon Sep 17 00:00:00 2001 From: dminyi <1301963064@qq.com> Date: Tue, 10 Sep 2024 09:16:58 +0800 Subject: [PATCH] Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh into master --- gz-customerSystem/src/views/register/matterDetail/index.jsx | 125 ------------- gz-customerSystem/src/views/register/visit/component/previewTable.jsx | 8 gz-customerSystem/src/styles/public.less | 4 gz-customerSystem/src/components/personCard/DetailDialog.jsx | 12 + gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx | 3 gz-customerSystem/src/views/register/matterDetail/FileTable.jsx | 194 ++++++++++++++++++--- gz-customerSystem/src/views/register/handleFeedback/index.jsx | 2 gz-customerSystem/src/api/appUrl.js | 20 +- gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx | 76 +++++++ gz-customerSystem/src/utils/download.js | 41 ++++ 10 files changed, 309 insertions(+), 176 deletions(-) diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js index 9338a21..85b85ee 100644 --- a/gz-customerSystem/src/api/appUrl.js +++ b/gz-customerSystem/src/api/appUrl.js @@ -10,11 +10,11 @@ export const debug = { // web服务 // baseUrl: 'http://gz.hugeinfo.com.cn', - baseUrl: "http://192.168.3.108:9002", + baseUrl: "http://w88bsz.natappfree.cc", // baseUrl: 'http://mdqgnh.natappfree.cc', // 附件服务 - fileUrl: "http://192.168.3.108:9002", + fileUrl: "http://w88bsz.natappfree.cc", // fileUrl: 'http://gz.hugeinfo.com.cn', // 文件查看url 后面接附件编号 @@ -38,11 +38,11 @@ // 正式版 export const web = { // web服务 - baseUrl: "/gz-dyh", + baseUrl: "https://zfw-dyh.by.gov.cn", // baseUrl: 'http://146.4.99.61:8088/byzfw', // 附件服务 - fileUrl: "https://dyh.hugeinfo.com.cn", + fileUrl: "https://zfw-dyh.by.gov.cn", // 文件查看url 后面接附件编号 fileShowUrl: "/dyh-sys/api/v1/fileInfo/show/", @@ -54,10 +54,10 @@ fileDocx2: "/InsertSeal/Word/AddSeal1/Word1", // 不同服务接口type - mediate: "dyh-mediate", // dyh-mediate - cust: "dyh-cust", // dyh-cust - oper: "dyh-oper", // dyh-oper - sys: "dyh-sys", // dyh-sys - disp: "dyh-disp", //dyh-disp - utils: "dyh-utils", + mediate: "gzdyh-mediate", // dyh-mediate + cust: "gzdyh-cust", // dyh-cust + oper: "gzdyh-oper", // dyh-oper + sys: "gzdyh-sys", // dyh-sys + disp: "gzdyh-disp", //dyh-disp + utils: "gzdyh-utils", }; diff --git a/gz-customerSystem/src/components/personCard/DetailDialog.jsx b/gz-customerSystem/src/components/personCard/DetailDialog.jsx index 183501d..f5f7dce 100644 --- a/gz-customerSystem/src/components/personCard/DetailDialog.jsx +++ b/gz-customerSystem/src/components/personCard/DetailDialog.jsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from 'react' import KeyVisits from "./KeyVisits"; -import { link } from '@/assets/images' +import { link } from '@/assets/images'; +import { Scrollbars } from "react-custom-scrollbars"; export default function DetailDialog(props) { const nuturalList = [ @@ -359,7 +360,12 @@ }, []) return ( - <div style={{ maxHeight: '590px', overflowY: 'scroll' }}> + <Scrollbars + autoHide + autoHeight + autoHeightMin={200} // 最小高度为300px + autoHeightMax={590} + > <table border="1" align="center" cellpadding="8" className="table" style={{ marginBottom: '20px' }}> { tableList?.map((item, index) => { @@ -385,6 +391,6 @@ {/* <div style={{ width: 'calc(100% - 9px)', background: '#f2f3f5', marginBottom: '20px', padding: '12px' }}> <KeyVisits /> </div> */} - </div> + </Scrollbars> ) } diff --git a/gz-customerSystem/src/styles/public.less b/gz-customerSystem/src/styles/public.less index 05e8a8c..d54605e 100644 --- a/gz-customerSystem/src/styles/public.less +++ b/gz-customerSystem/src/styles/public.less @@ -805,10 +805,12 @@ .arco-modal-header { padding: 0; + margin-bottom: 0; } - .arco-modal-header { + .arco-modal-footer { text-align: right; + margin-top: 0; } } diff --git a/gz-customerSystem/src/utils/download.js b/gz-customerSystem/src/utils/download.js new file mode 100644 index 0000000..5ce3b11 --- /dev/null +++ b/gz-customerSystem/src/utils/download.js @@ -0,0 +1,41 @@ +import axios from 'axios' +import qs from 'qs' +import * as $$ from '@/utils/utility'; + +export default function downloadFile(url, params) { + const link = document.createElement('a') + return axios({ + url, + params, + method: 'GET', + headers: { + Authorization: $$.getSessionStorage('customerSystemToken') + }, + responseType: 'blob', + paramsSerializer: (v) => qs.stringify(v, { + arrayFormat: 'repeat' + }), + }) + .then((res) => { + // 切割文件名 + const fileNameEncode = res.headers['content-disposition'].split('filename=')[1] + // 解码 + const fileName = decodeURIComponent(fileNameEncode) + // 设置type类型 + const blob = new Blob([res.data], { + type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; application/octet-stream', + }) + const fileUrl = window.URL.createObjectURL(blob) + link.href = fileUrl + link.setAttribute('download', fileName) + link.style.display = 'none' + link.click() + link.remove() + }) + .catch(() => { + $$.info({ + type: 'error', + content: '文件下载请求失败' + }); + }) +} \ No newline at end of file diff --git a/gz-customerSystem/src/views/register/handleFeedback/index.jsx b/gz-customerSystem/src/views/register/handleFeedback/index.jsx index 97a74a8..b928d2e 100644 --- a/gz-customerSystem/src/views/register/handleFeedback/index.jsx +++ b/gz-customerSystem/src/views/register/handleFeedback/index.jsx @@ -3,7 +3,7 @@ * @Author: dminyi 1301963064@qq.com * @Date: 2024-08-09 09:59:43 * @LastEditors: dminyi 1301963064@qq.com - * @LastEditTime: 2024-09-09 21:14:14 + * @LastEditTime: 2024-09-10 09:16:47 * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx * @Description: 来访登记 * diff --git a/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx b/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx index 84e9d1e..f1cc458 100644 --- a/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/FileTable.jsx @@ -2,7 +2,7 @@ import * as $$ from '@/utils/utility'; import ArcoUpload from '@/components/ArcoUpload'; import NewFileCheck from './NewFileCheck'; -import { Row, Col, Button } from 'antd'; +import { Row, Col, Button, Typography, Space } from 'antd'; import { Form, Modal } from '@arco-design/web-react'; import { applyMaterials, @@ -12,19 +12,17 @@ } from '@/assets/images'; import { CheckOutlined, } from '@ant-design/icons'; import TableView from '@/components/TableView'; +import downloadFile from "@/utils/download" +const { Link, Text } = Typography; const appUrl = $$.appUrl; function delFile(id) { return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data: { id } }); } -function listIdTypeInfoApi(data) { - return $$.ax.request({ url: `fileInfo/listIdTypeInfo`, type: 'post', service: 'sys', data }); -} - function deleteFileByIdApi(data) { - return $$.ax.request({ url: `fileInfo/deleteFileById`, type: 'delete', service: 'sys', data }); + return $$.ax.request({ url: `fileInfo/deleteFileByIds`, type: 'delete', service: 'sys', data }); } //表格数据 @@ -35,6 +33,7 @@ size: 0, fileNames: "-", updateTime: '', + id: 1, }, { ownerType: "22_00018-102", @@ -42,16 +41,24 @@ size: 0, fileNames: "-", updateTime: '', + id: 2, }, ] + +/** + * mainId*,//就是caseId,事件id + * fileInfoList*, //文件列表 + * isReview,//是否查看,查看的话就不能删除上传,只能查看下载 + */ export default function FileTable(props) { const formRef = useRef(); const [sourceType, setSourceType] = useState(); const [filesCheck, setFilesCheck] = useState(false); - const [upload, setUpLoad] = useState(false); + const [uploadVisible, setUpLoadVisible] = useState(false); const [tableData, setTableData] = useState(staticTableData); const [fileMap, setFileMap] = useState({}); + const [fileInfoList, setFileInfoList] = useState([]); // 列配置 const fakeColumns = [ @@ -93,17 +100,47 @@ title: '操作', dataIndex: 'perClassName', key: 'perClassName', - width: 200, + width: props.isReview ? 60 : 125, + fixed: 'right', render: (text, record) => ( - <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}> - <div onClick={() => setFilesCheck(true)}>查看</div> - <div>删除</div> - <div>下载</div> - <div onClick={() => { + <Space size="middle"> + <Link onClick={() => { setSourceType(record.ownerType) - setUpLoad(true) - }}>上传</div> - </div> + setFilesCheck(true) + }}> + 查看 + </Link> + {!props.isReview && <Link onClick={() => { + if (record.fileInfoList && record.fileInfoList.length != 0) { + let ids = record.fileInfoList?.map(item => item.id).join(',') + handleDelete(ids) + } else { + $$.info({ type: 'warning', content: '还没上传关于该材料的文件!' }); + } + }}> + 删除 + </Link>} + <Link onClick={() => { + if (record.fileInfoList && record.fileInfoList.length != 0) { + let ids = record.fileInfoList?.map(item => item.id).join(',') + handleDownlod(ids) + } else { + $$.info({ type: 'warning', content: '还没上传关于该材料的文件!' }); + } + }}> + 下载 + </Link> + {!props.isReview && <Link onClick={() => { + setSourceType(record.ownerType) + setUpLoadVisible(true) + setFileInfoList(record.fileInfoList) + setTimeout(() => { + formRef.current.setFieldValue('file', record.fileInfoList) + }, 0) + }}> + 上传 + </Link>} + </Space> ) }, // 更多列配置... @@ -114,9 +151,53 @@ ] useEffect(() => { - console.log(props.fileInfoList); - },[props.fileInfoList]) + if (props.fileInfoList && props.fileInfoList.length != 0) { + //证明材料 + const applyFile = props.fileInfoList.find(item => item.ownerType == "22_00018-101") + //证据材料 + const evidenceFile = props.fileInfoList.find(item => item.ownerType == "22_00018-102") + setFileMap({ + '22_00018-101': applyFile?.fileList || [], + '22_00018-102': evidenceFile?.fileList || [] + }) + const newList = tableData.map(item => { + if (item.ownerType == '22_00018-101' && applyFile) { + return { + ...item, + size: applyFile.fileList.length, + fileNames: applyFile.fileList?.map(item => item.trueName).join(','), + updateTime: $$.timeFormat(applyFile.fileList[applyFile.fileList.length - 1].updateTime), + fileInfoList: applyFile.fileList.map(item => { + return { + ...item, + uid: item.id, + name: item.trueName + } + }) + } + } + if (item.ownerType == '22_00018-102' && evidenceFile) { + return { + ...item, + size: evidenceFile.fileList.length, + fileNames: evidenceFile.fileList?.map(item => item.trueName).join(','), + updateTime: $$.timeFormat(evidenceFile.fileList[evidenceFile.fileList.length - 1].updateTime), + fileInfoList: evidenceFile.fileList.map(item => { + return { + ...item, + uid: item.id, + name: item.trueName + } + }) + } + } + return item + }) + setTableData(newList) + } + }, [props.fileInfoList]) + //上传弹窗判断用哪种种图标 const personIconType = (v) => { switch (v) { case '22_00018-101': @@ -135,24 +216,34 @@ } } + //上传弹窗完成后的事件 const handleUpload = () => { const newList = tableData.map(item => { if (item.ownerType == sourceType) { const data = fileMap[sourceType] + console.log(data); return { ...item, size: data.length, - fileNames: data.map(item => item.name).join(','), - updateTime: $$.timeFormat(data[data.length - 1].response.data[0].updateTime) + fileNames: data.map(item => item.trueName).join(','), + updateTime: $$.timeFormat(data[data.length - 1].updateTime), + fileInfoList: data.map(item => { + return { + ...item, + name: item.trueName, + uid: item.id, + } + }), } } else { return item } }) setTableData(newList) - setUpLoad(false); + setUpLoadVisible(false); }; + //根据sourceType生成组件 const formType = (type) => { if (type === '22_00018-101') { //申请材料 @@ -165,11 +256,21 @@ }} field='file' label='' - // editData={props.editData} + editData={{ + file: fileInfoList + }} handleDelFile={handleDelFile} onFileListChange={(v) => { + let newList = v?.map(item => { + if (item.response) { + return item.response.data[0] + } else { + return item + } + }) setFileMap({ - '22_00018-101': v + ...fileMap, + '22_00018-101': newList }) }} /> @@ -187,22 +288,50 @@ params={{ action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${props.mainId}&&ownerId=${props.mainId}&ownerType=22_00018-102`, }} - field='file1' + field='file' label='' - // editData={props.editData} + editData={{ + file: fileInfoList + }} handleDelFile={handleDelFile} onFileListChange={(v) => { + let newList = v?.map(item => { + if (item.response) { + return item.response.data[0] + } else { + return item + } + }) setFileMap({ - '22_00018-102': v + ...fileMap, + '22_00018-102': newList }) }} - /> {fileMap[sourceType]?.length > 0 && <div style={{ position: 'absolute', top: '198px', left: '16px', color: '#86909C' }}>证据材料累计上传:<span style={{ color: '#1A6FB8' }}>{fileMap[sourceType]?.length}</span></div>} </Col> </> ) } + } + + //删除 + const handleDelete = (ids) => { + Modal.confirm({ + title: '删除确认', + content: '确认全部删除该材料?', + onOk: async () => { + const res = await deleteFileByIdApi({ ids }) + if (res.type) { + $$.infoSuccess({ content: '删除成功!' }); + } + }, + }); + } + + //下载 + const handleDownlod = async (ids) => { + await downloadFile(`${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/down/batch`, { ids }) } return ( @@ -214,14 +343,19 @@ rowKey="ownerType" bordered={true} style={{ marginBottom: '65px' }} + scroll={{ x: 1300 }} /> <Modal style={{ width: '512px' }} - visible={upload} - onCancel={() => setUpLoad(false)} + visible={uploadVisible} + onCancel={() => setUpLoadVisible(false)} footer={null} title='上传材料' centered + mountOnEnter={false} + unmountOnExit={true} + maskClosable={false} + focusLock={false} > <div style={{ paddingTop: '8px' }}> <Row gutter={[30, 24]}> @@ -271,7 +405,7 @@ maskClosable={false} > <div style={{ marginTop: '-16px' }}> - <NewFileCheck /> + <NewFileCheck menuList={tableData} sourceType={sourceType} /> </div> </Modal> </Fragment> diff --git a/gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx b/gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx index a65d6a0..ebabd3c 100644 --- a/gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/NewFileCheck.jsx @@ -1,14 +1,42 @@ -import React, { useState, useEffect, useRef } from 'react'; +import React, { useState, useEffect, useRef, Fragment } from 'react'; import { Row, Col, Space } from 'antd'; -import { Select, DatePicker, Form, Button } from '@arco-design/web-react'; +import { Select, DatePicker, Form, Button, Menu } from '@arco-design/web-react'; import * as $$ from '@/utils/utility'; const FormItem = Form.Item; +const MenuItem = Menu.Item; +const SubMenu = Menu.SubMenu; const appUrl = $$.appUrl; +const formItemLayout = { + labelCol: { + span: 8, + }, + wrapperCol: { + span: 16, + }, +}; const NewFileCheck = (props) => { - const formRef = useRef() + const formRef = useRef(); + const [fileUrl, setFileUrl] = useState('') + const [itemData, setItemData] = useState(null) + + const peopleTypeMap = { + 1: '工作人员', + 2: '当事人' + } + + useEffect(() => { + console.log(props.menuList, props.sourceType); + }, []) + + //点击菜单 + const clickItem = (data) => { + console.log(data); + setItemData(data) + setFileUrl(`${appUrl.fileUrl}/${appUrl.sys}${data.showUrl}`) + } return ( <nav className="filesCheck-nav" style={{ borderRight: '1px solid transparent' }}> @@ -17,8 +45,7 @@ layout='horizontal' style={{ marginTop: '24px', marginBottom: '20px' }} scrollToFirstError={true} - initialValues={{ - }}//默认值 + {...formItemLayout} > <Row gutter={24} style={{ marginRight: '0px' }}> <Col span={7}> @@ -79,17 +106,50 @@ <Col span={3}> <Space> <Button size="middle " type='primary'>查询</Button> - <Button size="middle ">查询</Button> + <Button size="middle ">重置</Button> </Space> </Col> </Row> </Form> - <div style={{ display: 'flex' }}> - <div style={{ width: '200px' }}> + <div style={{ display: 'flex', height: '550px' }}> + <div style={{ width: '256px' }}> + <Menu + style={{ width: '100%', height: '100%' }} + > + {props.menuList?.map(item => { + return <SubMenu + key={item.id} + title={item.ownerTypeName + `(${item.fileInfoList && item.fileInfoList.length || 0})`} + > + {item.fileInfoList?.map(res => { + return <MenuItem key={res.id} onClick={() => { clickItem(res) }}>{res.trueName}</MenuItem> + })} + </SubMenu> + })} + </Menu> </div> <div style={{ flex: 1 }}> + { + itemData ? <Fragment> + <div style={{ background: '#e8f3ff', color: '#1A6FB8', padding: '5px 10px', marginBottom: '16px' }}> + <span>材料名称:{itemData.trueName}</span> | + <span>上传时间:{itemData.updateTime}</span> | + <span>上传人:{itemData.uploaderName} {itemData.uploaderType && <span>({peopleTypeMap[itemData.uploaderType]})</span>}</span> + </div> + <div style={{ width: '100%', height: '470px' }}> + { + itemData.suffix === 'pdf' ? + <embed src={fileUrl} type="application/pdf" width="100%" height="100%"></embed> + : + <img src={fileUrl} alt="" style={{ width: '100%', height: '100%' }} /> + } + </div> + </Fragment> : <Fragment> + <div style={{ padding: '100px 0' }}>{$$.MyEmpty()}</div> + </Fragment> + } </div> </div> </nav> diff --git a/gz-customerSystem/src/views/register/matterDetail/index.jsx b/gz-customerSystem/src/views/register/matterDetail/index.jsx index f1a6c20..6b957bb 100644 --- a/gz-customerSystem/src/views/register/matterDetail/index.jsx +++ b/gz-customerSystem/src/views/register/matterDetail/index.jsx @@ -1,132 +1,29 @@ import React, { useState, useEffect } from 'react'; import { Row, Col, Space, Button, Switch } from 'antd'; import PersonCard from '@/components/personCard'; -import TableView from '@/components/TableView'; import * as $$ from '@/utils/utility'; -import { Typography, Steps } from '@arco-design/web-react'; -import { question, register, Matter, transfer } from '@/assets/images' +import { Typography } from '@arco-design/web-react'; +import { question, register } from '@/assets/images'; +import FileTable from "./FileTable"; function getCaseInfoApi(id) { return $$.ax.request({ url: 'caseInfo/getCaseInfo?id=' + id, type: 'get', service: 'mediate' }); } -function listIdTypeInfoApi(data) { - return $$.ax.request({ url: `fileInfo/listIdTypeInfo`, type: 'post', service: 'sys', data }); -} - export default function MatterDetail(props) { const [fakeData, setFakeData] = useState([]);//当事人信息数据 - const [upload, setUpLoad] = useState(false); - const [filesCheck, setFilesCheck] = useState(false); const [infoData, setInfoData] = useState({}); - - const fakeColumns = [ - { - title: '序号', - dataIndex: 'caseNo', - key: 'caseNo', - width: 100, - render: (text, record, index) => <span>{index + 1}</span>, - }, - { - title: '材料类型', - dataIndex: 'ownerTypeName', - key: 'ownerTypeName', - width: 60, - - }, - { - title: '材料数量', - dataIndex: 'size', - key: 'size', - width: 180, - render: (text) => <span>{text}份</span>, - - }, - { - title: '材料名称', - dataIndex: 'fileNames', - key: 'fileNames', - width: 180, - - }, - { - title: '最新上传时间', - dataIndex: 'fileNames', - key: 'fileNames', - width: 180, - - }, - { - title: '操作', - dataIndex: 'perClassName', - key: 'perClassName', - width: 200, - render: (text) => ( - <div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}> - <div onClick={() => setFilesCheck(true)}>查看</div> - <div>删除</div> - <div>下载</div> - <div onClick={() => setUpLoad(true)}>上传</div> - </div> - ) - }, - // 更多列配置... - ]; - - - const [fakeData1, setFakeData1] = useState([ - { - ownerTyp: "22_00018-101", - ownerTypeName: "申请材料", - size: '0', - ownerId: null, - ownerName: null, - perType: null, - agentStatus: null, - fileNames: "-", - fileList: [] - }, - { - ownerType: "22_00018-102", - ownerTypeName: "证据材料", - size: '0', - ownerId: null, - ownerName: null, - perType: null, - agentStatus: null, - fileNames: "-", - fileList: [] - }, - - ]); - - const listIdTypeInfo = async () => { - const res = await listIdTypeInfoApi({ - mainId: props.id, //事项ID - ownerIdList: [props.id], //具体所属编号 - typeList: [] - }) - if (res.type) { - let data = res.data?.[0]?.fileList - if (res.data.length > 0) { - setFakeData1(data) - } - } - } useEffect(() => { console.log(props); - getCaseInfo(props.id) - listIdTypeInfo() - }, [props.id]) + getCaseInfo(props.caseId) + }, [props.caseId]) //获取id const getCaseInfo = async (id) => { - const res = await getCaseInfoApi('24083010062110001') - + const res = await getCaseInfoApi(id) if (res.type) { let data = res.data const partyList = data.personList.concat(data.agentList) @@ -262,15 +159,7 @@ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>事件材料</h5> </Space> </Col> - - <TableView - columns={fakeColumns} - dataSource={fakeData1} - size="small" - rowKey="id" - bordered={true} - style={{ marginBottom: '20px' }} - /> + <FileTable mainId={props.caseId} fileInfoList={infoData.fileInfoList} isReview={true}/> <Col span={24} className='title'> <Space size='small'> <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h5>登记信息</h5> diff --git a/gz-customerSystem/src/views/register/visit/component/previewTable.jsx b/gz-customerSystem/src/views/register/visit/component/previewTable.jsx index b4a700a..6ab1329 100644 --- a/gz-customerSystem/src/views/register/visit/component/previewTable.jsx +++ b/gz-customerSystem/src/views/register/visit/component/previewTable.jsx @@ -7,7 +7,7 @@ <> { applyDialog?.map((item, index) => ( - <table border="1" align="center" cellpadding="6" className="table"> + <table border="1" align="center" cellpadding="6" className="table" key={item.id}> <tr> <th bgcolor="#F7F8FA" className="table-title" width="120">姓名</th> <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName || '-'}</div><div className="title-personRemark">自然人</div></div></td> @@ -65,7 +65,7 @@ return ( <> {agentDialog?.map((item, index) => ( - <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}> + <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}> <tr> <th bgcolor="#F7F8FA" className="table-title" width="120">姓名</th> <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName || '-'}</div><div className="title-personRemark">代理人</div></div></td> @@ -129,7 +129,7 @@ return ( <> {respondent?.map((item, index) => ( - <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}> + <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}> <tr> <th bgcolor="#F7F8FA" className="table-title" width="120">企业名称</th> <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName}</div><div className="title-personRemark">{item.perClassName}</div></div></td> @@ -175,7 +175,7 @@ return ( <> {company?.map((item, index) => ( - <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }}> + <table border="1" align="center" cellpadding="6" className="table" style={{ marginTop: '20px', marginBottom: '20px' }} key={item.id}> <tr> <th bgcolor="#F7F8FA" className="table-title" width="120">机构名称</th> <td width='380'><div style={{ display: 'flex' }}><div>{item.trueName}</div><div className="title-personRemark">{item.perClassName}</div></div></td> diff --git a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx index 46ee2b8..0a883e8 100644 --- a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx +++ b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx @@ -390,7 +390,8 @@ <div className='MediationInfo-subTitle' style={{ marginTop: '-9px' }}></div><h4>事件材料</h4> </Space> </Col> - <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList}/> + <FileTable mainId={props.mainId} fileInfoList={props.fileInfoList} isReview={false}/> + <DocumentScanner visible={scanFile} onConfirm={handleConfirm} -- Gitblit v1.8.0