Files
shz-admin/src/services/jobportal/outdoorFair.ts

289 lines
8.3 KiB
TypeScript
Raw Normal View History

2026-06-18 02:30:11 +08:00
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',
},
];
2026-06-24 09:06:09 +08:00
// 自增 ID
2026-06-18 02:30:11 +08:00
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: '未找到该记录' };
}