/*
|
* @Company: hugeInfo
|
* @Author: lwh
|
* @Date: 2024-11-26 15:49:14
|
* @LastEditTime: 2025-06-14 11:18:59
|
* @LastEditors: lwh
|
* @Version: 1.0.0
|
* @Description:
|
*/
|
import React, { useEffect, useState } from 'react';
|
import { downO, up, link } from '@/assets/images';
|
import { Row, Col, Space } from 'antd';
|
import * as $$ from '@/utils/utility';
|
import { Spin } from '@arco-design/web-react';
|
import ReviewProgress from '../closingReview/component/ReviewProgress';
|
import PreviewImage from '@/components/PreviewImage';
|
import NameCard2 from '../../../components/NameCard2';
|
import MyPDF from '../../../components/MyPDF';
|
import PersonCard from './personCard';
|
import { Scrollbars } from 'react-custom-scrollbars';
|
import TranferReviewProgress from '@/components/ReviewProgress/ReviewProgress.jsx';
|
|
function listMyApplyRecord(data) {
|
return $$.ax.request({ url: 'caseTask/listMyApplyRecord', type: 'get', service: 'mediate', data });
|
}
|
|
export default function ApplyInfo(props) {
|
const [list, setList] = useState([]);
|
const [loading, setLoading] = useState(false);
|
const [personView, setPersonView] = useState(false);
|
const [personId, setPersonId] = useState('');
|
|
const map = {
|
'上报申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'auditUnitName',
|
label: '上报至',
|
},
|
{
|
value: 'appearContent',
|
label: '上报意见',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-512',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'auditResultName',
|
label: '审核结果',
|
},
|
{
|
value: 'auditContent',
|
label: '理由说明',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-513',
|
},
|
{
|
value: 'auditTime',
|
label: '审核时间',
|
},
|
{
|
value: 'auditPeople',
|
label: '审核人',
|
unitName: 'auditUnitName',
|
peopleName: 'auditUserName',
|
},
|
],
|
],
|
'回退申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'returnContent',
|
label: '回退理由',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-510',
|
},
|
{
|
value: 'returnTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'returnUnitName',
|
peopleName: 'returnUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'auditResultName',
|
label: '审核结果',
|
},
|
{
|
value: 'auditContent',
|
label: '理由说明',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-511',
|
},
|
{
|
value: 'auditTime',
|
label: '审核时间',
|
},
|
{
|
value: 'auditPeople',
|
label: '审核人',
|
unitName: 'auditUnitName',
|
peopleName: 'auditUserName',
|
},
|
],
|
],
|
'联合处置申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'applyAssistUnitName',
|
label: '添加配合部门',
|
},
|
{
|
value: 'applyContent',
|
label: '添加理由',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-508',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'auditResultName',
|
label: '审核结果',
|
},
|
{
|
value: 'auditContent',
|
label: '理由说明',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-509',
|
},
|
{
|
value: 'auditTime',
|
label: '审核时间',
|
},
|
{
|
value: 'auditPeople',
|
label: '审核人',
|
unitName: 'auditUnitName',
|
peopleName: 'auditUserName',
|
},
|
],
|
],
|
'结案申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'mediResultName',
|
label: '化解结果',
|
},
|
{
|
value: 'failReason',
|
label: '无法化解理由',
|
},
|
{
|
value: 'windupContent',
|
label: '协议履行情况',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'auditResultName',
|
label: '审核结果',
|
},
|
{
|
value: 'auditContent',
|
label: '理由说明',
|
},
|
{
|
value: 'fileInfo',
|
label: '附件材料',
|
fileKey: '22_00018-514',
|
},
|
{
|
value: 'auditTime',
|
label: '审核时间',
|
},
|
{
|
value: 'auditPeople',
|
label: '审核人',
|
unitName: 'auditUnitName',
|
peopleName: 'auditUserName',
|
},
|
],
|
],
|
'结案申请1': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'mediResultName',
|
label: '化解结果',
|
},
|
{
|
value: 'failReason',
|
label: '无法化解理由',
|
},
|
{
|
value: 'windupContent',
|
label: '协议履行情况',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'reviewProgress',
|
},
|
],
|
], //这个是1、2事件的结案申请
|
'转入人民调解系统申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
],
|
[
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'tranferReviewProgress',
|
},
|
],
|
],
|
'司法确认申请': [
|
[
|
{
|
value: 'subTitle',
|
label: '申请信息',
|
},
|
{
|
value: 'courtName',
|
label: '司法确认部门',
|
},
|
{
|
value: 'applyContent',
|
label: '申请理由',
|
},
|
{
|
value: 'filePDF',
|
label: '调解协议书',
|
fileKey: '22_00018-412',
|
},
|
{
|
value: 'filePDF',
|
label: '非诉讼调解协议司法确认申请书',
|
fileKey: '22_00018-402',
|
},
|
{
|
value: 'filePDF',
|
label: '诉前联调协议案件移送函',
|
fileKey: '22_00018-403',
|
},
|
{
|
value: 'filePDF',
|
label: '送达地址确认书',
|
fileKey: '22_00018-108',
|
},
|
{
|
value: 'applyTime',
|
label: '申请时间',
|
},
|
{
|
value: 'applyPeople',
|
label: '申请人',
|
unitName: 'applyUnitName',
|
peopleName: 'applyUserName',
|
},
|
{
|
value: 'subTitle',
|
label: '审核信息',
|
},
|
{
|
value: 'judicAuditName',
|
label: '审核结果',
|
},
|
{ value: 'judgeName', type: 'none', label: '承办法官', unitName: 'courtName' },
|
{ value: 'judicAssistList', type: 'none', label: '助理/书记员', unitName: 'assUnitName', peopleName: 'assUserName' },
|
{ value: 'handleContent', type: 'none', label: '理由说明' },
|
{
|
value: 'judicFileInfo',
|
label: '附件材料',
|
type: 'none',
|
fileKey: '22_00018-411',
|
},
|
{ value: 'handleTime', label: '审核时间' },
|
{ value: 'handleUserName', label: '审核人', personId: 'handleUserId', unitName: 'handleUnitName' },
|
],
|
],
|
};
|
|
useEffect(() => {
|
getData(props.caseId);
|
}, []);
|
|
const getData = async (caseId) => {
|
setLoading(true);
|
const res = await listMyApplyRecord({
|
caseId,
|
});
|
if (res.type) {
|
setLoading(false);
|
setList(res.data);
|
}
|
};
|
|
const toggleView = (id) => {
|
setList(
|
list.map((record, index) => {
|
if (index === id) {
|
return {
|
...record,
|
showView: !record.showView,
|
};
|
}
|
return record;
|
})
|
);
|
};
|
|
const handlePersonDetail = (id) => {
|
setPersonId(id);
|
setPersonView(true);
|
};
|
|
const handleDom = (data, item) => {
|
console.log('111111111111', data, item);
|
const { object, fileList } = item;
|
if (data.value === 'subTitle') {
|
//标题
|
return (
|
<Col span={24} key={data.value}>
|
<Space size="small">
|
<div className="MediationInfo-subTitle" style={{ marginTop: '-8px' }}></div>
|
<h5>{data.label}</h5>
|
</Space>
|
</Col>
|
);
|
} else if (data.value === 'fileInfo') {
|
//文件
|
let fileData = {};
|
if (fileList && fileList.length != 0) {
|
fileData = fileList.find((item) => data.fileKey == item.ownerType) || {};
|
}
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: '#1A6FB8' }}>
|
{fileData.fileList?.map((result, resIndex) => {
|
return (
|
<div style={{ display: 'inline-block' }}>
|
<MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} />
|
{resIndex !== fileData.fileList?.length - 1 && <>,</>}
|
</div>
|
);
|
}) || '-'}
|
</div>
|
</Col>
|
);
|
} else if (data.value === 'filePDF') {
|
//文件
|
let fileData = {};
|
if (fileList && fileList.length != 0) {
|
fileData = fileList.find((item) => data.fileKey == item.ownerType) || {};
|
}
|
console.log('fileData', fileData);
|
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: '#1A6FB8' }}>
|
{fileData.fileList?.map((result, resIndex) => {
|
return (
|
<div style={{ display: 'inline-block' }}>
|
<MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} />
|
{resIndex !== fileData.fileList?.length - 1 && <>,</>}
|
</div>
|
);
|
}) || '-'}
|
</div>
|
</Col>
|
);
|
} else if (data.value === 'applyPeople' || data.value === 'auditPeople') {
|
//申请人
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<span>
|
<span style={{ color: '#86909C' }}></span>
|
<span>{object[data.unitName]}</span>
|
</span>
|
<span>
|
<span className="public-infoSubTitle">
|
<span className="public-nameCard">
|
|
<NameCard2
|
name={data.value === 'auditPeople' ? object.auditUserName : object.applyUserName}
|
userId={data.value === 'auditPeople' ? object.auditUserId : object.applyUserId}
|
/>
|
</span>
|
</span>
|
</span>
|
</Col>
|
);
|
} else if (object.judicAudit === '24_00004-1' && data.value === 'judgeName') {
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<span>
|
<span style={{ color: '#86909C' }}></span>
|
<span>{object.handleUnitName}</span>
|
</span>
|
<span>
|
<span className="public-infoSubTitle">
|
<span className="public-nameCard">
|
|
<NameCard2 name={object.handleUserName} userId={object.handleUserId} />
|
</span>
|
</span>
|
</span>
|
</Col>
|
);
|
} else if (data.value === 'handleUserName') {
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<span>
|
<span style={{ color: '#86909C' }}></span>
|
<span>{object[data.unitName]}</span>
|
</span>
|
<span>
|
<span className="public-infoSubTitle">
|
<span className="public-nameCard">
|
|
<NameCard2 name={object[data.value]} userId={object[data.personId]} />
|
</span>
|
</span>
|
</span>
|
</Col>
|
);
|
} else if (data.value === 'judicAssistList' && object.judicAudit === '24_00004-1') {
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ display: 'flex', gap: '16px', flexWrap: 'wrap' }} className="public-infoSubTitle">
|
{object?.judicAssistList?.map((i) => (
|
<span className="public-nameCard2">
|
<NameCard2 name={i?.assUserName} userId={i?.assUserId} />
|
</span>
|
))}
|
</div>
|
</Col>
|
);
|
} else if (data.value === 'handleContent' && object.judicAudit === '24_00004-2') {
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div>{object[data.value] || '-'}</div>
|
</Col>
|
);
|
} else if (data.value === 'judicFileInfo' && object.judicAudit === '24_00004-2') {
|
//文件
|
let fileData = {};
|
if (fileList && fileList.length != 0) {
|
fileData = fileList.find((item) => data.fileKey == item.ownerType) || {};
|
}
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: '#1A6FB8' }}>
|
{fileData.fileList?.map((result, resIndex) => {
|
return (
|
<div style={{ display: 'inline-block' }}>
|
<MyPDF name={result.name} fileUrl={result.showUrl} fileType={result.suffix} />
|
{resIndex !== fileData.fileList?.length - 1 && <>,</>}
|
</div>
|
);
|
}) || '-'}
|
</div>
|
</Col>
|
);
|
} else if (data.value === 'applyTime' || data.value == 'auditTime' || data.value == 'returnTime' || data.value == 'handleTime') {
|
//时间格式化
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div>{$$.minuteFormat(object[data.value]) || '-'}</div>
|
</Col>
|
);
|
} else if (data.value == 'auditResultName') {
|
//审核结果
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: object.auditResult == '24_00004-1' ? '#00b42a' : '#f53f3f' }}>{object[data.value] || '-'}</div>
|
</Col>
|
);
|
} else if (data.value === 'reviewProgress') {
|
//这个是1、2级事件,结案申请的时候显示
|
//注意:暂时还没做12级的流程,还没得数据
|
return (
|
<Col span={24} key={data.value}>
|
<ReviewProgress progressData={object.progressData || { handleCaseFlowList: [] }} />
|
</Col>
|
);
|
} else if (data.value === 'mediResultName') {
|
//化解结果
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: object.mediResult == '22_00025-1' ? '#00b42a' : '#f53f3f' }}>{object[data.value] || '-'}</div>
|
</Col>
|
);
|
} else if (data.value === 'failReason') {
|
//化解不成功原因
|
return object.mediResult == '22_00025-1' ? (
|
''
|
) : (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div>{object[data.value] || '-'}</div>
|
</Col>
|
);
|
} else if (data.value === 'tranferReviewProgress') {
|
//转入人民调解申请
|
return (
|
<Col span={24} key={data.value}>
|
<TranferReviewProgress progressData={object.applyList || []} />
|
</Col>
|
);
|
} else if (data.value === 'judicAuditName') {
|
//司法确认结果
|
return (
|
<Col span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div style={{ color: object.judicAudit === '24_00004-1' ? '#00b42a' : object.judicAudit === '24_00004-0' ? '#3491fa' : '#f53f3f' }}>
|
{object[data.value] || '-'}
|
</div>
|
</Col>
|
);
|
} else {
|
return (
|
<Col style={{ display: data.type == 'none' ? 'none' : '' }} span={24} key={data.value}>
|
<div>
|
<div className="title-text">{data.label}</div>
|
</div>
|
<div>{object[data.value] || '-'}</div>
|
</Col>
|
);
|
}
|
};
|
|
return (
|
<div style={{ margin: '0 16px' }}>
|
<Spin loading={loading} style={{ width: '100%', height: '100%', minHeight: '200px' }}>
|
<Scrollbars style={{ height: 'calc(100vh - 223px)' }} autoHide>
|
{list && list.length !== 0 ? (
|
list?.map((item, listIndex) => {
|
const object = item.object || item;
|
if (item.type == '回退申请') {
|
object.applyStatus = object.returnStatus;
|
object.applyTime = object.returnTime;
|
object.applyUnitName = object.returnUnitName;
|
object.applyUserName = object.returnUserName;
|
object.applyUserId = object.returnUserId;
|
}
|
if (item.type == '上报申请') {
|
object.applyStatus = object.applyStatus;
|
object.applyTime = object.appearTime;
|
object.applyUnitName = object.appearUnitName;
|
object.applyUserName = object.appearUserName;
|
object.applyUserId = object.appearUserId;
|
}
|
if (item.type == '司法确认申请') {
|
object.applyStatus = object.judicAudit === '24_00004-0' ? 0 : 1;
|
object.auditResult = object.judicAudit;
|
}
|
return (
|
<div className="applyInfoClass" style={{ border: item.showView ? '1px solid #1a6fb8' : '' }} key={listIndex}>
|
<div
|
className="applyInfoClass-img"
|
onClick={() => {
|
toggleView(listIndex);
|
}}
|
>
|
<img src={item.showView ? up : downO} alt="" className="title-downUp" />
|
</div>
|
<div className="applyInfoClass-title">
|
<div className="applyInfoClass-title-txt">{item.type}</div>
|
<div className={`applyInfoClass-title-tag-${object.applyStatus === 0 ? '2' : object.auditResult == '24_00004-1' ? '1' : '3'}`}>
|
{object.applyStatus === 0 ? '审核中' : object.auditResult == '24_00004-1' ? '审核通过' : '审核不通过'}
|
</div>
|
</div>
|
{item.showView ? (
|
<div>
|
{map[object.caseLevel && object.caseLevel != 3 ? item.type + '1' : item.type]
|
?.filter((fil, filIndex) => {
|
//如果是审核中就不需要审核栏
|
if (object.applyStatus === 0) {
|
return filIndex === 0;
|
} else {
|
return true;
|
}
|
})
|
.map((res, index) => {
|
return (
|
<Row gutter={[16, 16]} key={index}>
|
{res.map((data) => {
|
if (item.type == '转入人民调解系统申请') {
|
return handleDom(data, { object: item });
|
} else {
|
return handleDom(data, item);
|
}
|
})}
|
</Row>
|
);
|
})}
|
</div>
|
) : (
|
<div>
|
<span style={{ marginRight: '32px' }}>
|
<span style={{ color: '#86909C' }}>申请时间:</span>
|
<span>{$$.minuteFormat(object.applyTime)}</span>
|
</span>
|
<span style={{ marginRight: '8px' }}>
|
<span style={{ color: '#86909C' }}>申请人:</span>
|
</span>
|
<span>
|
<span className="public-infoSubTitle">
|
<span className="public-nameCard">
|
{object?.applyUnitName}
|
<NameCard2 name={object.applyUserName} userId={object.applyUserId} />
|
</span>
|
</span>
|
</span>
|
</div>
|
)}
|
</div>
|
);
|
})
|
) : (
|
<div className="handle-content-empty" style={{ marginTop: '10%' }}>
|
{$$.MyNewEmpty()}
|
</div>
|
)}
|
</Scrollbars>
|
</Spin>
|
<PersonCard personView={personView} handleCancel={() => setPersonView(false)} personId={personId} />
|
</div>
|
);
|
}
|