From 80e40362a760c5c53c51e8a1e79c9a11c6a0f5fe Mon Sep 17 00:00:00 2001
From: dminyi <1301963064@qq.com>
Date: Sat, 07 Sep 2024 14:24:37 +0800
Subject: [PATCH] 事件材料查看+ai页面

---
 gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx    |   59 ++
 gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx            |    1 
 gz-customerSystem/src/views/register/index.less                             |   12 
 gz-customerSystem/src/assets/images/index.js                                |   10 
 gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx    |  128 +++----
 gz-customerSystem/src/views/filesCheck/newFileCheck.jsx                     |  719 +++++++++++++++++++++---------------------
 gz-customerSystem/src/views/register/visit/component/levelDetail.jsx        |   32 +
 gz-customerSystem/src/views/register/handleFeedback/index.jsx               |   19 
 gz-customerSystem/src/assets/images/aiPerson.png                            |    0 
 gz-customerSystem/src/assets/images/caselogo.png                            |    0 
 gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx |    2 
 11 files changed, 527 insertions(+), 455 deletions(-)

diff --git a/gz-customerSystem/src/assets/images/aiPerson.png b/gz-customerSystem/src/assets/images/aiPerson.png
new file mode 100644
index 0000000..203085f
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/aiPerson.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/caselogo.png b/gz-customerSystem/src/assets/images/caselogo.png
new file mode 100644
index 0000000..f064573
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/caselogo.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/index.js b/gz-customerSystem/src/assets/images/index.js
index 128e320..9a8f3c0 100644
--- a/gz-customerSystem/src/assets/images/index.js
+++ b/gz-customerSystem/src/assets/images/index.js
@@ -2,7 +2,7 @@
  * @Company: hugeInfo
  * @Author: lwh
  * @Date: 2023-04-24 16:12:00
- * @LastEditTime: 2024-08-30 10:47:30
+ * @LastEditTime: 2024-09-07 14:08:18
  * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description:
@@ -61,7 +61,9 @@
 import applyRecord from "./applyRecord.png";
 import downO from "./downO.png";
 import up from "./up.png";
-import Audit from "./Audit.png"
+import Audit from "./Audit.png";
+import aiPerson from "./aiPerson.png";
+import caselogo from "./caselogo.png";
 
 export {
   ledger_1,
@@ -118,5 +120,7 @@
   applyRecord,
   downO,
   up,
-  Audit
+  Audit,
+  aiPerson,
+  caselogo
 };
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/filesCheck/newFileCheck.jsx b/gz-customerSystem/src/views/filesCheck/newFileCheck.jsx
index 5d85122..ee5cf4e 100644
--- a/gz-customerSystem/src/views/filesCheck/newFileCheck.jsx
+++ b/gz-customerSystem/src/views/filesCheck/newFileCheck.jsx
@@ -2,7 +2,7 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-03-11 11:03:44
- * @LastEditTime: 2024-09-05 20:46:47
+ * @LastEditTime: 2024-09-07 11:55:54
  * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description: 大厅来访材料附件查看
@@ -19,376 +19,377 @@
 	POWERPOINT("22_00017-9", "PowerPoint"),
 	UNKNOWN("22_00017-99", "其它文件");
  */
-import React, { useState, useEffect, useRef } from 'react';
-import { Button, Menu, Tooltip, Row, Col, Form, Space } from 'antd';
-import { Select, DatePicker } from '@arco-design/web-react';
-import { useSearchParams } from 'react-router-dom';
-import {
-	CaretRightOutlined,
-	CaretDownOutlined,
-	FileOutlined,
-	FileImageOutlined,
-	FilePdfOutlined,
-	FileWordOutlined,
-	FileExcelOutlined,
-	RotateRightOutlined,
-	RotateLeftOutlined,
-	DownloadOutlined,
-	LeftOutlined,
-	RightOutlined,
-} from '@ant-design/icons';
-import * as $$ from '../../utils/utility';
-
-
-const { SubMenu } = Menu;
-const FormItem = Form.Item;
-const Option = Select.Option;
-
-// http://localhost:9002/dyh-sys/api/web/fileInfo/listFileByCat?mainId=10001&ownerCat=&createStart=&createEnd=&uploaderType=
-// 获取附件
-function getFileListDataApi(submitData) {
-	return $$.ax.request({ url: `fileInfo/listFileByCat?mainId=${submitData}`, type: 'get', service: 'mediate' });
-}
-
-const NewFileCheck = ({ caseId }) => {
-	let appUrl = $$.appUrl;
-
-	const [searchParams] = useSearchParams();
-
-	const fileId = searchParams.get('fileId');
-
-	const [data, setData] = useState([]);
-
-	const [openKeys, setOpenKeys] = useState([]);
-
-	// files数组
-	const [files, setFiles] = useState([{}]);
-
-	// 当前点击的file的index
-	const [fileIndex, setFileIndex] = useState(0);
-
-	const imgBgRef = useRef();
-
-	const imgRef = useRef();
-	const formRef = useRef();
-
-
-	// 图片旋转
-	function handleRotateImg(type) {
-		if (!imgRef || !imgRef.current) {
-			return false;
-		}
-		let transform = imgRef.current.style.transform,
-			reg = /(-)?[0-9][0-9]*/g,
-			arr = transform.split('rotate'),
-			rotate = Number(transform.match(reg)[4] || 0),
-			num = 0;
-		if (type === 'right') {
-			num = rotate + 90;
-		} else {
-			num = rotate + -90;
-		}
-		imgRef.current.style.transform = `${arr[0]}rotate(${num}deg)`;
+	import React, { useState, useEffect, useRef } from 'react';
+	import { Button, Menu, Tooltip, Row, Col, Form, Space } from 'antd';
+	import { Select, DatePicker } from '@arco-design/web-react';
+	import { useSearchParams } from 'react-router-dom';
+	import {
+		CaretRightOutlined,
+		CaretDownOutlined,
+		FileOutlined,
+		FileImageOutlined,
+		FilePdfOutlined,
+		FileWordOutlined,
+		FileExcelOutlined,
+		RotateRightOutlined,
+		RotateLeftOutlined,
+		DownloadOutlined,
+		LeftOutlined,
+		RightOutlined,
+	} from '@ant-design/icons';
+	import * as $$ from '../../utils/utility';
+	
+	
+	const { SubMenu } = Menu;
+	const FormItem = Form.Item;
+	const Option = Select.Option;
+	
+	// 获取附件
+	function getFileListDataApi() {
+		return $$.ax.request({ url: `fileInfo/listFileByCat?mainId=${'10001'}&ownerCat=&createStart=&createEnd=&uploaderType=`, type: 'get', service: 'sys', });
 	}
-
-	// 监听图片滚动事件放大,缩小
-	function imgScrollFunc(e) {
-		if (!imgRef || !imgRef.current) {
-			return false;
-		}
-		let transform = imgRef.current.style.transform,
-			reg = /\((.+?)\)/g,
-			scale3d = transform.match(reg)[0],
-			scale3dNum = scale3d.substring(1, 2);
-		let num = Number(scale3dNum);
-		if (e.wheelDelta) {
-			//判断浏览器IE,谷歌滑轮事件
-			if (e.wheelDelta > 0) {
-				//当滑轮向上滚动时
-				num = num + 1;
+	
+	const NewFileCheck = ({ caseId }) => {
+		let appUrl = $$.appUrl;
+	
+		const [searchParams] = useSearchParams();
+	
+		const fileId = searchParams.get('fileId');
+	
+		const [data, setData] = useState([]);
+	
+		const [openKeys, setOpenKeys] = useState([]);
+	
+		// files数组
+		const [files, setFiles] = useState([{}]);
+	
+		// 当前点击的file的index
+		const [fileIndex, setFileIndex] = useState(0);
+	
+		const imgBgRef = useRef();
+	
+		const imgRef = useRef();
+		const formRef = useRef();
+	
+	
+		// 图片旋转
+		function handleRotateImg(type) {
+			if (!imgRef || !imgRef.current) {
+				return false;
 			}
-			if (e.wheelDelta < 0) {
-				//当滑轮向下滚动时
-				num = num - 1;
+			let transform = imgRef.current.style.transform,
+				reg = /(-)?[0-9][0-9]*/g,
+				arr = transform.split('rotate'),
+				rotate = Number(transform.match(reg)[4] || 0),
+				num = 0;
+			if (type === 'right') {
+				num = rotate + 90;
+			} else {
+				num = rotate + -90;
 			}
-		} else if (e.detail) {
-			//Firefox滑轮事件
-			if (e.detail > 0) {
-				//当滑轮向上滚动时
-				num = num + 1;
+			imgRef.current.style.transform = `${arr[0]}rotate(${num}deg)`;
+		}
+	
+		// 监听图片滚动事件放大,缩小
+		function imgScrollFunc(e) {
+			if (!imgRef || !imgRef.current) {
+				return false;
 			}
-			if (e.detail < 0) {
-				//当滑轮向下滚动时
-				num = num - 1;
-			}
-		}
-		let res = `scale3d(${num < 1 ? 1 : num},${num < 1 ? 1 : num},1) rotate${transform.match(reg)[1]}`;
-		imgRef.current.style.transform = res;
-	}
-
-	// 判断文件的icon
-	function iconType(fileType) {
-		let result = <FileOutlined />;
-		if (fileType === '22_00017-3') {
-			result = <FileImageOutlined />;
-		}
-		if (fileType === '22_00017-5') {
-			result = <FileExcelOutlined />;
-		}
-		if (fileType === '22_00017-4') {
-			result = <FileWordOutlined />;
-		}
-		if (fileType === '22_00017-6') {
-			result = <FilePdfOutlined />;
-		}
-		return result;
-	}
-
-	// 切换下一个,上一个
-	async function handleNext(type) {
-		global.setSpinning(true);
-		let index = fileIndex + (type === 'next' ? 1 : -1);
-		if (files[index]) {
-			setFileIndex(index);
-		} else {
-			global.setSpinning(false);
-			if (index < 0) {
-				setFileIndex(files.length - 1);
-				return;
-			}
-			setFileIndex(0);
-		}
-	}
-
-	// 获取附件数据
-	async function getFileListData() {
-		global.setSpinning(true);
-		const res = await getFileListDataApi(caseId || searchParams.get('caseId'));
-		global.setSpinning(false);
-		if (res.type) {
-			let resData = res.data?.dataList || [];
-			let arr = [];
-			let filesArr = [];
-			let index = 0;
-			resData.forEach((x, t) => {
-				arr.push(x.ownerTypeName);
-				filesArr = filesArr.concat(x.fileList || []);
-			});
-			forEach: for (let i = 0; i < filesArr.length - 1; i++) {
-				if (filesArr[i].id === fileId) {
-					index = i;
-					break forEach;
+			let transform = imgRef.current.style.transform,
+				reg = /\((.+?)\)/g,
+				scale3d = transform.match(reg)[0],
+				scale3dNum = scale3d.substring(1, 2);
+			let num = Number(scale3dNum);
+			if (e.wheelDelta) {
+				//判断浏览器IE,谷歌滑轮事件
+				if (e.wheelDelta > 0) {
+					//当滑轮向上滚动时
+					num = num + 1;
+				}
+				if (e.wheelDelta < 0) {
+					//当滑轮向下滚动时
+					num = num - 1;
+				}
+			} else if (e.detail) {
+				//Firefox滑轮事件
+				if (e.detail > 0) {
+					//当滑轮向上滚动时
+					num = num + 1;
+				}
+				if (e.detail < 0) {
+					//当滑轮向下滚动时
+					num = num - 1;
 				}
 			}
-			setData({ data: resData, caseNo: res.data?.caseNo });
-			setFileIndex(index);
-			setFiles(filesArr);
-			setOpenKeys(arr);
+			let res = `scale3d(${num < 1 ? 1 : num},${num < 1 ? 1 : num},1) rotate${transform.match(reg)[1]}`;
+			imgRef.current.style.transform = res;
 		}
-	}
-
-	useEffect(() => {
-		getFileListData();
-	}, []);
-
-	// 监听鼠标滚动事件
-	useEffect(() => {
-		if (imgRef.current) {
-			imgRef.current.onload = () => {
-				imgBgRef.current.onmousewheel = imgScrollFunc;
-			};
+	
+		// 判断文件的icon
+		function iconType(fileType) {
+			let result = <FileOutlined />;
+			if (fileType === '22_00017-3') {
+				result = <FileImageOutlined />;
+			}
+			if (fileType === '22_00017-5') {
+				result = <FileExcelOutlined />;
+			}
+			if (fileType === '22_00017-4') {
+				result = <FileWordOutlined />;
+			}
+			if (fileType === '22_00017-6') {
+				result = <FilePdfOutlined />;
+			}
+			return result;
 		}
-	}, [files]);
-
-	// 切换文件加载
-	useEffect(() => {
-		if (imgRef.current) {
-			imgRef.current.src = `${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`;
-			imgRef.current.onload = () => {
+	
+		// 切换下一个,上一个
+		async function handleNext(type) {
+			global.setSpinning(true);
+			let index = fileIndex + (type === 'next' ? 1 : -1);
+			if (files[index]) {
+				setFileIndex(index);
+			} else {
+				global.setSpinning(false);
+				if (index < 0) {
+					setFileIndex(files.length - 1);
+					return;
+				}
+				setFileIndex(0);
+			}
+		}
+	
+		// 获取附件数据
+		async function getFileListData() {
+			global.setSpinning(true);
+			const res = await getFileListDataApi(caseId || searchParams.get('caseId'));
+			global.setSpinning(false);
+			if (res.type) {
+				let resData = res.data || [];
+				let arr = [];
+				let filesArr = [];
+				let index = 0;
+				resData.forEach((x, t) => {
+					arr.push(x.ownerCatName);
+					filesArr = filesArr.concat(x.fileList || []);
+				});
+				forEach: for (let i = 0; i < filesArr.length - 1; i++) {
+					if (filesArr[i].id === fileId) {
+						index = i;
+						break forEach;
+					}
+				}
+				setData({ data: resData, caseNo: res.data?.caseNo });
+				setFileIndex(index);
+				setFiles(filesArr);
+				setOpenKeys(arr);
+			}
+		}
+	
+		useEffect(() => {
+			getFileListData();
+		}, []);
+	
+		// 监听鼠标滚动事件
+		useEffect(() => {
+			if (imgRef.current) {
+				imgRef.current.onload = () => {
+					imgBgRef.current.onmousewheel = imgScrollFunc;
+				};
+			}
+		}, [files]);
+	
+		// 切换文件加载
+		useEffect(() => {
+			if (imgRef.current) {
+				imgRef.current.src = `${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`;
+				imgRef.current.onload = () => {
+					global.setSpinning(false, 'only');
+				};
+			} else {
 				global.setSpinning(false, 'only');
-			};
-		} else {
-			global.setSpinning(false, 'only');
-		}
-	}, [appUrl.fileShowUrl, fileIndex, appUrl.baseUrl, files]);
-
-	return (
-		<>
-			<nav className="filesCheck-nav" style={{ borderRight: '1px solid transparent' }}>
-				<Form
-					ref={formRef}
-					layout='horizontal'
-					style={{ marginTop: '24px', marginBottom: '20px' }}
-					requiredSymbol={false}
-					scrollToFirstError={true}
-					initialValues={{
-						level: '三级',
-						isSerious: '否',
-					}}//默认值
-				>
-					<Row gutter={24} style={{ marginRight: '0px' }}>
-						<Col span={7}>
-							<FormItem label='材料类型:' field='level'>
-								<Select placeholder='Select city' allowClear>
-									{['一级', '二级', '三级', '四级'].map((option, index) => (
-										<Option key={option} value={option}>
-											{option}
-										</Option>
-									))}
-								</Select>
-							</FormItem>
-						</Col>
-						<Col span={7}>
-							<FormItem
-								label='上传时间:'
-								field='name'
-								onChange={(e) => console.log(e.target.value, 'vvv')}
-							>
-								<DatePicker.RangePicker
-									defaultValue={['2020-08-08', '2020-08-18']}
-									separator='~'
-									style={{ width: '100%' }}
-								/>
-							</FormItem>
-						</Col>
-						<Col span={7}>
-							<FormItem
-								label='上传人类型:'
-								field='name'
-								onChange={(e) => console.log(e.target.value, 'vvv')}
-							>
-								<Select placeholder='Select city' allowClear style={{ width: '100%' }}>
-									{['一级', '二级', '三级', '四级'].map((option, index) => (
-										<Option key={option} value={option}>
-											{option}
-										</Option>
-									))}
-								</Select>
-							</FormItem>
-
-						</Col>
-						<Col span={3}>
-							<Space>
-								<Button size="middle " type='primary'>查询</Button>
-								<Button size="middle ">查询</Button>
-							</Space>
-						</Col>
-
-					</Row>
-
-				</Form>
-
-				<Menu
-					className="filesCheck-nav-menu"
-					style={{ width: '200px' }}
-					onOpenChange={(openKeys) => setOpenKeys(openKeys)}
-					mode="inline"
-					selectedKeys={[files[fileIndex]?.id]}
-					openKeys={openKeys}
-				>
-					{data.data?.map((x, t) => {
-						return (
-							<SubMenu
-								key={x.ownerTypeName}
-								expandIcon={openKeys.includes(x.ownerTypeName) ? <CaretRightOutlined /> : <CaretDownOutlined />}
-								title={x.ownerTypeName}
-							>
-								{x.fileList?.map((y, z) => {
-									return (
-										<Menu.Item
-											onClick={async () => {
-												global.setSpinning(true);
-												for (let i = 0; i < files.length; i++) {
-													if (files[i].id === y.id) {
-														setFileIndex(i);
-														break;
+			}
+		}, [appUrl.fileShowUrl, fileIndex, appUrl.baseUrl, files]);
+	
+		return (
+			<>
+				<nav className="filesCheck-nav" style={{ borderRight: '1px solid transparent' }}>
+					<Form
+						ref={formRef}
+						layout='horizontal'
+						style={{ marginTop: '24px', marginBottom: '20px' }}
+						requiredSymbol={false}
+						scrollToFirstError={true}
+						initialValues={{
+							level: '三级',
+							isSerious: '否',
+						}}//默认值
+					>
+						<Row gutter={24} style={{ marginRight: '0px' }}>
+							<Col span={7}>
+								<FormItem label='材料类型:' field='level'>
+									<Select placeholder='Select city' allowClear>
+										{['一级', '二级', '三级', '四级'].map((option, index) => (
+											<Option key={option} value={option}>
+												{option}
+											</Option>
+										))}
+									</Select>
+								</FormItem>
+							</Col>
+							<Col span={7}>
+								<FormItem
+									label='上传时间:'
+									field='name'
+									onChange={(e) => console.log(e.target.value, 'vvv')}
+								>
+									<DatePicker.RangePicker
+										defaultValue={['2020-08-08', '2020-08-18']}
+										separator='~'
+										style={{ width: '100%' }}
+									/>
+								</FormItem>
+							</Col>
+							<Col span={7}>
+								<FormItem
+									label='上传人类型:'
+									field='name'
+									onChange={(e) => console.log(e.target.value, 'vvv')}
+								>
+									<Select placeholder='Select city' allowClear style={{ width: '100%' }}>
+										{['一级', '二级', '三级', '四级'].map((option, index) => (
+											<Option key={option} value={option}>
+												{option}
+											</Option>
+										))}
+									</Select>
+								</FormItem>
+	
+							</Col>
+							<Col span={3}>
+								<Space>
+									<Button size="middle " type='primary'>查询</Button>
+									<Button size="middle ">查询</Button>
+								</Space>
+							</Col>
+	
+						</Row>
+	
+					</Form>
+	
+					<Menu
+						className="filesCheck-nav-menu"
+						style={{ width: '200px' }}
+						onOpenChange={(openKeys) => setOpenKeys(openKeys)}
+						mode="inline"
+						selectedKeys={[files[fileIndex]?.id]}
+						openKeys={openKeys}
+					>
+						{data.data?.map((x, t) => {
+							return (
+								<SubMenu
+									key={x.ownerCatName}
+									expandIcon={openKeys.includes(x.ownerCatName) ? <CaretRightOutlined /> : <CaretDownOutlined />}
+									title={x.ownerCatName}
+								>
+									{x.fileList?.map((y, z) => {
+										return (
+											<Menu.Item
+												onClick={async () => {
+													global.setSpinning(true);
+													for (let i = 0; i < files.length; i++) {
+														if (files[i].id === y.id) {
+															setFileIndex(i);
+															break;
+														}
 													}
-												}
-											}}
-											icon={iconType(y.cat)}
-											key={y.id}
+												}}
+												icon={iconType(y.cat)}
+												key={y.id}
+											>
+												{y.name}
+											</Menu.Item>
+										);
+									})}
+								</SubMenu>
+							);
+						})}
+					</Menu>
+				</nav>
+				{/*图片查看*/}
+				{files[fileIndex] ? (
+					<main className="filesCheck-main">
+						{/* 头部操作区 */}
+						<div className="filesCheck-main-action">
+							<div className="filesCheck-main-action-title">
+								<h3>{files[fileIndex]?.name}</h3>
+							</div>
+							{files[fileIndex]?.cat === '22_00017-3' && (
+								<>
+									<div className="filesCheck-main-action-item">
+										<Tooltip title="左转">
+											<RotateLeftOutlined onClick={() => handleRotateImg('left')} />
+										</Tooltip>
+									</div>
+									<div className="filesCheck-main-action-item">
+										<Tooltip title="右转">
+											<RotateRightOutlined onClick={() => handleRotateImg('right')} />
+										</Tooltip>
+									</div>
+								</>
+							)}
+							<div className="filesCheck-main-action-item">
+								<Tooltip title="下载">
+									<a href={`${appUrl.fileUrl}${appUrl.fileDownUrl}${files[fileIndex]?.id}`}>
+										<DownloadOutlined />
+									</a>
+								</Tooltip>
+							</div>
+						</div>
+						{files[fileIndex]?.cat === '22_00017-3' ? (
+							<div className="filesCheck-main-imgBg" ref={imgBgRef}>
+								<img
+									ref={imgRef}
+									style={{ transform: 'scale3d(1,1,1) rotate(0deg)' }}
+									className="filesCheck-main-img"
+									src={`${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`}
+									alt="图片加载中..."
+								/>
+							</div>
+						) : (
+							<div className="filesCheck-main-other">
+								<div className="filesCheck-main-other-icon">{iconType(files[fileIndex]?.cat)}</div>
+								<div className="filesCheck-main-other-text">
+									您所查看的附件不支持预览,请下载查看{files[fileIndex]?.cat === '22_00017-6' ? '或跳转预览' : ''}。
+								</div>
+								<div>
+									{files[fileIndex]?.cat === '22_00017-6' && (
+										<Button
+											className="public-buttonMargin"
+											onClick={() => window.open(`${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`)}
 										>
-											{y.name}
-										</Menu.Item>
-									);
-								})}
-							</SubMenu>
-						);
-					})}
-				</Menu>
-			</nav>
-			{files[fileIndex] ? (
-				<main className="filesCheck-main">
-					{/* 头部操作区 */}
-					<div className="filesCheck-main-action">
-						<div className="filesCheck-main-action-title">
-							<h3>{files[fileIndex]?.name}</h3>
-						</div>
-						{files[fileIndex]?.cat === '22_00017-3' && (
-							<>
-								<div className="filesCheck-main-action-item">
-									<Tooltip title="左转">
-										<RotateLeftOutlined onClick={() => handleRotateImg('left')} />
-									</Tooltip>
+											跳转查看
+										</Button>
+									)}
+									<a href={`${appUrl.fileUrl}${appUrl.fileDownUrl}${files[fileIndex]?.id}`}>
+										<Button type="primary">下载</Button>
+									</a>
 								</div>
-								<div className="filesCheck-main-action-item">
-									<Tooltip title="右转">
-										<RotateRightOutlined onClick={() => handleRotateImg('right')} />
-									</Tooltip>
-								</div>
-							</>
+							</div>
 						)}
-						<div className="filesCheck-main-action-item">
-							<Tooltip title="下载">
-								<a href={`${appUrl.fileUrl}${appUrl.fileDownUrl}${files[fileIndex]?.id}`}>
-									<DownloadOutlined />
-								</a>
-							</Tooltip>
+						<div className="filesCheck-imgLeft" onClick={() => handleNext('back')}>
+							<LeftOutlined />
 						</div>
-					</div>
-					{files[fileIndex]?.cat === '22_00017-3' ? (
-						<div className="filesCheck-main-imgBg" ref={imgBgRef}>
-							<img
-								ref={imgRef}
-								style={{ transform: 'scale3d(1,1,1) rotate(0deg)' }}
-								className="filesCheck-main-img"
-								src={`${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`}
-								alt="图片加载中..."
-							/>
+						<div className="filesCheck-imgRight" onClick={() => handleNext('next')}>
+							<RightOutlined />
 						</div>
-					) : (
-						<div className="filesCheck-main-other">
-							<div className="filesCheck-main-other-icon">{iconType(files[fileIndex]?.cat)}</div>
-							<div className="filesCheck-main-other-text">
-								您所查看的附件不支持预览,请下载查看{files[fileIndex]?.cat === '22_00017-6' ? '或跳转预览' : ''}。
-							</div>
-							<div>
-								{files[fileIndex]?.cat === '22_00017-6' && (
-									<Button
-										className="public-buttonMargin"
-										onClick={() => window.open(`${appUrl.fileUrl}${appUrl.fileShowUrl}${files[fileIndex]?.id}`)}
-									>
-										跳转查看
-									</Button>
-								)}
-								<a href={`${appUrl.fileUrl}${appUrl.fileDownUrl}${files[fileIndex]?.id}`}>
-									<Button type="primary">下载</Button>
-								</a>
-							</div>
-						</div>
-					)}
-					<div className="filesCheck-imgLeft" onClick={() => handleNext('back')}>
-						<LeftOutlined />
-					</div>
-					<div className="filesCheck-imgRight" onClick={() => handleNext('next')}>
-						<RightOutlined />
-					</div>
-				</main>
-			) : (
-				<div style={{ width: '100%', paddingTop: '20%' }}>{$$.MyEmpty()}</div>
-			)}
-		</>
-	);
-};
-
-export default NewFileCheck;
+					</main>
+				) : (
+					<div style={{ width: '100%', paddingTop: '20%' }}>{$$.MyEmpty()}</div>
+				)}
+			</>
+		);
+	};
+	
+	export default NewFileCheck;
+	
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
index e9238b0..fb9456b 100644
--- a/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
+++ b/gz-customerSystem/src/views/register/handleFeedback/component/AuditView.jsx
@@ -8,7 +8,7 @@
 
 const FormItem = Form.Item;
 const appUrl = $$.appUrl;
-const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息
+const RadioGroup = Radio.Group;
 
 
 function delFile(id) {
diff --git a/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx b/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx
index 186e5cf..0340129 100644
--- a/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx
+++ b/gz-customerSystem/src/views/register/handleFeedback/component/handle.jsx
@@ -1,6 +1,6 @@
 import React, { useState, useRef, useEffect } from 'react';
 import { Col, Space, Row, Tooltip } from 'antd';
-import { register, } from '@/assets/images';
+import { register, aiPerson } from '@/assets/images';
 import { Form, Input, Tabs, Typography, Button, Modal, Select } from '@arco-design/web-react';
 import { question1, } from '@/assets/images';
 import ProgressStep from '@/components/ProgressStep/VisitStep';
@@ -13,7 +13,8 @@
 import ArcoUpload from '@/components/ArcoUpload';
 import HandleRecord from '../../matterDetail/HandleRecord';
 import SupervisingView from '../../matterDetail/Supervising'
-import UniteHandle from '../../matterDetail/UniteHandle'
+import UniteHandle from '../../matterDetail/UniteHandle';
+
 
 const Option = Select.Option;
 const FormItem = Form.Item;
@@ -99,7 +100,13 @@
   return $$.ax.request({ url: `caseFeedback/updateFeedback`, type: 'post', service: 'mediate', data });
 }
 
+function getFeedbackInfoApi(caseTaskId) {
+  return $$.ax.request({ url: `caseFeedback/getFeedbackInfo?caseTaskId=` + caseTaskId, type: 'get', service: 'mediate' });
+}
 
+function getByIdRoleApi(id) {
+  return $$.ax.request({ url: `ctUser/getByIdRole?id=` + id, type: 'get', service: 'cust' });
+}
 
 
 
@@ -112,6 +119,8 @@
   const [personView, setPersonView] = useState(false);
   const [supervising, setSupervising] = useState(false)
   const [data, setData] = useState({})
+  const [feedbackInfoData, setFeedbackInfoData] = useState({})
+  const [personData, setPersonData] = useState({})
   const [caseResult, SetCaseResult] = useState(false);
   const [list, setList] = useState([]);
   const [mode, SetMode] = useState(false);
@@ -175,6 +184,12 @@
 
   }
 
+  const getByIdRole = async () => {
+    const res = await getByIdRoleApi('2105180249501982')
+    setPersonData(res.data)
+
+  }
+
 
   //删除文件
   const handleDelFile = async (id) => {
@@ -201,7 +216,7 @@
     } else {
       const res = await saveFeedbackApi({
         ...submitData,
-        caseId: '24083010062110001',
+        caseId: "24083010062110001",
         id: id,
         caseTaskId: '',
       })
@@ -210,6 +225,12 @@
         listFeedback('24083010062110001')
       }
     }
+  }
+
+  const getFeedbackInfo = async () => {
+    const res = await getFeedbackInfoApi('24083010062110001')
+    setFeedbackInfoData(res.data)
+    console.log(res.data, 'res.data')
   }
 
   //获取办理记录接口
@@ -277,10 +298,16 @@
     setSupervising(!supervising)
   }
 
+  const handlePersonView = () => {
+    setPersonView(!personView)
+
+  }
+
 
   useEffect(() => {
     listFeedback('24083010062110001');
-    // getByIdRole()
+    getFeedbackInfo();
+    getByIdRole();
   }, [])
 
 
@@ -296,22 +323,22 @@
           <Row gutter={[16, 16]}>
             <Col span={8} style={{ display: 'flex' }}>
               <div><div className="title-text">承办部门:</div></div>
-              <div>天河区棠下街综治中心</div>
+              <div>{feedbackInfoData?.handleUnitName}</div>
             </Col>
             <Col span={8} style={{ display: 'flex' }}>
               <div><div className="title-text">经办人:</div></div>
               <div style={{ display: 'flex' }}>
-                <div>王一顺</div>
-                <img onClick={() => setPersonView(!personView)} src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} />
+                <div>{feedbackInfoData?.handleUserName}</div>
+                <img onClick={() => handlePersonView()} src={register} alt='' style={{ width: '14px', height: '14px', marginLeft: '8px', marginTop: '4px' }} />
               </div>
             </Col>
             <Col span={8} style={{ display: 'flex' }}>
               <div><div className="title-text">配合部门:</div></div>
-              <div>-</div>
+              <div>{feedbackInfoData?.assistUnitName}</div>
             </Col>
             <Col span={8} style={{ display: 'flex' }}>
               <div><div className="title-text">受理时间:</div></div>
-              <div>2024-7-5 11:45</div>
+              <div>{feedbackInfoData?.acceptTime}</div>
             </Col>
           </Row>
 
@@ -395,7 +422,7 @@
                           >
                             <ArcoUpload
                               params={{
-                                action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId='24083010062110001'&&ownerId=${id}&ownerType=22_00018-102`,
+                                action: `${appUrl.fileUrl}/${appUrl.sys}/api/web/fileInfo/upload?mainId=${'24083010062110001'}&ownerId=${id}&ownerType=${'22_00018-501'}`,
                               }}
                               field='file1'
                               // handleChangeFile={handleChangeFile}
@@ -499,21 +526,21 @@
           <table border="1" align="center" cellpadding="5" className="table">
             <tr>
               <th bgcolor="#F7F8FA" className="table-title" width="120">姓名</th>
-              <td width='380'><div style={{ display: 'flex' }}><div>{data.trueName}</div></div></td>
+              <td width='380'><div style={{ display: 'flex' }}><div>{personData?.trueName}</div></div></td>
               <th bgcolor="#F7F8FA" className="table-title" width="120">登录账号</th>
-              <td width='380'>{data.acc}</td>
+              <td width='380'>{personData?.acc}</td>
             </tr>
             <tr>
               <th bgcolor="#F7F8FA" className="table-title">手机号码</th>
-              <td>{data.mobile}</td>
+              <td>{personData?.mobile}</td>
               <th bgcolor="#F7F8FA" className="table-title">工作电话</th>
-              <td>020-83002020</td>
+              <td>-</td>
             </tr>
             <tr>
               <th bgcolor="#F7F8FA" className="table-title">所属部门</th>
-              <td>{data.deptName}</td>
+              <td>{personData?.deptName}</td>
               <th bgcolor="#F7F8FA" className="table-title">职务</th>
-              <td>主任</td>
+              <td>{personData?.userRoles}</td>
             </tr>
           </table>
         </Modal>
diff --git a/gz-customerSystem/src/views/register/handleFeedback/index.jsx b/gz-customerSystem/src/views/register/handleFeedback/index.jsx
index d384530..2aa9934 100644
--- a/gz-customerSystem/src/views/register/handleFeedback/index.jsx
+++ b/gz-customerSystem/src/views/register/handleFeedback/index.jsx
@@ -3,22 +3,22 @@
  * @Author: dminyi 1301963064@qq.com
  * @Date: 2024-08-09 09:59:43
  * @LastEditors: dminyi 1301963064@qq.com
- * @LastEditTime: 2024-09-06 12:03:54
+ * @LastEditTime: 2024-09-06 17:43:15
  * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
  * @Description: 来访登记
  * 
  */
 
-import React, { useState, useRef, Fragment } from "react";
+import React, { useState } from "react";
 import NewPage from '@/components/NewPage';
-import * as $$ from '@/utils/utility';
 import "@arco-themes/react-gzzz/css/arco.css";
 import '../index.less';
 import { Typography, Steps, Tabs } from '@arco-design/web-react';
-import { Audit, Matter, transfer } from '@/assets/images'
+import { Audit, Matter, transfer, aiPerson } from '@/assets/images'
 import MatterDetail from '../matterDetail';
 import Handle from './component/handle';
-import AuditView from './component/AuditView'
+import AuditView from './component/AuditView';
+import {AiQuestion} from '../visit/component/levelDetail'
 
 const Step = Steps.Step;
 const TabPane = Tabs.TabPane;
@@ -31,6 +31,7 @@
 const Organization = () => {
 	const [current, setCurrent] = useState(3);
 	const [tabsActive, setTabsActive] = useState('1');
+	const [AiQuestionView, setAiQuestionView] = useState(false)
 	const [tabsList, setTabList] = useState([
 		{
 			img: Matter,
@@ -102,6 +103,14 @@
 					})}
 				</Tabs>
 			</NewPage>
+			<div className="gradient-box" onClick={() => setAiQuestionView(true)}>
+				<div><img src={aiPerson} alt='' style={{ width: '24px', height: '24px', marginRight: '6px' }} /></div>
+				<div style={{ color: '#FFFFFF' }}>智能调解助理</div>
+			</div>
+			<AiQuestion
+        visible={AiQuestionView}
+        onClose={() => setAiQuestionView(false)}
+      />
 		</div>
 	)
 }
diff --git a/gz-customerSystem/src/views/register/index.less b/gz-customerSystem/src/views/register/index.less
index d5732f0..8da2fc6 100644
--- a/gz-customerSystem/src/views/register/index.less
+++ b/gz-customerSystem/src/views/register/index.less
@@ -696,4 +696,16 @@
 	align-items: center;
 	margin-bottom: 4px;
 
+}
+
+.gradient-box {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	transform: translateY(-50%);
+	background: linear-gradient(to right, #6a1b9a, #e040fb);
+	display: flex;
+	align-items: center;
+	padding: 12px 8px;
+	border-radius: 12px 0px 0px 12px;
 }
\ No newline at end of file
diff --git a/gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx b/gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx
index 3167be5..5d1dba2 100644
--- a/gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx
+++ b/gz-customerSystem/src/views/register/matterDetail/FileUpLoad.jsx
@@ -35,7 +35,6 @@
   const handleScaned = () => {
     setScaned(true)
     const content = fileView.response.data.ocrResult.wordsResult.join('\n')
-    
     setTimeout(() => {
       console.log(formRef.current, content);
       formRef.current.setFieldValue('scanContent', content)
diff --git a/gz-customerSystem/src/views/register/visit/component/levelDetail.jsx b/gz-customerSystem/src/views/register/visit/component/levelDetail.jsx
index 43816a1..7e985cb 100644
--- a/gz-customerSystem/src/views/register/visit/component/levelDetail.jsx
+++ b/gz-customerSystem/src/views/register/visit/component/levelDetail.jsx
@@ -2,12 +2,14 @@
  * @Author: dminyi 1301963064@qq.com
  * @Date: 2024-08-27 16:47:12
  * @LastEditors: dminyi 1301963064@qq.com
- * @LastEditTime: 2024-09-05 17:03:04
+ * @LastEditTime: 2024-09-07 14:20:23
  * @FilePath: \gzDyh\gz-customerSystem\src\views\register\visit\component\levelDetail.jsx
  * @Description: 右抽屉提示
  */
 import React from 'react';
 import MyDrawer from '@/components/MyDrawer';
+import { caselogo } from '@/assets/images';
+
 
 const EventLevelDrawer = ({ visible, onClose }) => {
     return (
@@ -102,6 +104,32 @@
 
 }
 
+const AiQuestion = ({ visible, onClose }) => {
+    return (
+        <MyDrawer
+            visible={visible}
+            onClose={onClose}
+            title="事项概况指南"
+            width={1000}
+            style={{ position: 'absolute' }}
+            bodyStyle={{ marginTop: '-8px' }}
+            titleBefore={true}
+        >
+            <div style={{ display: 'flex' }}>
+
+                <div style={{ width: '100px' }}>111</div>
+                <div style={{ flex: 1, backgroundColor: '#F2F3F5', height: '100vh' }}>
+                    <div>
+                        <img src={caselogo} alt='' style={{ width: '30px', height: '30px' }} />
+                        <span>刘家健入职吴昆物流公司工作6天,因不适应工作内容、环境等,向吴昆物流公司提出离职申请,但公司称入职1周内因个人原因辞职不予支付工资。刘家健因此向社区调委会申请调解。刘家健希望吴昆物流公司支付6天的工资。经调解,双方达成一致意见,吴昆物流公司同意支付刘家健6天的工资共计1575元。基于这个案件生成合理的调解策略.</span>
+                    </div>
+                </div>
+            </div>
+        </MyDrawer>
+
+    )
+}
 
 
-export { EventLevelDrawer, MattersDetail, NoHandleReason };
\ No newline at end of file
+
+export { EventLevelDrawer, MattersDetail, NoHandleReason, AiQuestion };
\ 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 ce4f64f..fd11eb0 100644
--- a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
+++ b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
@@ -57,6 +57,32 @@
   const [evidenceNumber, setEvidenceNumber] = useState('');
   const [applyFile, setApplyFile] = useState([]);
   const [evidenceFile, setEvidenceFile] = useState([]);
+  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 peopleMap = {
     '15_020008-1': '申请方',
     '15_020008-2': '被申请方',
@@ -109,13 +135,19 @@
 
   const listIdTypeInfo = async () => {
     const res = await listIdTypeInfoApi({
-      mainId: "2409061125411006", //事项ID
-      ownerIdList: ["2409061125411006"], //具体所属编号
+      mainId: props.mainId, //事项ID
+      ownerIdList: [props.mainId], //具体所属编号
+      typeList: []
     })
     if (res.type) {
-      console.log(res,'resres')
+      let data = res.data?.[0]?.fileList
+      if (res.data.length > 0) {
+        setFakeData1(data)
+      }
     }
   }
+
+  // console.log(fakeData1,'fakeData1')
 
 
 
@@ -166,52 +198,6 @@
     }
   }
 
-  const fakeData1 = [
-    {
-      id: 1,
-      caseNo: 'A20230101',
-      judicNo: '申请材料',
-      perClassName: '李晓明的纠纷化解申请表、身份证...',
-      inputUserName: '0',
-      mediateUserName: '2024-7-12 12:00',
-      judgeName: '王五',
-      mediator: '赵六',
-      handlerUserName: '钱七',
-      returnUserName: '孙八',
-      expireTime: '2023-08-10T08:00:00.000Z',
-      processName: '进行中',
-      otherMediator: '周九',
-      canalName: '网络',
-      judicResult: '通过',
-      assistName: '吴十',
-      mediTypeName: '民事调解',
-      serieStatus: '1', // 1 表示非系列案,2 表示系列案
-      // 更多字段...
-    },
-    {
-      id: 2,
-      caseNo: 'A20230101',
-      judicNo: '证据材料',
-      perClassName: '李晓明的纠纷化解申请表、身份证...',
-      inputUserName: '0',
-      mediateUserName: '2024-7-12 12:00',
-      judgeName: '王五',
-      mediator: '赵六',
-      handlerUserName: '钱七',
-      returnUserName: '孙八',
-      expireTime: '2023-08-10T08:00:00.000Z',
-      processName: '进行中',
-      otherMediator: '周九',
-      canalName: '网络',
-      judicResult: '通过',
-      assistName: '吴十',
-      mediTypeName: '民事调解',
-      serieStatus: '1', // 1 表示非系列案,2 表示系列案
-      // 更多字段...
-    },
-
-    // 更多数据...
-  ];
 
   // 列配置
   const fakeColumns = [
@@ -224,36 +210,30 @@
     },
     {
       title: '材料类型',
-      dataIndex: 'judicNo',
-      key: 'judicNo',
+      dataIndex: 'ownerTypeName',
+      key: 'ownerTypeName',
       width: 60,
 
     },
     {
       title: '材料数量',
-      dataIndex: 'inputUserName',
-      key: 'perClassName',
+      dataIndex: 'size',
+      key: 'size',
       width: 180,
-      render: (text, index) => (
-        <div onClick={() => console.log(text, index)}>
-          1
-          {/* {sourceType === '1' ? matterNumber : sourceType === '2' ? evidenceNumber : 0}份 */}
-        </div>
-      )
-
+      render: (text) => <span>{text}份</span>,
 
     },
     {
       title: '材料名称',
-      dataIndex: 'perClassName',
-      key: 'perClassName',
+      dataIndex: 'fileNames',
+      key: 'fileNames',
       width: 180,
 
     },
     {
       title: '最新上传时间',
-      dataIndex: 'mediateUserName',
-      key: 'mediateUserName',
+      dataIndex: 'fileNames',
+      key: 'fileNames',
       width: 180,
 
     },
@@ -304,6 +284,11 @@
 
   };
 
+  const handleUpload = () => {
+    listIdTypeInfo()
+    setUpLoad(false);
+  };
+
   const handleCancel = () => {
     // 处理取消逻辑
     setScanFile(false);
@@ -350,10 +335,17 @@
     setEditData(value)
   }
 
+  const uploadQuery = {
+    mainId: props.mainId,
+    ownerCat: null,
+    createStart: null,
+    createEnd: null,
+    uploaderType:null
+  }
+
   // console.log(sourceType, 'sourceType')
   // console.log(props.formRef?.current?.getFields(),'formRef.current.getFields()')
   useEffect(() => {
-    listIdTypeInfo()
   }, [])
 
   return (
@@ -597,7 +589,7 @@
         columns={fakeColumns}
         dataSource={fakeData1}
         size="small"
-        rowKey="id"
+        rowKey="ownerType"
         bordered={true}
         style={{ marginBottom: '65px' }}
       />
@@ -642,7 +634,7 @@
                 <Row gutter={[32, 0]}>{formType(sourceType)}</Row>
               </Form>
             </Col>
-            <Button type="primary" style={{ marginTop: '-20px', marginLeft: '16px' }} onClick={() => { setMatterNumber(fileLength?.length); setEvidenceNumber(evidenceLength?.length); setUpLoad(false) }}>上传完成</Button>
+            <Button type="primary" style={{ marginTop: '-20px', marginLeft: '16px' }} onClick={() => handleUpload()}>上传完成</Button>
           </Row>
         </div>
 
@@ -650,7 +642,7 @@
       <Modal style={{ width: '1200px' }} visible={filesCheck} onCancel={() => setFilesCheck(false)} footer={null} title='查看事件材料' centered>
         {/* <div className="mediationWindow-modal-main" style={{ display: 'flex' }}> */}
         <div style={{ marginTop: '-16px' }}>
-          <NewFileCheck />
+          <NewFileCheck  />
         </div>
         {/* </div> */}
       </Modal>

--
Gitblit v1.8.0