Files
hzdyjs/web/src/api/jcbt/workStudyApplicationCollegeReview.ts
T
2025-08-12 21:05:36 +08:00

194 lines
4.6 KiB
TypeScript

import request from '@/utils/request';
import { TableDataInfo, R } from '@/api/types';
// 勤工俭学申请VO类型
export interface WorkStudyApplicationVO {
id?: string | number;
positionId?: string | number;
positionName?: string;
studentId?: string | number;
studentName?: string;
studentNo?: string;
collegeId?: string | number;
collegeName?: string;
majorName?: string;
grade?: string;
className?: string;
contactPhone?: string;
email?: string;
workExperience?: string;
applicationReason?: string;
status?: string;
statusName?: string;
applicationDate?: string;
// 学院审核相关字段
collegeReviewStatus?: string;
collegeReviewTime?: string;
collegeReviewerId?: string | number;
collegeReviewerName?: string;
collegeReviewComment?: string;
// 最终审核相关字段
finalReviewStatus?: string;
finalReviewTime?: string;
finalReviewerId?: string | number;
finalReviewerName?: string;
finalReviewComment?: string;
// 基础字段
createBy?: string | number;
createTime?: string;
updateBy?: string | number;
updateTime?: string;
// 兼容旧字段名(保持向后兼容)
collegeReviewBy?: string | number;
collegeReviewByName?: string;
finalReviewBy?: string | number;
finalReviewByName?: string;
}
// 查询参数
export interface WorkStudyApplicationQuery {
pageNum?: number;
pageSize?: number;
positionName?: string;
studentName?: string;
studentNo?: string;
collegeName?: string;
status?: string;
applicationDate?: string;
params?: any;
}
// 审核表单
export interface ReviewForm {
applicationId: string | number;
reviewResult: string;
reviewComment?: string;
}
// 统计数据
export interface StatisticsVO {
pendingCount?: number;
approvedCount?: number;
rejectedCount?: number;
finalApprovedCount?: number;
totalCount?: number;
}
// 选项数据
export interface OptionsVO {
statusOptions?: Array<{ label: string; value: string }>;
reviewStatusOptions?: Array<{ label: string; value: string }>;
}
// 查询本学院待审核申请列表
export function listPendingApplications(query: WorkStudyApplicationQuery) {
return request<TableDataInfo<WorkStudyApplicationVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/pendingList',
method: 'get',
params: query,
headers: {
isEncrypt: 'true'
}
});
}
// 查询本学院所有申请列表
export function listCollegeApplications(query: WorkStudyApplicationQuery) {
return request<TableDataInfo<WorkStudyApplicationVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/list',
method: 'get',
params: query,
headers: {
isEncrypt: 'true'
}
});
}
// 获取本学院申请详情
export function getCollegeApplication(id: string | number) {
return request<R<WorkStudyApplicationVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/' + id,
method: 'get',
headers: {
isEncrypt: 'true'
}
});
}
// 学院审核
export function reviewApplication(data: ReviewForm) {
return request<R<any>>({
url: '/jcbt/workStudyApplicationCollegeReview/review',
method: 'post',
data: data,
headers: {
isEncrypt: 'true'
}
});
}
// 批量学院审核
export function batchReviewApplications(ids: Array<string | number>, reviewResult: string, reviewComment?: string) {
return request<R<any>>({
url: '/jcbt/workStudyApplicationCollegeReview/batchReview',
method: 'post',
params: {
reviewResult,
reviewComment
},
data: ids,
headers: {
isEncrypt: 'true'
}
});
}
// 获取本学院申请统计信息
export function getCollegeStatistics() {
return request<R<StatisticsVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/statistics',
method: 'get',
headers: {
isEncrypt: 'true'
}
});
}
// 获取本学院申请统计信息(调试版本)
export function getCollegeStatisticsDebug() {
return request<R<any>>({
url: '/jcbt/workStudyApplicationCollegeReview/debug/statistics',
method: 'get',
headers: {
isEncrypt: 'true'
}
});
}
// 通过列表API获取统计信息(作为备用方案)
export function getCollegeStatisticsByList() {
return request<TableDataInfo<WorkStudyApplicationVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/list',
method: 'get',
params: {
pageNum: 1,
pageSize: 1,
status: 'SUBMITTED'
},
headers: {
isEncrypt: 'true'
}
});
}
// 获取可用选项
export function getApplicationOptions() {
return request<R<OptionsVO>>({
url: '/jcbt/workStudyApplicationCollegeReview/options',
method: 'get',
headers: {
isEncrypt: 'true'
}
});
}