62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import request from './request'
|
|
|
|
export interface DelayPenaltyRecord {
|
|
id: number
|
|
taskId: number
|
|
designerId: number
|
|
delayDays: number
|
|
delayHours: number
|
|
delayLevel: 'light' | 'general' | 'severe' | 'major'
|
|
penaltyScore: number
|
|
originalDeadline: string
|
|
actualTime: string
|
|
status: 'confirmed' | 'appealed' | 'approved' | 'rejected'
|
|
appealReason?: string
|
|
appealTime?: string
|
|
appealResult?: string
|
|
approverId?: number
|
|
approveTime?: string
|
|
createTime: string
|
|
updateTime: string
|
|
}
|
|
|
|
/**
|
|
* 根据任务ID查询延误记录
|
|
*/
|
|
export const getDelayRecordsByTaskId = (taskId: number) => {
|
|
return request.get<DelayPenaltyRecord[]>(`/delay-penalty/task/${taskId}`)
|
|
}
|
|
|
|
/**
|
|
* 根据设计师ID查询延误记录
|
|
*/
|
|
export const getDelayRecordsByDesignerId = (designerId: number) => {
|
|
return request.get<DelayPenaltyRecord[]>(`/delay-penalty/designer/${designerId}`)
|
|
}
|
|
|
|
/**
|
|
* 统计设计师的延误扣分总数
|
|
*/
|
|
export const getTotalPenaltyScore = (designerId: number) => {
|
|
return request.get<number>(`/delay-penalty/designer/${designerId}/total`)
|
|
}
|
|
|
|
/**
|
|
* 申诉延误扣分
|
|
*/
|
|
export const appealDelayPenalty = (recordId: number, appealReason: string) => {
|
|
return request.post<string>(`/delay-penalty/${recordId}/appeal`, null, {
|
|
params: { appealReason }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 管理员审批申诉
|
|
*/
|
|
export const approveAppeal = (recordId: number, approved: boolean, appealResult?: string) => {
|
|
return request.post<string>(`/delay-penalty/${recordId}/approve`, null, {
|
|
params: { approved, appealResult }
|
|
})
|
|
}
|
|
|