From 5985afbb3372881cf867ed32eed5bec8434e8182 Mon Sep 17 00:00:00 2001
From: dminyi <1301963064@qq.com>
Date: Tue, 13 Aug 2024 09:32:51 +0800
Subject: [PATCH] 来访登记

---
 gz-customerSystem/package-lock.json                                      |   23 
 gz-customerSystem/src/views/dispatch/mediateList/index.jsx               |    4 
 gz-customerSystem/src/views/basicInformation/organization/index.less     |   36 +
 gz-customerSystem/src/views/basicInformation/organization/index copy.jsx |  386 +++++++++++
 gz-customerSystem/src/components/NewPage/index.less                      |   45 +
 gz-customerSystem/package.json                                           |    3 
 gz-customerSystem/src/components/NewPage/index.jsx                       |   38 +
 gz-customerSystem/src/views/basicInformation/organization/index.jsx      |  722 +++++++++++----------
 gz-customerSystem/src/assets/images/add.png                              |    0 
 gz-customerSystem/src/assets/images/question1.png                        |    0 
 gz-customerSystem/src/components/Search/index.less                       |   16 
 gz-customerSystem/src/components/registerTab/index.jsx                   |   47 +
 gz-customerSystem/yarn.lock                                              |   27 
 gz-customerSystem/src/styles/public.less                                 |  166 +++++
 gz-customerSystem/src/assets/images/process.png                          |    0 
 gz-customerSystem/src/assets/images/index.js                             |   15 
 gz-customerSystem/src/components/registerTab/index.less                  |   72 ++
 gz-customerSystem/src/assets/images/del.png                              |    0 
 gz-customerSystem/src/components/MyTabs/index.jsx                        |    4 
 gz-customerSystem/src/components/NewPage/PageHead.jsx                    |   85 ++
 gz-customerSystem/src/assets/images/question.png                         |    0 
 gz-customerSystem/src/views/mediate/judicialExamine/index.jsx            |    4 
 gz-customerSystem/src/api/appUrl.js                                      |   10 
 gz-customerSystem/src/components/Search/index.jsx                        |  160 ++++
 gz-customerSystem/src/router/router.js                                   |    8 
 gz-customerSystem/src/components/personCard/index.jsx                    |   85 ++
 gz-customerSystem/src/views/register/visit/index.jsx                     |   18 
 27 files changed, 1,601 insertions(+), 373 deletions(-)

diff --git a/gz-customerSystem/package-lock.json b/gz-customerSystem/package-lock.json
index e3567d0..c6bed4f 100644
--- a/gz-customerSystem/package-lock.json
+++ b/gz-customerSystem/package-lock.json
@@ -33,6 +33,9 @@
         "react-scripts": "5.0.0",
         "react-virtual": "^2.10.4",
         "web-vitals": "^2.1.4"
+      },
+      "devDependencies": {
+        "@arco-plugins/vite-react": "^1.3.3"
       }
     },
     "node_modules/@adobe/css-tools": {
@@ -1194,6 +1197,26 @@
       "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.11.tgz",
       "integrity": "sha512-uUnglJowSe0IPmWOdDtrlHXof5CTIJitfJEyITHBW6zDVOGu9Pjk5puaLM73SLcwak0L4hEjO7Td88/a6P5i7A=="
     },
+    "node_modules/@arco-plugins/vite-react": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmmirror.com/@arco-plugins/vite-react/-/vite-react-1.3.3.tgz",
+      "integrity": "sha512-fcGh/69xKGqIjMdIw6NCqst4uWME/WTYjiC6AxHbKBmeYSONazBYd+KtEDx9Be2N0pF4+sk+MGUDy3mrF13EdA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/generator": "^7.12.11",
+        "@babel/helper-module-imports": "^7.12.5",
+        "@babel/parser": "^7.12.11",
+        "@babel/traverse": "^7.12.12",
+        "@babel/types": "^7.12.12",
+        "@types/node": "^16.11.10"
+      }
+    },
+    "node_modules/@arco-plugins/vite-react/node_modules/@types/node": {
+      "version": "16.18.105",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.105.tgz",
+      "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==",
+      "dev": true
+    },
     "node_modules/@babel/code-frame": {
       "version": "7.24.7",
       "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz",
diff --git a/gz-customerSystem/package.json b/gz-customerSystem/package.json
index 9093cd5..13f50a7 100644
--- a/gz-customerSystem/package.json
+++ b/gz-customerSystem/package.json
@@ -53,5 +53,8 @@
       "last 1 firefox version",
       "last 1 safari version"
     ]
+  },
+  "devDependencies": {
+    "@arco-plugins/vite-react": "^1.3.3"
   }
 }
diff --git a/gz-customerSystem/src/api/appUrl.js b/gz-customerSystem/src/api/appUrl.js
index e5e00bf..1355cd3 100644
--- a/gz-customerSystem/src/api/appUrl.js
+++ b/gz-customerSystem/src/api/appUrl.js
@@ -2,19 +2,21 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-02-16 11:25:57
- * @LastEditTime: 2024-08-09 14:57:35
+ * @LastEditTime: 2024-08-12 09:26:56
  * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description: api地址
  */
 export const debug = {
 	// web服务
-	// baseUrl: 'http://gz.hugeinfo.com.cn',
-	baseUrl: 'http://192.168.3.108:9002',
+	baseUrl: 'http://gz.hugeinfo.com.cn',
+	// baseUrl: 'http://192.168.3.108:9002',
 	// baseUrl: 'http://mdqgnh.natappfree.cc',
 
 	// 附件服务
-	fileUrl: 'http://192.168.3.108:9002',
+	// fileUrl: 'http://192.168.3.108:9002',
+	fileUrl: 'http://gz.hugeinfo.com.cn',
+
 
 	// 文件查看url 后面接附件编号
 	fileShowUrl: '/dyh-sys/api/v1/fileInfo/show/',
diff --git a/gz-customerSystem/src/assets/images/add.png b/gz-customerSystem/src/assets/images/add.png
new file mode 100644
index 0000000..80cc75b
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/add.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/del.png b/gz-customerSystem/src/assets/images/del.png
new file mode 100644
index 0000000..adb4159
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/del.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/index.js b/gz-customerSystem/src/assets/images/index.js
index 157fe52..b48a107 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: 2023-12-12 11:49:04
+ * @LastEditTime: 2024-08-12 19:40:06
  * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description:
@@ -28,7 +28,11 @@
 import mediateBigData_8 from './mediateBigData_8.png';
 import caseDetail from './caseDetail.png';
 import caseDetailResult from './caseDetailResult.png';
-
+import process from './process.png';
+import add from './add.png';
+import del from './del.png';
+import question from './question.png';
+import question1 from './question1.png';
 
 export {
 	ledger_1,
@@ -51,5 +55,10 @@
 	mediateBigData_7,
 	mediateBigData_8,
 	caseDetail,
-	caseDetailResult
+	caseDetailResult,
+	process,
+	add,
+	del,
+	question,
+	question1
 };
diff --git a/gz-customerSystem/src/assets/images/process.png b/gz-customerSystem/src/assets/images/process.png
new file mode 100644
index 0000000..7266cbf
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/process.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/question.png b/gz-customerSystem/src/assets/images/question.png
new file mode 100644
index 0000000..b66aa65
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/question.png
Binary files differ
diff --git a/gz-customerSystem/src/assets/images/question1.png b/gz-customerSystem/src/assets/images/question1.png
new file mode 100644
index 0000000..0b9d689
--- /dev/null
+++ b/gz-customerSystem/src/assets/images/question1.png
Binary files differ
diff --git a/gz-customerSystem/src/components/MyTabs/index.jsx b/gz-customerSystem/src/components/MyTabs/index.jsx
index 29c17d1..2d0b564 100644
--- a/gz-customerSystem/src/components/MyTabs/index.jsx
+++ b/gz-customerSystem/src/components/MyTabs/index.jsx
@@ -2,8 +2,8 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-07-08 18:27:18
- * @LastEditTime: 2022-07-21 14:21:33
- * @LastEditors: ldh
+ * @LastEditTime: 2024-08-10 10:12:34
+ * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description:
  */
diff --git a/gz-customerSystem/src/components/NewPage/PageHead.jsx b/gz-customerSystem/src/components/NewPage/PageHead.jsx
new file mode 100644
index 0000000..639d65e
--- /dev/null
+++ b/gz-customerSystem/src/components/NewPage/PageHead.jsx
@@ -0,0 +1,85 @@
+/*
+ * @Company: hugeInfo
+ * @Author: ldh
+ * @Date: 2022-02-16 15:23:40
+ * @LastEditTime: 2024-08-10 09:53:57
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @Version: 1.0.0
+ * @Description: 面包屑
+ */
+import React from 'react';
+import PropTypes from 'prop-types';
+import { useNavigate } from 'react-router-dom';
+import { Breadcrumb, Button, Tooltip, Space } from 'antd';
+import { BulbOutlined, LeftCircleOutlined } from '@ant-design/icons';
+import sopStatus from '../../status/sopStatus';
+
+/*
+ * fromType, // 来源页面str
+ * breadcrumbData, // 面包屑数据[{url:'返回链接',click:'返回的操作',title:''}]
+ * title, // 页面标题
+ * subtitle, // 页面说明
+ * titleButton, // 页面标题右侧功能按钮集
+ * handleReturn, // 退回操作,是否有退回
+ * sopVisible, // 是否展示sop
+ */
+const PageHead = ({ fromType, breadcrumbData = [], title, subtitle, titleButton = [], handleReturn, sopVisible, background }) => {
+	const navigate = useNavigate();
+
+	return (
+		<div className="pagNewHead" style={{ backgroundColor: background === 'none' && 'transparent' }}>
+			<div style={{ paddingTop: '8px' }}>
+				{breadcrumbData.length !== 0 && (
+					<Breadcrumb className="pagNewHead-breadcrumb">
+						{breadcrumbData.map((x, t) => {
+							return x.url ? (
+								<Breadcrumb.Item key={x.title}>
+									<span onClick={() => navigate(`${x.url}?isBack=true`, { replace: true })} className="pagNewHead-breadcrumb-item">
+										{x.title}
+									</span>
+								</Breadcrumb.Item>
+							) : x.click ? (
+								<Breadcrumb.Item className="pagNewHead-breadcrumb-item" onClick={x.click} key={x.title}>
+									{x.title}
+								</Breadcrumb.Item>
+							) : (
+								<Breadcrumb.Item key={x.title}>{x.title}</Breadcrumb.Item>
+							);
+						})}
+					</Breadcrumb>
+				)}
+				<div className="pagNewHead-title">
+					{handleReturn && (
+						<Tooltip title="返回">
+							<LeftCircleOutlined style={{ marginRight: '8px', fontSize: '18px' }} className="public-color" onClick={handleReturn} />
+						</Tooltip>
+					)}
+					<span className={fromType === 'caseDetail' ? 'pagNewHead-title-detailH' : 'pagNewHead-title-h'}>{title}</span>
+				</div>
+				{!!subtitle && <div className="pagNewHead-subtitle">{subtitle}</div>}
+			</div>
+			<Space size="middle">
+				{titleButton.map((x, t) => (
+					<div key={t}>{x}</div>
+				))}
+				{/* {sopVisible && (
+					<Button onClick={sopStatus.handleVisible} icon={<BulbOutlined />}>
+						IDR助手
+					</Button>
+				)} */}
+			</Space>
+		</div>
+	);
+};
+
+PageHead.propTypes = {
+	fromType: PropTypes.string,
+	breadcrumbData: PropTypes.array,
+	title: PropTypes.string,
+	subtitle: PropTypes.any,
+	titleButton: PropTypes.any,
+	handleReturn: PropTypes.func,
+	sopVisible: PropTypes.bool,
+};
+
+export default PageHead;
diff --git a/gz-customerSystem/src/components/NewPage/index.jsx b/gz-customerSystem/src/components/NewPage/index.jsx
new file mode 100644
index 0000000..c66ce8e
--- /dev/null
+++ b/gz-customerSystem/src/components/NewPage/index.jsx
@@ -0,0 +1,38 @@
+/*
+ * @Company: hugeInfo
+ * @Author: ldh
+ * @Date: 2022-03-04 14:29:11
+ * @LastEditTime: 2022-08-05 09:45:54
+ * @LastEditors: ldh
+ * @Version: 1.0.0
+ * @Description: 页面框架
+ */
+import React from 'react';
+import PropTypes from 'prop-types';
+import PageHead from './PageHead';
+import './index.less';
+import * as $$ from '../../utils/utility';
+import RegisterChooseModal from '../RegisterChooseModal';
+
+const NewPage = ({ children, pageHead, registerChooseModalVisible }) => {
+	if (!$$.getSessionStorage('customerSystemToken')) {
+		$$.catchApiError({ content: '抱歉!登录状态已失效请重新登录', loginStatus: 'lose' });
+		return null;
+	}
+
+	return (
+		<>
+			{!!pageHead && <PageHead {...pageHead} />}
+			{children}
+			{/* 纠纷登录入口modal */}
+			{!!registerChooseModalVisible && <RegisterChooseModal visible={registerChooseModalVisible} />}
+		</>
+	);
+};
+
+NewPage.propTypes = {
+	pageHead: PropTypes.any,
+	registerChooseModalVisible: PropTypes.any,
+};
+
+export default NewPage;
diff --git a/gz-customerSystem/src/components/NewPage/index.less b/gz-customerSystem/src/components/NewPage/index.less
new file mode 100644
index 0000000..50c8664
--- /dev/null
+++ b/gz-customerSystem/src/components/NewPage/index.less
@@ -0,0 +1,45 @@
+@import '../../styles/theme.less';
+
+.pagNewHead {
+	width: 100%;
+	padding: 0 16px;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+
+	.pagNewHead-breadcrumb {
+		margin-bottom: 8px;
+
+		&-item {
+			cursor: pointer;
+
+			&:hover {
+				color: @main-color;
+			}
+		}
+	}
+
+	&-title {
+		margin-bottom: 12px;
+		display: flex;
+		align-items: center;
+
+		&-detailH {
+			font-weight: 600;
+		}
+
+		&-h {
+			font-weight: 600;
+			font-size: 20px;
+			line-height: 28px;
+		}
+	}
+
+	&-subtitle {
+		margin-bottom: 8px;
+	}
+
+	.ant-tabs-ink-bar {
+		width: 28px !important;
+	}
+}
diff --git a/gz-customerSystem/src/components/Search/index.jsx b/gz-customerSystem/src/components/Search/index.jsx
new file mode 100644
index 0000000..6bb2bfd
--- /dev/null
+++ b/gz-customerSystem/src/components/Search/index.jsx
@@ -0,0 +1,160 @@
+/*
+ * @Company: hugeInfo
+ * @Author: ldh
+ * @Date: 2022-03-16 11:58:56
+ * @LastEditTime: 2024-08-10 16:13:06
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @Version: 1.0.0
+ * @Description: 公有页面的搜索
+ */
+import React, { useState } from 'react';
+import PropTypes from 'prop-types';
+import { Form, Button, TreeSelect, } from 'antd';
+import { Grid, Input, Select, DatePicker } from '@arco-design/web-react';
+import "@arco-design/web-react/dist/css/arco.css";
+import { DownOutlined } from '@ant-design/icons';
+import * as $$ from '../../utils/utility';
+import './index.less';
+
+const { RangePicker } = DatePicker;
+
+// const { Option } = Select;
+const Row = Grid.Row;
+const Col = Grid.Col;
+const Option = Select.Option;
+
+/**
+ * form, // form组件
+ * itemData, // 搜索的数据数组
+ * labelLength, // form的label标签字符串的长度
+ * rowNum, // 一行放多少个搜索item
+ * handleRest, // 重置
+ * handleSearch, // 搜索
+ */
+const TableSearch = ({ form, itemData, labelLength = 5, rowNum = 3, handleReset, handleSearch }) => {
+  const [searchMore, setSearchMore] = useState(false);
+
+  const span = 24 / rowNum;
+
+  let display = false;
+
+  // 是否需要展开 or 收起
+  const lineNum = rowNum * 2;
+  if (itemData.length > lineNum) display = true;
+
+  // 系统字体大小
+  const fontSize = parseInt(getComputedStyle(window.document.getElementsByTagName('HTML')[0]).fontSize);
+
+  // 输出placeholder
+  function setPlaceholder(key, type) {
+    let str = '';
+    switch (key) {
+      case 'caseNo':
+        str = '输入查询案号';
+        break;
+      case 'judicNo':
+        str = '输入查询司法确认案号';
+        break;
+      case 'plaintiffs':
+        str = '申请方当事人/代理人姓名';
+        break;
+      case 'defendants':
+        str = '被申请方当事人/代理人姓名';
+        break;
+      case 'addr':
+        str = '输入纠纷发生详细地址的关键词';
+        break;
+      default:
+        str = type === 'Select' ? '全部' : '请输入';
+        break;
+    }
+    return str;
+  }
+
+  return (
+    <Form form={form} labelAlign="right" className="tableSearch">
+      <Row gutter={[24, 16]}>
+        {itemData.map((x, t) => {
+          let placeholder = x.placeholder || setPlaceholder(x.name, x.type);
+          let allowClear = x.allowClear || true;
+          let dom = null;
+          let rules = {};
+          if (x.type === 'Input') {
+            dom = <Input placeholder={placeholder} allowClear {...x} />;
+            rules = { max: x.max || 32, message: '搜索内容过长' };
+          }
+          if (x.type === 'Select') {
+            dom = (
+              <Select allowClear placeholder={placeholder} {...x}>
+                {x.selectdata?.map((y) => (
+                  <Option key={y.value}>{y.label}</Option>
+                ))}
+              </Select>
+            );
+          }
+          if (x.type === 'RangePicker') {
+            rules = { type: 'array' };
+            dom = (
+              <DatePicker.RangePicker
+                style={{ width: '100%' }}
+                ranges={{
+                  '今日': [$$.myMoment(), $$.myMoment()],
+                  '本月': [$$.myMoment().startOf('month'), $$.myMoment().endOf('month')],
+                }}
+                allowClear
+                {...x}
+              />
+            );
+          }
+          if (x.type === 'TreeSelect') {
+            dom = (
+              <TreeSelect
+                showSearch
+                placeholder={placeholder}
+                dropdownStyle={{ maxHeight: 500, overflow: 'auto' }}
+                treeData={x.treedata}
+                treeDefaultExpandAll
+                allowClear
+                filterTreeNode={(inputValue, treeNode) => (treeNode.label.indexOf(inputValue) !== -1 ? true : false)}
+                {...x}
+              />
+            );
+          }
+          return (
+            <Col span={span} style={display && { display: searchMore ? 'block' : t < lineNum ? 'block' : 'none' }} key={t + 1}>
+              <Form.Item name={x.name} rules={[rules]} label={<div style={{ width: `${fontSize * labelLength}px` }}>{x.label}</div>}>
+                {dom}
+              </Form.Item>
+            </Col>
+          );
+        })}
+      </Row>
+      <Row style={{ marginTop: '16px' }}>
+        <Col span={24} style={{ textAlign: 'right' }}>
+          <Button className="public-buttonMargin" onClick={handleReset}>
+            重置
+          </Button>
+          <Button type="primary" htmlType="submit" onClick={handleSearch}>
+            查询
+          </Button>
+          {display && (
+            <span className="tableSearch-searchMore" onClick={() => setSearchMore(!searchMore)}>
+              {!searchMore ? '展开' : '折叠'}
+              <DownOutlined className={`tableSearch-searchMore-icon ${searchMore && 'tableSearch-searchMore-iconRotate'}`} />
+            </span>
+          )}
+        </Col>
+      </Row>
+    </Form>
+  );
+};
+
+TableSearch.propTypes = {
+  itemData: PropTypes.array,
+  labelLength: PropTypes.number,
+  rowNum: PropTypes.number,
+  handleReset: PropTypes.func,
+  handleSearch: PropTypes.func,
+};
+
+export default TableSearch;
diff --git a/gz-customerSystem/src/components/Search/index.less b/gz-customerSystem/src/components/Search/index.less
new file mode 100644
index 0000000..3d00342
--- /dev/null
+++ b/gz-customerSystem/src/components/Search/index.less
@@ -0,0 +1,16 @@
+@import '../../styles/theme.less';
+
+// 查看更多
+.tableSearch-searchMore {
+	color: @main-color;
+	margin-left: 16px;
+	cursor: pointer;
+
+	&-icon {
+		transition: transform 0.3s;
+	}
+
+	&-iconRotate {
+		transform: rotate(180deg);
+	}
+}
diff --git a/gz-customerSystem/src/components/personCard/index.jsx b/gz-customerSystem/src/components/personCard/index.jsx
new file mode 100644
index 0000000..b0fa5e3
--- /dev/null
+++ b/gz-customerSystem/src/components/personCard/index.jsx
@@ -0,0 +1,85 @@
+/*
+ * @Author: dminyi 1301963064@qq.com
+ * @Date: 2024-08-10 15:03:57
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @LastEditTime: 2024-08-12 14:45:28
+ * @FilePath: \gzDyh\gz-customerSystem\src\components\personCard\index.jsx
+ * @Description: 来访登记当事人卡片
+ */
+import React from 'react';
+import PropTypes from 'prop-types';
+import { Typography, Row, Col, Space } from 'antd';
+import { del } from '../../assets/images';
+
+const { Link, Text } = Typography;
+/**
+ * isCheck, // 是否无操作
+ * partyType, // applicant:申请人, respondent:被申请人
+ * data, // 当事人数据
+ * handleCheckParty, // 点击查看详情
+ * handleDeleteParty, // 删除当事人
+ */
+const PersonCard = ({ isCheck, partyType, data, handleCheckParty, handleDeleteParty }) => {
+    const remark = [{ label: '精神障碍', color: '#C64FBE' }, { label: '吸毒', color: '#D8A247' }, { label: '社区矫正', color: '#B82F6E' }, { label: '刑满释放', color: '#199C8F' }, { label: '流浪', color: '#3ECB7A' }, { label: '重点青少年', color: '#117AC1' }, { label: '涉稳涉访', color: '#6865D7' }, { label: '潜在风险', color: '#2661CE' }]
+
+    return (
+        <Row gutter={[24, 16]}>
+            {data.map((x, t) => (
+                <Col span={8} key={t}>
+                    <div className="public-personCard" style={{ cursor: 'pointer' }}>
+                        <div
+                            className={`public-personCard-card public-personCard-card-${partyType === 'applicant' ? 'blue' : 'orange'}`}
+                            onClick={() => handleCheckParty({ type: partyType, editType: 'check', values: x })}
+                        >
+                            {x.trueName.substr(0, 1)}
+                            <div className="public-personCard-card-check">查看</div>
+                            <img src={del} alt='' style={{ width: '16px', height: '16px', position: 'absolute', top: '-8px', left: '56px' }} />
+                        </div>
+                        <div className="public-personCard-content">
+                            <div className="public-personCard-title">
+                                <Text style={{ maxWidth: '80%', paddingRight: '8px' }} ellipsis={{ tooltip: x.trueName }}>
+                                    {x.trueName}
+                                </Text>
+                                <div className={`public-personCard-tag public-personCard-tag-${partyType === 'applicant' ? 'blue' : 'orange'}`}>
+                                    {x.perClassName}
+                                </div>
+                            </div>
+                            {
+                                x.person &&
+                                <>
+                                    <div>证件号码:{x.mobile}</div>
+                                    <div>联系方式:{x.agentStatus === '2' ? '有' : '无'}</div>
+                                </>
+                            }
+                            {x.company &&
+                                <>
+                                    <div>统一社会信用代码:{x.mobile}</div>
+                                    <div>法定代表人:{x.agentStatus === '2' ? '有' : '无'}</div>
+                                </>
+                            }
+                            {x.Respondent &&
+                                <Space style={{ display: 'flex', flexWrap: 'wrap' }}>
+                                    {remark.map((item, index) => (
+                                        <div key={index} style={{ lineHeight: '22px', padding: '0px 8px', backgroundColor: `${item.color}`, width: 'fit-content', borderRadius: '4px', marginTop: '4px' }}>{item.label}</div>
+                                    ))}
+                                </Space>
+                            }
+
+
+                        </div>
+                    </div>
+                </Col>
+            ))}
+        </Row>
+    );
+};
+
+PersonCard.propTypes = {
+    isCheck: PropTypes.bool,
+    partyType: PropTypes.string,
+    data: PropTypes.array,
+    handleCheckParty: PropTypes.func,
+    handleDeleteParty: PropTypes.func,
+};
+
+export default PersonCard;
\ No newline at end of file
diff --git a/gz-customerSystem/src/components/registerTab/index.jsx b/gz-customerSystem/src/components/registerTab/index.jsx
new file mode 100644
index 0000000..058db4e
--- /dev/null
+++ b/gz-customerSystem/src/components/registerTab/index.jsx
@@ -0,0 +1,47 @@
+/*
+ * @Author: dminyi 1301963064@qq.com
+ * @Date: 2024-08-10 10:08:15
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @LastEditTime: 2024-08-10 12:01:33
+ * @FilePath: \gzDyh\gz-customerSystem\src\components\registerTab\index.jsx
+ * @Description: 来访登记tab
+ */
+import React from 'react';
+import PropTypes from 'prop-types';
+import { Space } from 'antd';
+import { process } from '../../assets/images';
+import './index.less';
+
+const RegisterTab = ({ tabs, activeKey, style, onChange, keyStr = ['key', 'label'], border = false, img1 }) => {
+    return (
+        <div className={`registerTab ${border ? 'registerTab-border' : ''}`} style={style}>
+            <div style={{ width: '100%', display: 'flex' }} >
+                {tabs.map((x, t) => {
+                    return (
+                        <div
+                            onClick={() => onChange(x[keyStr[0]])}
+                            key={x[keyStr[0]]}
+                            className={`registerTab-tab ${activeKey === x[keyStr[0]] ? 'registerTab-active' : ''}`}
+                        >
+                            <div style={{ display: 'flex' }}>
+                                <div className='registerTab-tab-number' style={{ backgroundColor: activeKey === x[keyStr[0]] ? '#1A6FB8' : '#F2F3F5' }}><div className='registerTab-tab-number-inner' style={{ color: activeKey === x[keyStr[0]] ? '#ffff' : '' }}>{x[keyStr[0]]}</div></div>
+                                <div style={{color:'#1D2129',fontSize:'16px'}}>{x[keyStr[1]]}</div>
+                                {!x.img1 && <img src={process} alt='' className='img' />}
+                            </div>
+                        </div>
+                    );
+                })}
+            </div>
+        </div>
+    );
+};
+
+RegisterTab.propTypes = {
+    tabs: PropTypes.array,
+    activeKey: PropTypes.any,
+    style: PropTypes.object,
+    onChange: PropTypes.func,
+    keyStr: PropTypes.array,
+};
+
+export default RegisterTab;
\ No newline at end of file
diff --git a/gz-customerSystem/src/components/registerTab/index.less b/gz-customerSystem/src/components/registerTab/index.less
new file mode 100644
index 0000000..9cdadd4
--- /dev/null
+++ b/gz-customerSystem/src/components/registerTab/index.less
@@ -0,0 +1,72 @@
+@import '../../styles/theme.less';
+
+.registerTab {
+    padding: 16px 0px 18px 0px;
+    color: @text-color-secondary;
+    margin: 0px 16px;
+
+    &-border {
+        position: relative;
+
+        &::after {
+            content: '';
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 10px;
+            height: 1px;
+            background-color: @divider-color;
+        }
+    }
+
+    &-tab {
+        cursor: pointer;
+        display: flex;
+        align-items: center;
+        flex: 1 1 0%;
+        display: flex;
+        justify-content: center;
+        position: relative;
+
+        &:hover {
+            color: @main-color;
+        }
+
+        &-number {
+            border-radius: 32px;
+            margin-right: 8px;
+            &-inner{
+                margin: 0px 9px;
+                font-size: 16px;
+                line-height: 24px;
+                
+            }
+        }
+    }
+
+    &-active {
+        position: relative;
+        color: @main-color;
+        flex: 1 1 0%;
+        display: flex;
+        justify-content: center;
+
+        &::after {
+            content: '';
+            height: 2px;
+            width: 116px;
+            background-color: @main-color;
+            position: absolute;
+            left: 36%;
+            margin-left: -11px;
+            bottom: -18px;
+        }
+    }
+}
+
+.img{
+    width: 20px;
+    position: absolute;
+    right: 0px;
+    top: 3px;
+}
\ No newline at end of file
diff --git a/gz-customerSystem/src/router/router.js b/gz-customerSystem/src/router/router.js
index c855afd..b2223da 100644
--- a/gz-customerSystem/src/router/router.js
+++ b/gz-customerSystem/src/router/router.js
@@ -2,7 +2,7 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-03-28 11:22:41
- * @LastEditTime: 2023-12-25 16:24:22
+ * @LastEditTime: 2024-08-09 15:56:47
  * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description: 路由
@@ -134,6 +134,9 @@
 // 数据分析
 import DataSearch from "../views/statistic/dataSearch";
 
+//来访登记
+import Visit from "../views/register/visit"
+
 import Test from "../views/test";
 
 const Routers = () => {
@@ -204,6 +207,8 @@
 						<Route path="judicialDivision/judicialDivisionDetail" element={<JudicialDivisionDetail />} />
 						<Route path="myConfirmation" element={<MyConfirmation />} />
 						<Route path="judicialOverview" element={<JudicialOverview />} />
+						{/* 来访登记*/}
+						<Route path="visit" element={<Visit />} />
 						{/* 工作流模块 */}
 						<Route path="workflowTemplate" element={<WorkflowTemplate />} />
 						<Route path="workflowTemplate/workflowTemplateEdit" element={<WorkflowTemplateEdit />} />
@@ -216,6 +221,7 @@
 						<Route path="myAdjust/mediationWindowSuccess" element={<MediationWindowSuccess />} />
 					</Route>
 
+
 					<Route path="/operation" element={<Navigate to="/operation/personnel" />} />
 					{/* 基础信息管理 */}
 					<Route path="/operation" element={<Layout headerUserChange={headerUserChange} />}>
diff --git a/gz-customerSystem/src/styles/public.less b/gz-customerSystem/src/styles/public.less
index dd5b52c..9eb7bac 100644
--- a/gz-customerSystem/src/styles/public.less
+++ b/gz-customerSystem/src/styles/public.less
@@ -505,6 +505,172 @@
 	}
 }
 
+//来访登记当事人
+.public-personCard {
+	display: flex;
+	padding: 8px;
+
+	&-card {
+		position: relative;
+		width: 66px;
+		height: 66px;
+		border-radius: 10px;
+		font-size: 30px;
+		line-height: 66px;
+		text-align: center;
+		color: #ffffff;
+		margin-right: 16px;
+
+		&-blue {
+			background: @main-color;
+
+			.public-personCard-card-check,
+			.public-personCard-card-bottomRight {
+				color: #1890ff;
+			}
+		}
+
+		&-orange {
+			background: linear-gradient(135deg, #ff5500, rgba(255, 85, 0, 0.65) 100%);
+
+			.public-personCard-card-check,
+			.public-personCard-card-bottomRight {
+				color: #ff5500;
+			}
+		}
+
+		&:hover {
+			.public-personCard-card-check {
+				height: 32px;
+			}
+		}
+
+		&-check {
+			position: absolute;
+			bottom: 0;
+			width: 100%;
+			font-size: 12px;
+			height: 0;
+			transition: height 0.5s;
+			line-height: 32px;
+			text-align: center;
+			background-color: rgba(255, 255, 255, 0.9);
+			overflow: hidden;
+		}
+
+		&-bottomRight {
+			position: absolute;
+			bottom: 0;
+			right: 0;
+			background-color: rgba(255, 255, 255, 0.9);
+			overflow: hidden;
+			height: 18px;
+			font-size: 12px;
+			line-height: 14px;
+			border-top-left-radius: 10px;
+			padding: 2px 4px;
+		}
+	}
+
+	&-card-mini {
+		position: relative;
+		width: 24px;
+		height: 24px;
+		border-radius: 5px;
+		font-size: 12px;
+		line-height: 24px;
+		text-align: center;
+		color: #ffffff;
+
+		&-blue {
+			background: linear-gradient(138deg, #1890ff 0%, rgba(24, 144, 255, 0.75) 100%);
+
+			.public-personCard-card-check,
+			.public-personCard-card-bottomRight {
+				color: #1890ff;
+			}
+		}
+
+		&-orange {
+			background: linear-gradient(135deg, #ff5500, rgba(255, 85, 0, 0.65) 100%);
+
+			.public-personCard-card-check,
+			.public-personCard-card-bottomRight {
+				color: #ff5500;
+			}
+		}
+
+		&:hover {
+			.public-personCard-card-check {
+				height: 32px;
+			}
+		}
+
+		&-check {
+			position: absolute;
+			bottom: 0;
+			width: 100%;
+			font-size: 12px;
+			height: 0;
+			transition: height 0.5s;
+			line-height: 32px;
+			text-align: center;
+			background-color: rgba(255, 255, 255, 0.9);
+			overflow: hidden;
+		}
+
+		&-bottomRight {
+			position: absolute;
+			bottom: 0;
+			right: 0;
+			background-color: rgba(255, 255, 255, 0.9);
+			overflow: hidden;
+			height: 18px;
+			font-size: 12px;
+			line-height: 14px;
+			border-top-left-radius: 10px;
+			padding: 2px 4px;
+		}
+	}
+
+	&-content {
+		flex: 1;
+		overflow: hidden;
+	}
+
+	&-title {
+		display: flex;
+		align-items: center;
+	}
+
+	&-tag {
+		font-size: 12px;
+		line-height: 20px;
+		border-radius: 2px;
+		padding: 0 4px;
+		display: flex;
+		align-items: center;
+
+		&-blue {
+			background: #e6f7ff;
+			color: #1890ff;
+			border: 1px solid #91d5ff;
+		}
+
+		&-grey {
+			background: #fafafa;
+			color: rgba(0, 0, 0, 0.85);
+			border: 1px solid #d9d9d9;
+		}
+
+		&-orange {
+			background: #fff2e8;
+			color: #fa541c;
+			border: 1px solid #ffbb96;
+		}
+	}
+}
+
 // 警告颜色
 .public-danger {
 	color: @error-color;
diff --git a/gz-customerSystem/src/views/basicInformation/organization/index copy.jsx b/gz-customerSystem/src/views/basicInformation/organization/index copy.jsx
new file mode 100644
index 0000000..86858dc
--- /dev/null
+++ b/gz-customerSystem/src/views/basicInformation/organization/index copy.jsx
@@ -0,0 +1,386 @@
+/*
+ * @Company: hugeInfo
+ * @Author: ldh
+ * @Date: 2022-02-18 15:04:13
+ * @LastEditTime: 2024-08-06 15:57:16
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @Version: 1.0.0
+ * @Description: 组织架构
+ */
+import React, { useState, useEffect } from 'react';
+import { Input, Menu, Tooltip, Space } from 'antd';
+import { ReloadOutlined } from '@ant-design/icons';
+import Page from '../../../components/Page';
+import { AddOrEditOrganization, DepartmentTable, PersonnelModal, AddOrEditDept } from '../../../components/basicInformation/organization';
+import MyTree from '../../../components/MyTree';
+import * as $$ from '../../../utils/utility';
+
+const { Search } = Input;
+
+// 查询人员信息
+function getPersonsApi(data) {
+	return $$.ax.request({ url: 'ctUser/pageQuery', type: 'get', data, service: 'cust' });
+}
+
+// 获取组织结构
+function getOrganizationApi() {
+	return $$.ax.request({ url: 'ctUnit/listUnitTree', type: 'get', service: 'cust' });
+}
+
+// 新增 or 修改组织
+function setOrganizationApi(data) {
+	return $$.ax.request({ url: 'ctUnit/saveCtUnit', type: 'post', data, service: 'cust' });
+}
+
+// 删除组织
+function delOrganizationApi(id) {
+	return $$.ax.request({ url: `ctUnit/removeByIds?ids=${id}`, type: 'get', service: 'cust' });
+}
+
+// 获取部门详情
+function getDepartmentDataApi(organizationId) {
+	return $$.ax.request({ url: `ctUnit/getUnitAndDept?id=${organizationId}`, type: 'get', service: 'cust' });
+}
+
+// 新增 or 修改部门
+function setDeptApi(data) {
+	return $$.ax.request({ url: 'ctDept/saveCtDept', type: 'post', data, service: 'cust' });
+}
+
+// 删除部门
+function delDeptApi(deptId) {
+	return $$.ax.request({ url: `ctDept/removeByIds?ids=${deptId}`, type: 'get', service: 'cust' });
+}
+
+const Organization = () => {
+	// 是否是新增 or 修改组织
+	const [isAddOrEdit, setIsAddOrEdit] = useState(false);
+
+	// 是否新增 or 修改部门
+	const [isAddOrEditDept, setIsAddOrEditDept] = useState(false);
+
+	// 查看人员modal
+	const [modalData, setModalData] = useState({ visible: false, title: '', data: [], total: 0 });
+
+	// 组织数据
+	const [organizationData, setOrganizationData] = useState([]);
+
+	// 当前选择组织
+	const [organizationActive, setOrganizationActive] = useState({});
+
+	// 新增 or 修改组织数据
+	const [organizationEditData, setOrganizationEditData] = useState({ active: {} });
+
+	// 新增 or 修改部门数据
+	const [deptEditData, setDeptEditData] = useState({});
+
+	// 组织查询
+	const [organizationSearch, setOrganizationSearch] = useState({ value: '', searchValue: '' });
+
+	// 当前选择组织下的部门数据
+	const [departmentData, setDepartmentData] = useState([]);
+
+	// 选择组织
+	function handleOrganization(value) {
+		getDepartmentData({ organizationId: value.id });
+	}
+
+	// 组织查询
+	function handleSearchOrganization(value) {
+		setOrganizationSearch({ ...organizationSearch, searchValue: value });
+	}
+
+	// 点击删除组织
+	async function handleDelOrganization(value) {
+		if (value.children && value.children.length > 0) {
+			$$.info({ type: 'warning', content: '该组织下存在下级组织, 不支持删除! 请先清空下级组织' });
+			return false;
+		}
+		let visible = false;
+		const res = await getDepartmentDataApi(value.id);
+		if (res.type) {
+			if (res.data.countCtDept) {
+				$$.info({ type: 'warning', content: '该组织下存在部门, 不支持删除! 请先清空部门' });
+				visible = true;
+			}
+		}
+		if (!visible) {
+			$$.modalInfo({
+				content: `确认删除${value.name}吗?`,
+				onOk: () => delOrganization({ organizationId: value.id }),
+			});
+		}
+	}
+
+	// 查看部门人员 or 关闭modal
+	function handlePersonnelModal(record, visible) {
+		if (visible) {
+			getPersons({ unitId: record.unitId, deptId: record.id, page: 1, size: 10 }, record.name);
+		} else {
+			setModalData({ visible });
+		}
+	}
+
+	// 获取人员信息
+	async function getPersons(submitData, title) {
+		global.setSpinning(true);
+		const res = await getPersonsApi(submitData);
+		global.setSpinning(false);
+		if (res.type) {
+			let resData = res.data || {};
+			setModalData({
+				visible: true,
+				title: title || modalData.title,
+				data: resData.ctUserPage?.content,
+				total: resData.ctUserPage?.totalElements,
+				search: { page: submitData.page, size: submitData.size, unitId: submitData.unitId, deptId: submitData.deptId },
+			});
+		}
+	}
+
+	// 获取组织数据
+	async function getOrganization(firstLoading, reset) {
+		global.setSpinning(true);
+		const res = await getOrganizationApi();
+		global.setSpinning(false);
+		if (res.type) {
+			let data = res.data || [],
+				active = {};
+				console.log(data, 'data');
+			if (data.length > 0 && (firstLoading || reset)) {
+				active = data[0];
+			}
+			setOrganizationData(data);
+			if (data.length > 0) {
+				if (firstLoading || reset) {
+					setOrganizationSearch({ value: '', searchValue: '' });
+				}
+				getDepartmentData({ organizationId: active.id ? active.id : organizationActive.id });
+			}
+		}
+	}
+
+	// 新增 or 修改组织
+	async function setOrganization(submitType, values, form) {
+		global.setSpinning(true);
+		let data = {
+			...organizationEditData.active,
+			...values,
+			id: organizationEditData.type === 'change' ? organizationEditData.active.id : '',
+			parentId:
+				organizationEditData.type === 'change'
+					? organizationEditData.active.parentId
+					: organizationEditData.type === 'upAdd'
+					? ''
+					: organizationEditData.active.id,
+			childId: organizationEditData.type === 'upAdd' ? organizationEditData.active.id : '',
+		};
+		let submitData = data.id ? { ...organizationActive.active, ...data } : data;
+		const res = await setOrganizationApi(submitData);
+		global.setSpinning(false);
+		if (res.type) {
+			$$.infoSuccess({ content: '操作成功' });
+			if (submitType === '1') {
+				setIsAddOrEdit(false);
+			} else {
+				form.resetFields();
+			}
+			getOrganization();
+		}
+	}
+
+	// 删除组织
+	async function delOrganization({ organizationId }) {
+		global.setSpinning(true);
+		const res = await delOrganizationApi(organizationId);
+		global.setSpinning(false);
+		if (res.type) {
+			$$.infoSuccess({ content: '删除成功!' });
+			if (organizationId === organizationActive.id) {
+				getOrganization('', 'reset');
+			} else {
+				getOrganization();
+			}
+		}
+	}
+
+	// 获取部门详情
+	async function getDepartmentData({ organizationId }) {
+		global.setSpinning(true);
+		const res = await getDepartmentDataApi(organizationId);
+		global.setSpinning(false);
+		if (res.type) {
+			setOrganizationActive(res.data);
+			setDepartmentData(res.data.ctDepts || []);
+		}
+	}
+
+	// 新增 or 修改部门
+	async function setDept(submitType, values, form) {
+		let submitData = {
+			...deptEditData,
+			...values,
+			unitId: organizationActive.id,
+			id: deptEditData.id === 'addOneDept' || deptEditData.id === 'addSubordinateDept' ? '' : deptEditData.id,
+			parentId: deptEditData.id === 'addOneDept' ? '' : deptEditData.parentId,
+		};
+    global.setSpinning(true);
+		const res = await setDeptApi(submitData);
+		global.setSpinning(false);
+		if (res.type) {
+			$$.infoSuccess({ content: '操作成功' });
+			if (submitType === '1') {
+				setIsAddOrEditDept(false);
+			} else {
+				form.resetFields();
+			}
+			getDepartmentData({ organizationId: organizationActive.id });
+		}
+	}
+
+	// 删除部门
+	async function delDept({ deptId }) {
+		global.setSpinning(true);
+		const res = await delDeptApi(deptId);
+		global.setSpinning(false);
+		if (res.type) {
+			$$.infoSuccess({ content: '删除成功' });
+			getDepartmentData({ organizationId: organizationActive.id });
+		}
+	}
+
+	useEffect(() => {
+		getOrganization('firstLoading');
+	}, []);
+
+	// 组织操作
+	const dropdownOptions = ({ num, value }) => (
+		<Menu
+			onClick={({ key }) => {
+				console.log(key, value,'key','value')
+				if (key === 'delete') {
+					handleDelOrganization(value);
+				} else {
+					setOrganizationEditData({ type: key, active: value });
+					setIsAddOrEdit(true);
+				}
+			}}
+		>
+			{num === 1 && <Menu.Item key="upAdd">新增上级组织</Menu.Item>}
+			<Menu.Item key="downAdd">新增下级组织</Menu.Item>
+			<Menu.Item key="change">修改</Menu.Item>
+			{num !== 1 && <Menu.Item key="delete">删除</Menu.Item>}
+		</Menu>
+	);
+
+	function addOrEditBreadcrumb() {
+		console.log('111111')
+		let obj = isAddOrEdit
+			? {
+					title: organizationEditData.type === 'change' ? '修改组织' : organizationEditData.type === 'upAdd' ? '新增上级组织' : '新增下级组织',
+			  }
+			: {
+					title: isAddOrEditDept === 'changeDept' ? '修改部门' : isAddOrEditDept === 'addOneDept' ? '新增部门' : '新增下级部门',
+			  };
+		return {
+			breadcrumbData: [
+				{ title: '基础信息管理' },
+				{
+					title: '组织架构',
+					click: () => {
+						setIsAddOrEdit(false);
+						setIsAddOrEditDept(false);
+					},
+				},
+				obj,
+			],
+			title:
+				isAddOrEditDept === 'addSubordinateDept' || isAddOrEditDept === 'changeDept'
+					? deptEditData.name
+					: isAddOrEditDept
+					? organizationActive.name
+					: organizationEditData.active.name,
+			handleReturn: () => {
+				setIsAddOrEdit(false);
+				setIsAddOrEditDept(false);
+			},
+		};
+	}
+
+	return (
+		<Page
+			pageHead={
+				isAddOrEdit || isAddOrEditDept
+					? addOrEditBreadcrumb()
+					: { breadcrumbData: [{ title: '基础信息管理' }, { title: '组织架构' }], title: '组织架构' }
+			}
+		>
+			<div style={{ display: isAddOrEdit || isAddOrEditDept ? 'none' : '' }} className="organization">
+				<div className="organization-bg">
+					<div className="organization-side">
+						<Space size="middle" className="organization-side-search">
+							<Search
+								placeholder="请搜索组织"
+								value={organizationSearch.value}
+								onChange={(e) => setOrganizationSearch({ ...organizationSearch, value: e.target.value })}
+								onSearch={handleSearchOrganization}
+							/>
+							<Tooltip title="刷新">
+								<ReloadOutlined style={{ fontSize: 16 }} className="public-a" onClick={() => getOrganization('', 'reset')} />
+							</Tooltip>
+						</Space>
+						<div className="organization-side-tree">
+							{organizationData.length > 0 ? (
+								<MyTree
+									active={organizationActive.id}
+									keyStr="id"
+									nameStr="name"
+									data={organizationData}
+									searchValue={organizationSearch.searchValue}
+									dropdownOption={dropdownOptions}
+									isChildren={true}
+									handleClickTreeNode={handleOrganization}
+								/>
+							) : (
+								$$.MyEmpty({ description: '抱歉!暂无组织数据,请先添加组织', style: { margin: '50px auto' } })
+							)}
+						</div>
+					</div>
+					<div className="organization-divider"></div>
+					{organizationData.length > 0 ? (
+						<DepartmentTable
+							organizationActive={organizationActive}
+							departmentData={departmentData}
+							handlePersonnelModal={handlePersonnelModal}
+							handleChangeIsAddOrEdit={(type, record) => {
+								setIsAddOrEditDept(type);
+								setDeptEditData(record || {});
+							}}
+							handleDelDept={delDept}
+						/>
+					) : (
+						$$.MyEmpty({ description: '抱歉!暂无组织数据,请先添加组织', style: { margin: '100px auto' } })
+					)}
+				</div>
+			</div>
+			{/* 新增 or 修改组织page */}
+			<AddOrEditOrganization
+				isAddOrEdit={isAddOrEdit}
+				type={organizationEditData.type}
+				organizationActive={organizationEditData.active}
+				handleFinishForm={setOrganization}
+			/>
+			{/* 新增 or 修改部门page */}
+			<AddOrEditDept
+				isAddOrEditDept={isAddOrEditDept}
+				deptActive={deptEditData}
+				unMatchUsers={organizationActive.unMatchUsers || []}
+				handleFinishForm={setDept}
+			/>
+			{/*  查看人员Modal */}
+			{modalData.visible && <PersonnelModal modalData={modalData} handlePersonnelModal={handlePersonnelModal} handleSearch={getPersons} />}
+		</Page>
+	);
+};
+
+export default Organization;
diff --git a/gz-customerSystem/src/views/basicInformation/organization/index.jsx b/gz-customerSystem/src/views/basicInformation/organization/index.jsx
index 86858dc..67d987c 100644
--- a/gz-customerSystem/src/views/basicInformation/organization/index.jsx
+++ b/gz-customerSystem/src/views/basicInformation/organization/index.jsx
@@ -1,386 +1,400 @@
 /*
- * @Company: hugeInfo
- * @Author: ldh
- * @Date: 2022-02-18 15:04:13
- * @LastEditTime: 2024-08-06 15:57:16
+ * @Author: dminyi 1301963064@qq.com
+ * @Date: 2024-08-09 09:59:43
  * @LastEditors: dminyi 1301963064@qq.com
- * @Version: 1.0.0
- * @Description: 组织架构
+ * @LastEditTime: 2024-08-12 20:30:15
+ * @FilePath: \gzDyh\gz-customerSystem\src\views\basicInformation\organization\index.jsx
+ * @Description: 来访登记
  */
-import React, { useState, useEffect } from 'react';
-import { Input, Menu, Tooltip, Space } from 'antd';
-import { ReloadOutlined } from '@ant-design/icons';
-import Page from '../../../components/Page';
-import { AddOrEditOrganization, DepartmentTable, PersonnelModal, AddOrEditDept } from '../../../components/basicInformation/organization';
-import MyTree from '../../../components/MyTree';
+
+import React, { useState, useEffect } from "react";
+import NewPage from '../../../components/NewPage';
+import RegisterTab from '../../../components/registerTab';
+import PersonCard from '../../../components/personCard';
 import * as $$ from '../../../utils/utility';
+import { add, question1 } from '../../../assets/images';
+import { Row, Col, Space, Tooltip } from 'antd';
+import { Form, Input, Button, Radio, Select, DatePicker, Cascader } from '@arco-design/web-react';
+import "@arco-design/web-react/dist/css/arco.css";
+import TableView from '../../../components/TableView';
 
-const { Search } = Input;
+const RadioGroup = Radio.Group;// 根据调解案号获取纠纷登记信息
+const FormItem = Form.Item;
+const Option = Select.Option;
+const InputSearch = Input.Search;
 
-// 查询人员信息
-function getPersonsApi(data) {
-	return $$.ax.request({ url: 'ctUser/pageQuery', type: 'get', data, service: 'cust' });
+
+
+function getCaseDataApi(submitData) {
+	return $$.ax.request({ url: `caseInfo/getCaseInfo?id=${submitData}`, type: 'get', service: 'mediate' });
 }
 
-// 获取组织结构
-function getOrganizationApi() {
-	return $$.ax.request({ url: 'ctUnit/listUnitTree', type: 'get', service: 'cust' });
-}
 
-// 新增 or 修改组织
-function setOrganizationApi(data) {
-	return $$.ax.request({ url: 'ctUnit/saveCtUnit', type: 'post', data, service: 'cust' });
-}
-
-// 删除组织
-function delOrganizationApi(id) {
-	return $$.ax.request({ url: `ctUnit/removeByIds?ids=${id}`, type: 'get', service: 'cust' });
-}
-
-// 获取部门详情
-function getDepartmentDataApi(organizationId) {
-	return $$.ax.request({ url: `ctUnit/getUnitAndDept?id=${organizationId}`, type: 'get', service: 'cust' });
-}
-
-// 新增 or 修改部门
-function setDeptApi(data) {
-	return $$.ax.request({ url: 'ctDept/saveCtDept', type: 'post', data, service: 'cust' });
-}
-
-// 删除部门
-function delDeptApi(deptId) {
-	return $$.ax.request({ url: `ctDept/removeByIds?ids=${deptId}`, type: 'get', service: 'cust' });
-}
 
 const Organization = () => {
-	// 是否是新增 or 修改组织
-	const [isAddOrEdit, setIsAddOrEdit] = useState(false);
 
-	// 是否新增 or 修改部门
-	const [isAddOrEditDept, setIsAddOrEditDept] = useState(false);
 
-	// 查看人员modal
-	const [modalData, setModalData] = useState({ visible: false, title: '', data: [], total: 0 });
+	// tabs当前选择的标签信息
+	const [tabsActive, setTabsActive] = useState('1');
+	const [visible, setVisible] = useState(false);
+	const [selectedCity, setSelectedCity] = useState('Beijing');
 
-	// 组织数据
-	const [organizationData, setOrganizationData] = useState([]);
+	const tabs = [
+		{ label: '事件登记', key: '1' },
+		{ label: '事件流转', key: '2' },
+		{ label: '办理反馈', key: '3' },
+		{ label: '申请结案', key: '4' },
+		{ label: '当事人评价', key: '5' },
+		{ label: '结案归档', key: '6', img1: true },
 
-	// 当前选择组织
-	const [organizationActive, setOrganizationActive] = useState({});
+	];
 
-	// 新增 or 修改组织数据
-	const [organizationEditData, setOrganizationEditData] = useState({ active: {} });
 
-	// 新增 or 修改部门数据
-	const [deptEditData, setDeptEditData] = useState({});
+	const fakeData = [
+		{
+			id: 3,
+			perClassName: '申请方当事人',
+			trueName: '蓝海科技有限公司',
+			mobile: '13800000002',
+			agentStatus: '1', // 无代理人
+			company: true
+		},
+		{
+			id: 1,
+			perClassName: '申请方代理人',
+			trueName: '王小明',
+			mobile: '13800000001',
+			agentStatus: '2', // 有代理人
+			person: true
+		},
+		{
+			id: 2,
+			perClassName: '被申请方当事人',
+			trueName: '蓝海科技有限公司',
+			mobile: '13800000002',
+			agentStatus: '1', // 无代理人
+			person: true,
+			Respondent: true
+		},
 
-	// 组织查询
-	const [organizationSearch, setOrganizationSearch] = useState({ value: '', searchValue: '' });
+	];
 
-	// 当前选择组织下的部门数据
-	const [departmentData, setDepartmentData] = useState([]);
+	const fakeData1 = [
+		{
+			id: 1,
+			caseNo: 'A20230101',
+			judicNo: 'J20230101',
+			perClassName: '自然人',
+			inputUserName: '张三',
+			mediateUserName: '李四',
+			judgeName: '王五',
+			mediator: '赵六',
+			handlerUserName: '钱七',
+			returnUserName: '孙八',
+			expireTime: '2023-08-10T08:00:00.000Z',
+			processName: '进行中',
+			otherMediator: '周九',
+			canalName: '网络',
+			judicResult: '通过',
+			assistName: '吴十',
+			mediTypeName: '民事调解',
+			serieStatus: '1', // 1 表示非系列案,2 表示系列案
+			// 更多字段...
+		},
+		// 更多数据...
+	];
 
-	// 选择组织
-	function handleOrganization(value) {
-		getDepartmentData({ organizationId: value.id });
-	}
+	// 列配置
+	const fakeColumns = [
+		{
+			title: '序号',
+			dataIndex: 'caseNo',
+			key: 'caseNo',
+		},
+		{
+			title: '材料类型',
+			dataIndex: 'judicNo',
+			key: 'judicNo',
+		},
+		{
+			title: '材料数量',
+			dataIndex: 'perClassName',
+			key: 'perClassName',
+		},
+		{
+			title: '材料名称',
+			dataIndex: 'perClassName',
+			key: 'perClassName',
+		},
+		{
+			title: '上传时间',
+			dataIndex: 'perClassName',
+			key: 'perClassName',
+		},
+		{
+			title: '操作',
+			dataIndex: 'perClassName',
+			key: 'perClassName',
+			render: (text) => (
+				<div style={{ display: 'flex', color: '#1A6FB8', gap: '16px' }}>
+					<div>查看</div>
+					<div>删除</div>
+					<div>下载</div>
+					<div>上传</div>
+				</div>
+			)
+		},
+		// 更多列配置...
+	];
 
-	// 组织查询
-	function handleSearchOrganization(value) {
-		setOrganizationSearch({ ...organizationSearch, searchValue: value });
-	}
-
-	// 点击删除组织
-	async function handleDelOrganization(value) {
-		if (value.children && value.children.length > 0) {
-			$$.info({ type: 'warning', content: '该组织下存在下级组织, 不支持删除! 请先清空下级组织' });
-			return false;
-		}
-		let visible = false;
-		const res = await getDepartmentDataApi(value.id);
-		if (res.type) {
-			if (res.data.countCtDept) {
-				$$.info({ type: 'warning', content: '该组织下存在部门, 不支持删除! 请先清空部门' });
-				visible = true;
-			}
-		}
-		if (!visible) {
-			$$.modalInfo({
-				content: `确认删除${value.name}吗?`,
-				onOk: () => delOrganization({ organizationId: value.id }),
-			});
-		}
-	}
-
-	// 查看部门人员 or 关闭modal
-	function handlePersonnelModal(record, visible) {
-		if (visible) {
-			getPersons({ unitId: record.unitId, deptId: record.id, page: 1, size: 10 }, record.name);
-		} else {
-			setModalData({ visible });
-		}
-	}
-
-	// 获取人员信息
-	async function getPersons(submitData, title) {
-		global.setSpinning(true);
-		const res = await getPersonsApi(submitData);
-		global.setSpinning(false);
-		if (res.type) {
-			let resData = res.data || {};
-			setModalData({
-				visible: true,
-				title: title || modalData.title,
-				data: resData.ctUserPage?.content,
-				total: resData.ctUserPage?.totalElements,
-				search: { page: submitData.page, size: submitData.size, unitId: submitData.unitId, deptId: submitData.deptId },
-			});
-		}
-	}
-
-	// 获取组织数据
-	async function getOrganization(firstLoading, reset) {
-		global.setSpinning(true);
-		const res = await getOrganizationApi();
-		global.setSpinning(false);
-		if (res.type) {
-			let data = res.data || [],
-				active = {};
-				console.log(data, 'data');
-			if (data.length > 0 && (firstLoading || reset)) {
-				active = data[0];
-			}
-			setOrganizationData(data);
-			if (data.length > 0) {
-				if (firstLoading || reset) {
-					setOrganizationSearch({ value: '', searchValue: '' });
-				}
-				getDepartmentData({ organizationId: active.id ? active.id : organizationActive.id });
-			}
-		}
-	}
-
-	// 新增 or 修改组织
-	async function setOrganization(submitType, values, form) {
-		global.setSpinning(true);
-		let data = {
-			...organizationEditData.active,
-			...values,
-			id: organizationEditData.type === 'change' ? organizationEditData.active.id : '',
-			parentId:
-				organizationEditData.type === 'change'
-					? organizationEditData.active.parentId
-					: organizationEditData.type === 'upAdd'
-					? ''
-					: organizationEditData.active.id,
-			childId: organizationEditData.type === 'upAdd' ? organizationEditData.active.id : '',
-		};
-		let submitData = data.id ? { ...organizationActive.active, ...data } : data;
-		const res = await setOrganizationApi(submitData);
-		global.setSpinning(false);
-		if (res.type) {
-			$$.infoSuccess({ content: '操作成功' });
-			if (submitType === '1') {
-				setIsAddOrEdit(false);
-			} else {
-				form.resetFields();
-			}
-			getOrganization();
-		}
-	}
-
-	// 删除组织
-	async function delOrganization({ organizationId }) {
-		global.setSpinning(true);
-		const res = await delOrganizationApi(organizationId);
-		global.setSpinning(false);
-		if (res.type) {
-			$$.infoSuccess({ content: '删除成功!' });
-			if (organizationId === organizationActive.id) {
-				getOrganization('', 'reset');
-			} else {
-				getOrganization();
-			}
-		}
-	}
-
-	// 获取部门详情
-	async function getDepartmentData({ organizationId }) {
-		global.setSpinning(true);
-		const res = await getDepartmentDataApi(organizationId);
-		global.setSpinning(false);
-		if (res.type) {
-			setOrganizationActive(res.data);
-			setDepartmentData(res.data.ctDepts || []);
-		}
-	}
-
-	// 新增 or 修改部门
-	async function setDept(submitType, values, form) {
-		let submitData = {
-			...deptEditData,
-			...values,
-			unitId: organizationActive.id,
-			id: deptEditData.id === 'addOneDept' || deptEditData.id === 'addSubordinateDept' ? '' : deptEditData.id,
-			parentId: deptEditData.id === 'addOneDept' ? '' : deptEditData.parentId,
-		};
-    global.setSpinning(true);
-		const res = await setDeptApi(submitData);
-		global.setSpinning(false);
-		if (res.type) {
-			$$.infoSuccess({ content: '操作成功' });
-			if (submitType === '1') {
-				setIsAddOrEditDept(false);
-			} else {
-				form.resetFields();
-			}
-			getDepartmentData({ organizationId: organizationActive.id });
-		}
-	}
-
-	// 删除部门
-	async function delDept({ deptId }) {
-		global.setSpinning(true);
-		const res = await delDeptApi(deptId);
-		global.setSpinning(false);
-		if (res.type) {
-			$$.infoSuccess({ content: '删除成功' });
-			getDepartmentData({ organizationId: organizationActive.id });
-		}
-	}
-
-	useEffect(() => {
-		getOrganization('firstLoading');
-	}, []);
-
-	// 组织操作
-	const dropdownOptions = ({ num, value }) => (
-		<Menu
-			onClick={({ key }) => {
-				console.log(key, value,'key','value')
-				if (key === 'delete') {
-					handleDelOrganization(value);
-				} else {
-					setOrganizationEditData({ type: key, active: value });
-					setIsAddOrEdit(true);
-				}
-			}}
-		>
-			{num === 1 && <Menu.Item key="upAdd">新增上级组织</Menu.Item>}
-			<Menu.Item key="downAdd">新增下级组织</Menu.Item>
-			<Menu.Item key="change">修改</Menu.Item>
-			{num !== 1 && <Menu.Item key="delete">删除</Menu.Item>}
-		</Menu>
-	);
-
-	function addOrEditBreadcrumb() {
-		console.log('111111')
-		let obj = isAddOrEdit
-			? {
-					title: organizationEditData.type === 'change' ? '修改组织' : organizationEditData.type === 'upAdd' ? '新增上级组织' : '新增下级组织',
-			  }
-			: {
-					title: isAddOrEditDept === 'changeDept' ? '修改部门' : isAddOrEditDept === 'addOneDept' ? '新增部门' : '新增下级部门',
-			  };
-		return {
-			breadcrumbData: [
-				{ title: '基础信息管理' },
+	const options = [
+		{
+			value: 'beijing',
+			label: 'Beijing',
+			children: [
 				{
-					title: '组织架构',
-					click: () => {
-						setIsAddOrEdit(false);
-						setIsAddOrEditDept(false);
-					},
+					value: 'Beijing',
+					label: 'Beijing',
+					children: [
+						{
+							value: 'chaoyang',
+							label: 'Chaoyang',
+						},
+					],
 				},
-				obj,
 			],
-			title:
-				isAddOrEditDept === 'addSubordinateDept' || isAddOrEditDept === 'changeDept'
-					? deptEditData.name
-					: isAddOrEditDept
-					? organizationActive.name
-					: organizationEditData.active.name,
-			handleReturn: () => {
-				setIsAddOrEdit(false);
-				setIsAddOrEditDept(false);
-			},
-		};
+		},
+		{
+			value: 'shanghai',
+			label: 'Shanghai',
+			children: [
+				{
+					value: 'shanghaishi',
+					label: 'Shanghai',
+					children: [
+						{
+							value: 'huangpu',
+							label: 'Huangpu',
+						},
+					],
+				},
+			],
+		},
+	];
+
+	function onSelect(dateString, date) {
+		console.log('onSelect', dateString, date);
 	}
+
+	function onChange(dateString, date) {
+		console.log('onChange: ', dateString, date);
+	}
+
+	function onOk(dateString, date) {
+		console.log('onOk: ', dateString, date);
+	}
+
+
+	function handleCheckParty() {
+		console.log('check party');
+	}
+
+
+	const onReload = () => {
+		console.log('表格数据刷新');
+	};
+
 
 	return (
-		<Page
-			pageHead={
-				isAddOrEdit || isAddOrEditDept
-					? addOrEditBreadcrumb()
-					: { breadcrumbData: [{ title: '基础信息管理' }, { title: '组织架构' }], title: '组织架构' }
-			}
-		>
-			<div style={{ display: isAddOrEdit || isAddOrEditDept ? 'none' : '' }} className="organization">
-				<div className="organization-bg">
-					<div className="organization-side">
-						<Space size="middle" className="organization-side-search">
-							<Search
-								placeholder="请搜索组织"
-								value={organizationSearch.value}
-								onChange={(e) => setOrganizationSearch({ ...organizationSearch, value: e.target.value })}
-								onSearch={handleSearchOrganization}
-							/>
-							<Tooltip title="刷新">
-								<ReloadOutlined style={{ fontSize: 16 }} className="public-a" onClick={() => getOrganization('', 'reset')} />
-							</Tooltip>
-						</Space>
-						<div className="organization-side-tree">
-							{organizationData.length > 0 ? (
-								<MyTree
-									active={organizationActive.id}
-									keyStr="id"
-									nameStr="name"
-									data={organizationData}
-									searchValue={organizationSearch.searchValue}
-									dropdownOption={dropdownOptions}
-									isChildren={true}
-									handleClickTreeNode={handleOrganization}
+		<div style={{ position: 'relative' }}>
+			<NewPage
+				pageHead={
+					{ breadcrumbData: [{ title: '工作台' }, { title: '来访登记' }], title: '来访登记' }
+				}
+			>
+				<RegisterTab tabs={tabs} activeKey={tabsActive} onChange={(activeKey) => setTabsActive(activeKey)} style={{ background: '#fff' }} />
+				{tabsActive === '1' &&
+					<div style={{ backgroundColor: '#fff', margin: '8px 16px 0px 16px', padding: '12px 16px 16px 16px' }}>
+						<Col span={24} style={{ display: 'flex', alignItems: 'center' }}>
+							<Space size='small'>
+								<div className='MediationInfo-subTitle' style={{ marginTop: '-6px' }}></div><h5>当事人信息</h5>
+							</Space>
+						</Col>
+						<div style={{ display: 'flex' }}>
+							<div style={{ flex: 3 }}>
+								<PersonCard
+									isCheck={true}
+									partyType={'applicant'} // 这里设定为申请人
+									data={fakeData}
+									handleCheckParty={handleCheckParty}
 								/>
-							) : (
-								$$.MyEmpty({ description: '抱歉!暂无组织数据,请先添加组织', style: { margin: '50px auto' } })
-							)}
+							</div>
+							<div style={{ flex: 1, }}>
+								<Tooltip
+									title={(<Space direction='vertical '><div style={{ backgroundColor: '#1A6FB8', padding: '5px 12px', display: 'flex', justifyContent: 'center' }}>申请方</div><div style={{ backgroundColor: '#FA8C16', padding: '5px 12px', display: 'flex', justifyContent: 'center' }}>被申请方</div><div style={{ backgroundColor: '#3491FA', padding: '5px 12px', display: 'flex', justifyContent: 'center' }}>代理人</div></Space>)}
+									placement="right" color='#ffff' overlayStyle={{}}>
+									<div onClick={() => setVisible(true)} style={{ backgroundColor: '#E5E6EB', borderRadius: '50%', width: '64px', height: '64px' }}>
+										<img src={add} alt="添加" style={{ width: '32px', margin: '16px' }} />
+									</div>
+								</Tooltip>
+							</div>
+						</div>
+						<Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
+							<Space size='small'>
+								<div className='MediationInfo-subTitle' style={{ marginTop: '-6px' }}></div><h5>纠纷基本情况</h5>
+							</Space>
+						</Col>
+						<Form
+							layout='vertical'
+						>
+							<Row gutter={[32, 0]}>
+								<Col span={8}>
+									<FormItem label='事项等级' field='username' tooltip={<div className='question'>Username is required </div>} >
+										<Select defaultValue='三级' placeholder='Select city' allowClear>
+											{['一级', '二级', '三级', '四级'].map((option, index) => (
+												<Option key={option} value={option}>
+													{option}
+												</Option>
+											))}
+										</Select>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label='来访时间' >
+										<DatePicker
+											style={{ width: '100%' }}
+											format='YYYY-MM-DD HH:mm'
+											onChange={onChange}
+											onSelect={onSelect}
+											onOk={onOk}
+										/>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label='来访人数(人)'>
+										<Input placeholder='请填写' />
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem
+										label={(<div style={{ display: 'flex' }}>纠纷类型<div className="must">必填</div></div>)}>
+										<Select initialValue='Beijing' placeholder='请选择' allowClear>
+											{['邻里纠纷', '劳动争议纠纷', '劳动纠纷', '经济纠纷'].map((option, index) => (
+												<Option key={option} value={option}>
+													{option}
+												</Option>
+											))}
+										</Select>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label={(<div style={{ display: 'flex' }}>纠纷发生时间<div className="must">必填</div></div>)}>
+										<DatePicker
+											style={{ width: '100%' }}
+											placeholder='请选择'
+											format='YYYY-MM-DD HH:mm'
+											onChange={onChange}
+											onSelect={onSelect}
+											onOk={onOk}
+										/>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label={(<div style={{ display: 'flex' }}>纠纷发生地点<div className="must">必填</div></div>)}>
+										<InputSearch
+											searchButton='选择'
+											defaultValue='Search content'
+											placeholder='选择纠纷发生地的详细地址'
+										/>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label='问题属地'>
+										<Cascader
+											placeholder='Please select ...'
+											options={options}
+											onChange={(value, option) => {
+												console.log(value, option);
+											}}
+											defaultValue={['shanghai', 'shanghaishi', 'huangpu']}
+											allowClear
+										/>
+									</FormItem>
+								</Col>
+								<Col span={8}>
+									<FormItem label='涉及人数(人)'>
+										<Input placeholder='请填写' />
+									</FormItem>
+								</Col>
+
+								<Col span={8}>
+									<FormItem label='涉及金额(元)'>
+										<Input placeholder='请填写' />
+									</FormItem>
+								</Col>
+								<Col span={24}>
+									<FormItem
+										label={<div style={{ display: 'flex' }}>事项概况<Tooltip title='1111'><img src={question1} alt="" style={{ width: '13px', height: '13px', marginTop: '4px', marginLeft: '4px' }} /></Tooltip><div className="must">必填</div><div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px' }}>识别上传材料</div></div>}
+									>
+										<Input.TextArea
+											maxLength={2000}
+											showWordLimit
+											rows={5}
+											placeholder='请填写问题发生的起因、过程和结果'
+											wrapperStyle={{ width: '100%' }}
+										/>
+									</FormItem>
+								</Col>
+								<Col span={24}>
+									<FormItem
+										label={<div style={{ display: 'flex' }}>申请请求<Tooltip title='1111'><img src={question1} alt="" style={{ width: '13px', height: '13px', marginTop: '4px', marginLeft: '4px' }} /></Tooltip><div className="must">必填</div><div style={{ marginLeft: '8px', color: '#1A6FB8', fontSize: '14px' }}>识别上传材料</div></div>}
+									>
+										<Input.TextArea
+											maxLength={2000}
+											showWordLimit
+											rows={5}
+											placeholder='希望相关部门如何处理,建议分条描述,如请求1,请求2...'
+											wrapperStyle={{ width: '100%' }}
+										/>
+									</FormItem>
+								</Col>
+								<div style={{ marginLeft: '16px', padding: '12px 16px', backgroundColor: '#EFF8FF', borderRadius: '2px' }}>
+									<FormItem label='是否重大矛盾纠纷' style={{ marginBottom: '-20px' }}>
+										<RadioGroup options={['A', 'B']} style={{ marginBottom: 20 }} />
+									</FormItem>
+								</div>
+							</Row>
+
+						</Form>
+						<Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px', marginTop: '20px' }}>
+							<Space size='small'>
+								<div className='MediationInfo-subTitle' style={{ marginTop: '-6px' }}></div><h5>事件材料</h5>
+							</Space>
+						</Col>
+						<TableView
+							columns={fakeColumns}
+							dataSource={fakeData1}
+							size="small"
+							rowKey="id"
+							bordered={true}
+							style={{ marginBottom: '60px' }}
+						/>
+						<div className="dataSync-excel">
+							<Space size="large" style={{ margin: '4px 14px' }}>
+								<Button type="primary" style={{ backgroundColor: '#1A6FB8' }}>保存信息</Button>
+								<Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>预览信息</Button>
+								<Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>提交信息</Button>
+								<Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>自行受理</Button>
+								<Button type='secondary'>返回上级页面</Button>
+							</Space>
 						</div>
 					</div>
-					<div className="organization-divider"></div>
-					{organizationData.length > 0 ? (
-						<DepartmentTable
-							organizationActive={organizationActive}
-							departmentData={departmentData}
-							handlePersonnelModal={handlePersonnelModal}
-							handleChangeIsAddOrEdit={(type, record) => {
-								setIsAddOrEditDept(type);
-								setDeptEditData(record || {});
-							}}
-							handleDelDept={delDept}
-						/>
-					) : (
-						$$.MyEmpty({ description: '抱歉!暂无组织数据,请先添加组织', style: { margin: '100px auto' } })
-					)}
-				</div>
-			</div>
-			{/* 新增 or 修改组织page */}
-			<AddOrEditOrganization
-				isAddOrEdit={isAddOrEdit}
-				type={organizationEditData.type}
-				organizationActive={organizationEditData.active}
-				handleFinishForm={setOrganization}
-			/>
-			{/* 新增 or 修改部门page */}
-			<AddOrEditDept
-				isAddOrEditDept={isAddOrEditDept}
-				deptActive={deptEditData}
-				unMatchUsers={organizationActive.unMatchUsers || []}
-				handleFinishForm={setDept}
-			/>
-			{/*  查看人员Modal */}
-			{modalData.visible && <PersonnelModal modalData={modalData} handlePersonnelModal={handlePersonnelModal} handleSearch={getPersons} />}
-		</Page>
-	);
-};
+
+				}
+			</NewPage>
+
+		</div>
+	)
+}
 
 export default Organization;
diff --git a/gz-customerSystem/src/views/basicInformation/organization/index.less b/gz-customerSystem/src/views/basicInformation/organization/index.less
index 0af4f05..37fde99 100644
--- a/gz-customerSystem/src/views/basicInformation/organization/index.less
+++ b/gz-customerSystem/src/views/basicInformation/organization/index.less
@@ -55,3 +55,39 @@
 		}
 	}
 }
+
+.dataSync {
+	&-excel {
+		background-color: #fff;
+		position: absolute;
+		left: 16px;
+		right: 16px;
+		bottom: 0;
+		padding: 12px 16px;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		box-shadow: 4px 0px 5px 0px rgba(0, 0, 0, 0.25);
+	}
+}
+
+.arco-form-label-item .arco-form-item-tooltip{
+	color: #1A6FB8;
+}
+
+
+//大厅来访
+.must{
+	font-size: 12px;
+    color: rgb(245, 63, 63);
+    background-color: rgb(255, 236, 232);
+    line-height: 20px;
+    padding: 0px 4px;
+    border-radius: 2px;
+    margin-left: 8px;
+}
+
+.arco-btn-primary:not(.arco-btn-disabled){
+	background-color: @main-color;
+}
+
diff --git a/gz-customerSystem/src/views/dispatch/mediateList/index.jsx b/gz-customerSystem/src/views/dispatch/mediateList/index.jsx
index 57a5b25..417d954 100644
--- a/gz-customerSystem/src/views/dispatch/mediateList/index.jsx
+++ b/gz-customerSystem/src/views/dispatch/mediateList/index.jsx
@@ -2,8 +2,8 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2022-03-18 10:21:49
- * @LastEditTime: 2022-11-28 09:47:16
- * @LastEditors: ldh
+ * @LastEditTime: 2024-08-09 16:57:06
+ * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description: 调度中心
  */
diff --git a/gz-customerSystem/src/views/mediate/judicialExamine/index.jsx b/gz-customerSystem/src/views/mediate/judicialExamine/index.jsx
index 49f647e..c76a378 100644
--- a/gz-customerSystem/src/views/mediate/judicialExamine/index.jsx
+++ b/gz-customerSystem/src/views/mediate/judicialExamine/index.jsx
@@ -2,8 +2,8 @@
  * @Company: hugeInfo
  * @Author: ldh
  * @Date: 2023-02-08 14:24:37
- * @LastEditTime: 2023-02-09 17:59:07
- * @LastEditors: ldh
+ * @LastEditTime: 2024-08-09 16:29:11
+ * @LastEditors: dminyi 1301963064@qq.com
  * @Version: 1.0.0
  * @Description: 司法局审核
  */
diff --git a/gz-customerSystem/src/views/register/visit/index.jsx b/gz-customerSystem/src/views/register/visit/index.jsx
new file mode 100644
index 0000000..513a9b6
--- /dev/null
+++ b/gz-customerSystem/src/views/register/visit/index.jsx
@@ -0,0 +1,18 @@
+/*
+ * @Author: dminyi 1301963064@qq.com
+ * @Date: 2024-08-09 15:47:38
+ * @LastEditors: dminyi 1301963064@qq.com
+ * @LastEditTime: 2024-08-09 15:48:16
+ * @FilePath: \gzDyh\gz-customerSystem\src\views\register\visit\index.jsx
+ * @Description: 大厅来访
+ */
+import React from 'react';
+
+const Visit=()=>{
+
+    return(
+        <></>
+    )
+}
+
+export default Visit;
\ No newline at end of file
diff --git a/gz-customerSystem/yarn.lock b/gz-customerSystem/yarn.lock
index 32929bc..e70d19e 100644
--- a/gz-customerSystem/yarn.lock
+++ b/gz-customerSystem/yarn.lock
@@ -856,6 +856,18 @@
     scroll-into-view-if-needed "2.2.20"
     shallowequal "^1.1.0"
 
+"@arco-plugins/vite-react@^1.3.3":
+  version "1.3.3"
+  resolved "https://registry.npmmirror.com/@arco-plugins/vite-react/-/vite-react-1.3.3.tgz"
+  integrity sha512-fcGh/69xKGqIjMdIw6NCqst4uWME/WTYjiC6AxHbKBmeYSONazBYd+KtEDx9Be2N0pF4+sk+MGUDy3mrF13EdA==
+  dependencies:
+    "@babel/generator" "^7.12.11"
+    "@babel/helper-module-imports" "^7.12.5"
+    "@babel/parser" "^7.12.11"
+    "@babel/traverse" "^7.12.12"
+    "@babel/types" "^7.12.12"
+    "@types/node" "^16.11.10"
+
 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3":
   version "7.24.7"
   resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz"
@@ -899,7 +911,7 @@
     eslint-visitor-keys "^2.1.0"
     semver "^6.3.0"
 
-"@babel/generator@^7.25.0", "@babel/generator@^7.7.2":
+"@babel/generator@^7.12.11", "@babel/generator@^7.25.0", "@babel/generator@^7.7.2":
   version "7.25.0"
   resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.0.tgz"
   integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==
@@ -1000,7 +1012,7 @@
     "@babel/traverse" "^7.24.8"
     "@babel/types" "^7.24.8"
 
-"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7":
+"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7":
   version "7.24.7"
   resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz"
   integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==
@@ -1114,7 +1126,7 @@
     js-tokens "^4.0.0"
     picocolors "^1.0.0"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3":
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3":
   version "7.25.3"
   resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.3.tgz"
   integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==
@@ -1868,7 +1880,7 @@
     "@babel/parser" "^7.25.0"
     "@babel/types" "^7.25.0"
 
-"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.2", "@babel/traverse@^7.7.2":
+"@babel/traverse@^7.12.12", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.2", "@babel/traverse@^7.7.2":
   version "7.25.3"
   resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.3.tgz"
   integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
@@ -1881,7 +1893,7 @@
     debug "^4.3.1"
     globals "^11.1.0"
 
-"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+"@babel/types@^7.0.0", "@babel/types@^7.12.12", "@babel/types@^7.12.6", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
   version "7.25.2"
   resolved "https://registry.npmmirror.com/@babel/types/-/types-7.25.2.tgz"
   integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
@@ -3039,6 +3051,11 @@
   dependencies:
     undici-types "~6.13.0"
 
+"@types/node@^16.11.10":
+  version "16.18.105"
+  resolved "https://registry.npmmirror.com/@types/node/-/node-16.18.105.tgz"
+  integrity sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==
+
 "@types/parse-json@^4.0.0":
   version "4.0.0"
   resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz"

--
Gitblit v1.8.0