69 lines
2.0 KiB
JavaScript
69 lines
2.0 KiB
JavaScript
import { request } from '@/api/request.js'
|
|
|
|
/**
|
|
* OA 考勤打卡接口封装,对应后端 /api/oa/attendance/*。
|
|
*
|
|
* 打卡联动工作排班:今日排班由后端匹配,匹配不上时 today.warning 非空,
|
|
* 但 can_clock_in / can_clock_out 仍为 true(提醒后仍可签到)。
|
|
*/
|
|
|
|
/** 今日打卡状态:{date, employee, entry, record, matched, warning, can_clock_in, can_clock_out, recent, stats} */
|
|
export function fetchAttendanceToday(days = 7) {
|
|
return request({ url: '/api/oa/attendance/today', data: { days } })
|
|
}
|
|
|
|
/**
|
|
* 签到 / 签退
|
|
* @param {'in'|'out'} type
|
|
* @param {{location?:string,remark?:string}} extra
|
|
* @returns {Promise<{record:object,warning:string,duplicated:boolean,message:string}>}
|
|
*/
|
|
export function clockAttendance(type, extra = {}) {
|
|
return request({
|
|
url: '/api/oa/attendance/clock',
|
|
method: 'POST',
|
|
data: {
|
|
type,
|
|
location: extra.location || '',
|
|
remark: extra.remark || ''
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 我的考勤记录(默认本月)
|
|
* @param {{page?:number,pageSize?:number,startDate?:string,endDate?:string}} params
|
|
* @returns {Promise<{list:Array,total:number,stats:object}>}
|
|
*/
|
|
export function fetchMyAttendanceRecords(params = {}) {
|
|
return request({
|
|
url: '/api/oa/attendance/records',
|
|
data: {
|
|
page: params.page || 1,
|
|
pageSize: params.pageSize || 20,
|
|
start_date: params.startDate || '',
|
|
end_date: params.endDate || ''
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 个人考勤卡:按 月 / 季 / 年 聚合
|
|
* @param {'month'|'quarter'|'year'} period
|
|
* @param {string} date 锚点日期 "YYYY-MM-DD",默认今天
|
|
* @returns {Promise<{period:string,label:string,start_date:string,end_date:string,stats:object}>}
|
|
*/
|
|
export function fetchAttendanceStats(period = 'month', date = '') {
|
|
return request({
|
|
url: '/api/oa/attendance/stats',
|
|
data: { period, date }
|
|
})
|
|
}
|
|
|
|
/** 今日 "YYYY-MM-DD"(与后端本地日期口径一致) */
|
|
export function todayString() {
|
|
const now = new Date()
|
|
const pad = (n) => String(n).padStart(2, '0')
|
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`
|
|
}
|