考勤管理
This commit is contained in:
parent
958ca3160c
commit
60d102c3fe
@ -41,17 +41,21 @@
|
|||||||
width="60"
|
width="60"
|
||||||
>
|
>
|
||||||
<template #default="{$index, row}">
|
<template #default="{$index, row}">
|
||||||
|
<!-- 根据拿到的工作状态来展示不同样式-->
|
||||||
<span
|
<span
|
||||||
:style="{color : colorMap[row.dayStatus[day - 1]] || 'gray' }"
|
:style="{color : colorMap[row.dayStatus[day - 1]] || 'gray' }"
|
||||||
>
|
>
|
||||||
|
<!-- 不同状态展示不同文字,在加载展示这个span标签 通过 pop参数来控制渲染内容默认false渲染span上级后在渲染el-popover -->
|
||||||
<span @click="pop=true" v-if="!pop">
|
<span @click="pop=true" v-if="!pop">
|
||||||
{{workType[row.dayStatus[day - 1]]}}
|
{{workType[row.dayStatus[day - 1]]}}
|
||||||
</span>
|
</span>
|
||||||
|
<!-- 不同状态展示不同文字,在加载展示这个span标签 通过 pop参数来控制渲染内容默认false渲染span上级后在渲染el-popover -->
|
||||||
<el-popover disabled v-if="pop" placement="bottom" width="Min" trigger="click">
|
<el-popover disabled v-if="pop" placement="bottom" width="Min" trigger="click">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
{{workType[row.dayStatus[day - 1]]}}
|
{{workType[row.dayStatus[day - 1]]}}
|
||||||
</template>
|
</template>
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
|
<!-- 传递不同的参数来对应的值, index当前渲染的数据索引,day当前渲染的工作状态索引,1对应的值-->
|
||||||
<el-button @click="changeDay($index,day,1)" color="green">上班</el-button>
|
<el-button @click="changeDay($index,day,1)" color="green">上班</el-button>
|
||||||
<el-button @click="changeDay($index,day,2)" color="orange">缺勤</el-button>
|
<el-button @click="changeDay($index,day,2)" color="orange">缺勤</el-button>
|
||||||
<el-button @click="changeDay($index,day,4)" color="red" >加班</el-button>
|
<el-button @click="changeDay($index,day,4)" color="red" >加班</el-button>
|
||||||
@ -175,6 +179,7 @@ const getUserInfo = async () => {
|
|||||||
|
|
||||||
//根据现有索引来更新相应的加班年班
|
//根据现有索引来更新相应的加班年班
|
||||||
const getWorkDay = async (index?:number)=>{
|
const getWorkDay = async (index?:number)=>{
|
||||||
|
//主要作用根据对应工作状态更新 工作日,加班,年加班的值
|
||||||
if (index != undefined){
|
if (index != undefined){
|
||||||
const date = listData.value[index]
|
const date = listData.value[index]
|
||||||
if (Array.isArray(date.dayStatus)){
|
if (Array.isArray(date.dayStatus)){
|
||||||
@ -203,14 +208,15 @@ const changeDay = async (index:number,day:number,val:number)=>{
|
|||||||
dayStatus = [];
|
dayStatus = [];
|
||||||
dayStatus[day - 1] = val; // 初始化值
|
dayStatus[day - 1] = val; // 初始化值
|
||||||
}
|
}
|
||||||
await getWorkDay(index)
|
await getWorkDay(index) //改完后在用这个参方法更新一下工作日,加班日等信息
|
||||||
}
|
}
|
||||||
|
|
||||||
//创建用户考勤数据
|
//创建用户考勤数据
|
||||||
const createUser = async ()=>{
|
const createUser = async ()=>{
|
||||||
queryParamsUser.deptId = formData.value.deptId
|
queryParamsUser.deptId = formData.value.deptId //设置过滤条件deptId为当前用户deptId
|
||||||
const user = await getUserPageKQ(queryParamsUser)
|
const user = await getUserPageKQ(queryParamsUser)//获取符合条件的所用用户
|
||||||
const dataUser = user.list
|
const dataUser = user.list
|
||||||
|
//循环每个用户并给他对应的数据去新建考勤数据,可以看到用户的名字部门,对应id,还有默认工作状态,时间标识,工作天数等参数来创建
|
||||||
for (let item of dataUser){
|
for (let item of dataUser){
|
||||||
const data : KqdataVO = {
|
const data : KqdataVO = {
|
||||||
id:null,
|
id:null,
|
||||||
@ -231,6 +237,7 @@ const createUser = async ()=>{
|
|||||||
|
|
||||||
//更新信息
|
//更新信息
|
||||||
const updateUser = async ()=>{
|
const updateUser = async ()=>{
|
||||||
|
//更新数据时不用做其他的 只用循环拿到数据列表 一 一更新就好了
|
||||||
for (let item of listData.value){
|
for (let item of listData.value){
|
||||||
const data : KqdataVO = {
|
const data : KqdataVO = {
|
||||||
id:item.id,
|
id:item.id,
|
||||||
@ -239,24 +246,26 @@ const updateUser = async ()=>{
|
|||||||
deptId:item.deptId,
|
deptId:item.deptId,
|
||||||
deptName:item.deptName,
|
deptName:item.deptName,
|
||||||
dayStatus: Array.isArray(item.dayStatus)
|
dayStatus: Array.isArray(item.dayStatus)
|
||||||
? item.dayStatus.join(',')
|
? item.dayStatus.join(',') //这里记得再把数组处理为字符串出差呢
|
||||||
: String(item.dayStatus), // 处理非数组情况
|
: String(item.dayStatus), // 处理非数组情况
|
||||||
tokey:item.tokey,
|
tokey:item.tokey,
|
||||||
workDay: item.workDay,
|
workDay: item.workDay,
|
||||||
overDay: item.overDay,
|
overDay: item.overDay,
|
||||||
yoverDay: item.yoverDay,
|
yoverDay: item.yoverDay,
|
||||||
}
|
}
|
||||||
console.log(data)
|
// console.log(data)
|
||||||
await KqdataApi.updateKqdata(data);
|
await KqdataApi.updateKqdata(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const getList = async (dateKey?:number) => {
|
const getList = async (dateKey?:number) => {
|
||||||
dateKey!==undefined?queryParamsData.tokey = dateKey:queryParamsData.tokey = formData.value.date
|
//判断是否传递事件戳 如果传递说明新建, formDate是没有时间戳信息的使用传递的,
|
||||||
queryParamsData.deptId = formData.value.deptId
|
// 如果没有说明是修改,使用formData的时间戳数据就好了
|
||||||
const data = await KqdataApi.getKqdataPage(queryParamsData)
|
dateKey!==undefined?queryParamsData.tokey = dateKey:queryParamsData.tokey = formData.value.date
|
||||||
listData.value = data.list
|
queryParamsData.deptId = formData.value.deptId //设置deptId为当前流程部门id就只拿当前部门的流程就好了
|
||||||
|
const data = await KqdataApi.getKqdataPage(queryParamsData)//利用设置好的过滤条件拿数据
|
||||||
|
listData.value = data.list
|
||||||
}
|
}
|
||||||
|
|
||||||
//回显数据的时候分离字符串状态
|
//回显数据的时候分离字符串状态
|
||||||
@ -265,10 +274,11 @@ const changeStatus = async ()=>{
|
|||||||
try {
|
try {
|
||||||
for (let item of listData.value){
|
for (let item of listData.value){
|
||||||
if (typeof item.dayStatus === 'string'){
|
if (typeof item.dayStatus === 'string'){
|
||||||
|
//分局拿到的字符串状态来分割为数组状态来给前端使用
|
||||||
item.dayStatus = item.dayStatus.split(',').map(Number);
|
item.dayStatus = item.dayStatus.split(',').map(Number);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(listData.value)
|
// console.log(listData.value)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
@ -277,7 +287,7 @@ const changeStatus = async ()=>{
|
|||||||
/** 打开弹窗 设置时间戳为固定信息 */
|
/** 打开弹窗 设置时间戳为固定信息 */
|
||||||
const open = async (type: string, id?: number) => {
|
const open = async (type: string, id?: number) => {
|
||||||
pop.value=false//每次打开渲染span
|
pop.value=false//每次打开渲染span
|
||||||
const neDate = Date.now() //获取时间表示
|
const neDate = Date.now() //获取时间
|
||||||
dateKey.value = (neDate / 1000 | 0) * 1000; //后端处理会默认吧后三位归零所以标识我后三位也归零
|
dateKey.value = (neDate / 1000 | 0) * 1000; //后端处理会默认吧后三位归零所以标识我后三位也归零
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
dialogTitle.value = t('action.' + type)
|
dialogTitle.value = t('action.' + type)
|
||||||
|
Loading…
Reference in New Issue
Block a user