lion 3 months ago
parent a1275b676d
commit d3be8907f7

@ -3,8 +3,10 @@
<card-container>
<vxe-toolbar print custom export>
<template #buttons>
<el-date-picker v-model="select.month" type="month" size="small" value-format="MM" placeholder="月份"
format="yyyy-MM" />
<el-date-picker v-model="select.year" type="year" size="small" value-format="yyyy" placeholder="年份"
format="yyyy" />
<el-date-picker style="width:250px;margin-left:6px" v-model="select.month" type="month" size="small" value-format="MM" placeholder="月份"
format="MM" />
<!-- <el-select v-if="is_bgs" style="width:250px;margin-left:6px" size="small" @change="changeDepartment"
v-model="select.department_id" placeholder="请选择">
<el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id">
@ -33,22 +35,25 @@
name: 'input',
}"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="year_holiday" title="年休假总天数"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="annual_leave_days"
title="年休假天数"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="overtime_days" title="加班天数"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="chuchai_days" title="出差天数"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="personal_leave" title="事假"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="sick_leave" title="病假"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="marriage_leave" title="婚假"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="pregnant_leave" title="产假"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="nursing_leave" title="护理假"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="birth_leave" title="育儿假"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="death_leave" title="丧假"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="injured" title="工伤假"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="overtime_days" title="加班时长"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="annual_leave_days"
title="年休假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="personal_leave" title="事假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="sick_leave" title="病假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="marriage_leave" title="婚假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="pregnant_leave" title="产假时长"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="nursing_leave" title="护理假时长"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="birth_leave" title="育儿假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="death_leave" title="丧假时长"></vxe-column>
<vxe-column width="120" header-align="center" align="center" field="injured" title="工伤假时长"></vxe-column>
<vxe-column width="180" header-align="center" align="center" field="nursing_leave_birth"
title="独生子女带薪护理假"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="rest_leave" title="调休"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="other_leave" title="其他"></vxe-column>
title="独生子女带薪护理假时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="rest_leave" title="调休时长"></vxe-column>
<vxe-column width="80" header-align="center" align="center" field="other_leave" title="其他时长"></vxe-column>
</vxe-table>
</card-container>
@ -66,6 +71,7 @@
data() {
return {
select: {
year: this.$moment().format('YYYY'),
month: (new Date().getMonth() + 1) < 10 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth(),
department_id: '',
keyword: ''

@ -23,7 +23,7 @@
keep-source
show-header-overflow
show-footer-overflow
show-overflow
:row-config="{ isHover: true }"
:header-cell-style="{ 'white-space': 'wrap' }"
:print-config="{}"
@ -87,7 +87,7 @@
</template>
</vxe-column>
</vxe-colgroup>
<vxe-column title="备注" min-width="200" header-align="center" align="left">
<vxe-column title="备注" min-width="240" header-align="center" align="left">
<template #default="{ row }">
<span>{{ getRemark(row) }}</span>
</template>
@ -154,40 +154,77 @@ export default {
},
getRemark(row) {
let result = ''
let overtimeDay = 0
let leave = new Map(this.tableData.leave_types.map(i => [i, 0]))
let signDay = Object.entries(row.attendance).reduce((pre, [key, value]) => {
if (value['qingxiujia'][0]) {
leave.set(value['qingxiujia'][0]['qingjialeibie'], Number(leave.get(value['qingxiujia'][0]['qingjialeibie']) ?? 0) + (value['qingxiujia'][0]['qingjialeibie'] === '调休' ? Number(value['qingxiujia'][0]['qingjiashijian'] ?? 0) : Number(value['qingxiujia'][0]['day'] ?? 0)))
}
if (value['qingxiujia'][1]) {
leave.set(value['qingxiujia'][1]['qingjialeibie'], Number(leave.get(value['qingxiujia'][1]['qingjialeibie']) ?? 0) + (value['qingxiujia'][1]['qingjialeibie'] === '调休' ? Number(value['qingxiujia'][1]['qingjiashijian'] ?? 0) : Number(value['qingxiujia'][1]['day'] ?? 0)))
}
if (value['jiaban'] instanceof Array && value['jiaban'].filter(i => i).length > 0) {
overtimeDay += value['jiaban'].filter(i => i).reduce((pre1, cur1) => pre1 + (isNaN(Number(cur1.jiabanshichang)) ? 0 : Number(cur1.jiabanshichang)), 0) ?? 0
// let overtimeDay = 0
// let leave = new Map(this.tableData.leave_types.map(i => [i, 0]))
// let signDay = Object.entries(row.attendance).reduce((pre, [key, value]) => {
// if (value['qingxiujia'][0]) {
// leave.set(value['qingxiujia'][0]['qingjialeibie'], Number(leave.get(value['qingxiujia'][0]['qingjialeibie']) ?? 0) + (value['qingxiujia'][0]['qingjialeibie'] === '' ? Number(value['qingxiujia'][0]['qingjiashijian'] ?? 0) : Number(value['qingxiujia'][0]['day'] ?? 0)))
// }
// if (value['qingxiujia'][1]) {
// leave.set(value['qingxiujia'][1]['qingjialeibie'], Number(leave.get(value['qingxiujia'][1]['qingjialeibie']) ?? 0) + (value['qingxiujia'][1]['qingjialeibie'] === '' ? Number(value['qingxiujia'][1]['qingjiashijian'] ?? 0) : Number(value['qingxiujia'][1]['day'] ?? 0)))
// }
// if (value['jiaban'] instanceof Array && value['jiaban'].filter(i => i).length > 0) {
// overtimeDay += value['jiaban'].filter(i => i).reduce((pre1, cur1) => pre1 + (isNaN(Number(cur1.jiabanshichang)) ? 0 : Number(cur1.jiabanshichang)), 0) ?? 0
// }
// return pre + (!value.hasOwnProperty('0') ? 0 : (
// this.workDates.indexOf(key) !== -1 ? (
// (() => {
// let temp = 0
// temp += value['0'].sign_in_at ? 0.5 : 0
// temp += value['0'].sign_out_at ? 0.5 : 0
// return temp
// })()
// ) : 0
// ))
// }, 0)
// result += signDay === this.workDates.length ? '' : `${this.workDates.length-signDay}`
// result += overtimeDay ? `,${overtimeDay}` : ''
// Array.from(leave).forEach(([name, day]) => {
// if (day) {
// if (name === '') {
// result += `,${name}${day}`
// } else {
// result += `,${name}${day}`
// }
// }
// })
// row.remark
if (row.remark && typeof row.remark === 'object') {
const leaveTypeMap = {
"personal_leave": "事假",
"sick_leave": "病假",
"annual_leave_days": "年休假",
"marriage_leave": "婚假",
"pregnant_leave": "产假",
"nursing_leave": "护理假",
"birth_leave": "育儿假",
"death_leave": "丧假",
"injured": "工伤假",
"nursing_leave_birth": "独生子女带薪护理假",
"rest_leave": "调休",
"other_leave": "其他"
}
return pre + (!value.hasOwnProperty('0') ? 0 : (
this.workDates.indexOf(key) !== -1 ? (
(() => {
let temp = 0
temp += value['0'].sign_in_at ? 0.5 : 0
temp += value['0'].sign_out_at ? 0.5 : 0
return temp
})()
) : 0
))
}, 0)
result += signDay === this.workDates.length ? '全勤' : `缺勤${this.workDates.length-signDay}`
result += overtimeDay ? `,加班${overtimeDay}` : ''
Array.from(leave).forEach(([name, day]) => {
if (day) {
if (name === '调休') {
result += `,${name}${day}小时`
} else {
result += `,${name}${day}`
console.log("row.remark",row.remark)
//
const allItems = Object.entries(row.remark)
.filter(([key, value]) =>
value !== null &&
value !== undefined &&
value !== '' &&
leaveTypeMap[key]
)
.map(([key, value]) => `${leaveTypeMap[key]}${value}小时`)
console.log("allItems", allItems)
// 0
if (allItems.length > 0) {
result += allItems.join(',')
}
}
})
console.log("result",result)
return result
}
},

Loading…
Cancel
Save