import React, { useState, useEffect } from 'react'; import { Form, Select, Button, Table, Space, Modal, message } from 'antd'; import { SearchOutlined, DeleteOutlined } from '@ant-design/icons'; import type { ColumnsType, TablePaginationConfig } from 'antd/es/table'; //查看弹窗 import ViewModal from './components/ViewModal'; //查看评审结果 弹窗 import ResultModal from './components/ResultModal'; //发起准入 弹窗 import CreateModal from './components/CreateModal'; import CategorySelector from '@/components/CategorySelector'; //接口 import { getPage, startApprove } from './services' //统一列表分页 import tableProps from '@/utils/tableProps' const { Option } = Select; interface Data { id: string; deptId: string; accessTypeText: string; createTime: string; approveStatus: string; } const AccessManagement: React.FC = () => { // 查询 const [form] = Form.useForm(); //列表渲染数据 const [data, setData] = useState([]); // 发起准入、查看、发起审批、审批记录、查看评审结果 显示哪个组件状态 const [modalInfo, setModalInfo] = useState<{ type: string; visible: boolean; record?: any }>({ type: '', visible: false, }); //列表分页 const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0 }); //列表加载 const [loading, setLoading] = useState(false); // 列表方法 const getList = async (values: any = {}, pageNo: number = 1, pageSize: number = 10) => { setLoading(true); try { const { code, data } = await getPage({ ...values, pageNo, pageSize }); if (code === 200) { setData(data.records); setPagination({ current: pageNo, pageSize, total: data.total }); } } finally { setLoading(false); } }; //初始化 useEffect(() => { const values = form.getFieldsValue(); getList(values, 1, 10); }, []); //开启弹窗 const openModal = (type: string, record?: any) => { setModalInfo({ type, visible: true, record }); }; //关闭弹窗 const closeModal = () => { setModalInfo({ type: '', visible: false }); const values = form.getFieldsValue(); getList(values, 1, 10); }; // 重置 const handleReset = () => { form.resetFields() const values = form.getFieldsValue(); getList(values, 1, 10); }; const handleApproval = (id: string) => { Modal.confirm({ title: '是否确认发起审批?', onOk: async () => { const res = await startApprove({ id }); if (res.code === 200) { message.success('发起审批成功'); const values = form.getFieldsValue(); getList(values, 1, 10); } }, }); }; //列表头部数据 const columns: ColumnsType = [ { title: '序号', dataIndex: 'index', width: 80, render: (_: any, __: any, idx: number) => (((pagination.current ?? 1) - 1) * (pagination.pageSize ?? 10)) + idx + 1, }, { title: '准入工作', ellipsis: true, width: 120, dataIndex: 'accessWorkName' }, { title: '准入单位', ellipsis: true, width: 120, dataIndex: 'deptId' }, { title: '准入部门', ellipsis: true, width: 120, dataIndex: 'deptId' }, { title: '准入方式', ellipsis: true, width: 120, dataIndex: 'accessTypeText' }, { title: '申请时间', ellipsis: true, width: 180, dataIndex: 'createTime' }, { title: '状态', dataIndex: 'reviewStatusText', width: 80, }, { title: '操作', width: 200, fixed: 'right', render: (_: any, record: any) => ( openModal('view', record)}>查看 {((record.reviewStatus === '3' && record.accessType === 'online') && !record.approveStatusText) && ( handleApproval(record.id)}> 发起审批 )} {(record.reviewStatus === '3' && record.accessType === 'online') && ( <> openModal('result', record)}>评审结果 )} ), }, ]; return ( <>
{ const values = form.getFieldsValue(); getList(values, pagination.current!, pagination.pageSize!) }} style={{ flex: 1, minHeight: 0 }} scroll={{ y: 'calc(100vh - 350px)' }} /> {/* 弹窗区 */} ); }; export default AccessManagement;