广州市综治平台前端
xusd
17 hours ago d880dfb0f9a79c51834c9f8a7017d8fa59f14f36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/*
 * @Company: hugeInfo
 * @Author: lwh
 * @Date: 2024-12-14 11:11:04
 * @LastEditTime: 2024-12-30 10:49:31
 * @LastEditors: lwh
 * @Version: 1.0.0
 * @Description: 司法确认查看案件详情
 */
import React, { useState, useEffect } from 'react';
import { Row, Space, Typography, Col } from 'antd';
import { Scrollbars } from "react-custom-scrollbars";
import { IconLocation } from '@arco-design/web-react/icon';
import { Alert, Button, Modal } from '@arco-design/web-react';
import Preview from './preview';
import HandleRecord from '../matterDetail/HandleRecord';
import RateModule from '../matterDetail/RateModule';
import RegisInfoModule from '../matterDetail/RegisInfoModule';
import DismissModule from "../matterDetail/DismissModule";
import DetailDialog from "../../../components/personCard/DetailDialog";
import { agree } from "../../../assets/images";
 
import * as $$ from '../../../utils/utility';
 
function listFeedbackApi(id) {
  return $$.ax.request({ url: `caseFeedback/listFeedback?id=` + id, type: 'get', service: 'mediate' });
}
 
function getByCaseIdApi(caseId) {
  return $$.ax.request({ url: `caseEvaluate/getByCaseId?caseId=${caseId}`, type: 'get', service: 'mediate' });
}
// 办理结果(化解结果、协议文书等结案信息)
function getTransactResultApi(caseId) {
  return $$.ax.request({ url: `caseInfoUnfold/getTransactResult?caseId=${caseId}`, type: 'get', service: 'mediate' });
}
 
const RepeatDetail = ({ caseId, hisData, caseData, selectChange, handleRepeatSubmit, handleRepeatMerge }) => {
  const [data, setData] = useState({});
  const user = $$.getSessionStorage('customerSystemUser') || {};
  const [transactResult, setTransactResult] = useState(null);
  // 折叠
  const [show, setShow] = useState([]);
  const [grade, setGrade] = useState(null);
  const [list, setList] = useState([])
 
  const [dismissData, setDismissData] = useState(null);
  const [detailVisabled, setDetailVisabled] = useState(false);
  const [modalData, setModalData] = useState({});
  function handleCheckPreview(params) {
    setModalData(params)
    setDetailVisabled(true)
  }
 
  async function getTransactResult(id) {
    const res = await getTransactResultApi(id)
    if (res.type) {
      if (res.data) {
        setTransactResult({ ...res.data })
      } else {
        setTransactResult(null)
      }
    }
  }
 
  const listFeedback = async (id) => {
    const res = await listFeedbackApi(id)
    if (res.type) {
      let data = res.data.caseFeedbackList
      setList(data)
    }
  }
 
  const getByCaseId = async (id) => {
    const res = await getByCaseIdApi(id)
    if (res.type) {
      setGrade(res.data)
    }
  }
 
  useEffect(() => {
    getByCaseId(caseId);
    listFeedback(caseId);
    getTransactResult(caseId)
  }, [caseId]);
 
  return (
    <>
      <Scrollbars style={{ height: 'calc(100vh - 219px)' }} autoHide>
        <div style={{ backgroundColor: '#ffff', padding: '12px 18px 70px 16px' }}>
          <Space size='small'>
            <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>登记信息</h4>
          </Space>
          <table border="1" align="center" cellpadding="6" className="table">
            <tr>
              <th bgcolor="#F7F8FA" className="table-title" width="120" >事项来源</th>
              <td>{caseData?.canalName || '大厅来访'}</td>
              <th bgcolor="#F7F8FA" className="table-title" width="120">纠纷发生时间</th>
              <td >{caseData?.occurTime || '-'}</td>
            </tr>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title">申请方</th>
              <td><div style={{ display: 'flex', gap: '8px' }}>{caseData?.personList.filter(item => item.perType === "15_020008-1")?.map(i => (<span style={{ textDecoration: 'underline' }} onClick={() => { handleCheckPreview(i) }} className='public-color public-a'>{i.trueName || '-'}{`(${i.certiNo || ''})`}</span>))}</div></td>
              <th bgcolor="#F7F8FA" className="table-title">被申请方</th>
              <td><div style={{ display: 'flex', gap: '8px' }}>{caseData?.personList.filter(item => item.perType === "15_020008-2")?.map(i => (<span style={{ textDecoration: 'underline' }} onClick={() => { handleCheckPreview(i) }} className='public-color public-a'>{i.trueName || '-'}{`(${i.certiNo || ''})`}</span>))}</div></td>
            </tr>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title">问题属地</th>
              <td><div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}><IconLocation />{caseData?.queAreaName || '-'}&nbsp;{caseData?.queRoadName || '-'}</div></td>
              <th bgcolor="#F7F8FA" className="table-title">纠纷发生地</th>
              <td>{caseData?.addr || '-'}</td>
            </tr>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title">登记机构</th>
              <td>{user?.unit || '-'}</td>
              <th bgcolor="#F7F8FA" className="table-title">登记时间</th>
              <td>{caseData?.createTime || '-'}</td>
            </tr>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title">事项概况</th>
              <td colspan="3">{$$.ExpandableText({ text: caseData?.caseDes || '-', numString: 100 })}</td>
            </tr>
            <tr>
              <th bgcolor="#F7F8FA" className="table-title">事项申请</th>
              <td colspan="3">{$$.ExpandableText({ text: caseData?.caseClaim || '-', numString: 100 })}</td>
            </tr>
          </table>
          <div style={{ marginTop: '4px' }}>
            <Space size='small'>
              <div className='MediationInfo-subTitle' style={{ marginTop: '-7px' }}></div><h4>疑似重复事项</h4>
            </Space>
            <Alert type='info' content={<span>登记信息与以下事项可能存在重复,请选择后提交综治中心或在办部门研判处理</span>} />
            <Row gutter={[16, 32]}>
              {
                hisData?.map((item, index) => (
                  <Col span={8} key={`hisData${index}`}>
                    <div className={`RepeatDetail-box ${item.selected && 'RepeatDetail-box-active'}`}>
                      <div className='RepeatDetail-flex'><div style={{ fontWeight: '600' }} className='RepeatDetail-title'>疑似重复事项{index + 1}</div>{item.selected ? <img onClick={() => { selectChange(index, false) }} className='RepeatDetail-img' src={agree} /> : <div onClick={() => { selectChange(index, true) }} className='RepeatDetail-round'></div>}</div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>重复分析:</div><div className='public-danger'>{item?.repeatAnalyseList?.join('、')}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>事项来源:</div><div>{item?.canalName || '-'}</div></div>
                      {/* <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>数据来源:</div><div>{item?.sourceName || '-'}</div></div> */}
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>数据来源:</div><div>{'本系统'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>申请方:</div><div>{item?.plaintiffs || '-'}{item?.plaintiffsCertiNo ? `(${item?.plaintiffsCertiNo})` : '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>被申请方:</div><div>{item?.defendants || '-'}{item?.defendantsCertiNo ? `(${item?.defendantsCertiNo})` : '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>问题属地:</div><div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}><IconLocation />{item?.queAreaName || '-'}&nbsp;{item?.queRoadName || ''}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>纠纷发生地:</div><div>{item?.addr || '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>事项概况:</div><div style={{ flex: '1' }}>{$$.ExpandableText({ text: item?.caseDes || '-', numString: 54 })}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>事项申请:</div><div style={{ flex: '1' }}>{$$.ExpandableText({ text: item?.caseClaim || '-', numString: 54 })}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>登记机构:</div><div>{item?.inputUnitName || '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>登记时间:</div><div>{item?.createTime || '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>承办部门:</div><div>{item?.mediateUnitName || '-'}</div></div>
                      <div className='RepeatDetail-title'><div className='RepeatDetail-subTitle'>经办人:</div><div>{item?.mediator || '-'}</div></div>
                      <div><Button onClick={() => { window.open(`${$$.windowUrl}/windowDetail?caseTaskId=${item.id}&caseId=${item.id}`) }} type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }}>详情</Button></div>
                    </div>
                  </Col>
                ))
              }
            </Row>
            {hisData?.filter(i => i.selected)?.length > 0 && <div style={{ margin: '12px 0' }}>已选择<span className='public-color'>{hisData?.filter(i => i.selected)?.length}</span>项</div>}
          </div>
        </div>
      </Scrollbars >
      <div className="dataSync-excel" style={{ left: '0', right: '0' }}>
        <Space size="middle" >
          <Button type='primary' onClick={handleRepeatSubmit}>提交</Button>
          {/* <Button type='outline' style={{ color: '#1A6FB8', border: '1px solid #1A6FB8' }} onClick={handleRepeatMerge}>合并</Button> */}
        </Space>
      </div>
      <Modal
        title={'查看' + modalData.perTypeName}
        visible={detailVisabled}
        onOk={() => setDetailVisabled(false)}
        onCancel={() => {
          setDetailVisabled(false)
        }}
        wrapStyle={{ zIndex: '1006' }}
        autoFocus={false}
        focusLock={true}
        footer={null}
        unmountOnExit={true}
        maskClosable={false}
      >
        <DetailDialog editData={modalData} personData={modalData} />
      </Modal>
    </>
  );
};
 
export default RepeatDetail;