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;
|
2026-06-25 12:47:53 +08:00
|
|
|
/** 绑定场地ID */
|
|
|
|
|
venueId?: number;
|
|
|
|
|
/** 绑定场地 */
|
|
|
|
|
venueName?: string;
|
2026-06-18 02:30:11 +08:00
|
|
|
/** 举办地址 */
|
|
|
|
|
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;
|
2026-06-25 11:30:40 +08:00
|
|
|
region?: string;
|
2026-06-25 12:47:53 +08:00
|
|
|
venueId?: number;
|
2026-06-18 02:30:11 +08:00
|
|
|
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;
|
2026-06-25 12:47:53 +08:00
|
|
|
venueId?: number;
|
|
|
|
|
venueName?: string;
|
2026-06-18 02:30:11 +08:00
|
|
|
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;
|
2026-06-25 11:30:40 +08:00
|
|
|
url?: string;
|
|
|
|
|
fileName?: string;
|
|
|
|
|
newFileName?: string;
|
|
|
|
|
originalFilename?: string;
|
2026-06-18 02:30:11 +08:00
|
|
|
}
|
|
|
|
|
|
2026-06-25 11:30:40 +08:00
|
|
|
/** 户外招聘会字典新增表单 */
|
|
|
|
|
export interface OutdoorFairDictForm {
|
|
|
|
|
dictType: 'outdoor_fair_type' | 'outdoor_fair_region';
|
|
|
|
|
dictLabel: string;
|
|
|
|
|
}
|
2026-06-18 02:30:11 +08:00
|
|
|
|
2026-06-25 11:30:40 +08:00
|
|
|
const CMS_OUTDOOR_FAIR_BASE = '/api/cms/outdoor-fair';
|
2026-06-18 02:30:11 +08:00
|
|
|
|
2026-06-25 11:30:40 +08:00
|
|
|
const formatDateTime = (value: any) => {
|
|
|
|
|
if (value && typeof value.format === 'function') {
|
|
|
|
|
return value.format('YYYY-MM-DD HH:mm:ss');
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
};
|
2026-06-18 02:30:11 +08:00
|
|
|
|
2026-06-25 11:30:40 +08:00
|
|
|
const toApiPayload = (data: OutdoorFairForm) => ({
|
|
|
|
|
...data,
|
|
|
|
|
holdTime: formatDateTime(data.holdTime),
|
|
|
|
|
endTime: formatDateTime(data.endTime),
|
|
|
|
|
applyStartTime: formatDateTime(data.applyStartTime),
|
|
|
|
|
applyEndTime: formatDateTime(data.applyEndTime),
|
|
|
|
|
});
|
2026-06-18 02:30:11 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取户外招聘会管理列表
|
|
|
|
|
* GET /api/cms/outdoor-fair/list
|
|
|
|
|
*/
|
|
|
|
|
export async function getOutdoorFairList(params?: OutdoorFairListParams) {
|
2026-06-25 11:30:40 +08:00
|
|
|
return request<OutdoorFairListResult>(`${CMS_OUTDOOR_FAIR_BASE}/list`, {
|
|
|
|
|
method: 'GET',
|
|
|
|
|
params,
|
|
|
|
|
});
|
|
|
|
|
}
|
2026-06-18 02:30:11 +08:00
|
|
|
|
2026-06-25 11:30:40 +08:00
|
|
|
/**
|
|
|
|
|
* 获取户外招聘会详情
|
|
|
|
|
* GET /api/cms/outdoor-fair/{id}
|
|
|
|
|
*/
|
|
|
|
|
export async function getOutdoorFairInfo(id: number) {
|
|
|
|
|
return request<OutdoorFairCommonResult>(`${CMS_OUTDOOR_FAIR_BASE}/${id}`, {
|
|
|
|
|
method: 'GET',
|
|
|
|
|
});
|
2026-06-18 02:30:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增户外招聘会
|
|
|
|
|
* POST /api/cms/outdoor-fair
|
|
|
|
|
*/
|
|
|
|
|
export async function addOutdoorFair(data: OutdoorFairForm) {
|
2026-06-25 11:30:40 +08:00
|
|
|
return request<OutdoorFairCommonResult>(CMS_OUTDOOR_FAIR_BASE, {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
data: toApiPayload(data),
|
|
|
|
|
});
|
2026-06-18 02:30:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 修改户外招聘会
|
|
|
|
|
* PUT /api/cms/outdoor-fair
|
|
|
|
|
*/
|
|
|
|
|
export async function updateOutdoorFair(data: OutdoorFairForm) {
|
2026-06-25 11:30:40 +08:00
|
|
|
return request<OutdoorFairCommonResult>(CMS_OUTDOOR_FAIR_BASE, {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
data: toApiPayload(data),
|
|
|
|
|
});
|
2026-06-18 02:30:11 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除户外招聘会
|
|
|
|
|
* DELETE /api/cms/outdoor-fair/{id}
|
|
|
|
|
*/
|
|
|
|
|
export async function deleteOutdoorFair(id: number) {
|
2026-06-25 11:30:40 +08:00
|
|
|
return request<OutdoorFairCommonResult>(`${CMS_OUTDOOR_FAIR_BASE}/${id}`, {
|
|
|
|
|
method: 'DELETE',
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增户外招聘会页面使用的字典项
|
|
|
|
|
* POST /api/cms/outdoor-fair/dict-data
|
|
|
|
|
*/
|
|
|
|
|
export async function addOutdoorFairDictOption(data: OutdoorFairDictForm) {
|
|
|
|
|
return request<OutdoorFairCommonResult>(`${CMS_OUTDOOR_FAIR_BASE}/dict-data`, {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
data,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 上传户外招聘会照片
|
|
|
|
|
* POST /api/common/upload
|
|
|
|
|
*/
|
|
|
|
|
export async function uploadOutdoorFairPhoto(file: File) {
|
|
|
|
|
const formData = new FormData();
|
|
|
|
|
formData.append('file', file);
|
|
|
|
|
return request<OutdoorFairCommonResult>('/api/common/upload', {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
data: formData,
|
|
|
|
|
});
|
2026-06-18 02:30:11 +08:00
|
|
|
}
|