rollback^2
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