/*
|
* @Company: hugeInfo
|
* @Author: ldh
|
* @Date: 2022-03-16 10:18:20
|
* @LastEditTime: 2023-05-12 20:50:56
|
* @LastEditors: lwh
|
* @Version: 1.0.0
|
* @Description: myWaitFoCase:我的待办, myCase:我的已办
|
*/
|
import React, { useEffect, useState } from 'react';
|
import Page from '../../../components/Page';
|
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
|
import { Form, Typography } from 'antd';
|
import * as $$ from '../../../utils/utility';
|
import TableSearch from '../../../components/TableSearch';
|
import TableView from '../../../components/TableView';
|
|
// 获取表单数据
|
function getTaskProcessingApi(submitData) {
|
return $$.ax.request({ url: 'caseTask/pageMyTask', type: 'get', data: submitData, service: 'mediate' });
|
}
|
|
const { Link } = Typography;
|
|
const TaskProcessing = ({ taskType }) => {
|
let location = useLocation();
|
|
let navigate = useNavigate();
|
|
const [searchParams] = useSearchParams();
|
|
const [form] = Form.useForm();
|
|
// 待办 1 已办 2
|
const pageType = taskType === 'myWaitFoCase' ? '1' : '2';
|
|
// 排序 正序 ascend 倒序 descend
|
const [sortOrder, setSortOrder] = useState('descend');
|
|
// 搜索
|
const [search, setSearch] = useState({ page: 1, size: 10 });
|
|
// 数据
|
const [data, setData] = useState({ total: 0, tableData: [] });
|
|
// 查看,处理跳转
|
function handleJump(title, type, info) {
|
let arr = type === 'check' ? [] : [{ label: '处理', key: 'caseHandle' }];
|
let brr = type === 'check' ? ['查看详情'] : ['处理'];
|
$$.setSessionStorage(location.pathname, {
|
search: search,
|
breadcrumbData: [{ title: pageType === '1' ? '我的待办' : '我的已办', url: location.pathname }, { title: brr[0] }],
|
title: pageType === '1' ? '我的待办' : '我的已办',
|
tabs: arr,
|
tableActive: info.id,
|
pageFrom: type === 'check' ? 'myCase' : 'myWaitFoCase',
|
});
|
navigate(`/mediate/caseDetail?caseId=${info.caseId}&taskId=${info.id}&back=${location.pathname}`);
|
}
|
|
// 搜索
|
function handleSearch(type, session) {
|
let paramsObj = {};
|
// 修改查询
|
if (type === 'search') {
|
paramsObj = { ...search, ...form.getFieldValue(), page: 1 };
|
$$.changeTimeFormat(paramsObj, 'createTime', 'createStart', 'createEnd');
|
$$.changeTimeFormat(paramsObj, 'finishTime', 'finishStart', 'finishEnd');
|
}
|
if (type === 'reset') {
|
form.resetFields();
|
let expireTimeSort;
|
if (sortOrder !== null) {
|
expireTimeSort = sortOrder === 'ascend' ? 'ASC' : 'DESC';
|
} else {
|
expireTimeSort = undefined;
|
}
|
paramsObj = { page: 1, size: 10, expireTimeSort };
|
}
|
if (type === 'recurrent') {
|
paramsObj = { ...search, ...session.search };
|
let copyObj = { ...paramsObj };
|
if (copyObj.createStart) {
|
copyObj.createTime = [$$.myMoment(copyObj.createStart), $$.myMoment(copyObj.createEnd)];
|
}
|
if (copyObj.finishStart) {
|
copyObj.finishTime = [$$.myMoment(copyObj.finishStart), $$.myMoment(copyObj.finishEnd)];
|
}
|
form.setFieldsValue(copyObj);
|
}
|
getTaskProcessing(paramsObj, session?.tableActive);
|
}
|
|
// 获取数据
|
async function getTaskProcessing(submitData, tableActive) {
|
global.setSpinning(true);
|
const res = await getTaskProcessingApi({ ...submitData, pageType });
|
global.setSpinning(false);
|
if (res.type) {
|
setSearch(submitData);
|
setData({ total: res.data?.totalElements, tableData: res.data?.content || [], tableActive });
|
}
|
}
|
|
// 初始化
|
useEffect(() => {
|
let values = $$.getSessionStorage(location.pathname);
|
if (!!values && searchParams.get('isBack')) {
|
handleSearch('recurrent', values);
|
} else {
|
handleSearch('reset');
|
setSortOrder(pageType === '1' ? 'descend' : null);
|
}
|
if (!!values) {
|
$$.clearSessionStorage(location.pathname);
|
}
|
}, [pageType]);
|
|
const columns = (type) => {
|
const returnColumns =
|
type === '1'
|
? [
|
{
|
title: '任务标签',
|
dataIndex: 'taskType',
|
render: (text) => (
|
<div className={`public-tag public-tag-${text === '1' ? 'tagBlue2' : 'tagRed'}`}>{text === '1' ? '正常任务' : '退回任务'}</div>
|
),
|
},
|
]
|
: [];
|
const elseColumns =
|
type === '1'
|
? [
|
{ title: '下达时间', dataIndex: 'createTime' },
|
{
|
title: '处理时限',
|
dataIndex: 'expireTime',
|
sorter: true,
|
sortDirections: ['descend', 'ascend'],
|
sortOrder,
|
showSorterTooltip: false,
|
render: (text, record) => {
|
let obj = $$.getHours(text);
|
return record.status === '1' ? (
|
<span className={obj.isNegativeNum ? 'tableView-dangerTime' : ''}>{!!text ? `${obj.hours}小时` : '-'}</span>
|
) : (
|
'-'
|
);
|
},
|
},
|
]
|
: [
|
{ title: '完成时间', dataIndex: 'finishTime' },
|
{ title: '经办人', dataIndex: 'handlerUserName' },
|
];
|
return [
|
...returnColumns,
|
{ title: '任务名称', dataIndex: 'taskNodeName' },
|
{ title: '调解案号', dataIndex: 'caseNo' },
|
{ title: '申请人', dataIndex: 'plaintiffs' },
|
{ title: '被申请人', dataIndex: 'defendants' },
|
{ title: '纠纷发生地', dataIndex: 'addr' },
|
{ title: '纠纷类型', dataIndex: 'caseTypeName' },
|
{ title: '申请渠道', dataIndex: 'canalName' },
|
...elseColumns,
|
{
|
title: '操作',
|
dataIndex: 'action',
|
width: 50,
|
render: (_, record) =>
|
pageType === '1' ? (
|
<Link onClick={() => handleJump(record.caseNo, 'edit', record)}>处理</Link>
|
) : (
|
<Link onClick={() => handleJump(record.caseNo, 'check', record)}>查看</Link>
|
),
|
},
|
];
|
};
|
|
return (
|
<Page
|
pageHead={{
|
title: pageType === '1' ? '我的待办' : '我的已办',
|
subtitle: pageType === '1' ? '处理待办工作任务' : '查询已经完成的工作任务',
|
}}
|
>
|
<div className="taskProcessing">
|
<div className="pageSearch">
|
<TableSearch
|
form={form}
|
itemData={[
|
{ type: 'Input', name: 'plaintiffs', label: '申请人' },
|
{ type: 'Input', name: 'defendants', label: '被申请人' },
|
{
|
type: 'RangePicker',
|
name: pageType === '1' ? 'createTime' : 'finishTime',
|
label: pageType === '1' ? '下达时间' : '完成时间',
|
},
|
{ type: 'Input', name: 'caseNo', label: '调解案号' },
|
{ type: 'Input', name: 'addr', label: '纠纷发生地' },
|
]}
|
handleSearch={() => handleSearch('search')}
|
handleReset={() => handleSearch('reset')}
|
/>
|
</div>
|
<div className="pageTable">
|
<TableView
|
showHeader
|
title="查询结果"
|
columns={columns(pageType)}
|
dataSource={data.tableData}
|
onChange={(_, __, sorter, extra) => {
|
if (extra.action === 'sort') {
|
let expireTimeSort = sorter.order === 'ascend' ? 'ASC' : 'DESC';
|
let paramsObj = Object.assign({}, search, { expireTimeSort });
|
setSortOrder(sorter.order || 'descend');
|
getTaskProcessing(paramsObj);
|
}
|
}}
|
pagination={{
|
current: search.page,
|
pageSize: search.size,
|
total: data.total,
|
onChange: (page, pageSize) => {
|
let paramsObj = Object.assign({}, search, { page, size: pageSize });
|
getTaskProcessing(paramsObj);
|
},
|
}}
|
rowClassName={(record) => (record.id === data.tableActive ? 'tableRowActive' : '')}
|
/>
|
</div>
|
</div>
|
</Page>
|
);
|
};
|
|
export default TaskProcessing;
|