From 25fe4f5537aae20e40dd778e8f962077f83c5658 Mon Sep 17 00:00:00 2001
From: xusd <330628789@qq.com>
Date: Fri, 27 Jun 2025 22:22:28 +0800
Subject: [PATCH] fix:南沙增加街道

---
 src/components/personCard/DetailDialog.jsx |  975 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 494 insertions(+), 481 deletions(-)

diff --git a/src/components/personCard/DetailDialog.jsx b/src/components/personCard/DetailDialog.jsx
index 7f0cbc8..1c00f46 100644
--- a/src/components/personCard/DetailDialog.jsx
+++ b/src/components/personCard/DetailDialog.jsx
@@ -1,510 +1,523 @@
-import React, { useEffect, useState } from 'react'
-import KeyVisits from "./KeyVisits";
+import React, { useEffect, useState } from 'react';
+import KeyVisits from './KeyVisits';
 import { majorStatus_1 } from '@/assets/images';
-import { Scrollbars } from "react-custom-scrollbars";
+import { Scrollbars } from 'react-custom-scrollbars';
 import PreviewImage from '../PreviewImage';
 import MyPDF from '../MyPDF';
-import { checkIdCard } from "../../utils/utility";
+import { checkIdCard } from '../../utils/utility';
 import { Tooltip } from '@arco-design/web-react';
 import * as $$ from '@/utils/utility';
 const appUrl = $$.appUrl;
 
 // 重点人员信息
 function getLabelInfoApi(data) {
-  return $$.ax.request({ url: `special/getLabelInfo`, type: 'post', serviceType: 'thrid', service: 'sys', data });
+	return $$.ax.request({ url: `special/getLabelInfo`, type: 'post', serviceType: 'thrid', service: 'sys', data });
 }
 
 // 个人案件统计
 function countPersonApi(data) {
-  return $$.ax.request({ url: `caseInfo/countPerson`, type: 'get', service: 'mediate', data });
+	return $$.ax.request({ url: `caseInfo/countPerson`, type: 'get', service: 'mediate', data });
 }
 // 个人案件查询
 function pagePersonApi(data) {
-  return $$.ax.request({ url: `/caseInfo/pagePerson`, type: 'get', service: 'mediate', data });
+	return $$.ax.request({ url: `/caseInfo/pagePerson`, type: 'get', service: 'mediate', data });
 }
 
 export default function DetailDialog(props) {
-  const nuturalList = [
-    [
-      {
-        label: '姓名',
-        perClass: '',
-        value: '',
-        isName: true,//判断是否是姓名标签
-        field: 'trueName',
-      },
-      {
-        label: '联系方式',
-        value: '',
-        field: 'mobile',
-      },
-    ],
-    [
-      {
-        label: '证件类型',
-        value: '',
-        field: 'certiTypeName',
-      },
-      {
-        label: '证件号码',
-        value: '',
-        field: 'certiNo',
-      },
-    ],
-    [
-      {
-        label: '联系地址',
-        value: '',
-        field: 'addr',
-      },
-      {
-        label: '户籍地址',
-        value: '',
-        field: 'placeAddr',
-      },
-    ],
-    [
-      {
-        label: '工作单位',
-        value: '',
-        field: 'workUnit',
-      },
-      {
-        label: '民族',
-        value: '',
-        field: 'nationName',
-      },
-    ],
-    [
-      {
-        label: '性别',
-        value: '',
-        field: 'sexName',
-      },
-      {
-        label: '年龄',
-        value: '',
-        field: 'age',
-      },
+	const nuturalList = [
+		[
+			{
+				label: '姓名',
+				perClass: '',
+				value: '',
+				isName: true, //判断是否是姓名标签
+				field: 'trueName',
+			},
+			{
+				label: '联系方式',
+				value: '',
+				field: 'mobile',
+			},
+		],
+		[
+			{
+				label: '证件类型',
+				value: '',
+				field: 'certiTypeName',
+			},
+			{
+				label: '证件号码',
+				value: '',
+				field: 'certiNo',
+			},
+		],
+		[
+			{
+				label: '联系地址',
+				value: '',
+				field: 'addr',
+			},
+			{
+				label: '户籍地址',
+				value: '',
+				field: 'placeAddr',
+			},
+		],
+		[
+			{
+				label: '工作单位',
+				value: '',
+				field: 'workUnit',
+			},
+			{
+				label: '民族',
+				value: '',
+				field: 'nationName',
+			},
+		],
+		[
+			{
+				label: '性别',
+				value: '',
+				field: 'sexName',
+			},
+			{
+				label: '年龄',
+				value: '',
+				field: 'age',
+			},
+		],
+		[
+			{
+				label: '身份证明材料',
+				value: '',
+				isFile: true,
+				field: 'file',
+			},
+			{
+				label: '是否有个人极端倾向',
+				value: '',
+				field: 'extreme',
+			},
+		],
+	];
+	const legalList = [
+		[
+			{
+				label: '企业名称',
+				perClass: '',
+				value: '',
+				isName: true, //判断是否是姓名标签
+				field: 'trueName',
+			},
+			{
+				label: '联系方式',
+				value: '',
+				field: 'mobile',
+			},
+		],
+		[
+			{
+				label: '企业所在地',
+				value: '',
+				field: 'addr',
+			},
+			{
+				label: '统一社会信用代码',
+				value: '',
+				field: 'orgaCode',
+			},
+		],
+		[
+			{
+				label: '法定代表人',
+				value: '',
+				field: 'deputy',
+			},
+			{
+				label: '企业类型',
+				value: '',
+				field: 'orgaTypeName',
+			},
+		],
+		[
+			{
+				label: '住所',
+				value: '',
+				field: 'placeAddr',
+				isRow: true,
+			},
+		],
+		[
+			{
+				label: '登记企业材料',
+				value: '',
+				isFile: true,
+				field: 'file',
+			},
+			{
+				label: '法定代表人身份证明材料',
+				value: '',
+				isFile: true,
+				field: 'file1',
+			},
+		],
+	];
+	const organizationList = [
+		[
+			{
+				label: '机构名称',
+				perClass: '',
+				value: '',
+				isName: true, //判断是否是姓名标签
+				field: 'trueName',
+			},
+			{
+				label: '联系方式',
+				value: '',
+				field: 'mobile',
+			},
+		],
+		[
+			{
+				label: '机构所在地',
+				value: '',
+				field: 'addr',
+			},
+			{
+				label: '机构组织代码',
+				value: '',
+				field: 'orgaCode',
+			},
+		],
+		[
+			{
+				label: '机构代表人',
+				value: '',
+				field: 'deputy',
+			},
+			{
+				label: '机构类型',
+				value: '',
+				field: 'orgaTypeName',
+			},
+		],
+		[
+			{
+				label: '住所',
+				value: '',
+				field: 'placeAddr',
+				isRow: true,
+			},
+		],
+		[
+			{
+				label: '机构登记材料',
+				value: '',
+				isFile: true,
+				field: 'file',
+			},
+			{
+				label: '机构代表人身份证明材料',
+				value: '',
+				isFile: true,
+				field: 'file1',
+			},
+		],
+	];
+	const agentList = [
+		[
+			{
+				label: '姓名',
+				perClass: '',
+				value: '',
+				isName: true, //判断是否是姓名标签
+				field: 'trueName',
+			},
+			{
+				label: '联系方式',
+				value: '',
+				field: 'mobile',
+			},
+		],
+		[
+			{
+				label: '证件类型',
+				value: '',
+				field: 'certiTypeName',
+			},
+			{
+				label: '证件号码',
+				value: '',
+				field: 'certiNo',
+			},
+		],
+		[
+			{
+				label: '联系地址',
+				value: '',
+				field: 'addr',
+			},
+			{
+				label: '户籍地址',
+				value: '',
+				field: 'placeAddr',
+			},
+		],
+		[
+			{
+				label: '工作单位',
+				value: '',
+				field: 'workUnit',
+			},
+			{
+				label: '民族',
+				value: '',
+				field: 'nationName',
+			},
+		],
+		[
+			{
+				label: '性别',
+				value: '',
+				field: 'sexName',
+			},
+			{
+				label: '是否有个人极端倾向',
+				value: '',
+				field: 'extreme',
+			},
+		],
+		[
+			{
+				label: '委托关系',
+				value: '',
+				field: 'agentRelateName',
+			},
+			{
+				label: '委托类型',
+				value: '',
+				field: 'agentTypeName',
+			},
+		],
+		[
+			{
+				label: '代理对象',
+				value: '',
+				field: 'personId',
+				isRow: true,
+			},
+		],
+		[
+			{
+				label: '身份证明材料',
+				value: '',
+				isFile: true,
+				field: 'file',
+			},
+			{
+				label: '代理人授权委托书',
+				value: '',
+				isFile: true,
+				field: 'file1',
+			},
+		],
+	];
+	const [tableList, setTableList] = useState([]);
+	const [certiNo, setCertiNo] = useState('');
+	const [certiShow, setCertiShow] = useState(false);
+	// 反应诉求记录
+	const [hisData, setHisData] = useState({});
+	const [labelInfo, setLabelInfo] = useState([]);
+	const [fakeData, setFakeData] = useState({ tableData: [] });
+	const [search, setSearch] = useState({ page: 1, size: 5 });
 
-    ],
-    [
-      {
-        label: '身份证明材料',
-        value: '',
-        isFile: true,
-        field: 'file',
-      },
-      {
-        label: '是否有个人极端倾向',
-        value: '',
-        field: 'extreme',
-      },
-    ],
-  ]
-  const legalList = [
-    [
-      {
-        label: '企业名称',
-        perClass: '',
-        value: '',
-        isName: true,//判断是否是姓名标签
-        field: 'trueName',
-      },
-      {
-        label: '联系方式',
-        value: '',
-        field: 'mobile',
-      },
-    ],
-    [
-      {
-        label: '企业所在地',
-        value: '',
-        field: 'addr',
-      },
-      {
-        label: '统一社会信用代码',
-        value: '',
-        field: 'orgaCode',
-      },
-    ],
-    [
-      {
-        label: '法定代表人',
-        value: '',
-        field: 'deputy',
-      },
-      {
-        label: '企业类型',
-        value: '',
-        field: 'orgaTypeName',
-      },
-    ],
-    [
-      {
-        label: '住所',
-        value: '',
-        field: 'placeAddr',
-        isRow: true
-      },
-    ],
-    [
-      {
-        label: '登记企业材料',
-        value: '',
-        isFile: true,
-        field: 'file',
-      },
-      {
-        label: '法定代表人身份证明材料',
-        value: '',
-        isFile: true,
-        field: 'file1',
-      },
-    ],
-  ]
-  const organizationList = [
-    [
-      {
-        label: '机构名称',
-        perClass: '',
-        value: '',
-        isName: true,//判断是否是姓名标签
-        field: 'trueName',
-      },
-      {
-        label: '联系方式',
-        value: '',
-        field: 'mobile',
-      },
-    ],
-    [
-      {
-        label: '机构所在地',
-        value: '',
-        field: 'addr',
-      },
-      {
-        label: '机构组织代码',
-        value: '',
-        field: 'orgaCode',
-      },
-    ],
-    [
-      {
-        label: '机构代表人',
-        value: '',
-        field: 'deputy',
-      },
-      {
-        label: '机构类型',
-        value: '',
-        field: 'orgaTypeName',
-      },
-    ],
-    [
-      {
-        label: '住所',
-        value: '',
-        field: 'placeAddr',
-        isRow: true
-      },
-    ],
-    [
-      {
-        label: '机构登记材料',
-        value: '',
-        isFile: true,
-        field: 'file',
-      },
-      {
-        label: '机构代表人身份证明材料',
-        value: '',
-        isFile: true,
-        field: 'file1',
-      },
-    ],
-  ]
-  const agentList = [
-    [
-      {
-        label: '姓名',
-        perClass: '',
-        value: '',
-        isName: true,//判断是否是姓名标签
-        field: 'trueName',
-      },
-      {
-        label: '联系方式',
-        value: '',
-        field: 'mobile',
-      },
-    ],
-    [
-      {
-        label: '证件类型',
-        value: '',
-        field: 'certiTypeName',
-      },
-      {
-        label: '证件号码',
-        value: '',
-        field: 'certiNo',
-      },
-    ],
-    [
-      {
-        label: '联系地址',
-        value: '',
-        field: 'addr',
-      },
-      {
-        label: '户籍地址',
-        value: '',
-        field: 'placeAddr',
-      },
-    ],
-    [
-      {
-        label: '工作单位',
-        value: '',
-        field: 'workUnit',
-      },
-      {
-        label: '民族',
-        value: '',
-        field: 'nationName',
-      },
-    ],
-    [
-      {
-        label: '性别',
-        value: '',
-        field: 'sexName',
-      },
-      {
-        label: '是否有个人极端倾向',
-        value: '',
-        field: 'extreme',
-      },
-    ],
-    [
-      {
-        label: '委托关系',
-        value: '',
-        field: 'agentRelateName',
-      },
-      {
-        label: '委托类型',
-        value: '',
-        field: 'agentTypeName',
-      },
-    ],
-    [
-      {
-        label: '代理对象',
-        value: '',
-        field: 'personId',
-        isRow: true
-      },
-    ],
-    [
-      {
-        label: '身份证明材料',
-        value: '',
-        isFile: true,
-        field: 'file',
-      },
-      {
-        label: '代理人授权委托书',
-        value: '',
-        isFile: true,
-        field: 'file1',
-      },
-    ],
-  ]
-  const [tableList, setTableList] = useState([])
-  const [certiNo, setCertiNo] = useState('');
-  const [certiShow, setCertiShow] = useState(false);
-  // 反应诉求记录
-  const [hisData, setHisData] = useState({});
-  const [labelInfo, setLabelInfo] = useState([]);
-  const [fakeData, setFakeData] = useState({ tableData: [] });
-  const [search, setSearch] = useState({ page: 1, size: 5 });
+	function getAllApi(num) {
+		countPerson(num);
+		pagePerson({ ...search, certiNo: num });
+	}
 
-  function getAllApi(num) {
-    countPerson(num)
-    pagePerson({ ...search, certiNo: num })
-  }
+	// 根据个人身份证号查询重点人员信息
+	async function getLabelInfo(idCard) {
+		const res = await getLabelInfoApi({ idNumber: idCard });
+		if (res.type) {
+			let data = res.data || {};
+			console.log('res.data', res.data);
+			setLabelInfo(data?.labelList);
+		}
+	}
 
-  // 根据个人身份证号查询重点人员信息
-  async function getLabelInfo(idCard) {
-    const res = await getLabelInfoApi({ idNumber: idCard })
-    if (res.type) {
-      let data = res.data || {};
-      console.log('res.data', res.data);
-      setLabelInfo(data?.labelList)
-    }
-  }
+	// 个人案件统计
+	async function countPerson(idCard) {
+		const res = await countPersonApi({ certiNo: idCard });
+		if (res.type) {
+			setHisData(res.data || {});
+		}
+	}
 
-  // 个人案件统计
-  async function countPerson(idCard) {
-    const res = await countPersonApi({ certiNo: idCard })
-    if (res.type) {
-      setHisData(res.data || {})
-    }
-  }
+	// 个人案件查询
+	async function pagePerson(submitData) {
+		global.setSpinning(true);
+		const res = await pagePersonApi(submitData);
+		global.setSpinning(false);
+		if (res.type) {
+			setSearch(submitData);
+			setFakeData({
+				total: res?.data?.totalElements || 0,
+				tableData: res?.data?.content || [],
+			});
+		}
+	}
 
-  // 个人案件查询
-  async function pagePerson(submitData) {
-    global.setSpinning(true);
-    const res = await pagePersonApi(submitData);
-    global.setSpinning(false);
-    if (res.type) {
-      setSearch(submitData);
-      setFakeData({
-        total: res?.data?.totalElements || 0,
-        tableData: res?.data?.content || [],
-      });
-    }
-  }
+	// 页码修改
+	function handleChangePage(page, pageSize, field, order) {
+		let paramsObj = Object.assign(search, { page, size: pageSize });
+		paramsObj = { ...paramsObj };
+		setSearch(paramsObj);
 
-  // 页码修改
-  function handleChangePage(page, pageSize, field, order) {
-    let paramsObj = Object.assign(search, { page, size: pageSize });
-    paramsObj = { ...paramsObj }
-    setSearch(paramsObj);
+		pagePerson(paramsObj);
+	}
 
-    pagePerson(paramsObj);
-  }
+	useEffect(() => {
+		if (checkIdCard(props.editData?.certiNo)) {
+			setCertiShow(true);
+			setCertiNo(props.editData?.certiNo);
+			getAllApi(props.editData?.certiNo);
+		}
+		const data = props.editData;
+		let newList;
+		let mapList = [];
+		if (data.perClass === '09_01001-1') {
+			//自然人
+			mapList = nuturalList;
+		}
+		if (data.perClass === '09_01001-2') {
+			//法人组织
+			mapList = legalList;
+		}
+		if (data.perClass === '09_01001-3') {
+			//非法人组织
+			mapList = organizationList;
+		}
+		if (data.perType === '24_00006-1' || data.perType === '24_00006-2') {
+			//代理人
+			mapList = agentList;
+		}
+		newList = mapList.map((item) => {
+			return item.map((res) => {
+				if (res.isFile) {
+					return {
+						...res,
+						value: (
+							<>
+								{data[res.field]?.map((item, index) => {
+									if (item.response) {
+										//新上传的,前端数据
+										const newData = item.response.data[0];
+										return (
+											<div style={{ display: 'inline-block' }}>
+												<MyPDF key={index} name={newData.name} fileUrl={newData.showUrl} fileType={newData.suffix} />
+												{index !== data[res.field].length - 1 && <>,</>}
+											</div>
+										);
+									} else {
+										return (
+											<div style={{ display: 'inline-block' }}>
+												<MyPDF key={index} name={item.name} fileUrl={item.showUrl} fileType={item.suffix} />
+												{index !== data[res.field].length - 1 && <>,</>}
+											</div>
+										);
+									}
+								})}
+							</>
+						),
+					};
+				}
+				if (res.isName) {
+					return {
+						...res,
+						value: data[res.field],
+						perClass: data.perClassName || data.perTypeName,
+					};
+				} else {
+					if (res.field === 'personId') {
+						const filterValue = props.personData
+							.filter((result) => data[res.field].indexOf(result.id) != -1)
+							.map((result) => result.trueName)
+							.join(',');
+						return {
+							...res,
+							value: filterValue,
+						};
+					} else if (res.field === 'extreme') {
+						return {
+							...res,
+							label: (
+								<div
+									style={{
+										padding: '8px',
+										display: 'flex',
+										gap: '8px',
+										alignItems: 'center',
+										color: data[res.field] === 1 ? '#F53F3F' : 'inherit',
+									}}
+									className="title-text-red"
+								>
+									{data[res.field] === 1 && <img src={majorStatus_1} alt="" srcset="" />}
+									<Tooltip content="是否有个人极端倾向">{$$.ellipsis('是否有个人极端倾向', 6)}</Tooltip>
+								</div>
+							),
+							value: data[res.field] === 1 ? '是' : data[res.field] === 0 ? '否' : '-',
+						};
+					} else {
+						return {
+							...res,
+							value: data[res.field],
+						};
+					}
+				}
+			});
+		});
 
-  useEffect(() => {
-    if (checkIdCard(props.editData?.certiNo)) {
-      setCertiShow(true)
-      setCertiNo(props.editData?.certiNo)
-      getAllApi(props.editData?.certiNo)
-    }
-    const data = props.editData
-    let newList
-    let mapList = []
-    if (data.perClass === "09_01001-1") {
-      //自然人
-      mapList = nuturalList
-    }
-    if (data.perClass === "09_01001-2") {
-      //法人组织
-      mapList = legalList
-    }
-    if (data.perClass === "09_01001-3") {
-      //非法人组织
-      mapList = organizationList
-    }
-    if (data.perType === "24_00006-1" || data.perType === "24_00006-2") {
-      //代理人
-      mapList = agentList
-    }
-    newList = mapList.map(item => {
-      return item.map(res => {
-        if (res.isFile) {
-          return {
-            ...res,
-            value: <>
-              {data[res.field]?.map((item, index) => {
-                if (item.response) {
-                  //新上传的,前端数据
-                  const newData = item.response.data[0]
-                  return <div style={{ display: 'inline-block' }}>
-                    {newData.suffix === 'pdf' ? <MyPDF name={newData.name} fileUrl={newData.showUrl} /> : <PreviewImage name={newData.name} src={newData.showUrl} />}
-                    {index !== data[res.field].length - 1 && <>,</>}
-                  </div>
-                } else {
-                  return <div style={{ display: 'inline-block' }}>
-                    {item.suffix === 'pdf' ? <MyPDF name={item.name} fileUrl={item.showUrl} /> : <PreviewImage name={item.name} src={item.showUrl} />}
-                    {index !== data[res.field].length - 1 && <>,</>}
-                  </div>
-                }
-              })}
-            </>
-          }
-        }
-        if (res.isName) {
-          return {
-            ...res,
-            value: data[res.field],
-            perClass: data.perClassName || data.perTypeName
-          }
-        } else {
-          if (res.field === 'personId') {
-            const filterValue = props.personData.filter(result => data[res.field].indexOf(result.id) != -1).map(result => result.trueName).join(',')
-            return {
-              ...res,
-              value: filterValue
-            }
-          } else if (res.field === 'extreme') {
-            return {
-              ...res,
-              label: <div style={{ 
-                padding: '8px', 
-                display: 'flex', 
-                gap: '8px', 
-                alignItems: 'center',
-                color: data[res.field] === 1 ? '#F53F3F' : 'inherit'
-              }} className='title-text-red'>
-                {data[res.field] === 1 && <img src={majorStatus_1} alt="" srcset="" />}
-                <Tooltip content='是否有个人极端倾向'>{$$.ellipsis('是否有个人极端倾向', 6)}</Tooltip>
-              </div>,
-              value: data[res.field] === 1 ? '是' : data[res.field] === 0 ? '否' : '-'
-            }
-          } else {
-            return {
-              ...res,
-              value: data[res.field]
-            }
-          }
-        }
-      })
-    })
+		setTableList(newList);
+	}, []);
 
-    setTableList(newList)
-  }, [])
-
-
-  return (
-    <Scrollbars
-      autoHide
-      autoHeight
-      autoHeightMin={200} // 最小高度为300px
-      autoHeightMax={590}
-    >
-      <table border="1" align="center" cellpadding="8" className="table" style={{ marginBottom: '20px' }}>
-        {
-          tableList?.map((item, index) => {
-            return <tr key={'tableList' + index}>
-              {
-                item?.map(res => {
-                  return <>
-                    <th bgcolor="#F7F8FA" className="table-title" width={150}>{res.label}</th>
-                    <td width={320} colspan={res.isRow ? '3' : '1'}>
-                      <div style={{ display: 'flex', minHeight: '22px' }}>
-                        <div>{res.value}</div>
-                        {res.isName && <div className="title-personRemark1">{res.perClass}</div>}
-                      </div>
-                    </td>
-                  </>
-                })
-              }
-            </tr>
-          })
-        }
-      </table>
-      {/* 重复来访重点人员 */}
-      {
-        certiShow &&
-        <div style={{ width: 'calc(100% - 9px)', background: '#f2f3f5', marginBottom: '20px', padding: '12px' }}>
-          <KeyVisits labelInfo={labelInfo} data={hisData} fakeData={fakeData} search={search} handleChangePage={handleChangePage} />
-        </div>
-      }
-    </Scrollbars>
-  )
+	return (
+		<Scrollbars
+			autoHide
+			autoHeight
+			autoHeightMin={200} // 最小高度为300px
+			autoHeightMax={590}
+		>
+			<table border="1" align="center" cellpadding="8" className="table" style={{ marginBottom: '20px' }}>
+				{tableList?.map((item, index) => {
+					return (
+						<tr key={'tableList' + index}>
+							{item?.map((res) => {
+								return (
+									<>
+										<th bgcolor="#F7F8FA" className="table-title" width={150}>
+											{res.label}
+										</th>
+										<td width={320} colspan={res.isRow ? '3' : '1'}>
+											<div style={{ display: 'flex', minHeight: '22px' }}>
+												<div>{res.value}</div>
+												{res.isName && <div className="title-personRemark1">{res.perClass}</div>}
+											</div>
+										</td>
+									</>
+								);
+							})}
+						</tr>
+					);
+				})}
+			</table>
+			{/* 重复来访重点人员 */}
+			{certiShow && (
+				<div style={{ width: 'calc(100% - 9px)', background: '#f2f3f5', marginBottom: '20px', padding: '12px' }}>
+					<KeyVisits labelInfo={labelInfo} data={hisData} fakeData={fakeData} search={search} handleChangePage={handleChangePage} />
+				</div>
+			)}
+		</Scrollbars>
+	);
 }

--
Gitblit v1.8.0