import React, { useRef, useState, useEffect } from 'react'; import { useAccess, history } from '@umijs/max'; import { Button, FormInstance, message, Modal } from 'antd'; import { ActionType, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components'; import { PlusOutlined, DeleteOutlined, FormOutlined, ExportOutlined, EyeOutlined } from '@ant-design/icons'; import { getDictValueEnum } from '@/services/system/dict'; import DictTag from '@/components/DictTag'; import { getPublicJobFairList, getPublicJobFairDetail, addPublicJobFair, updatePublicJobFair, deletePublicJobFair, exportPublicJobFair, } from '@/services/jobfair/publicJobFair'; import EditModal from './components/EditModal'; const PublicJobFairList: React.FC = () => { const access = useAccess(); const formRef = useRef(); const actionRef = useRef(); const [modalVisible, setModalVisible] = useState(false); const [currentRow, setCurrentRow] = useState(); const [jobFairTypeEnum, setJobFairTypeEnum] = useState({}); const [yesNoEnum, setYesNoEnum] = useState({}); const [selectedRowKeys, setSelectedRowKeys] = useState([]); useEffect(() => { getDictValueEnum('job_fair_type', true).then(setJobFairTypeEnum); getDictValueEnum('sys_yes_no').then(setYesNoEnum); }, []); const handleDelete = async (ids: string) => { Modal.confirm({ title: '确认删除', content: '确定要删除选中的招聘会吗?', onOk: async () => { const res = await deletePublicJobFair(ids); if (res.code === 200) { message.success('删除成功'); actionRef.current?.reload(); setSelectedRowKeys([]); } else { message.error(res.msg || '删除失败'); } }, }); }; const buildListSearchParams = (values: Record): API.PublicJobFair.ListParams => { const { dateRange, current, pageSize, ...rest } = values || {}; const params = { ...rest } as API.PublicJobFair.ListParams; if (dateRange?.[0] && dateRange?.[1]) { params.startDate = dateRange[0]; params.endDate = dateRange[1]; } return params; }; const handleExport = async () => { message.loading('正在导出...'); try { const searchVal = formRef.current?.getFieldsValue(); await exportPublicJobFair(buildListSearchParams(searchVal || {})); message.success('导出成功'); } catch { message.error('导出失败'); } }; const columns: ProColumns[] = [ { title: '时间范围', dataIndex: 'dateRange', hideInTable: true, valueType: 'dateRange', fieldProps: { format: 'YYYY-MM-DD', }, search: { transform: (value) => ({ startDate: value[0], endDate: value[1], }), }, }, { title: '招聘会标题', dataIndex: 'jobFairTitle', ellipsis: true, }, { title: '地址', dataIndex: 'jobFairAddress', hideInSearch: true, ellipsis: true, }, { title: '类型', dataIndex: 'jobFairType', valueType: 'select', valueEnum: jobFairTypeEnum, render: (_, record) => , }, { title: '是否跨域', dataIndex: 'isCrossDomain', valueType: 'select', valueEnum: yesNoEnum, render: (_, record) => , }, { title: '开始时间', dataIndex: 'jobFairStartTime', valueType: 'dateTime', hideInSearch: true, }, { title: '结束时间', dataIndex: 'jobFairEndTime', valueType: 'dateTime', hideInSearch: true, }, { title: '创建时间', dataIndex: 'createTime', valueType: 'dateTime', hideInSearch: true, }, { title: '操作', valueType: 'option', width: 200, fixed: 'right', render: (_, record) => [ , , , ], }, ]; return ( headerTitle="公共招聘会列表" actionRef={actionRef} formRef={formRef} rowKey="jobFairId" columns={columns} scroll={{ x: 'max-content' }} rowSelection={{ selectedRowKeys, onChange: setSelectedRowKeys, }} request={async (params) => { const res = await getPublicJobFairList({ pageNum: params.current, pageSize: params.pageSize, jobFairTitle: params.jobFairTitle, jobFairType: params.jobFairType, startDate: params.startDate, endDate: params.endDate, }); return { data: res.rows, total: res.total, success: true }; }} toolBarRender={() => [ , selectedRowKeys.length > 0 && ( ), , ]} /> { setModalVisible(false); setCurrentRow(undefined); }} onSubmit={async (values) => { const res = values.jobFairId ? await updatePublicJobFair(values) : await addPublicJobFair(values); if (res.code === 200) { message.success(values.jobFairId ? '修改成功' : '新增成功'); setModalVisible(false); setCurrentRow(undefined); actionRef.current?.reload(); } else { message.error(res.msg || '操作失败'); } }} /> ); }; export default PublicJobFairList;