import React, { useRef, useState } from 'react'; import { useAccess } from '@umijs/max'; import { Button, message, Modal, Tag } from 'antd'; import { ActionType, ProColumns, ProTable, ModalForm, ProFormText, ProFormSelect } from '@ant-design/pro-components'; import { PlusOutlined, DeleteOutlined, FormOutlined, ApartmentOutlined } from '@ant-design/icons'; import { getJobFairList, addJobFair, updateJobFair, deleteJobFair, } from '@/services/jobportal/indoorJobFair'; import type { JobFairItem, JobFairForm } from '@/services/jobportal/indoorJobFair'; import FairBoothModal from './FairBoothModal'; interface Props { fairId: number; fairInfo: JobFairItem; onFairUpdate: () => void; } const FairManageTab: React.FC = ({ fairInfo }) => { const access = useAccess(); const actionRef = useRef(); const [modalOpen, setModalOpen] = useState(false); const [editingFair, setEditingFair] = useState(null); const [boothModalOpen, setBoothModalOpen] = useState(false); const [boothFair, setBoothFair] = useState(null); const statusMap: Record = { pending: { text: '筹备中', color: 'default' }, ongoing: { text: '进行中', color: 'green' }, finished: { text: '已结束', color: 'red' }, }; const columns: ProColumns[] = [ { title: '招聘会名称', dataIndex: 'fairName', ellipsis: true }, { title: '场地名称', dataIndex: 'venueName', ellipsis: true, hideInSearch: true }, { title: '开始日期', dataIndex: 'startDate', hideInSearch: true }, { title: '结束日期', dataIndex: 'endDate', hideInSearch: true }, { title: '使用展位数', dataIndex: 'boothUseCount', hideInSearch: true }, { title: '状态', dataIndex: 'status', hideInSearch: true, render: (_, record) => { const s = statusMap[record.status] || { text: record.status, color: 'default' }; return {s.text}; }, }, { title: '创建时间', dataIndex: 'createTime', valueType: 'dateTime', hideInSearch: true }, { title: '操作', valueType: 'option', width: 200, render: (_, record) => [ , , , ], }, ]; const venueOptions = [ { label: '石河子大学体育馆', value: 1 }, { label: '第八师人力资源市场', value: 2 }, { label: '阿拉尔市人才交流中心', value: 3 }, { label: '图木舒克市职业介绍所', value: 4 }, ]; const venueNameMap: Record = { 1: '石河子大学体育馆', 2: '第八师人力资源市场', 3: '阿拉尔市人才交流中心', 4: '图木舒克市职业介绍所', }; return (
{ const res = await getJobFairList({ current: params.current, pageSize: params.pageSize, fairName: params.fairName, startDate: params.startDate, endDate: params.endDate, } as any); return { data: res.rows, total: res.total, success: true }; }} toolBarRender={() => [ , ]} /> setModalOpen(false) }} onFinish={async (values) => { const submitValues = { ...values, venueName: venueNameMap[values.venueId as number] || '', }; const res = editingFair ? await updateJobFair({ id: editingFair.id, ...submitValues } as JobFairForm) : await addJobFair(submitValues as JobFairForm); if (res.code === 200) { message.success(res.msg); setModalOpen(false); actionRef.current?.reload(); return true; } message.error(res.msg); return false; }} initialValues={editingFair} > setBoothModalOpen(false)} />
); }; export default FairManageTab;