From dad8ee5b2c6d2359d2821653baee2847f97d542e Mon Sep 17 00:00:00 2001
From: zhangyongtian <1181606322@qq.com>
Date: Mon, 19 Aug 2024 17:43:11 +0800
Subject: [PATCH] feat: 添加当事人信息逻辑

---
 gz-customerSystem/src/views/register/visit/component/agentDialog.jsx     |   48 +++++++++++++--
 gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx |   93 ++++++++----------------------
 gz-customerSystem/src/components/personCard/index.jsx                    |   24 +++++++-
 3 files changed, 86 insertions(+), 79 deletions(-)

diff --git a/gz-customerSystem/src/components/personCard/index.jsx b/gz-customerSystem/src/components/personCard/index.jsx
index 19113f0..fbc1e78 100644
--- a/gz-customerSystem/src/components/personCard/index.jsx
+++ b/gz-customerSystem/src/components/personCard/index.jsx
@@ -19,7 +19,13 @@
  * handleDeleteParty, // 删除当事人
  */
 const PersonCard = ({ isCheck, data, handleCheckParty, handleDeleteParty, handleAdd }) => {
-
+    let isAgent = false
+    const typeList = data.map(item => {
+        return item.partyType
+    })//获取有多少申请人和被申请人
+    if (typeList.indexOf(0) != -1 && typeList.indexOf(1) != -1) {
+        isAgent = true
+    }
     return (
         <Row gutter={[24, 16]}>
             {data.map((x, t) => (
@@ -31,7 +37,12 @@
                         >
                             {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' }} />
+                            <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">
@@ -56,6 +67,13 @@
                                     <div>法定代表人:{x.companyName}</div>
                                 </>
                             }
+                            {
+                                x.perClass === '09_01001-3' &&
+                                <>
+                                    <div>组织机构代码:{x.mobile}</div>
+                                    <div>机构代表人:{x.companyName}</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>
@@ -71,7 +89,7 @@
                         title={(<Space direction='vertical '>
                             <div className="dataSync-btnApply" style={{ backgroundColor: '#1A6FB8' }} onClick={() => { handleAdd(0) }}>申请方</div>
                             <div className="dataSync-btnApply" style={{ backgroundColor: '#FA8C16' }} onClick={() => { handleAdd(1) }}>被申请方</div>
-                            <div className="dataSync-btnApply" style={{ backgroundColor: '#3491FA' }} onClick={() => { handleAdd(2) }}>代理人</div>
+                            {isAgent && <div className="dataSync-btnApply" style={{ backgroundColor: '#3491FA' }} onClick={() => { handleAdd(2) }}>代理人</div>}
                         </Space>)}
                         placement={data.length !== 0 && data.length % 3 === 0 ? 'left' : "right"}
                         color='#ffff'
diff --git a/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx b/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx
index 684f9a7..0f92863 100644
--- a/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx
+++ b/gz-customerSystem/src/views/register/visit/component/agentDialog.jsx
@@ -13,13 +13,29 @@
 const CheckboxGroup = Checkbox.Group;
 
 export default function AgentDialog(props) {
+  const formRef = useRef();
+
+  //保存信息
+  const handleSave = () => {
+    if (formRef.current) {
+      formRef.current.validate(undefined, (errors, values) => {
+        props.handleAddParty({
+          ...values,
+          // partyType: props.dialogType,
+          // perClass: perClass,
+          // perClassName: props.dialogType === 0 ? '申请方代理人' : '被申请方当事人'
+        })
+        props.onClose()
+      });
+    }
+  }
   return (
     <div className="applyDialog">
       <div style={{ height: '590px', overflowY: 'scroll' }}>
         <Row gutter={[16, 16]} style={{ margin: '0 2px 0 0' }}>
           <Col span={24}>
             <Form
-              ref={props.formRef}
+              ref={formRef}
               layout='vertical'
               requiredSymbol={false}
               initialValues={{
@@ -64,7 +80,8 @@
                 <Col span={12}>
                   <FormItem
                     label={(<div style={{ display: 'flex' }}>姓名<div className="must">必填</div></div>)}
-                    field='name'
+                    field='trueName'
+                    rules={[{ required: true, message: '请输入姓名' }]}
                   >
                     <Input placeholder='请填写' />
                   </FormItem>
@@ -72,7 +89,11 @@
                 <Col span={12}>
                   <FormItem
                     label={(<div style={{ display: 'flex' }}>联系方式<div className="must">必填</div></div>)}
-                    field='phone'
+                    field='personNumber'
+                    rules={[
+                      { required: true, message: '请输入联系方式' },
+                      { match: /^\+?(\d{1,3})?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})$/, message: '请输入正确的电话号码' },
+                    ]}
                   >
                     <Input placeholder='请填写' />
                   </FormItem>
@@ -80,7 +101,8 @@
                 <Col span={12}>
                   <FormItem
                     label={(<div style={{ display: 'flex' }}>证件类型<div className="must">必填</div></div>)}
-                    field='zhengjian'
+                    field='docType'
+                    rules={[{ required: true, message: '请选择证件类型' }]}
                   >
                     <Select placeholder='请选择' allowClear>
                       {['居民身份证',].map((option, index) => (
@@ -94,8 +116,11 @@
                 <Col span={12}>
                   <FormItem
                     label={(<div style={{ display: 'flex' }}>证件号码<div className="must">必填</div></div>)}
-                    rules={[{ required: true }]}
-                    field='peopleNumber'
+                    rules={[
+                      { required: true, message: '请输入证件号码' },
+                      { match: /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3}(\d|X)$/, message: '请输入正确的证件号码' }
+                    ]}
+                    field='mobile'
                   >
                     <InputSearch
                       searchButton='读取卡证'
@@ -190,7 +215,14 @@
                     rules={[{ required: true }]}
                     field='dailimap'
                   >
-                    <CheckboxGroup direction='vertical' options={['张三丰', '广东好又多贸易有限公司', '广东科贸创意有限公司']} />
+                    <CheckboxGroup
+                      direction='vertical'
+                      options={props.fakeData.map(x => ({
+                        label: <span>{x.trueName}&nbsp;&nbsp;<span style={{ color: '#86909c' }}>({x.perClassName})</span></span>,
+                        value: x.id,
+                      }))}
+                    >
+                    </CheckboxGroup>
                   </FormItem>
                 </Col>
               </Row>
@@ -207,7 +239,7 @@
         <Button
           type="primary"
           className="dialogPrimary"
-        // onClick={handleSave}
+          onClick={handleSave}
         >
           保存信息
         </Button>
diff --git a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
index 659b1fb..fd3929a 100644
--- a/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
+++ b/gz-customerSystem/src/views/register/visit/component/visitorRegister.jsx
@@ -33,67 +33,7 @@
 const VisitorRegister = (props) => {
   const [dialogType, setDialogType] = useState(0);//添加当事人的类型
   const [addVisabled, setAddVisabled] = useState(false);//添加当事人弹窗控制
-  const [fakeData, setFakeData] = useState([
-    // {
-    //   id: 3,
-    //   perClassName: '申请方当事人',
-    //   trueName: '蓝海科技有限公司',
-    //   mobile: '9144010188453Z',
-    //   company: true,
-    //   companyName: '张晓梅',//公司法人
-    //   partyType: 0,//申请人:0,被申请人:1
-    // },
-    // {
-    //   id: 1,
-    //   perClassName: '申请方代理人',
-    //   trueName: '王小明',
-    //   mobile: '410106198802121125',
-    //   person: true,
-    //   personNumber: '13388888888',//联系方式
-    //   partyType: 'applicant',
-    // },
-    // {
-    //   id: 2,
-    //   perClassName: '被申请方当事人',
-    //   trueName: '大海科技有限公司',
-    //   mobile: '13800000002',
-    //   company: true,
-    //   companyName: '郭小聪',//公司法人
-    //   partyType: 'respondent',//被申请方
-    //   type: 1,
-    //   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' }]
-    // },
-    // {
-    //   id: 2,
-    //   perClassName: '被申请方代理人',
-    //   trueName: '张三',
-    //   mobile: '13800000002',
-    //   person: true,
-    //   personNumber: '13399999999',//联系方式
-    //   partyType: 'respondent',
-    //   remark: [{ label: '精神障碍', color: '#C64FBE' }]
-    // },
-    // {
-    //   id: 2,
-    //   perClassName: '被申请方代理人',
-    //   trueName: '张三',
-    //   mobile: '13800000002',
-    //   person: true,
-    //   personNumber: '13399999999',//联系方式
-    //   partyType: 'respondent',
-    //   remark: [{ label: '精神障碍', color: '#C64FBE' }]
-    // },
-    // {
-    //   id: 2,
-    //   perClassName: '被申请方代理人',
-    //   trueName: '张三',
-    //   mobile: '13800000002',
-    //   person: true,
-    //   personNumber: '13399999999',//联系方式
-    //   partyType: 'respondent',
-    //   remark: [{ label: '精神障碍', color: '#C64FBE' }]
-    // },
-  ]);//当事人信息数据
+  const [fakeData, setFakeData] = useState([]);//当事人信息数据
   const [scanFile, setScanFile] = useState(false);
   const [filesList, setFilesList] = useState([]);
   const [scanImage, setScanImage] = useState(false);
@@ -106,6 +46,7 @@
   const [fileTip, setFileTip] = useState('0');
   const [detailVisabled, setDetailVisabled] = useState(false);//查看信息弹窗控制
   const [mapView, setMapView] = useState(false);
+  const [flagId, setFlagId] = useState(0);//赋予当事人唯一id,用于删除
   const formRef = useRef();
 
 
@@ -126,9 +67,6 @@
         return [evidenceMaterials, evidenceMaterials_active];
     }
   }
-
-
-
 
   const formType = (type) => {
     if (type === '09_01010-1') {
@@ -398,7 +336,7 @@
   //查看
   const handleCheckParty = (value) => {
     console.log(value);
-    setDialogType(value.type)
+    setDialogType(value.partyType)
     setDetailVisabled(true)
   }
 
@@ -432,9 +370,19 @@
   //添加当事人
   const handleAddParty = (value) => {
     console.log(value);
-    setFakeData([...fakeData, value])
+    setFakeData([...fakeData, {
+      ...value,
+      id: flagId
+    }])
+    setFlagId(flagId + 1)
   }
 
+  //删除当事人
+  const handleDeleteParty = (event, value) => {
+    event.stopPropagation();
+    const filterData = fakeData.filter(item => item.id !== value.id)
+    setFakeData(filterData)
+  }
 
 
   return (
@@ -452,6 +400,7 @@
           data={fakeData}
           handleCheckParty={handleCheckParty}
           handleAdd={handleAdd}
+          handleDeleteParty={handleDeleteParty}
         />
       </div>
       <Col span={24} style={{ display: 'flex', alignItems: 'center', marginBottom: '8px' }}>
@@ -764,7 +713,11 @@
         focusLock={true}
         footer={null}
       >
-        <ApplyDialog dialogType={dialogType} onClose={() => setAddVisabled(false)} handleAddParty={handleAddParty}/>
+        <ApplyDialog
+          dialogType={dialogType}
+          onClose={() => setAddVisabled(false)}
+          handleAddParty={handleAddParty}
+        />
       </Modal>
       <Modal
         title={'添加代理人'}
@@ -775,7 +728,11 @@
         focusLock={true}
         footer={null}
       >
-        <AgentDialog />
+        <AgentDialog
+          handleAddParty={handleAddParty}
+          onClose={() => setAgentVisible(false)}
+          fakeData={fakeData}
+        />
       </Modal>
       <Modal
         title={'查看' + peopleMap[dialogType]}

--
Gitblit v1.8.0