mirror of
https://github.com/FatttSnake/Pinnacle-OA.git
synced 2026-04-05 06:51:23 +08:00
attendance
This commit is contained in:
@@ -1,12 +1,10 @@
|
|||||||
package com.cfive.pinnacle.controller;
|
package com.cfive.pinnacle.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.cfive.pinnacle.entity.Attendance;
|
import com.cfive.pinnacle.entity.Attendance;
|
||||||
import com.cfive.pinnacle.entity.common.ResponseCode;
|
import com.cfive.pinnacle.entity.common.ResponseCode;
|
||||||
import com.cfive.pinnacle.entity.common.ResponseResult;
|
import com.cfive.pinnacle.entity.common.ResponseResult;
|
||||||
import com.cfive.pinnacle.service.IAttendanceService;
|
import com.cfive.pinnacle.service.IAttendanceService;
|
||||||
|
import com.cfive.pinnacle.utils.WebUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@@ -44,14 +42,17 @@ public class AttendanceController {
|
|||||||
}
|
}
|
||||||
//用户个人模糊时间查询
|
//用户个人模糊时间查询
|
||||||
@GetMapping("/findOneAttendanceByTime")
|
@GetMapping("/findOneAttendanceByTime")
|
||||||
public ResponseResult findOneAttendanceAndUser(String startTime,String endTime,Long userId) {
|
public ResponseResult findOneAttendanceAndUser(String startTime,String endTime) {
|
||||||
|
Long userId = WebUtil.getLoginUser().getUser().getId();
|
||||||
List<Attendance> attendances = attendanceService.selectOneByTime(startTime, endTime,userId);
|
List<Attendance> attendances = attendanceService.selectOneByTime(startTime, endTime,userId);
|
||||||
|
System.out.println(attendances);
|
||||||
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
|
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
|
||||||
}
|
}
|
||||||
//添加或更新考勤信息
|
//添加或更新考勤信息
|
||||||
@PostMapping("/saveAttendance")
|
@PostMapping("/saveAttendance")
|
||||||
public ResponseResult saveAttendance(@RequestBody Attendance attendance) {
|
public ResponseResult saveAttendance(@RequestBody Attendance attendance) {
|
||||||
attendance.setModifyId(1652714496280469506L);
|
attendance.setModifyId(1652714496280469506L);
|
||||||
|
attendance.setUserId(WebUtil.getLoginUser().getUser().getId());
|
||||||
return attendanceService.saveOrUpdate(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
|
return attendanceService.saveOrUpdate(attendance) ? ResponseResult.build(ResponseCode.DATABASE_SAVE_OK, "success", attendance) :
|
||||||
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
|
ResponseResult.build(ResponseCode.DATABASE_SAVE_ERROR, "error", null);
|
||||||
|
|
||||||
@@ -61,6 +62,7 @@ public class AttendanceController {
|
|||||||
@PostMapping("/saveOneAttendance")
|
@PostMapping("/saveOneAttendance")
|
||||||
public ResponseResult saveOneAttendance(@RequestBody Attendance attendance) {
|
public ResponseResult saveOneAttendance(@RequestBody Attendance attendance) {
|
||||||
attendance.setModifyId(1652714496280469506L);
|
attendance.setModifyId(1652714496280469506L);
|
||||||
|
attendance.setUserId(WebUtil.getLoginUser().getUser().getId());
|
||||||
if (attendance.getAttTime().getHour() > 1 && attendance.getAttTime().getHour() < 10) {
|
if (attendance.getAttTime().getHour() > 1 && attendance.getAttTime().getHour() < 10) {
|
||||||
// 迟到
|
// 迟到
|
||||||
attendance.setStatus(3);
|
attendance.setStatus(3);
|
||||||
@@ -86,8 +88,9 @@ public class AttendanceController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
//查询个人考勤
|
//查询个人考勤
|
||||||
@GetMapping("/selectAttendance/{userId}")
|
@GetMapping("/selectAttendance")
|
||||||
public ResponseResult findAttendanceAndUser(@PathVariable Long userId) {
|
public ResponseResult findAttendanceAndUser() {
|
||||||
|
Long userId = WebUtil.getLoginUser().getUser().getId();
|
||||||
List<Attendance> attendances = attendanceService.getAttendanceAndUserByid(userId);
|
List<Attendance> attendances = attendanceService.getAttendanceAndUserByid(userId);
|
||||||
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
|
return ResponseResult.build(ResponseCode.DATABASE_SELECT_OK, "success", attendances);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Attendance> getAttendanceAndUserByid(Long userId) {
|
public List<Attendance> getAttendanceAndUserByid(Long userId) {
|
||||||
return attendanceMapper.getAttendanceAndUserByid(userId);
|
List<Attendance> attendances = attendanceMapper.getAttendanceAndUserByid(userId);
|
||||||
|
return attendances;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -67,7 +68,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
|
|||||||
System.out.println(start);
|
System.out.println(start);
|
||||||
System.out.println(end);
|
System.out.println(end);
|
||||||
LambdaQueryWrapper<Attendance> lqw = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Attendance> lqw = new LambdaQueryWrapper<>();
|
||||||
lqw.ge(null != start, Attendance::getAttTime, start).le(null != end, Attendance::getAttTime, end);
|
lqw.ge(null != start, Attendance::getAttTime, start).le(null != end, Attendance::getAttTime, end).eq(Attendance::getDeleted,0).eq(Attendance::getUserId,userId);
|
||||||
List<Attendance> oneAttendancesByTime = attendanceMapper.selectList(lqw);
|
List<Attendance> oneAttendancesByTime = attendanceMapper.selectList(lqw);
|
||||||
for (Attendance attendance:
|
for (Attendance attendance:
|
||||||
oneAttendancesByTime) {
|
oneAttendancesByTime) {
|
||||||
|
|||||||
@@ -5,9 +5,4 @@
|
|||||||
#attendanceMain1{
|
#attendanceMain1{
|
||||||
margin-bottom:10px ;
|
margin-bottom:10px ;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
#attendanceMain{
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|||||||
@@ -157,12 +157,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import axios from 'axios'
|
|
||||||
import { SIZE_ICON_SM, SIZE_ICON_XL } from '@/constants/Common.constants.js'
|
import { SIZE_ICON_SM, SIZE_ICON_XL } from '@/constants/Common.constants.js'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import 'element-plus/theme-chalk/el-message.css'
|
import 'element-plus/theme-chalk/el-message.css'
|
||||||
import _ from 'lodash'
|
import '@/assets/css/attendance.css'
|
||||||
|
|
||||||
|
import _ from 'lodash'
|
||||||
|
import request from '@/services'
|
||||||
export default {
|
export default {
|
||||||
name: 'AttendanceHome',
|
name: 'AttendanceHome',
|
||||||
data() {
|
data() {
|
||||||
@@ -220,8 +221,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// 获取所有考勤信息
|
// 获取所有考勤信息
|
||||||
getAttendances() {
|
getAttendances() {
|
||||||
axios
|
request
|
||||||
.get('http://localhost:8621/attendance/findAllAttendance')
|
.get('/attendance/findAllAttendance')
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response.data.data)
|
console.log(response.data.data)
|
||||||
this.tableData = response.data.data
|
this.tableData = response.data.data
|
||||||
@@ -235,12 +236,10 @@ export default {
|
|||||||
const start = this.handleDateFormatUTC(this.attTime[0])
|
const start = this.handleDateFormatUTC(this.attTime[0])
|
||||||
const end = this.handleDateFormatUTC(this.attTime[1])
|
const end = this.handleDateFormatUTC(this.attTime[1])
|
||||||
console.log(start + '\t' + end)
|
console.log(start + '\t' + end)
|
||||||
axios
|
request
|
||||||
.get('http://localhost:8621/attendance/findAttendanceByTime', {
|
.get('/attendance/findAttendanceByTime', {
|
||||||
params: {
|
startTime: start,
|
||||||
startTime: start,
|
endTime: end
|
||||||
endTime: end
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response.data.data)
|
console.log(response.data.data)
|
||||||
@@ -294,8 +293,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// 处理保存
|
// 处理保存
|
||||||
doSave() {
|
doSave() {
|
||||||
axios
|
request
|
||||||
.post('http://localhost:8621/attendance/saveAttendance', this.form)
|
.post('/attendance/saveAttendance', this.form)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.dialogFormVisible = false
|
this.dialogFormVisible = false
|
||||||
this.getAttendances()
|
this.getAttendances()
|
||||||
@@ -340,8 +339,8 @@ export default {
|
|||||||
// 操作删除
|
// 操作删除
|
||||||
handleDelete(id) {
|
handleDelete(id) {
|
||||||
console.log(id)
|
console.log(id)
|
||||||
axios
|
request
|
||||||
.delete('http://localhost:8621/attendance/delAttendance/' + id)
|
.delete('/attendance/delAttendance/' + id)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response) {
|
if (response) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
@@ -368,8 +367,8 @@ export default {
|
|||||||
// 批量删除
|
// 批量删除
|
||||||
delBatch() {
|
delBatch() {
|
||||||
const map = this.multipleSelection.map((v) => v.id)
|
const map = this.multipleSelection.map((v) => v.id)
|
||||||
axios
|
request
|
||||||
.post('http://localhost:8621/attendance/delBatchAttendance', map)
|
.post('/attendance/delBatchAttendance', map)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response) {
|
if (response) {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
|
|||||||
@@ -88,15 +88,6 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-dialog v-model="dialogFormVisible" title="考勤信息" width="25%">
|
<el-dialog v-model="dialogFormVisible" title="考勤信息" width="25%">
|
||||||
<el-form ref="ruleForm" :rules="rules" :model="form" :label-width="formLabelWidth">
|
<el-form ref="ruleForm" :rules="rules" :model="form" :label-width="formLabelWidth">
|
||||||
<el-form-item label="用户编号" prop="userId">
|
|
||||||
<el-input
|
|
||||||
v-model="form.userId"
|
|
||||||
autocomplete="off"
|
|
||||||
style="width: 200px"
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="考勤时间" v-model="attTime" prop="attTime">
|
<el-form-item label="考勤时间" v-model="attTime" prop="attTime">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -121,11 +112,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import axios from 'axios'
|
|
||||||
import { SIZE_ICON_SM, SIZE_ICON_XL } from '@/constants/Common.constants.js'
|
import { SIZE_ICON_SM, SIZE_ICON_XL } from '@/constants/Common.constants.js'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import 'element-plus/theme-chalk/el-message.css'
|
import 'element-plus/theme-chalk/el-message.css'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
import '@/assets/css/attendance.css'
|
||||||
|
import request from '@/services'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'UserAttendance',
|
name: 'UserAttendance',
|
||||||
@@ -133,7 +125,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
attendance: '',
|
attendance: '',
|
||||||
id: '',
|
id: '',
|
||||||
userId: 1,
|
userId: '',
|
||||||
username: '',
|
username: '',
|
||||||
attTime: '',
|
attTime: '',
|
||||||
attTimeB: [],
|
attTimeB: [],
|
||||||
@@ -197,13 +189,10 @@ export default {
|
|||||||
const start = this.handleDateFormatUTC(this.attTimeB[0])
|
const start = this.handleDateFormatUTC(this.attTimeB[0])
|
||||||
const end = this.handleDateFormatUTC(this.attTimeB[1])
|
const end = this.handleDateFormatUTC(this.attTimeB[1])
|
||||||
console.log(start + '\t' + end)
|
console.log(start + '\t' + end)
|
||||||
axios
|
request
|
||||||
.get('http://localhost:8621/attendance/findOneAttendanceByTime', {
|
.get('/attendance/findOneAttendanceByTime', {
|
||||||
params: {
|
startTime: start,
|
||||||
startTime: start,
|
endTime: end
|
||||||
endTime: end,
|
|
||||||
userId: this.userId
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response.data.data)
|
console.log(response.data.data)
|
||||||
@@ -223,8 +212,8 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
getAttendancesByUserId() {
|
getAttendancesByUserId() {
|
||||||
axios
|
request
|
||||||
.get('http://localhost:8621/attendance/selectAttendance/' + this.userId)
|
.get('/attendance/selectAttendance')
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response.data.data)
|
console.log(response.data.data)
|
||||||
this.tableData = response.data.data
|
this.tableData = response.data.data
|
||||||
@@ -246,8 +235,8 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
doSave() {
|
doSave() {
|
||||||
axios
|
request
|
||||||
.post('http://localhost:8621/attendance/saveOneAttendance', this.form)
|
.post('/attendance/saveOneAttendance', this.form)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.dialogFormVisible = false
|
this.dialogFormVisible = false
|
||||||
this.getAttendancesByUserId()
|
this.getAttendancesByUserId()
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const router = createRouter({
|
|||||||
{
|
{
|
||||||
path: 'manage',
|
path: 'manage',
|
||||||
component: async () => await import('@/pages/work/Manage.vue'),
|
component: async () => await import('@/pages/work/Manage.vue'),
|
||||||
name: 'manage',
|
name: 'workManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '工作管理',
|
title: '工作管理',
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
@@ -69,6 +69,40 @@ const router = createRouter({
|
|||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/attendance',
|
||||||
|
name: 'attendance',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'manage',
|
||||||
|
component: async () =>
|
||||||
|
await import('@/pages/attendance/AttendanceHome.vue'),
|
||||||
|
name: 'attendanceManage',
|
||||||
|
meta: {
|
||||||
|
title: '考勤管理',
|
||||||
|
requiresScrollbar: false,
|
||||||
|
requiresPadding: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'user',
|
||||||
|
component: async () =>
|
||||||
|
await import('@/pages/attendance/UserAttendance.vue'),
|
||||||
|
name: 'user',
|
||||||
|
meta: {
|
||||||
|
title: '员工考勤',
|
||||||
|
requiresScrollbar: false,
|
||||||
|
requiresPadding: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
meta: {
|
||||||
|
title: '考勤',
|
||||||
|
icon: IconPinnacleAttendance,
|
||||||
|
requiresScrollbar: false,
|
||||||
|
requiresPadding: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user