招聘会三个模块开发
Some checks failed
Node CI / build (14.x, macOS-latest) (push) Has been cancelled
Node CI / build (14.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (14.x, windows-latest) (push) Has been cancelled
Node CI / build (16.x, macOS-latest) (push) Has been cancelled
Node CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node CI / build (16.x, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
coverage CI / build (push) Has been cancelled
Node pnpm CI / build (16.x, macOS-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, ubuntu-latest) (push) Has been cancelled
Node pnpm CI / build (16.x, windows-latest) (push) Has been cancelled

This commit is contained in:
francis-fh
2026-06-24 09:06:09 +08:00
parent e7616b0c8e
commit 3b1877f302
23 changed files with 939 additions and 98 deletions

View File

@@ -36,17 +36,45 @@ const AttendeeTab: React.FC<Props> = ({ fairId }) => {
const [interviewModalOpen, setInterviewModalOpen] = useState(false);
const columns: ProColumns<any>[] = [
{ title: '姓名', dataIndex: 'name', width: 100 },
{
title: '姓名',
dataIndex: 'name',
width: 100,
hideInTable: true,
fieldProps: { placeholder: '请输入姓名' },
},
{
title: '手机号',
dataIndex: 'phone',
width: 130,
hideInTable: true,
fieldProps: { placeholder: '请输入手机号' },
},
{
title: '面试状态',
dataIndex: 'interviewStatus',
hideInTable: true,
valueType: 'select',
options: [
{ label: '未面试', value: 'none' },
{ label: '已预约', value: 'scheduled' },
{ label: '面试中', value: 'in_progress' },
{ label: '已完成', value: 'completed' },
{ label: '已通过', value: 'passed' },
{ label: '未通过', value: 'failed' },
],
},
{ title: '姓名', dataIndex: 'name', width: 100, hideInSearch: true },
{ title: '性别', dataIndex: 'gender', width: 60, hideInSearch: true },
{ title: '手机号', dataIndex: 'phone', width: 130 },
{ title: '手机号', dataIndex: 'phone', width: 130, hideInSearch: true },
{ title: '身份证号', dataIndex: 'idCard', width: 180, hideInSearch: true },
{ title: '学历', dataIndex: 'education', width: 80, hideInSearch: true },
{ title: '毕业院校', dataIndex: 'graduationSchool', width: 150, hideInSearch: true, ellipsis: true },
{ title: '入场时间', dataIndex: 'checkInTime', valueType: 'dateTime', width: 170, render: (_, r) => r.checkInTime || '未入场' },
{ title: '入场时间', dataIndex: 'checkInTime', valueType: 'dateTime', width: 170, hideInSearch: true, render: (_, r) => r.checkInTime || '未入场' },
{ title: '入场方式', dataIndex: 'checkInMethod', width: 100, hideInSearch: true,
render: (_, r) => checkInMethodMap[r.checkInMethod] || r.checkInMethod },
{ title: '意向企业', dataIndex: 'targetCompanies', width: 180, ellipsis: true, hideInSearch: true },
{ title: '面试状态', dataIndex: 'interviewStatus', width: 100,
{ title: '面试状态', dataIndex: 'interviewStatus', width: 100, hideInSearch: true,
render: (_, r) => {
const s = interviewStatusMap[r.interviewStatus] || { text: r.interviewStatus, color: 'default' };
return <Tag color={s.color}>{s.text}</Tag>;
@@ -97,14 +125,14 @@ const AttendeeTab: React.FC<Props> = ({ fairId }) => {
toolBarRender={() => [
<Button key="simulate" type="primary" icon={<ScanOutlined />}
onClick={() => setScanModalOpen(true)}
></Button>,
></Button>,
<Button key="export" icon={<ExportOutlined />}></Button>,
]}
/>
{/* 模拟扫码入场弹窗 */}
{/* 扫码入场弹窗 */}
<ModalForm
title="模拟扫码入场"
title="扫码入场"
open={scanModalOpen}
width={450}
modalProps={{ destroyOnClose: true, onCancel: () => setScanModalOpen(false) }}