master
parent
36d990e4f1
commit
31822655f5
@ -0,0 +1,19 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function leaveList(params, isLoading = true) {
|
||||||
|
return request({
|
||||||
|
method: 'get',
|
||||||
|
url: '/api/oa/chart/leave',
|
||||||
|
params,
|
||||||
|
isLoading
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function overtimeList(params,isLoading = true) {
|
||||||
|
return request({
|
||||||
|
method: 'get',
|
||||||
|
url: '/api/oa/chart/overtime',
|
||||||
|
params,
|
||||||
|
isLoading
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -0,0 +1,174 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<card-container>
|
||||||
|
<vxe-toolbar print custom export>
|
||||||
|
<template #buttons>
|
||||||
|
<el-date-picker v-model="select.month"
|
||||||
|
type="month" size="small" value-format="yyyy-MM"
|
||||||
|
placeholder="月份" format="yyyy-MM"/>
|
||||||
|
<el-select style="width:250px;margin-left:6px" size="small" v-model="select.department_id" placeholder="请选择">
|
||||||
|
<el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button icon="el-icon-search" type="primary" plain size="small" style="margin-left: 6px;"
|
||||||
|
@click="getList">搜索</el-button>
|
||||||
|
</template>
|
||||||
|
</vxe-toolbar>
|
||||||
|
<vxe-table ref="table" stripe :border='true' style="margin-top: 10px;" :loading="loading"
|
||||||
|
:max-height="1400" :min-height="400" :export-config="{}" :print-config="{}" :column-config="{ resizable: true }"
|
||||||
|
:expand-config="{
|
||||||
|
visibleMethod: () => false,
|
||||||
|
trigger: 'manual'
|
||||||
|
}" :data="tableData" :span-method="mergeCells">
|
||||||
|
<vxe-column width="240" header-align="center" align="center" field="department_name" title="科室"></vxe-column>
|
||||||
|
<vxe-column width="180" header-align="center" align="center" field="user.name" title="姓名"></vxe-column>
|
||||||
|
|
||||||
|
<vxe-column header-align="center" align="center" field="over_off" title="结余调休时间">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div>
|
||||||
|
{{row.over_off=='0.00'?'0':row.over_off}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column header-align="center" align="center" field="overtime" title="本月加班时间">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div>
|
||||||
|
{{row.overtime=='0.00'?'0':row.overtime}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column header-align="center" align="center" field="time_off" title="本月调休时间">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div>
|
||||||
|
{{row.time_off=='0.00'?'0':row.time_off}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column header-align="center" align="center" field="expire" title="过期天数">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div>
|
||||||
|
{{row.expire=='0.00'?'0':row.expire}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
<vxe-column header-align="center" align="center" field="has_time_off" title="剩余调休时间">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<div>
|
||||||
|
{{row.has_time_off=='0.00'?'0':row.has_time_off}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
|
||||||
|
</vxe-table>
|
||||||
|
</card-container>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
leaveList
|
||||||
|
} from "@/api/chart"
|
||||||
|
import {
|
||||||
|
departmentListNoAuth
|
||||||
|
} from "@/api/common.js"
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
tableData: [],
|
||||||
|
select: {
|
||||||
|
page: 1,
|
||||||
|
page_size: 10,
|
||||||
|
month: this.$moment().format('YYYY-MM'),
|
||||||
|
department_id: ''
|
||||||
|
},
|
||||||
|
departments:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getList() {
|
||||||
|
this.loading = true;
|
||||||
|
try {
|
||||||
|
const res = await leaveList(this.select, false);
|
||||||
|
console.log(res);
|
||||||
|
let _arr = res?.timeOff || []
|
||||||
|
_arr.forEach(item=>{
|
||||||
|
item.department_name = item.user.department.name
|
||||||
|
})
|
||||||
|
this.tableData = _arr;
|
||||||
|
this.loading = false;
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
this.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getDepartmentList() {
|
||||||
|
try {
|
||||||
|
const res = await departmentListNoAuth();
|
||||||
|
console.log(res);
|
||||||
|
let arr = res
|
||||||
|
this.departments = arr
|
||||||
|
this.departments.unshift({
|
||||||
|
id: '',
|
||||||
|
name: '全部'
|
||||||
|
})
|
||||||
|
} catch (err) {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mergeCells({
|
||||||
|
row,
|
||||||
|
$rowIndex,
|
||||||
|
column,
|
||||||
|
data
|
||||||
|
}) {
|
||||||
|
console.log("row, $rowIndex, column, data", {
|
||||||
|
row,
|
||||||
|
$rowIndex,
|
||||||
|
column,
|
||||||
|
data
|
||||||
|
})
|
||||||
|
let fields = ["department_name"]
|
||||||
|
let cellValue = row[column.property]
|
||||||
|
if (cellValue && fields.includes(column.property)) {
|
||||||
|
let prevRow = data[$rowIndex - 1]
|
||||||
|
let nextRow = data[$rowIndex + 1]
|
||||||
|
if (prevRow && prevRow[column.property] === cellValue) {
|
||||||
|
return {
|
||||||
|
rowspan: 0,
|
||||||
|
colspan: 0
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let countRowspan = 1
|
||||||
|
while (nextRow && nextRow[column.property] === cellValue) {
|
||||||
|
nextRow = data[++countRowspan + $rowIndex]
|
||||||
|
}
|
||||||
|
if (countRowspan > 1) {
|
||||||
|
return {
|
||||||
|
rowspan: countRowspan,
|
||||||
|
colspan: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
created() {
|
||||||
|
this.getDepartmentList()
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs["table"] && this.$refs["toolbar"]) {
|
||||||
|
this.$refs["table"].connect(this.$refs["toolbar"]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
</style>
|
||||||
Loading…
Reference in new issue