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>&nbsp;&nbsp;|&nbsp;&nbsp;
+								<span>上传时间:{itemData.updateTime}</span>&nbsp;&nbsp;|&nbsp;&nbsp;
+								<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