Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
a6a88ae4
Commit
a6a88ae4
authored
Dec 20, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
289847e7
9c2bc047
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
457 additions
and
86 deletions
+457
-86
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+0
-1
attendance-performance-manager-ui/admin/src/components/DataTableSelect.vue
...mance-manager-ui/admin/src/components/DataTableSelect.vue
+152
-0
attendance-performance-manager-ui/admin/src/components/Table.vue
...nce-performance-manager-ui/admin/src/components/Table.vue
+18
-3
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+119
-27
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+164
-51
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/AttendanceSummaryTaskImpl.java
...om/mortals/xhx/daemon/task/AttendanceSummaryTaskImpl.java
+1
-1
attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceSummaryMapper.xml
...rces/sqlmap/module/attendance/AttendanceSummaryMapper.xml
+3
-3
No files found.
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
a6a88ae4
...
...
@@ -87,7 +87,6 @@ export default {
return
;
}
this
.
tableData
.
loading
=
true
;
console
.
log
(
this
.
query
);
this
.
$post
(
this
.
pageInfo
.
list
,
this
.
query
,
{
cancelToken
:
this
.
source
.
token
,
})
...
...
attendance-performance-manager-ui/admin/src/components/DataTableSelect.vue
0 → 100644
View file @
a6a88ae4
<
template
>
<el-table
size=
"small"
:data=
"tableData"
:row-key=
"handleRowKeyMethod"
:span-method=
"handleSpanMethod"
:toggleRowSelection=
"toggleRowSelection"
@
selection-change=
"handleSelectionChange"
@
sort-change=
"handleSortChange"
@
row-click=
"handleRowClick"
@
cell-click=
"handleCellClick"
:row-class-name=
"tableRowClassName"
:empty-text=
"emptytxt ? emptytxt : emptyText"
border
style=
"width: 100%"
>
<template
v-for=
"column in columns"
>
<el-table-column
v-if=
"column.show"
:key=
"column.prop"
:type=
"column.type"
:index=
"handleIndexMethod"
:selectable=
"handleSelectableMethod"
:prop=
"column.prop"
:label=
"column.label"
:width=
"column.width"
:sortable=
"column.sortable"
:show-overflow-tooltip=
"column.tooltip"
:align=
"column.align || 'left'"
:formatter=
"column.formatter"
:reserve-selection=
"column.reserveSelection"
:subColumns=
"column.subColumns"
:fixed=
"column.fixed"
>
<el-table-column
v-for=
"sunColumn in column.subColumns"
:key=
"sunColumn.prop"
:type=
"sunColumn.type"
:prop=
"sunColumn.prop"
:label=
"sunColumn.label"
:width=
"sunColumn.width"
:sortable=
"sunColumn.sortable"
:align=
"sunColumn.align || 'left'"
:formatter=
"sunColumn.formatter"
/>
</el-table-column>
</
template
>
</el-table>
</template>
<
script
>
export
default
{
props
:
{
handleRowKeyMethod
:
{
type
:
Function
,
required
:
false
,
default
:
(
row
)
=>
{
return
row
.
id
;
},
},
handleSelectableMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleIndexMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleSpanMethod
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleSelectionChange
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleRowClick
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleCellClick
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
handleSortChange
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
tableRowClassName
:
{
type
:
Function
,
required
:
false
,
default
:
()
=>
{},
},
loading
:
{
type
:
Boolean
,
required
:
false
,
default
:
true
,
},
tableData
:
{
type
:
Array
,
required
:
false
,
default
:
()
=>
[],
},
columns
:
{
type
:
Array
,
required
:
false
,
default
:
()
=>
[],
},
},
computed
:
{
emptyText
()
{
return
!
this
.
loading
&&
!
this
.
tableData
.
length
?
"
暂无数据
"
:
"
加载中...
"
;
},
},
mounted
()
{},
watch
:
{
tableData
(
val
)
{
val
.
length
==
0
||
val
.
length
>
0
?
(
this
.
emptytxt
=
"
暂无数据
"
)
:
(
this
.
emptytxt
=
"
加载中...
"
);
// if (val.length > 0) {
// val.forEach((v) => {
// for (let key in v) {
// v[key] ? "" : (v[key] = "--");
// }
// });
// console.log(val);
// }
},
columns
:
{
deep
:
true
,
handler
(
val
)
{
this
.
$forceUpdate
(
this
.
columns
);
},
},
},
methods
:
{},
data
()
{
return
{
emptytxt
:
""
,
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/components/Table.vue
View file @
a6a88ae4
...
...
@@ -184,6 +184,20 @@
:handleRowClick=
"config.methods.handleRowClick"
:handleCellClick=
"config.methods.handleCellClick"
/>
<DataTableSelect
v-if=
"showType == 'tableSelect'"
:tableData=
"data.data"
:columns=
"config.columns"
:loading=
"data.loading"
:tableRowClassName=
"config.methods.tableRowClassName"
:handleSpanMethod=
"config.methods.handleSpanMethod"
:handleSortChange=
"config.methods.handleSortChange"
:handleIndexMethod=
"config.methods.handleIndexMethod"
:handleSelectableMethod=
"config.methods.handleSelectableMethod"
:handleSelectionChange=
"config.methods.handleSelectionChange"
:handleRowClick=
"config.methods.handleRowClick"
:handleCellClick=
"config.methods.handleCellClick"
/>
<DataTableFlow
v-if=
"showType == 'tableFlow'"
...
...
@@ -232,8 +246,9 @@ import Pagination from "@/components/Pagination.vue";
import
SearchForm
from
"
@/components/SearchForm.vue
"
;
import
Confirm
from
"
@/components/Confirm.vue
"
;
import
DataTable
from
"
@/components/DataTable.vue
"
;
import
DataTableSelect
from
"
@/components/DataTableSelect.vue
"
;
import
DataTableMobile
from
"
./DataTableMobile.js
"
;
import
DataTableFlow
from
"
.
/DataTableFlow.vue
"
;
import
DataTableFlow
from
"
@/components
/DataTableFlow.vue
"
;
import
DataTreeTable
from
"
@/components/DataTreeTable.vue
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
;
export
default
{
...
...
@@ -257,10 +272,10 @@ export default {
DataTableMobile
,
DataTableFlow
,
DataTreeTable
,
DataTableSelect
,
TabPane
,
},
mounted
()
{
},
methods
:
{
// 根据url的query参数判断是否展示查询条件
isShowSearch
(
query
)
{
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
a6a88ae4
...
...
@@ -36,7 +36,13 @@
</div>
</div>
</div>
-->
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
notAdd
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
notAdd
ref=
"layoutTable"
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -69,9 +75,17 @@
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
@
click=
"setdialog
(2)
"
>
表格设置
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog(1)"
>
导出表格设置
</el-button
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<!-- 导出记录查看 -->
...
...
@@ -118,7 +132,7 @@
</div>
</div>
</el-drawer>
<!-- 表格设置 -->
<!--
导出
表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
...
...
@@ -133,8 +147,27 @@
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
确定
</el-button>
<el-button
@
click=
"handleCancel(1)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(1)"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 显示表格设置 -->
<el-dialog
:visible.sync=
"setDialog"
title=
"表格显示设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,表格中的内容与选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkTableList"
>
<el-checkbox
v-for=
"(item, index) in setcolum"
:key=
"index"
:label=
"item.prop"
>
{{
item
.
label
}}
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button
@
click=
"handleCancel(2)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(2)"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 上传 -->
...
...
@@ -219,14 +252,33 @@ export default {
},
methods
:
{
// 表格设置弹窗取消操作
handleCancel
()
{
this
.
checkList
=
[];
this
.
isdialog
=
false
;
handleCancel
(
i
)
{
if
(
i
==
1
)
{
this
.
checkList
=
[];
this
.
isdialog
=
false
;
}
else
{
this
.
setDialog
=
false
;
}
},
// 表格设置提交操作
handleSubmit
()
{
this
.
doExport
();
this
.
isdialog
=
false
;
handleSubmit
(
i
)
{
if
(
i
==
1
)
{
this
.
doExport
();
this
.
isdialog
=
false
;
}
else
{
this
.
config
.
columns
.
forEach
((
v
)
=>
{
v
.
prop
&&
v
.
prop
!=
"
attendanceStaffStatEntities
"
?
(
v
.
show
=
false
)
:
(
v
.
show
=
true
);
this
.
checkTableList
.
forEach
((
val
)
=>
{
if
(
v
.
prop
==
val
)
{
v
.
show
=
true
;
}
});
});
this
.
$forceUpdate
(
this
.
config
.
columns
);
this
.
setDialog
=
false
;
}
},
// 表格接收数据后
afterRender
(
data
)
{
...
...
@@ -249,6 +301,7 @@ export default {
};
});
this
.
config
.
columns
=
[...
this
.
initalArr
,
...
addobjArr
];
this
.
$refs
.
layoutTable
.
showType
=
"
tableSelect
"
;
this
.
$forceUpdate
();
},
// 表格接收数据前
...
...
@@ -401,12 +454,24 @@ export default {
}
return
false
;
},
setdialog
()
{
this
.
isdialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
console
.
log
(
this
.
setcolum
);
setdialog
(
i
)
{
if
(
i
==
1
)
{
this
.
isdialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
}
else
{
this
.
setDialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
checkTableList
=
this
.
config
.
columns
.
map
((
item
)
=>
{
if
(
item
.
show
)
{
return
item
.
prop
;
}
});
}
},
renderTable
(
tableData
)
{
return
(
...
...
@@ -463,33 +528,38 @@ export default {
},
/** 子表列元素 */
columnSet
:
[
{
prop
:
"
shiftsName
"
,
label
:
"
班次名称
"
,
width
:
150
},
{
prop
:
"
shiftsName
"
,
label
:
"
班次名称
"
,
width
:
150
,
show
:
true
},
{
prop
:
"
goWorkDate
"
,
label
:
"
上班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
,
show
:
true
,
},
{
prop
:
"
goWorkResult
"
,
label
:
"
上班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
,
show
:
true
,
},
{
prop
:
"
offWorkDate
"
,
label
:
"
下班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
,
show
:
true
,
},
{
prop
:
"
offWorkResult
"
,
label
:
"
下班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
,
show
:
true
,
},
],
config
:
{
showType
:
"
tableSelect
"
,
search
:
[
{
name
:
"
staffName
"
,
...
...
@@ -548,39 +618,59 @@ export default {
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
type
:
"
selection
"
,
width
:
60
,
show
:
true
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
show
:
true
},
{
label
:
"
打卡日期
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDateOnly
,
show
:
true
,
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
员工工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
,
show
:
true
},
{
label
:
"
员工工号
"
,
prop
:
"
workNum
"
,
show
:
true
},
{
label
:
"
考勤组
"
,
prop
:
"
attendanceGroupName
"
,
show
:
true
,
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
,
show
:
true
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
,
show
:
true
},
{
label
:
"
班次
"
,
prop
:
"
classId
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
},
{
label
:
"
班次
"
,
prop
:
"
classId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
签到结果
"
,
prop
:
"
signInResult
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
签退结果
"
,
prop
:
"
signOutResult
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
打卡结果
"
,
prop
:
"
punchResult
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
考勤类型
"
,
prop
:
"
attendType
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
打卡结果
"
,
prop
:
"
punchResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤类型
"
,
prop
:
"
attendType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤打卡记录详细信息
"
,
width
:
120
,
prop
:
"
subColumns
"
,
show
:
true
,
formatter
:
(
row
)
=>
{
let
widthsize
=
this
.
columnSet
.
reduce
((
pre
,
cur
)
=>
{
return
pre
+
Number
(
cur
.
width
);
...
...
@@ -611,6 +701,8 @@ export default {
isdialog
:
false
,
setcolum
:
[],
checkList
:
[],
setDialog
:
false
,
checkTableList
:
[],
exportList
:
[],
//导出记录
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
,
initalArr
:
[],
...
...
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
a6a88ae4
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notAdd
notDel
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notAdd
notDel
ref=
"layoutTable"
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -25,9 +31,17 @@
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
@
click=
"setdialog
(2)
"
>
表格设置
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog(1)"
>
导出表格设置
</el-button
>
<!--
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -38,7 +52,7 @@
>
-->
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 表格设置 -->
<!--
导出
表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
...
...
@@ -53,8 +67,27 @@
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
确定
</el-button>
<el-button
@
click=
"handleCancel(1)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(1)"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 显示表格设置 -->
<el-dialog
:visible.sync=
"setDialog"
title=
"表格显示设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,表格中的内容与选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkTableList"
>
<el-checkbox
v-for=
"(item, index) in setcolum"
:key=
"index"
:label=
"item.prop"
>
{{
item
.
label
}}
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button
@
click=
"handleCancel(2)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit(2)"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 导出记录查看 -->
...
...
@@ -102,14 +135,33 @@ export default {
},
methods
:
{
// 表格设置弹窗取消操作
handleCancel
()
{
this
.
checkList
=
[];
this
.
isdialog
=
false
;
handleCancel
(
i
)
{
if
(
i
==
1
)
{
this
.
checkList
=
[];
this
.
isdialog
=
false
;
}
else
{
this
.
setDialog
=
false
;
}
},
// 表格设置提交操作
handleSubmit
()
{
this
.
doExport
();
this
.
isdialog
=
false
;
handleSubmit
(
i
)
{
if
(
i
==
1
)
{
this
.
doExport
();
this
.
isdialog
=
false
;
}
else
{
this
.
config
.
columns
.
forEach
((
v
)
=>
{
v
.
prop
&&
v
.
prop
!=
"
attendanceStaffStatEntities
"
?
(
v
.
show
=
false
)
:
(
v
.
show
=
true
);
this
.
checkTableList
.
forEach
((
val
)
=>
{
if
(
v
.
prop
==
val
)
{
v
.
show
=
true
;
}
});
});
this
.
$forceUpdate
(
this
.
config
.
columns
);
this
.
setDialog
=
false
;
}
},
// 处理
handleArr
(
arr
,
currentTime
)
{
...
...
@@ -138,6 +190,7 @@ export default {
let
addobjArr
=
[];
this
.
addColumn
.
map
((
item
,
index
)
=>
{
let
obj
=
{
show
:
true
,
label
:
item
+
"
(
"
+
getMyDay
(
new
Date
(
item
))
+
"
)
"
,
prop
:
"
attendanceStaffStatEntities
"
,
formatter
:
(
row
)
=>
{
...
...
@@ -156,6 +209,7 @@ export default {
let
arr1
=
this
.
initalArr
.
slice
(
0
,
8
);
let
arr2
=
this
.
initalArr
.
slice
(
8
);
this
.
config
.
columns
=
[...
arr1
,
...
addobjArr
,
...
arr2
];
this
.
$refs
.
layoutTable
.
showType
=
"
tableSelect
"
;
this
.
$forceUpdate
();
},
beforeRender
(
row
)
{
...
...
@@ -183,14 +237,29 @@ export default {
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
setdialog
()
{
this
.
isdialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
setcolum
=
this
.
setcolum
.
filter
(
(
val
)
=>
val
.
prop
!==
"
attendanceStaffStatEntities
"
);
setdialog
(
i
)
{
if
(
i
==
1
)
{
this
.
isdialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
setcolum
=
this
.
setcolum
.
filter
(
(
val
)
=>
val
.
prop
!==
"
attendanceStaffStatEntities
"
);
}
else
{
this
.
setDialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
this
.
setcolum
=
this
.
setcolum
.
filter
(
(
val
)
=>
val
.
prop
!==
"
attendanceStaffStatEntities
"
);
this
.
checkTableList
=
this
.
config
.
columns
.
map
((
item
)
=>
{
if
(
item
.
show
)
{
return
item
.
prop
;
}
});
}
},
lookexportHis
()
{
this
.
drawerhistory
=
true
;
...
...
@@ -231,6 +300,7 @@ export default {
data
()
{
return
{
config
:
{
showType
:
"
tableSelect
"
,
isshowTabPane
:
true
,
search
:
[
{
...
...
@@ -277,20 +347,43 @@ export default {
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
},
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
,
show
:
true
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
,
show
:
true
,
},
{
label
:
"
窗口类别
"
,
prop
:
"
windowCategory
"
,
fixed
:
"
left
"
,
width
:
100
,
show
:
true
,
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
,
fixed
:
"
left
"
,
width
:
100
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
应到
"
,
prop
:
"
workDays
"
,
formatter
:
this
.
formatter
},
{
label
:
"
实到
"
,
prop
:
"
goTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
,
fixed
:
"
left
"
,
width
:
100
,
show
:
true
,
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
,
show
:
true
},
{
label
:
"
应到
"
,
prop
:
"
workDays
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
实到
"
,
prop
:
"
goTimes
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
,
...
...
@@ -299,11 +392,13 @@ export default {
?
(
Number
(
row
.
attendanceRate
)
*
100
).
toFixed
(
2
)
+
"
%
"
:
"
--
"
;
},
show
:
true
,
},
{
label
:
"
缺卡次数
"
,
prop
:
"
morningTimes
"
,
formatter
:
this
.
formatter
,
show
:
true
,
},
// {
// label: "上午缺卡次数",
...
...
@@ -316,61 +411,79 @@ export default {
// prop: "afternoonTimes",
// formatter: this.formatter,
// },
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
},
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
,
show
:
true
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
,
show
:
true
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
,
show
:
true
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
,
show
:
true
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
,
show
:
true
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
,
show
:
true
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
,
show
:
true
,
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
,
show
:
true
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
,
show
:
true
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
,
show
:
true
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
,
show
:
true
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
,
show
:
true
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
,
show
:
true
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
,
show
:
true
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
,
show
:
true
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
,
show
:
true
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
,
show
:
true
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
,
show
:
true
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
,
show
:
true
,
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
,
show
:
true
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
,
show
:
true
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
,
show
:
true
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
,
show
:
true
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
,
show
:
true
,
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
,
show
:
true
,
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
,
show
:
true
},
],
},
setcolum
:
[],
isdialog
:
false
,
setDialog
:
false
,
checkTableList
:
[],
checkList
:
[],
drawerhistory
:
false
,
// 动态新增列表
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/AttendanceSummaryTaskImpl.java
View file @
a6a88ae4
...
...
@@ -36,7 +36,7 @@ public class AttendanceSummaryTaskImpl implements ITaskExcuteService {
Calendar
now
=
Calendar
.
getInstance
();
now
.
setTime
(
new
Date
());
now
.
add
(
Calendar
.
DAY_OF_MONTH
,
-
1
);
//默认查前一天数据
attendanceRecordErrorService
.
doAutoProcess
(
now
.
getTime
());
//
attendanceRecordErrorService.doAutoProcess(now.getTime());
AttendanceSummaryQuery
query
=
new
AttendanceSummaryQuery
();
query
.
setSummaryTimeEnd
(
DateUtils
.
getStrDate
(
now
.
getTime
()));
...
...
attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceSummaryMapper.xml
View file @
a6a88ae4
...
...
@@ -82,13 +82,13 @@
from
mortals_xhx_attendance_record_error e
where
processStatus = 1
and processResult != 4
processResult != 4
and e.errorDateTime
<![CDATA[ >= ]]>
STR_TO_DATE(left(concat(#{summaryTime},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
and e.errorDateTime
<![CDATA[ <= ]]>
STR_TO_DATE(left(concat(#{summaryTime},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
<if
test=
"staffId != null and staffId!=''"
>
AND e.staffId = #{staffId}
</if>
group by
e.staffId,
e.staffName
e.staffName,
DATE_FORMAT(errorDateTime,'%Y-%m-%d')
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment