山西督察-superintend-distribute-web react
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

494 lines
15 KiB

import React, { useState, useEffect } from 'react';
import { Table, Modal, Button, message, Pagination, Tooltip, Space } from 'antd';
import { connect } from 'umi';
import moment from 'moment';
import TopSearch from '../TopSearch';
import HCBGBtn from '../HCBGBtn';
import CK from '@/components/Tabs-CK';
import CXPF from '@/components/Tabs-CXPF';
import BL from '@/components/Tabs-BL';
import PFSPBatch from '@/components/PFSP-Batch';
import BJSPBatch from '@/components/BJSP-Batch';
import PFSP from '@/components/Tabs-PFSP';
import SLGZ from '@/components/Tabs-SLGZ';
import BJSP from '@/components/Tabs-BJSP';
import BJSQ from '@/components/Tabs-BJSQ';
import BJGZ from '@/components/Tabs-BJGZ';
import { getDicsName } from '@/utils/utils';
import { AJZT, BLFS, UserLevel } from '@/utils/constants';
import { getHGIcons, ExampleBar, getTimeLine } from '@/components/MyIcons';
const initDateType = 'sevenDays';
const initSearchParams = {
page: 1,
size: 10,
startTime: moment().add(-7, 'days'),
endTime: moment(),
};
const TableList = (props) => {
const { msg, sysToken, refesh, isLocationInBu, type, locationType } = props;
// debugger;
const [searchParams, setSearchParams] = useState(initSearchParams);
const [tableData, setTableData] = useState(null);
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
const [nowModal, setNowModal] = useState(null);
const rowSelection = {
selectedRowKeys,
onChange: (keys, rows) => {
setSelectedRows(rows)
setSelectedRowKeys(keys);
},
// getCheckboxProps: (record) => ({
// disabled: record.ajhczbl === 0,
// }),
};
const handleClearCheck = () => {
setSelectedRowKeys([]);
setSelectedRows([]);
};
const getList = (params) => {
handleClearCheck();
const newParams = isLocationInBu && type === 'sheng' ? { ...params, sign: 1 } : params; // 部里发布 并且查询省里的列表加额外参数
// debugger;
const newSysToken = (locationType === UserLevel.Province.value && type === 'sheng')|| (locationType === UserLevel.City.value && type === 'shi') ? '' : sysToken;
props.fetchDoingList({ params: newParams, sysToken:newSysToken }).then((data) => setTableData(data));
};
const hideModal = (flag) => {
setNowModal(null);
if (flag) {
props.setRefresh(Math.random()); // 更新modal里的监测数据,为了刷新右上角消息
getList(searchParams);
}
};
const changeModal = (newComponent, flag) => {
setNowModal(newComponent);
if (flag) {
getList(searchParams);
}
};
const reBJSP = (record) => {
setNowModal(
<BJSP id={record.id} sysToken={sysToken} hideModal={hideModal} />,
);
};
const reBJSQ = (record) => {
setNowModal(
<BJSQ id={record.id} sysToken={sysToken} hideModal={hideModal} />,
);
};
const onclickReBJCheck = (record, modalType) => {
props.fetchReBJCheck({ params: record.id, sysToken }).then((res) => {
if (res.data) {
if (modalType === 'sp') reBJSP(record);
if (modalType === 'sq') reBJSQ(record);
getList(searchParams); // 状态更改 要刷新列表
} else {
message.warning('不!');
}
});
};
// ck --查看--按钮是否显示 0-否 1-是
// slpf -- 受理派发 --按钮是否显示 0-否 1-是
// sldspgz 受理待审批--跟踪--按钮是否显示 0-否 1-是
// sldspsp 受理待审批--审批--按钮是否显示 0-否 1-是
// slbbhcxsq 受理被驳回--重新申请 按钮是否显示 0-否 1-是
// ajhczbl 案件核查中--办理--按钮是否显示 0-否 1-是
// bjdspgz 办结待审批--跟踪--按钮是否显示 0-否 1-是
// bjdspsp 办结待审批--审批--按钮是否显示 0-否 1-是"
// bjbbhcxsq 办结被驳回--重新申请--按钮是否显示 0-否 1-是
// bjbbhcxsp 办结被驳回--重新审批--按钮是否显示 0-否 1-是
const renderBtn = (record) => {
const { id } = record;
const allBtns = [];
// const all = ['ck', 'sldspgz'];
const ck = (
<Button
key='ck'
type="link"
onClick={() => setNowModal(<CK id={id} info={record} sysToken={sysToken} />)}
>
查看
</Button>
);
const slpf = (
<Button
key='slpf'
type="link"
onClick={() => setNowModal(<CXPF id={id} sysToken={sysToken} hideModal={hideModal} />)}
>
受理派发
</Button>
);
const sldspgz = (
<Button
key='sldspgz'
type="link"
onClick={() => setNowModal(<SLGZ id={id} sysToken={sysToken} hideModal={hideModal} />)}
>
跟踪
</Button>
);
const sldspsp = (
<Button
key='sldspsp'
type="link"
onClick={() => setNowModal(<PFSP id={id} sysToken={sysToken} hideModal={hideModal} />)}
>
审批
</Button>
);
const slbbhcxsq = (
<Button
key='slbbhcxsq'
type="link"
onClick={() => setNowModal(<CXPF id={id} sysToken={sysToken} hideModal={hideModal} />)}
>
重新申请
</Button>
);
const ajhczbl = (
<Button
key='ajhczbl'
type="link"
onClick={() =>
setNowModal(
<BL id={id} sysToken={sysToken} hideModal={hideModal} changeModal={changeModal} />,
)
}
>
办理
</Button>
);
const bjdspgz = (
<Button
key='bjdspgz'
type="link"
onClick={() => setNowModal(<BJGZ id={id} sysToken={sysToken} hideModal={hideModal} />)}
>
跟踪
</Button>
);
const bjdspsp = (
<Button
key='bjdspsp'
type="link"
onClick={() =>
setNowModal(
<BJSP id={id} sysToken={sysToken} hideModal={hideModal} changeModal={changeModal} />,
)
}
>
审批
</Button>
);
const bjbbhcxsq = (
<Button key='bjbbhcxsq' type="link" onClick={() => onclickReBJCheck(record, 'sq')}>
重新申请
</Button>
);
const bjbbhcxsp = (
<Button key='bjbbhcxsp' type="link" onClick={() => onclickReBJCheck(record, 'sp')}>
重新审批
</Button>
);
// debugger;
if (record.ck === 1) allBtns.push(ck);
if (record.slpf === 1) allBtns.push(slpf);
if (record.sldspgz === 1) allBtns.push(sldspgz);
if (record.sldspsp === 1) allBtns.push(sldspsp);
if (record.slbbhcxsq === 1) allBtns.push(slbbhcxsq);
if (record.ajhczbl === 1) allBtns.push(ajhczbl);
if (record.bjdspgz === 1) allBtns.push(bjdspgz);
if (record.bjdspsp === 1) allBtns.push(bjdspsp);
if (record.bjbbhcxsq === 1) allBtns.push(bjbbhcxsq);
if (record.bjbbhcxsp === 1) allBtns.push(bjbbhcxsp);
// all.forEach(item => {
// if (record[item] === 1) {
// console.log('ppsp',[item.toUpperCase()])
// allBtns.push([item.toUpperCase()])
// };
// })
// debugger
return allBtns;
};
const columns = [
{
title: '序号',
dataIndex: 'id',
key: 'id',
render: (text, record, index) => index + 1,
width: '5%',
},
{
title: '预警编号',
dataIndex: 'yjBh',
width: '24%',
render: (text, record) => {
return (<span>{getHGIcons(record?.ccjg)}{text}</span>);
}
},
{
title: '模型名称',
dataIndex: 'mxMc',
width: '8%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '问题类型',
dataIndex: 'cjwtLx',
width: '8%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '承办督察部门',
dataIndex: 'sadwMc',
width: '9%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '办理方式',
dataIndex: 'nbfs',
width: '7%',
render: text => (<Tooltip placement="topLeft" title={getDicsName(BLFS, text)} >{getDicsName(BLFS, text)}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '问题简述',
dataIndex: 'wtjs',
width: '7%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '当前办理单位',
dataIndex: 'dqbldwMc',
width: '12%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '当前办理人',
dataIndex: 'dqblrMc',
width: '9%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '预警流向',
dataIndex: 'blfsMc',
width: '7%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '最新状态',
dataIndex: 'dqZt',
width: '7%',
// render: (text) => getDicsName(AJZT, text),
render: text => (<Tooltip placement="topLeft" title={getDicsName(AJZT, text)} >{getDicsName(AJZT, text)}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '最新更新时间',
dataIndex: 'updateTime',
width: '9%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '最迟反馈时间',
dataIndex: 'zcfkSj',
width: '9%',
render: text => (<Tooltip placement="topLeft" title={text} >{text}</Tooltip>),
ellipsis: { showTitle: false },
},
{
title: '时限',
key: 'id',
dataIndex: 'fkyj',
width: '5%',
render: (text) => getTimeLine(text),
// fixed: 'right',
},
{
title: '操作',
dataIndex: 'id',
width: '12%',
render: (text, record) => {
console.log(record, 999)
return renderBtn(record);
},
fixed: 'right',
},
];
useEffect(() => { // 列表正常请求
if (!msg) {
getList(searchParams);
}
}, [refesh]);
useEffect(() => { // 点击待办跳转过来的,参数由跳转带过来
if (msg) {
setSearchParams(msg);
getList(msg);
}
}, [msg]);
// 点击查询
const onSearch = (params) => {
setSearchParams({ ...searchParams, ...params, page: 1 });
getList({ ...searchParams, ...params, page: 1 });
};
const handleReset = () => {
setSearchParams(initSearchParams);
getList(initSearchParams);
};
const changePage = (page) => {
setSearchParams({ ...searchParams, page });
getList({ ...searchParams, page });
};
const checkBatch = (dqzt, nowType) => {
if (selectedRows.length === 0) {
message.warning('请选择办理案件!');
return false;
}
const Nbfs = selectedRows[0].nbfs;
const Blfs = selectedRows[0].blfs;
let showPFSPRows = [];
if (selectedRows.every((item) => item.dqZt === dqzt || AJZT.BJDSP.value && item.nbfs !== null && item.nbfs === Nbfs && item.nbfs !== null && item.nbfs === Nbfs && item.blfs !== null && item.blfs === Blfs )) {
if (nowType === 'sp') { // 批量审批
selectedRows.map(item => {
if (item.sldspsp || item.bjdspsp) {
showPFSPRows.push(item.id);
}
});
if (showPFSPRows.length === selectedRows.length) {
setNowModal(<PFSPBatch ids={showPFSPRows} batchNbfs={Nbfs} sysToken={sysToken} hideModal={hideModal} />)
} else {
message.warning('选择的案件中有不可审批的案件,无法批量审批!')
}
} else if (nowType === 'bj') { // 批量办结
setNowModal(<BJSPBatch ids={selectedRowKeys} batchNbfs={Nbfs} sysToken={sysToken} hideModal={hideModal} />)
}
} else {
message.warning('请选择对应且相同状态下办理方式统一案件进行批量处理!')
}
}
return (
<div>
{/* <p>{props.a}</p> */}
<TopSearch
onSearch={onSearch}
initDateType={initDateType}
// initParams={{ mxmc: 111 }}
changeParams={msg}
handleReset={handleReset}
/>
<div style={{ textAlign: 'right', padding: 10, backgroundColor: '#fff', paddingRight: 20 }}>
<Space>
{/* <Button>批量受理派发</Button> */}
<Button type='primary' onClick={() => checkBatch(AJZT.SLDSP.value, 'sp')}>批量受理审批</Button>
{/* <Button>批量办结审批</Button> */}
<HCBGBtn
sysToken={sysToken}
ids={selectedRowKeys}
selectedRowKeys={selectedRows}
handleClearCheck={handleClearCheck}
/>
</Space>
</div>
<Table
columns={columns}
dataSource={tableData?.records}
rowKey="id"
rowSelection={rowSelection}
scroll={{ x: 1820 }}
loading={props.loading}
pagination={false}
// current: tableData?.current,
// pageSize: tableData?.size,
// total: tableData?.total,
// onChange: (page) => changePage(page),
// showSizeChanger: true,
// onShowSizeChange: () => this.onShowSizeChange,
// pageSizeOptions: ['10', '20', '50', '100', '500', '1000'],
/>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<ExampleBar />
<Pagination
current={tableData?.current || 0}
pageSize={tableData?.size || 0}
total={tableData?.total || 0}
onChange={page => changePage(page)}
showTotal={(total) => `${total}`}
/>
</div>
{nowModal && (
<Modal
visible={nowModal}
footer={null}
onCancel={() => setNowModal(null)}
maskClosable={false}
width={1200}
// style={{ height: 'calc(100vh - 100px)' , top: 50, overflowY: 'auto' }}
>
{nowModal}
</Modal>
)}
</div>
);
};
const mapStateToProps = ({ user, doing, loading }) => ({
user: user.currentUser,
doing,
loading:
loading.effects['doing/fetchDoingList'] || loading.effects['doing/fetchReBJCheck'] || false,
});
const mapDispatchToProps = (dispatch) => ({
// 列表
fetchDoingList({ params, sysToken }) {
const chooseTime = {};
if (params.startTime)
chooseTime.startTime = `${params.startTime.format('YYYY-MM-DD')} 00:00:00`;
if (params.endTime) chooseTime.endTime = `${params.endTime.format('YYYY-MM-DD')} 23:59:59`;
return dispatch({
type: 'doing/fetchDoingList',
payload: { params: { ...params, ...chooseTime }, sysToken },
});
},
fetchReBJCheck(params) {
return dispatch({ type: 'doing/fetchReBJCheck', payload: params });
},
setRefresh(params) {
return dispatch({ type: 'doing/setRefresh', payload: params });
}
});
export default connect(mapStateToProps, mapDispatchToProps)(TableList);