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