import { request } from '@umijs/max'; /** 户外招聘会列表项 */ export interface OutdoorFairItem { id: number; /** 招聘会标题 */ title: string; /** 举办单位 */ hostUnit: string; /** 招聘会类型 */ fairType: string; /** 举办区域 */ region: string; /** 举办地址 */ address: string; /** 展位数量 */ boothCount: number; /** 举办时间 */ holdTime: string; /** 截止时间 */ endTime: string; /** 开放申请 */ applyStartTime: string; /** 截止申请 */ applyEndTime: string; /** 是否开启线上申请 */ onlineApply: boolean; /** 招聘会照片 */ photoUrl: string; createTime?: string; updateTime?: string; } /** 户外招聘会查询参数 */ export interface OutdoorFairListParams { title?: string; hostUnit?: string; fairType?: string; current?: number; pageSize?: number; } /** 户外招聘会列表响应 */ export interface OutdoorFairListResult { code: number; msg?: string; total: number; rows: OutdoorFairItem[]; } /** 户外招聘会新增/编辑表单 */ export interface OutdoorFairForm { id?: number; title: string; hostUnit: string; fairType: string; region: string; address: string; boothCount: number; holdTime: string; endTime: string; applyStartTime: string; applyEndTime: string; onlineApply: boolean; photoUrl: string; } /** 通用响应 */ export interface OutdoorFairCommonResult { code: number; msg?: string; data?: any; } // ==================== 静态假数据 ==================== const MOCK_DATA: OutdoorFairItem[] = [ { id: 1, title: '2026年石河子市春季户外招聘会', hostUnit: '第八师石河子市人力资源和社会保障局', fairType: '综合类', region: '第八师(石河子市)', address: '石河子市北三路石河子大学中区图书馆前广场', boothCount: 80, holdTime: '2026-03-15 09:00:00', endTime: '2026-03-15 17:00:00', applyStartTime: '2026-03-01 00:00:00', applyEndTime: '2026-03-10 23:59:59', onlineApply: true, photoUrl: 'https://picsum.photos/seed/outdoor1/400/300', createTime: '2026-02-20 10:30:00', }, { id: 2, title: '2026年阿拉尔市高校户外专场招聘会', hostUnit: '第一师阿拉尔市人力资源和社会保障局', fairType: '校园招聘', region: '第一师(阿拉尔市)', address: '阿拉尔市塔里木大道塔里木大学综合教学楼前广场', boothCount: 60, holdTime: '2026-04-20 09:00:00', endTime: '2026-04-20 16:00:00', applyStartTime: '2026-04-01 00:00:00', applyEndTime: '2026-04-15 23:59:59', onlineApply: true, photoUrl: 'https://picsum.photos/seed/outdoor2/400/300', createTime: '2026-03-01 14:00:00', }, { id: 3, title: '2026年图木舒克市制造业户外招聘会', hostUnit: '第三师图木舒克市人力资源和社会保障局', fairType: '行业专场', region: '第三师(图木舒克市)', address: '图木舒克市迎宾大道市政广场', boothCount: 120, holdTime: '2026-05-10 08:30:00', endTime: '2026-05-10 17:30:00', applyStartTime: '2026-04-25 00:00:00', applyEndTime: '2026-05-05 23:59:59', onlineApply: false, photoUrl: 'https://picsum.photos/seed/outdoor3/400/300', createTime: '2026-03-10 09:00:00', }, { id: 4, title: '2026年可克达拉市高新技术户外招聘会', hostUnit: '第四师可克达拉市人力资源和社会保障局', fairType: '高新技术专场', region: '第四师(可克达拉市)', address: '可克达拉市镇江路市民服务中心广场', boothCount: 50, holdTime: '2026-06-18 09:00:00', endTime: '2026-06-18 16:30:00', applyStartTime: '2026-06-01 00:00:00', applyEndTime: '2026-06-12 23:59:59', onlineApply: true, photoUrl: 'https://picsum.photos/seed/outdoor4/400/300', createTime: '2026-03-20 11:00:00', }, { id: 5, title: '2026年双河市农业行业户外招聘会', hostUnit: '第五师双河市人力资源和社会保障局', fairType: '行业专场', region: '第五师(双河市)', address: '双河市人民路双河市文化广场', boothCount: 40, holdTime: '2026-07-08 09:00:00', endTime: '2026-07-08 17:00:00', applyStartTime: '2026-06-20 00:00:00', applyEndTime: '2026-07-03 23:59:59', onlineApply: false, photoUrl: 'https://picsum.photos/seed/outdoor5/400/300', createTime: '2026-04-01 08:30:00', }, { id: 6, title: '2026年五家渠市电子产业户外招聘会', hostUnit: '第六师五家渠市人力资源和社会保障局', fairType: '行业专场', region: '第六师(五家渠市)', address: '五家渠市长安东街五家渠市人民广场', boothCount: 70, holdTime: '2026-08-15 08:30:00', endTime: '2026-08-15 17:30:00', applyStartTime: '2026-08-01 00:00:00', applyEndTime: '2026-08-10 23:59:59', onlineApply: true, photoUrl: 'https://picsum.photos/seed/outdoor6/400/300', createTime: '2026-04-15 10:00:00', }, { id: 7, title: '2026年胡杨河市智能制造户外招聘会', hostUnit: '第七师胡杨河市人力资源和社会保障局', fairType: '智能制造专场', region: '第七师(胡杨河市)', address: '胡杨河市团结路胡杨河市创业广场', boothCount: 55, holdTime: '2026-09-12 09:00:00', endTime: '2026-09-12 16:00:00', applyStartTime: '2026-08-25 00:00:00', applyEndTime: '2026-09-05 23:59:59', onlineApply: true, photoUrl: 'https://picsum.photos/seed/outdoor7/400/300', createTime: '2026-05-01 09:30:00', }, { id: 8, title: '2026年北屯市文旅行业户外招聘会', hostUnit: '第十师北屯市人力资源和社会保障局', fairType: '文旅专场', region: '第十师(北屯市)', address: '北屯市博望路北屯市文化广场', boothCount: 35, holdTime: '2026-10-20 09:00:00', endTime: '2026-10-20 17:00:00', applyStartTime: '2026-10-01 00:00:00', applyEndTime: '2026-10-15 23:59:59', onlineApply: false, photoUrl: 'https://picsum.photos/seed/outdoor8/400/300', createTime: '2026-05-10 16:00:00', }, ]; // 模拟自增 ID let nextId = MOCK_DATA.length + 1; // ==================== API 接口(使用假数据) ==================== const CMS_OUTDOOR_FAIR_BASE = '/api/cms/outdoor-fair'; /** * 获取户外招聘会管理列表 * GET /api/cms/outdoor-fair/list */ export async function getOutdoorFairList(params?: OutdoorFairListParams) { let filtered = [...MOCK_DATA]; if (params?.title) { filtered = filtered.filter((item) => item.title.includes(params.title!)); } if (params?.hostUnit) { filtered = filtered.filter((item) => item.hostUnit.includes(params.hostUnit!)); } if (params?.fairType) { filtered = filtered.filter((item) => item.fairType.includes(params.fairType!)); } const total = filtered.length; const current = params?.current || 1; const pageSize = params?.pageSize || 10; const start = (current - 1) * pageSize; const rows = filtered.slice(start, start + pageSize); return { code: 200, msg: '操作成功', total, rows, }; } /** * 新增户外招聘会 * POST /api/cms/outdoor-fair */ export async function addOutdoorFair(data: OutdoorFairForm) { const newItem: OutdoorFairItem = { ...data, id: nextId++, createTime: new Date().toISOString().replace('T', ' ').substring(0, 19), }; MOCK_DATA.unshift(newItem); return { code: 200, msg: '新增成功', data: newItem }; } /** * 修改户外招聘会 * PUT /api/cms/outdoor-fair */ export async function updateOutdoorFair(data: OutdoorFairForm) { const index = MOCK_DATA.findIndex((item) => item.id === data.id); if (index !== -1) { MOCK_DATA[index] = { ...MOCK_DATA[index], ...data, updateTime: new Date().toISOString().replace('T', ' ').substring(0, 19), }; return { code: 200, msg: '修改成功', data: MOCK_DATA[index] }; } return { code: 404, msg: '未找到该记录' }; } /** * 删除户外招聘会 * DELETE /api/cms/outdoor-fair/{id} */ export async function deleteOutdoorFair(id: number) { const index = MOCK_DATA.findIndex((item) => item.id === id); if (index !== -1) { MOCK_DATA.splice(index, 1); return { code: 200, msg: '删除成功' }; } return { code: 404, msg: '未找到该记录' }; }