From 1af19ce959bb57ad88d346af456ee95e4d2b4000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Fri, 15 May 2026 14:02:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=80=83=E5=8B=A4?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增考勤班次、考勤规则、倒班规则、考勤排班、考勤比对等API接口 2. 新增考勤管理相关页面,包括班次管理、考勤规则管理、倒班规则管理、排班管理等 3. 完善日期时间格式化注解,修复参数绑定问题 4. 优化时间选择组件,支持日期/时间模式切换 --- klp-ui/src/api/wms/attendanceCheck.js | 53 + klp-ui/src/api/wms/attendanceRule.js | 44 + klp-ui/src/api/wms/attendanceSchedule.js | 62 + klp-ui/src/api/wms/attendanceShift.js | 44 + klp-ui/src/api/wms/attendanceShiftRule.js | 44 + .../wms/hrm/attendance/attendanceCheck.vue | 1009 +++++++++++++++++ .../wms/hrm/attendance/attendanceRule.vue | 308 +++++ klp-ui/src/views/wms/hrm/attendance/drag.vue | 719 ++++++++++++ klp-ui/src/views/wms/hrm/attendance/shift.vue | 519 +++++++++ .../views/wms/hrm/attendance/shiftRule.vue | 399 +++++++ .../hrm/attendance/{index.vue => sync.vue} | 0 .../wms/report/components/timeRangePicker.vue | 26 +- .../domain/bo/WmsAttendanceScheduleBo.java | 2 + .../com/klp/domain/bo/WmsOutRequestBo.java | 5 + 14 files changed, 3228 insertions(+), 6 deletions(-) create mode 100644 klp-ui/src/api/wms/attendanceCheck.js create mode 100644 klp-ui/src/api/wms/attendanceRule.js create mode 100644 klp-ui/src/api/wms/attendanceSchedule.js create mode 100644 klp-ui/src/api/wms/attendanceShift.js create mode 100644 klp-ui/src/api/wms/attendanceShiftRule.js create mode 100644 klp-ui/src/views/wms/hrm/attendance/attendanceCheck.vue create mode 100644 klp-ui/src/views/wms/hrm/attendance/attendanceRule.vue create mode 100644 klp-ui/src/views/wms/hrm/attendance/drag.vue create mode 100644 klp-ui/src/views/wms/hrm/attendance/shift.vue create mode 100644 klp-ui/src/views/wms/hrm/attendance/shiftRule.vue rename klp-ui/src/views/wms/hrm/attendance/{index.vue => sync.vue} (100%) diff --git a/klp-ui/src/api/wms/attendanceCheck.js b/klp-ui/src/api/wms/attendanceCheck.js new file mode 100644 index 00000000..8917437d --- /dev/null +++ b/klp-ui/src/api/wms/attendanceCheck.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询考勤比对结果(排班与打卡比对)列表 +export function listAttendanceCheck(query) { + return request({ + url: '/wms/attendanceCheck/list', + method: 'get', + params: query + }) +} + +// 查询考勤比对结果(排班与打卡比对)详细 +export function getAttendanceCheck(checkId) { + return request({ + url: '/wms/attendanceCheck/' + checkId, + method: 'get' + }) +} + +// 新增考勤比对结果(排班与打卡比对) +export function addAttendanceCheck(data) { + return request({ + url: '/wms/attendanceCheck', + method: 'post', + data: data + }) +} + +// 修改考勤比对结果(排班与打卡比对) +export function updateAttendanceCheck(data) { + return request({ + url: '/wms/attendanceCheck', + method: 'put', + data: data + }) +} + +// 删除考勤比对结果(排班与打卡比对) +export function delAttendanceCheck(checkId) { + return request({ + url: '/wms/attendanceCheck/' + checkId, + method: 'delete' + }) +} + +// 一键生成考勤对比结果 +export function generateAttendanceCheck(data) { + return request({ + url: '/wms/attendanceCheck/check', + method: 'post', + data: data + }) +} diff --git a/klp-ui/src/api/wms/attendanceRule.js b/klp-ui/src/api/wms/attendanceRule.js new file mode 100644 index 00000000..43e34c8a --- /dev/null +++ b/klp-ui/src/api/wms/attendanceRule.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询考勤规则列表 +export function listAttendanceRule(query) { + return request({ + url: '/wms/attendanceRule/list', + method: 'get', + params: query + }) +} + +// 查询考勤规则详细 +export function getAttendanceRule(ruleId) { + return request({ + url: '/wms/attendanceRule/' + ruleId, + method: 'get' + }) +} + +// 新增考勤规则 +export function addAttendanceRule(data) { + return request({ + url: '/wms/attendanceRule', + method: 'post', + data: data + }) +} + +// 修改考勤规则 +export function updateAttendanceRule(data) { + return request({ + url: '/wms/attendanceRule', + method: 'put', + data: data + }) +} + +// 删除考勤规则 +export function delAttendanceRule(ruleId) { + return request({ + url: '/wms/attendanceRule/' + ruleId, + method: 'delete' + }) +} diff --git a/klp-ui/src/api/wms/attendanceSchedule.js b/klp-ui/src/api/wms/attendanceSchedule.js new file mode 100644 index 00000000..cd286284 --- /dev/null +++ b/klp-ui/src/api/wms/attendanceSchedule.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询排班记录列表 +export function listAttendanceSchedule(query) { + return request({ + url: '/wms/attendanceSchedule/list', + method: 'get', + params: query + }) +} + +// 查询排班记录详细 +export function getAttendanceSchedule(id) { + return request({ + url: '/wms/attendanceSchedule/' + id, + method: 'get' + }) +} + +// 新增排班记录 +export function addAttendanceSchedule(data) { + return request({ + url: '/wms/attendanceSchedule', + method: 'post', + data: data + }) +} + +// 修改排班记录 +export function updateAttendanceSchedule(data) { + return request({ + url: '/wms/attendanceSchedule', + method: 'put', + data: data + }) +} + +// 删除排班记录(支持批量删除,传递csv格式字符串如:1,2,3) +export function delAttendanceSchedule(ids) { + return request({ + url: '/wms/attendanceSchedule/' + ids, + method: 'delete' + }) +} + +// 生成单个人的排班记录(批量) +export function generateenerateSchedule(data) { + return request({ + url: '/wms/attendanceSchedule/generate', + method: 'post', + data: data + }) +} + +// 批量生成排班记录 +export function batchGenerateSchedule(data) { + return request({ + url: '/wms/attendanceSchedule/batchGenerate', + method: 'post', + data: data + }) +} diff --git a/klp-ui/src/api/wms/attendanceShift.js b/klp-ui/src/api/wms/attendanceShift.js new file mode 100644 index 00000000..f0f54041 --- /dev/null +++ b/klp-ui/src/api/wms/attendanceShift.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询班次列表 +export function listShift(query) { + return request({ + url: '/wms/attendanceShift/list', + method: 'get', + params: query + }) +} + +// 查询班次详细 +export function getShift(id) { + return request({ + url: '/wms/attendanceShift/' + id, + method: 'get' + }) +} + +// 新增班次 +export function addShift(data) { + return request({ + url: '/wms/attendanceShift', + method: 'post', + data: data + }) +} + +// 修改班次 +export function updateShift(data) { + return request({ + url: '/wms/attendanceShift', + method: 'put', + data: data + }) +} + +// 删除班次 +export function delShift(id) { + return request({ + url: '/wms/attendanceShift/' + id, + method: 'delete' + }) +} diff --git a/klp-ui/src/api/wms/attendanceShiftRule.js b/klp-ui/src/api/wms/attendanceShiftRule.js new file mode 100644 index 00000000..05aff356 --- /dev/null +++ b/klp-ui/src/api/wms/attendanceShiftRule.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询倒班规则列表 +export function listAttendanceShiftRule(query) { + return request({ + url: '/wms/attendanceShiftRule/list', + method: 'get', + params: query + }) +} + +// 查询倒班规则详细 +export function getAttendanceShiftRule(ruleId) { + return request({ + url: '/wms/attendanceShiftRule/' + ruleId, + method: 'get' + }) +} + +// 新增倒班规则 +export function addAttendanceShiftRule(data) { + return request({ + url: '/wms/attendanceShiftRule', + method: 'post', + data: data + }) +} + +// 修改倒班规则 +export function updateAttendanceShiftRule(data) { + return request({ + url: '/wms/attendanceShiftRule', + method: 'put', + data: data + }) +} + +// 删除倒班规则 +export function delAttendanceShiftRule(ruleId) { + return request({ + url: '/wms/attendanceShiftRule/' + ruleId, + method: 'delete' + }) +} diff --git a/klp-ui/src/views/wms/hrm/attendance/attendanceCheck.vue b/klp-ui/src/views/wms/hrm/attendance/attendanceCheck.vue new file mode 100644 index 00000000..7873e805 --- /dev/null +++ b/klp-ui/src/views/wms/hrm/attendance/attendanceCheck.vue @@ -0,0 +1,1009 @@ + + + + + \ No newline at end of file diff --git a/klp-ui/src/views/wms/hrm/attendance/attendanceRule.vue b/klp-ui/src/views/wms/hrm/attendance/attendanceRule.vue new file mode 100644 index 00000000..5e2af293 --- /dev/null +++ b/klp-ui/src/views/wms/hrm/attendance/attendanceRule.vue @@ -0,0 +1,308 @@ + + + diff --git a/klp-ui/src/views/wms/hrm/attendance/drag.vue b/klp-ui/src/views/wms/hrm/attendance/drag.vue new file mode 100644 index 00000000..01d5ceaf --- /dev/null +++ b/klp-ui/src/views/wms/hrm/attendance/drag.vue @@ -0,0 +1,719 @@ + + + + + diff --git a/klp-ui/src/views/wms/hrm/attendance/shift.vue b/klp-ui/src/views/wms/hrm/attendance/shift.vue new file mode 100644 index 00000000..bf603f94 --- /dev/null +++ b/klp-ui/src/views/wms/hrm/attendance/shift.vue @@ -0,0 +1,519 @@ + + + diff --git a/klp-ui/src/views/wms/hrm/attendance/shiftRule.vue b/klp-ui/src/views/wms/hrm/attendance/shiftRule.vue new file mode 100644 index 00000000..ad167176 --- /dev/null +++ b/klp-ui/src/views/wms/hrm/attendance/shiftRule.vue @@ -0,0 +1,399 @@ + + + diff --git a/klp-ui/src/views/wms/hrm/attendance/index.vue b/klp-ui/src/views/wms/hrm/attendance/sync.vue similarity index 100% rename from klp-ui/src/views/wms/hrm/attendance/index.vue rename to klp-ui/src/views/wms/hrm/attendance/sync.vue diff --git a/klp-ui/src/views/wms/report/components/timeRangePicker.vue b/klp-ui/src/views/wms/report/components/timeRangePicker.vue index 64bc4097..476d6c1e 100644 --- a/klp-ui/src/views/wms/report/components/timeRangePicker.vue +++ b/klp-ui/src/views/wms/report/components/timeRangePicker.vue @@ -4,18 +4,18 @@ @@ -55,6 +55,18 @@ export default { defaultEndTime: { type: String, default: '' + }, + format: { + type: String, + default: 'yyyy-MM-dd HH:mm:ss' + } + }, + computed: { + pickerType() { + return this.isDateType ? 'date' : 'datetime' + }, + isDateType() { + return this.format === 'yyyy-MM-dd' } }, data() { @@ -94,12 +106,14 @@ export default { }, // 从时间字符串中提取时分秒部分 getTimePart(timeStr) { + if (this.isDateType) return '' if (!timeStr) return '07:00:00' const parts = timeStr.split(' ') return parts.length > 1 ? parts[1] : '07:00:00' }, // 将日期和时间组合 combineDateTime(dateStr, timeStr) { + if (this.isDateType) return dateStr return `${dateStr} ${timeStr}` }, handleTimeChange() { diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsAttendanceScheduleBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsAttendanceScheduleBo.java index f8422a64..19329b95 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsAttendanceScheduleBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsAttendanceScheduleBo.java @@ -33,6 +33,8 @@ public class WmsAttendanceScheduleBo extends BaseEntity { /** * 日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") private Date workDate; /** diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java index b6d5c8e8..15efe20b 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java @@ -8,6 +8,7 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; /** * 员工外出申请业务对象 wms_out_request @@ -43,11 +44,15 @@ public class WmsOutRequestBo extends BaseEntity { /** * 外出开始时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") private Date startTime; /** * 外出结束时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") private Date endTime; /**