From 221546808c11df777199def992e4abbf1fc31b5a Mon Sep 17 00:00:00 2001 From: liuwh <964324856@qq.com> Date: Sat, 14 Sep 2024 10:03:47 +0800 Subject: [PATCH] Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh into master --- gz-customerSystem/src/components/personCard/index.jsx | 193 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 133 insertions(+), 60 deletions(-) diff --git a/gz-customerSystem/src/components/personCard/index.jsx b/gz-customerSystem/src/components/personCard/index.jsx index b0fa5e3..04a9c83 100644 --- a/gz-customerSystem/src/components/personCard/index.jsx +++ b/gz-customerSystem/src/components/personCard/index.jsx @@ -6,80 +6,153 @@ * @FilePath: \gzDyh\gz-customerSystem\src\components\personCard\index.jsx * @Description: 来访登记当事人卡片 */ -import React from 'react'; +import React, { Fragment, useState } from 'react'; import PropTypes from 'prop-types'; -import { Typography, Row, Col, Space } from 'antd'; -import { del } from '../../assets/images'; +import { Typography, Row, Col, Space, Tooltip } from 'antd'; +import { Modal } from '@arco-design/web-react'; +import { del, add } from '../../assets/images'; +import DetailDialog from "./DetailDialog"; 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' }] +const PersonCard = ({ isCheck, data, handleDeleteParty, handleAdd, handleEdit }) => { + const [editData, setEditData] = useState(null); + const [detailVisabled, setDetailVisabled] = useState(false);//查看信息弹窗控制 + const [dialogType, setDialogType] = useState(0);//添加当事人的类型 - 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> - } + const peopleMap = { + '15_020008-1': '申请方', + '15_020008-2': '被申请方', + '24_00006-1': '申请方代理人', + '24_00006-2': '被申请方代理人' + } + let isAgent = false + let isAgentFor = false + const typeList = data?.map(item => { + return item.perType + })//获取有多少申请人和被申请人 + if (typeList?.indexOf('15_020008-1') != -1) { + isAgent = true + } + if (typeList?.indexOf('15_020008-2') != -1) { + isAgentFor = true + } + const handleCheckParty = (value) => { + setDialogType(value.perType) + setEditData(value) + setDetailVisabled(true) + } - </div> - </div> - </Col> - ))} - </Row> - ); + return ( + <Fragment> + <Row gutter={[24, 16]}> + {data?.map((x, t) => ( + <Col span={7} key={t}> + <div className="public-personCard" style={{ cursor: 'pointer' }}> + <div + className={`public-personCard-card public-personCard-card-${(x.perType === '15_020008-1' || x.perType === '24_00006-1') ? 'blue' : 'orange'}`} + onClick={() => handleCheckParty(x)} + > + {x.trueName.substr(0, 1)} + <div className="public-personCard-card-check">查看</div> + {isCheck && <img + src={del} + alt='' + style={{ width: '16px', height: '16px', position: 'absolute', top: '-8px', left: '56px' }} + onClick={(event) => { handleDeleteParty(event, x) }} + />} + </div> + <div className="public-personCard-content"> + <div className="public-personCard-title"> + <Text style={{ maxWidth: '80%', paddingRight: '8px' }} ellipsis={{ tooltip: x.trueName }}> + {x.trueName} + </Text> + <Text onClick={() => { handleEdit(x) }} ellipsis={{ tooltip: x.perTypeName }} className={`public-personCard-tag public-personCard-tag-${(x.perType === '15_020008-1' || x.perType === '24_00006-1') ? 'blue' : 'orange'}`}> + {x.perTypeName} + </Text> + </div> + { + (x.perClass === '09_01001-1' || !x.perClass) && + <> + <div>证件号码:{x.certiNo}</div> + <div>联系方式:{x.mobile}</div> + </> + } + { + x.perClass === '09_01001-2' && + <> + <div>统一社会信用代码:{x.orgaCode}</div> + <div>法定代表人:{x.deputy}</div> + </> + } + { + x.perClass === '09_01001-3' && + <> + <div>组织机构代码:{x.orgaCode}</div> + <div>机构代表人:{x.deputy}</div> + </> + } + <Space style={{ display: 'flex', flexWrap: 'wrap' }}> + {x.remark?.map((item, index) => ( + <div key={index} style={{ lineHeight: '22px', padding: '0px 8px', backgroundColor: `${item.color}`, width: 'fit-content', borderRadius: '4px', marginTop: '4px', color: '#fff' }}>{item.label}</div> + ))} + </Space> + </div> + </div> + </Col> + ))} + {isCheck && + <Col span={3}> + <div className="dataSync-addBtn"> + <Tooltip + title={(<Space direction='vertical '> + <div className="dataSync-btnApply" style={{ backgroundColor: '#1A6FB8' }} onClick={() => { handleAdd('15_020008-1') }}>申请方当事人</div> + {isAgent && <div className="dataSync-btnApply" style={{ backgroundColor: '#3491FA' }} onClick={() => { handleAdd('24_00006-1') }}>申请方代理人</div>} + <div className="dataSync-btnApply" style={{ backgroundColor: '#EF6C24' }} onClick={() => { handleAdd('15_020008-2') }}>被申请方当事人</div> + {isAgentFor && <div className="dataSync-btnApply" style={{ backgroundColor: '#FA8C16' }} onClick={() => { handleAdd('24_00006-2') }}>被申请方代理人</div>} + </Space>)} + placement={data.length !== 0 && data.length % 3 === 0 ? 'left' : "right"} + color='#ffff' + overlayStyle={{}} + > + <div style={{ backgroundColor: '#f2f3f5', borderRadius: '50%', width: '64px', height: '64px' }}> + <img src={add} alt="添加" style={{ width: '32px', margin: '16px' }} /> + </div> + </Tooltip> + </div> + </Col> + } + </Row> + <Modal + title={'查看' + peopleMap[dialogType]} + visible={detailVisabled} + onOk={() => setDetailVisabled(false)} + onCancel={() => { + setDetailVisabled(false) + setEditData(null) + }} + autoFocus={false} + focusLock={true} + footer={null} + unmountOnExit={true} + maskClosable={false} + > + <DetailDialog editData={editData} personData={data} /> + </Modal> + </Fragment> + ); }; PersonCard.propTypes = { - isCheck: PropTypes.bool, - partyType: PropTypes.string, - data: PropTypes.array, - handleCheckParty: PropTypes.func, - handleDeleteParty: PropTypes.func, + isCheck: PropTypes.bool, + data: PropTypes.array, + handleCheckParty: PropTypes.func, + handleDeleteParty: PropTypes.func, }; export default PersonCard; \ No newline at end of file -- Gitblit v1.8.0