lion 3 months ago
parent a1275b676d
commit d3be8907f7

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

@ -23,7 +23,7 @@
keep-source keep-source
show-header-overflow show-header-overflow
show-footer-overflow show-footer-overflow
show-overflow
:row-config="{ isHover: true }" :row-config="{ isHover: true }"
:header-cell-style="{ 'white-space': 'wrap' }" :header-cell-style="{ 'white-space': 'wrap' }"
:print-config="{}" :print-config="{}"
@ -87,7 +87,7 @@
</template> </template>
</vxe-column> </vxe-column>
</vxe-colgroup> </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 }"> <template #default="{ row }">
<span>{{ getRemark(row) }}</span> <span>{{ getRemark(row) }}</span>
</template> </template>
@ -154,40 +154,77 @@ export default {
}, },
getRemark(row) { getRemark(row) {
let result = '' let result = ''
let overtimeDay = 0 // let overtimeDay = 0
let leave = new Map(this.tableData.leave_types.map(i => [i, 0])) // let leave = new Map(this.tableData.leave_types.map(i => [i, 0]))
let signDay = Object.entries(row.attendance).reduce((pre, [key, value]) => { // let signDay = Object.entries(row.attendance).reduce((pre, [key, value]) => {
if (value['qingxiujia'][0]) { // 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))) // 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]) { // 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))) // 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) { // 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 // 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 : ( console.log("row.remark",row.remark)
this.workDates.indexOf(key) !== -1 ? (
(() => { //
let temp = 0 const allItems = Object.entries(row.remark)
temp += value['0'].sign_in_at ? 0.5 : 0 .filter(([key, value]) =>
temp += value['0'].sign_out_at ? 0.5 : 0 value !== null &&
return temp value !== undefined &&
})() value !== '' &&
) : 0 leaveTypeMap[key]
)) )
}, 0) .map(([key, value]) => `${leaveTypeMap[key]}${value}小时`)
result += signDay === this.workDates.length ? '全勤' : `缺勤${this.workDates.length-signDay}`
result += overtimeDay ? `,加班${overtimeDay}` : '' console.log("allItems", allItems)
Array.from(leave).forEach(([name, day]) => {
if (day) { // 0
if (name === '调休') { if (allItems.length > 0) {
result += `,${name}${day}小时` result += allItems.join(',')
} else {
result += `,${name}${day}`
} }
} }
}) console.log("result",result)
return result return result
} }
}, },

Loading…
Cancel
Save