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
db41784e
Commit
db41784e
authored
Jul 25, 2023
by
“yiyousong”
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.scsmile.cn/zxf/attendance-performance-platform
parents
c475638e
8667e872
Changes
88
Hide whitespace changes
Inline
Side-by-side
Showing
88 changed files
with
3335 additions
and
2073 deletions
+3335
-2073
attendance-performance-manager-ui/admin/src/App.vue
attendance-performance-manager-ui/admin/src/App.vue
+2
-1
attendance-performance-manager-ui/admin/src/assets/less/base.css
...nce-performance-manager-ui/admin/src/assets/less/base.css
+2
-2
attendance-performance-manager-ui/admin/src/assets/less/base.less
...ce-performance-manager-ui/admin/src/assets/less/base.less
+3
-3
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
...formance-manager-ui/admin/src/assets/mixins/formdialog.js
+16
-0
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+28
-11
attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js
...nce-manager-ui/admin/src/assets/utils/globalComponents.js
+2
-0
attendance-performance-manager-ui/admin/src/components/DataTable.vue
...performance-manager-ui/admin/src/components/DataTable.vue
+0
-1
attendance-performance-manager-ui/admin/src/components/DataTreeTable.vue
...ormance-manager-ui/admin/src/components/DataTreeTable.vue
+1
-1
attendance-performance-manager-ui/admin/src/components/FormField.vue
...performance-manager-ui/admin/src/components/FormField.vue
+0
-1
attendance-performance-manager-ui/admin/src/components/Header.vue
...ce-performance-manager-ui/admin/src/components/Header.vue
+1
-1
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
...erformance-manager-ui/admin/src/components/SearchForm.vue
+2
-0
attendance-performance-manager-ui/admin/src/components/filepReview.vue
...rformance-manager-ui/admin/src/components/filepReview.vue
+43
-0
attendance-performance-manager-ui/admin/src/views/Layout.vue
attendance-performance-manager-ui/admin/src/views/Layout.vue
+29
-10
attendance-performance-manager-ui/admin/src/views/attendance/class/dialogshow.vue
...anager-ui/admin/src/views/attendance/class/dialogshow.vue
+0
-1
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/draweraudit.vue
...i/admin/src/views/attendance/leave/record/draweraudit.vue
+14
-9
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
...ui/admin/src/views/attendance/leave/record/drawershow.vue
+69
-10
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
...nager-ui/admin/src/views/attendance/leave/record/list.vue
+94
-61
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+49
-21
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+323
-287
attendance-performance-manager-ui/admin/src/views/check/attend/record/drawershow.vue
...ger-ui/admin/src/views/check/attend/record/drawershow.vue
+13
-2
attendance-performance-manager-ui/admin/src/views/check/complain/record/drawershow.vue
...r-ui/admin/src/views/check/complain/record/drawershow.vue
+13
-2
attendance-performance-manager-ui/admin/src/views/check/effect/record/drawershow.vue
...ger-ui/admin/src/views/check/effect/record/drawershow.vue
+12
-3
attendance-performance-manager-ui/admin/src/views/check/gowork/record/drawershow.vue
...ger-ui/admin/src/views/check/gowork/record/drawershow.vue
+12
-3
attendance-performance-manager-ui/admin/src/views/check/other/record/drawershow.vue
...ager-ui/admin/src/views/check/other/record/drawershow.vue
+12
-3
attendance-performance-manager-ui/admin/src/views/check/review/record/drawershow.vue
...ger-ui/admin/src/views/check/review/record/drawershow.vue
+12
-2
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
...-manager-ui/admin/src/views/feedback/addQuestion/list.vue
+48
-16
attendance-performance-manager-ui/admin/src/views/feedback/list.vue
...-performance-manager-ui/admin/src/views/feedback/list.vue
+175
-126
attendance-performance-manager-ui/admin/src/views/feedback/questionnaire/list.vue
...anager-ui/admin/src/views/feedback/questionnaire/list.vue
+2
-3
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+161
-117
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/components/BarCharts.vue
.../src/views/perform/attend/appeal/components/BarCharts.vue
+18
-4
attendance-performance-manager-ui/admin/src/views/perform/attend/record/drawershow.vue
...r-ui/admin/src/views/perform/attend/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/complain/record/drawershow.vue
...ui/admin/src/views/perform/complain/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/effect/record/drawershow.vue
...r-ui/admin/src/views/perform/effect/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/gowork/record/drawershow.vue
...r-ui/admin/src/views/perform/gowork/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/other/record/drawershow.vue
...er-ui/admin/src/views/perform/other/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/review/record/drawershow.vue
...r-ui/admin/src/views/perform/review/record/drawershow.vue
+3
-2
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
...src/views/perform/rules/attend/components/AttendIndex.vue
+4
-2
attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue
...rformance-manager-ui/admin/src/views/staff/dialogshow.vue
+238
-136
attendance-performance-manager-ui/admin/src/views/staff/list.vue
...nce-performance-manager-ui/admin/src/views/staff/list.vue
+13
-7
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
...min/src/views/staff/perform/stat/components/BarCharts.vue
+5
-1
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
...ce-manager-ui/admin/src/views/staff/perform/stat/list.vue
+163
-194
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
...manager-ui/admin/src/views/staff/perform/summary/list.vue
+10
-16
attendance-performance-manager-ui/admin/yarn.lock
attendance-performance-manager-ui/admin/yarn.lock
+303
-536
attendance-performance-manager/pom.xml
attendance-performance-manager/pom.xml
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
.../java/com/mortals/xhx/base/login/web/LoginController.java
+3
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/BaseReq.java
...-manager/src/main/java/com/mortals/xhx/busiz/BaseReq.java
+0
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/MockDataController.java
...c/main/java/com/mortals/xhx/busiz/MockDataController.java
+169
-13
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java
...r/src/main/java/com/mortals/xhx/busiz/TestController.java
+239
-19
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestReq.java
...-manager/src/main/java/com/mortals/xhx/busiz/TestReq.java
+14
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
...main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
+5
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/ReviewSaveReq.java
...main/java/com/mortals/xhx/busiz/h5/req/ReviewSaveReq.java
+4
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
...com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
+9
-6
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java
...ava/com/mortals/xhx/busiz/h5/web/AppealApiController.java
+3
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/FeedbackApiController.java
...a/com/mortals/xhx/busiz/h5/web/FeedbackApiController.java
+5
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java
...va/com/mortals/xhx/busiz/h5/web/InspectApiController.java
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java
...va/com/mortals/xhx/busiz/h5/web/PerformApiController.java
+13
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
.../mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
+173
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
...a/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
+20
-29
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
...in/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
+5
-22
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
.../module/attendance/dingmsg/api/DingMessageController.java
+151
-113
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java
...als/xhx/module/attendance/model/AttendanceStatEntity.java
+12
-3
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
...module/attendance/service/AttendanceRecordHikService.java
+25
-3
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+292
-73
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java
...dule/attendance/web/AttendanceExportRecordController.java
+11
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
...odule/attendance/web/AttendanceRecordErrorController.java
+58
-51
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
.../module/attendance/web/AttendanceRecordHikController.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java
...e/attendance/web/AttendanceVacationBalanceController.java
+7
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAllRecordQuery.java
...m/mortals/xhx/module/check/model/CheckAllRecordQuery.java
+5
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckAttendRecordServiceImpl.java
...dule/check/service/impl/CheckAttendRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckComplainRecordServiceImpl.java
...le/check/service/impl/CheckComplainRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckEffectRecordServiceImpl.java
...dule/check/service/impl/CheckEffectRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckGoworkRecordServiceImpl.java
...dule/check/service/impl/CheckGoworkRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckOtherRecordServiceImpl.java
...odule/check/service/impl/CheckOtherRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckReviewRecordServiceImpl.java
...dule/check/service/impl/CheckReviewRecordServiceImpl.java
+2
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java
.../mortals/xhx/module/dept/model/DeptPerformStatEntity.java
+75
-77
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
...java/com/mortals/xhx/module/dept/service/DeptService.java
+3
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java
.../mortals/xhx/module/dingding/AbstractDingTalkService.java
+6
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java
.../module/dingding/personal/service/IDingPersonService.java
+9
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
...dingding/personal/service/impl/DingPersonServiceImpl.java
+32
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/module/feedback/web/FeedbackController.java
...m/mortals/xhx/module/feedback/web/FeedbackController.java
+10
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/AbstractHikService.java
...n/java/com/mortals/xhx/module/hik/AbstractHikService.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/job/model/JobEntity.java
...main/java/com/mortals/xhx/module/job/model/JobEntity.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/job/web/JobController.java
...in/java/com/mortals/xhx/module/job/web/JobController.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java
.../perform/service/impl/PerformAttendAppealServiceImpl.java
+14
-14
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java
...xhx/module/perform/web/PerformAttendAppealController.java
+22
-15
attendance-performance-manager/src/main/resources/bootstrap.yml
...ance-performance-manager/src/main/resources/bootstrap.yml
+1
-0
attendance-performance-manager/src/main/resources/config/mybatis-sqlmap-config.xml
...nager/src/main/resources/config/mybatis-sqlmap-config.xml
+1
-1
attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml
...in/resources/sqlmap/module/check/CheckAllRecordMapper.xml
+9
-0
No files found.
attendance-performance-manager-ui/admin/src/App.vue
View file @
db41784e
...
...
@@ -31,7 +31,8 @@ export default {
</
script
>
<
style
lang=
"less"
scoped
>
#app {
#app {
height:100vh;
.loading {
display: flex;
align-items: center;
...
...
attendance-performance-manager-ui/admin/src/assets/less/base.css
View file @
db41784e
...
...
@@ -11,8 +11,8 @@ html * {
}
html
,
body
{
height
:
100%
;
min-height
:
100%
;
/* height: 100%; */
/* min-height: 100%; */
font-family
:
"Microsoft Yahei"
,
"Helvetica Neue"
,
Helvetica
,
STHeiTi
,
Arial
,
sans-serif
;
}
body
{
...
...
attendance-performance-manager-ui/admin/src/assets/less/base.less
View file @
db41784e
...
...
@@ -13,13 +13,13 @@ html * {
html,
body {
height: 100%;
min-height: 100%;
//
height: 100%;
//
min-height: 100%;
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif;
}
body {
overflow-y: scroll;
//
overflow-y: scroll;
}
body,
div,
...
...
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
View file @
db41784e
...
...
@@ -8,12 +8,26 @@ export default {
methods
:
{
// 渲染前置处理
beforeRender
(
data
)
{
if
(
data
.
entity
.
attachmentPath
)
{
data
.
entity
.
attachmentPathList
=
[
{
url
:
data
.
entity
.
attachmentPath
,
name
:
data
.
entity
.
attachmentPath
,
},
];
}
console
.
log
(
data
);
return
data
;
},
// 渲染后置处理
afterRender
(
data
)
{},
// 提交表单的前置处理
beforeSubmit
(
data
)
{
data
.
attachmentPathList
&&
data
.
attachmentPathList
.
length
>
0
?
(
data
.
attachmentPath
=
data
.
attachmentPathList
[
0
].
url
)
:
(
data
.
attachmentPath
=
""
);
console
.
log
(
data
);
return
data
;
},
// 提交表单的后置处理, 会阻断默认的回退行为
...
...
@@ -33,6 +47,7 @@ export default {
// 默认拉取数据
getData
()
{
this
.
loading
=
true
;
this
.
$get
(
this
.
urls
.
currUrl
||
this
.
pageInfo
.
currUrl
,
this
.
query
)
.
then
(({
data
})
=>
{
const
res
=
this
.
beforeRender
(
data
);
...
...
@@ -43,6 +58,7 @@ export default {
//
res
.
entity
=
this
.
util_toDateStr
(
res
.
entity
,
this
.
toDate
);
this
.
form
=
Object
.
assign
({},
this
.
form
,
res
.
entity
);
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
dict
);
this
.
afterRender
(
res
);
})
...
...
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
db41784e
...
...
@@ -205,10 +205,26 @@ export default {
<
el
-
tag
type
=
{
"
success
"
}
size
=
"
mini
"
>
{
content
}
<
/el-tag
>
)
:
row
.
checkStatus
==
1
||
row
.
processStatus
==
1
?
(
row
.
subAddType
==
1
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
el
-
link
type
=
{
"
info
"
}
>
(
+
{
content
})
<
/el-link
>
)
:
row
.
subAddType
==
2
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
el
-
link
type
=
{
"
info
"
}
>
({
-
content
})
<
/el-link
>
)
:
(
<
p
>
{
content
}
<
/p
>
)
)
:
row
.
checkStatus
==
2
||
row
.
processStatus
==
2
?
(
row
.
subAddType
==
1
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
el
-
link
>+
{
content
}
<
/el-link
>
)
:
row
.
subAddType
==
2
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
el
-
link
>
{
-
content
}
<
/el-link
>
)
:
(
<
p
>
{
content
}
<
/p
>
)
)
:
row
.
subAddType
==
1
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
p
>
{
content
}
<
/p
>
<
el
-
link
>+
{
content
}
<
/el-link
>
)
:
row
.
subAddType
==
2
&&
column
.
label
.
includes
(
"
分值
"
)
?
(
<
p
>
{
-
content
}
<
/p
>
<
el
-
link
>
{
-
content
}
<
/el-link
>
)
:
(
<
p
>
{
content
}
<
/p
>
)
...
...
@@ -330,7 +346,7 @@ export default {
},
// 格式化单元格数据
formatterDate
(
row
,
column
)
{
console
.
log
(
"
date:
"
,
row
,
column
)
//
console.log("date:",row,column)
return
formatterDate
(
row
,
column
);
},
// 格式化单元格数据 只要年月日
...
...
@@ -457,13 +473,14 @@ export default {
const
regular
=
new
RegExp
(
`.*\.
${
suffix
}
`
);
if
(
regular
.
test
(
val
))
{
return
(
<
el
-
image
src
=
{
val
.
indexOf
(
"
http
"
)
==
-
1
?
baseUrl
+
val
:
val
}
preview
-
src
-
list
=
{
val
.
indexOf
(
"
http
"
)
==
-
1
?
[
baseUrl
+
val
]
:
[
val
]
}
style
=
"
width: 100px
"
><
/el-image
>
// <el-image
// src={val.indexOf("http") == -1 ? baseUrl + val : val}
// preview-src-list={
// val.indexOf("http") == -1 ? [baseUrl + val] : [val]
// }
// style="width: 100px"
// ></el-image>
<
filepReview
src
=
{
val
}
/
>
);
}
else
{
return
<
el
-
link
type
=
"
primary
"
>
{
val
}
<
/el-link>
;
...
...
@@ -565,7 +582,7 @@ export default {
},
// 查看
toView
(
row
,
query
)
{
console
.
log
(
this
.
pageInfo
.
view
);
//
console.log(this.pageInfo.view);
this
.
$router
.
push
({
path
:
this
.
pageInfo
.
view
,
query
:
Object
.
assign
({},
{
id
:
row
.
id
},
query
),
...
...
attendance-performance-manager-ui/admin/src/assets/utils/globalComponents.js
View file @
db41784e
...
...
@@ -15,6 +15,7 @@ import FileUpload from '@/components/FileUpload';
import
Editor
from
'
@/components/Editor
'
;
import
Map
from
'
@/components/Map
'
;
import
MapDetail
from
'
@/components/MapDetail
'
;
import
filepReview
from
'
@/components/filepReview
'
;
const
Prototype
=
function
()
{};
Prototype
.
install
=
(
Vue
,
options
)
=>
{
...
...
@@ -34,6 +35,7 @@ Prototype.install = (Vue, options) => {
Vue
.
component
(
'
Editor
'
,
Editor
)
// 富文本
Vue
.
component
(
'
Map
'
,
Map
)
// 地图
Vue
.
component
(
'
MapDetail
'
,
MapDetail
)
// 地图
Vue
.
component
(
'
filepReview
'
,
filepReview
)
// 图片文件预览
}
export
default
Prototype
;
attendance-performance-manager-ui/admin/src/components/DataTable.vue
View file @
db41784e
...
...
@@ -13,7 +13,6 @@
:empty-text=
"emptytxt ? emptytxt : emptyText"
border
style=
"width: 100%"
height=
"530"
>
<el-table-column
v-for=
"column in columns"
...
...
attendance-performance-manager-ui/admin/src/components/DataTreeTable.vue
View file @
db41784e
...
...
@@ -8,7 +8,7 @@
:row-class-name=
"tableRowClassName"
:default-expand-all=
"expand"
:tree-props=
"
{ children: 'children', hasChildren: 'hasChildren' }"
height="
520
"
height="
630px
"
>
<el-table-column
...
...
attendance-performance-manager-ui/admin/src/components/FormField.vue
View file @
db41784e
...
...
@@ -226,7 +226,6 @@ export default {
},
maxLength
:
{
type
:
Number
,
default
:
256
,
},
},
methods
:
{
...
...
attendance-performance-manager-ui/admin/src/components/Header.vue
View file @
db41784e
...
...
@@ -226,7 +226,7 @@ export default {
}
}
.controllBar {
background-color: rgba(
170, 170, 170, 0.4
);
background-color: rgba(
255, 255, 255, 0.2
);
width: 120px;
height: 44px;
line-height: 44px;
...
...
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
View file @
db41784e
...
...
@@ -344,6 +344,7 @@ export default {
let
newData
=
{
page
:
1
};
Object
.
keys
(
data
).
forEach
((
item
)
=>
{
let
val
=
data
[
item
];
console
.
log
(
item
,
this
.
search
)
this
.
search
.
forEach
((
obj
)
=>
{
if
(
obj
.
name
===
item
&&
...
...
@@ -363,6 +364,7 @@ export default {
});
newData
[
item
]
=
this
.
decodeVal
(
val
);
});
return
newData
;
},
decodeVal
(
val
)
{
...
...
attendance-performance-manager-ui/admin/src/components/filepReview.vue
0 → 100644
View file @
db41784e
<
template
>
<div
class=
"img-flex"
>
<el-image
:src=
"urlVal(item)"
:preview-src-list=
"[urlVal(item)]"
alt=
""
v-for=
"item in fileList"
:key=
"item"
/>
</div>
</
template
>
<
script
>
const
baseUrl
=
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
;
export
default
{
props
:[
'
src
'
],
data
()
{
return
{}
},
created
()
{
console
.
log
(
this
.
src
)
},
computed
:
{
fileList
:
function
(
v
){
return
this
.
src
?
this
.
src
.
split
(
"
,
"
):[]
}
},
methods
:
{
urlVal
(
val
){
console
.
log
(
val
,
"
2222
"
)
return
val
.
indexOf
(
"
http
"
)
==
-
1
?
baseUrl
+
val
:
val
}
},
}
</
script
>
<
style
lang=
"less"
scoped
>
.img-flex{
overflow: hidden;
display: inline-block;
vertical-align: middle;
.el-image{
width: 50px;
float: left;
border:1px solid #ddd;
margin: 2px;
}
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/Layout.vue
View file @
db41784e
<
template
>
<div
:style=
"menuPageCss"
class=
"pages page-layout"
>
<LayoutHeader
v-if=
"menuPage !== 'left'"
@
changePath=
"changePath"
></LayoutHeader>
<LayoutHeaderLeft
@
toggle=
"toggle"
:isOpen=
"isOpen"
v-if=
"menuPage === 'left'"
/>
<div
style=
"padding:15px"
>
<LayoutHeader
v-if=
"menuPage !== 'left'"
@
changePath=
"changePath"
></LayoutHeader>
<LayoutHeaderLeft
@
toggle=
"toggle"
:isOpen=
"isOpen"
v-if=
"menuPage === 'left'"
/>
<div
class=
"layout"
>
<router-view
:class=
"
{ active: !isOpen }" />
</div>
</div>
...
...
@@ -57,6 +50,12 @@ export default {
</
script
>
<
style
lang=
"less"
>
.layout {
padding: 15px 15px 0 15px;
box-sizing: border-box;
}
.page {
min-height: calc(100vh - 100px);
width: 100%;
...
...
@@ -65,12 +64,32 @@ export default {
// var(--padding-top) 5px 5px 5px;
// margin-left: 60px;
padding: 10px;
&.active {
margin-left: var(--margin-left);
}
}
.page-layout {
background: #eee;
height: 100vh;
overflow: auto;
}
/* 侧边滚动条 */
.page-layout::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
.page-layout::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
.page-layout::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/attendance/class/dialogshow.vue
View file @
db41784e
...
...
@@ -239,7 +239,6 @@
return
}
if
(
arr
.
length
>
1
&&
index
>
0
){
console
.
log
(
11111
)
// 上一次比较
let
lastoffTime
=
transFormMinut
(
arr
[
index
-
1
].
offWorkDate
)
+
transFormMinut
(
arr
[
index
-
1
].
offWorkDateAfter
)
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/draweraudit.vue
View file @
db41784e
...
...
@@ -39,15 +39,16 @@
label=
"开始时间"
prop=
"startTime"
v-model=
"form.startTime"
type=
"date"
type=
"date
time
"
/>
<Field
disabled
label=
"结束时间"
prop=
"endTime"
v-model=
"form.endTime"
type=
"date"
type=
"datetime"
disabled
/>
<Field
disabled
label=
"时长,单位秒"
...
...
@@ -66,8 +67,8 @@
<Field
disabled
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
prop=
"approver
Id
"
v-model=
"form.approver
Id
"
placeholder=
"请输入审批负责人"
/>
<Field
...
...
@@ -147,6 +148,7 @@ export default {
open
:
false
,
// urls: { saveUrl: "/check/attend/record/examine" },
toString
:
[
"
leaveType
"
,
"
auditResult
"
,
"
processStatus
"
],
toDate
:
[
"
startTime
"
,
"
endTime
"
],
// 表单校验
rules
:
{},
};
...
...
@@ -157,8 +159,11 @@ export default {
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/leave/record/edit
"
;
this
.
getData
();
// this.urls.currUrl = "attendance/leave/record/edit";
// this.getData();
this
.
$post
(
"
attendance/leave/record/edit
"
,
{
id
:
row
.
id
}).
then
((
res
)
=>
{
console
.
log
(
res
);
});
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改请假记录信息
"
;
},
...
...
@@ -176,8 +181,8 @@ export default {
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/leave/record/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
请假记录信息详细
"
;
this
.
pageInfo
.
type
=
"
check
"
;
this
.
title
=
"
审核请假记录
"
;
},
/**取消按钮 */
cancel
()
{
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
View file @
db41784e
...
...
@@ -16,6 +16,7 @@
v-model=
"form.leavePerson"
placeholder=
"请输入请假人"
:maxLength=
"10"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"所属部门"
...
...
@@ -24,6 +25,7 @@
type=
"select"
placeholder=
"请选择所属部门"
:enumData=
"dict.deptId"
:disabled=
"pageInfo.type == 'view'"
/>
<!--
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入所属部门"
/>
-->
<Field
...
...
@@ -32,6 +34,7 @@
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码"
:maxLength=
"11"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"请假类型"
...
...
@@ -40,13 +43,16 @@
type=
"select"
:enumData=
"dict.leaveType"
placeholder=
"请选择请假类型"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"开始时间"
prop=
"startTime"
v-model=
"form.startTime"
type=
"datetime"
@
change=
"changedate"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"结束时间"
...
...
@@ -54,6 +60,7 @@
v-model=
"form.endTime"
type=
"datetime"
@
change=
"changedate"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
...
...
@@ -70,6 +77,23 @@
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"审核结果"
prop=
"auditResult"
v-model=
"form.auditResult"
type=
"radio"
:enumData=
"dict.auditResult"
placeholder=
"请选择审核结果"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"审核说明"
prop=
"auditDesc"
v-model=
"form.auditDesc"
placeholder=
"请输入审核说明"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"审批负责人"
...
...
@@ -78,6 +102,7 @@
v-model=
"form.approverId"
placeholder=
"请选择审批负责人"
:enumData=
"dict.approverId"
:disabled=
"pageInfo.type == 'view'"
/>
<!--
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入审批负责人"
/>
-->
<!--
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件"
/>
-->
...
...
@@ -87,16 +112,29 @@
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
:disabled=
"pageInfo.type == 'view'"
/>
<Field
label=
"申请时间"
prop=
"createTime"
v-model=
"form.createTime"
type=
"datetime"
disabled
/>
</el-row>
<el-form-item
label=
"附件路径"
prop=
"attachmentPath"
>
<el-form-item
label=
"附件路径"
prop=
"attachmentPath
List
"
>
<FileUpload
@
input=
"uploadFn"
:value=
"
attachmentPath
"
:value=
"
form.attachmentPathList
"
:fileNumber=
"1"
:disabled=
"pageInfo.type == 'view'"
/>
</el-form-item>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
v-if=
"pageInfo.type !== 'view'"
/>
</el-form>
</div>
</el-drawer>
...
...
@@ -123,8 +161,8 @@ export default {
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
leaveType
"
,
"
deptId
"
,
"
approverId
"
],
toDate
:
[
"
startTime
"
,
"
endTime
"
],
toString
:
[
"
leaveType
"
,
"
deptId
"
,
"
approverId
"
,
"
auditResult
"
],
toDate
:
[
"
startTime
"
,
"
endTime
"
,
"
createTime
"
],
// 表单校验
rules
:
{
leavePerson
:
[
...
...
@@ -155,14 +193,17 @@ export default {
approverId
:
[
{
required
:
true
,
message
:
"
请选择审批人
"
,
trigger
:
"
change
"
},
],
attachmentPath
:
[
{
required
:
true
,
message
:
"
请上传附件文件
"
,
trigger
:
"
change
"
},
// attachmentPathList: [
// { required: true, message: "请上传附件文件", trigger: "change" },
// ],
auditResult
:
[
{
required
:
true
,
message
:
"
请选择审核结果
"
,
trigger
:
"
change
"
},
],
},
attachmentPath
:
""
,
};
},
watch
:
{},
methods
:
{
// beforeSubmit() {
// if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
...
...
@@ -172,8 +213,8 @@ export default {
// }
// },
uploadFn
(
e
)
{
this
.
attachmentPath
=
e
;
this
.
form
.
attachmentPath
=
this
.
attachmentPath
[
0
].
url
;
this
.
form
.
attachmentPathList
=
e
;
this
.
$forceUpdate
(
this
.
form
.
attachmentPathList
)
;
},
/** 编辑 */
edit
(
row
)
{
...
...
@@ -181,6 +222,23 @@ export default {
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/leave/record/edit
"
;
this
.
getData
();
// this.$get("attendance/leave/record/edit", { id: row.id }).then((res) => {
// if (res.code == 1) {
// this.form = res.data.entity;
// this.attachmentPath = res.data
// ? [
// {
// url: res.data.entity.attachmentPath,
// name: res.data.entity.attachmentPath,
// },
// ]
// : "";
// this.dict = res.data.dict;
// this.open = true;
// } else {
// this.reset();
// }
// });
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改请假记录信息
"
;
},
...
...
@@ -198,6 +256,7 @@ export default {
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/leave/record/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
请假记录信息详细
"
;
},
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
View file @
db41784e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
>
<el-button
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
size=
"mini"
slot=
"table-head-left2"
>
导出
<el-button
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
size=
"mini"
slot=
"table-head-left2"
>
导出
</el-button>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<drawer-audit
ref=
"draweraudit"
@
ok=
"getData"
/>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<drawer-audit
ref=
"draweraudit"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
drawerAudit
from
"
./draweraudit
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
AttendanceLeaveRecordList
"
,
components
:
{
drawerShow
drawerShow
,
drawerAudit
,
},
mixins
:
[
table
],
created
()
{
},
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
...
...
@@ -39,18 +44,24 @@ export default {
},
audit
(
row
)
{
//todo 审核页面进行审核
this
.
$refs
.
drawer
audit
.
view
(
row
);
this
.
$refs
.
drawer
form
.
edit
(
row
);
// this.$refs.draweraudit.view(row);
},
doExport
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/leave/record/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
this
.
$download
(
"
/attendance/leave/record/exportExcel
"
,
{
idList
:
this
.
selection
,
name
:
this
.
$route
.
query
[
"
name
"
],
},
{
type
:
"
excel
"
}
)
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
});
},
},
data
()
{
...
...
@@ -63,101 +74,123 @@ export default {
name
:
"
leavePerson
"
,
type
:
"
text
"
,
label
:
"
请假人
"
,
fuzzy
:
true
fuzzy
:
true
,
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
电话号码
"
,
fuzzy
:
true
fuzzy
:
true
,
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
false
fuzzy
:
false
,
},
{
name
:
"
leaveType
"
,
type
:
"
select
"
,
label
:
"
请假类型
"
,
fuzzy
:
false
fuzzy
:
false
,
},
{
name
:
"
startTime
"
,
type
:
"
date
"
,
label
:
"
开始时间
"
,
fuzzy
:
false
fuzzy
:
false
,
},
{
name
:
"
endTime
"
,
type
:
"
date
"
,
label
:
"
结束时间
"
,
fuzzy
:
false
fuzzy
:
false
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
// {label: "请假人id", prop: "leavePersonId", formatter: this.formatter},
{
label
:
"
请假人
"
,
prop
:
"
leavePerson
"
},
{
label
:
"
请假人
"
,
prop
:
"
leavePerson
"
},
// {label: "所属部门id", prop: "deptId", formatter: this.formatter},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
电话号码
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
请假类型
"
,
prop
:
"
leaveType
"
,
formatter
:
this
.
formatterLeaveType
},
{
label
:
"
请假类型
"
,
prop
:
"
leaveType
"
,
formatter
:
this
.
formatterLeaveType
,
},
{
label
:
"
开始时间
"
,
prop
:
"
startTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
开始时间
"
,
prop
:
"
startTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
结束时间
"
,
prop
:
"
endTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
结束时间
"
,
prop
:
"
endTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
时长
"
,
prop
:
"
duration
"
,
formatter
:
this
.
formatter
},
{
label
:
"
时长
"
,
prop
:
"
duration
"
,
formatter
:
this
.
formatter
},
// {label: "审批负责人Id", prop: "approverId", formatter: this.formatter},
/* {label: "处理状态", prop: "processStatus", formatter: this.formatter},*/
/* {label: "处理状态", prop: "processStatus", formatter: this.formatter},*/
{
label
:
"
状态
"
,
prop
:
"
auditResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
审批负责人
"
,
prop
:
"
approver
"
},
{
label
:
"
状态
"
,
prop
:
"
auditResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
审批负责人
"
,
prop
:
"
approver
"
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
formatter
:
(
row
)
=>
{
return
(
<
div
>
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
span
>
<
/span
>
{
row
.
processStatus
===
1
?
(
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-open
"
onClick
=
{()
=>
{
this
.
audit
(
row
);
}}
>
审核
<
/el-button
>
)
:
(
""
)}
<
/div
>
<
div
>
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
span
>
<
/span
>
{
row
.
processStatus
===
1
?
(
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-open
"
onClick
=
{()
=>
{
this
.
audit
(
row
);
}}
>
审核
<
/el-button
>
)
:
(
""
)}
<
/div
>
);
}
}
]
}
}
,
}
,
]
,
}
,
};
}
}
,
};
</
script
>
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
db41784e
<
template
>
<div
class=
"page"
>
<div
style=
"margin:10px 0"
>
<div>
<tab-pane
:thirdList=
"thirdList"
:activeName=
"activeName"
...
...
@@ -189,7 +189,7 @@ import drawerShow from "./drawershow";
import
table
from
"
@/assets/mixins/table
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
;
import
{
timestampToTime
}
from
"
@/assets/utils/dateFormat
"
;
import
{
formatterDateOnly
}
from
"
@/assets/utils/table
"
;
import
{
formatterDateOnly
}
from
"
@/assets/utils/table
"
;
export
default
{
name
:
"
AttendanceRecordList
"
,
components
:
{
...
...
@@ -401,12 +401,30 @@ export default {
/** 子表列元素 */
columnSet
:
[
{
prop
:
"
shiftsName
"
,
label
:
"
班次名称
"
,
width
:
150
},
{
prop
:
"
goWorkDate
"
,
label
:
"
上班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
},
{
prop
:
"
goWorkResult
"
,
label
:
"
上班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
},
{
prop
:
"
offWorkDate
"
,
label
:
"
下班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
},
{
prop
:
"
offWorkResult
"
,
label
:
"
下班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
}
{
prop
:
"
goWorkDate
"
,
label
:
"
上班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
,
},
{
prop
:
"
goWorkResult
"
,
label
:
"
上班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
,
},
{
prop
:
"
offWorkDate
"
,
label
:
"
下班打卡时间
"
,
width
:
100
,
formatter
:
this
.
formatterDate
,
},
{
prop
:
"
offWorkResult
"
,
label
:
"
下班打卡结果
"
,
width
:
100
,
formatter
:
this
.
formatterString
,
},
],
config
:
{
search
:
[
...
...
@@ -459,7 +477,6 @@ export default {
label
:
"
考勤结束时间
"
,
fuzzy
:
false
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -479,24 +496,35 @@ export default {
{
label
:
"
部门
"
,
prop
:
"
deptName
"
,
formatter
:
this
.
formatters
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
,
formatter
:
this
.
formatters
},
{
label
:
"
班次
"
,
prop
:
"
shiftsName
"
,
formatter
:
this
.
formatters
},
{
label
:
"
签到结果
"
,
prop
:
"
signInResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
签退结果
"
,
prop
:
"
signOutResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
签到结果
"
,
prop
:
"
signInResult
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
签退结果
"
,
prop
:
"
signOutResult
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
打卡结果
"
,
prop
:
"
punchResult
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤类型
"
,
prop
:
"
attendType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤打卡记录详细信息
"
,
{
label
:
"
考勤打卡记录详细信息
"
,
width
:
120
,
prop
:
"
subColumns
"
,
formatter
:
(
row
)
=>
{
let
widthsize
=
this
.
columnSet
.
reduce
((
pre
,
cur
)
=>
{
return
pre
+
Number
(
cur
.
width
);
},
50
);
return
(
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
{
this
.
renderTable
(
row
.
attendanceRecordDetailList
)}
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
<
/el-popover
>
);
let
widthsize
=
this
.
columnSet
.
reduce
((
pre
,
cur
)
=>
{
return
pre
+
Number
(
cur
.
width
);
},
50
);
return
(
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
{
this
.
renderTable
(
row
.
attendanceRecordDetailList
)}
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
<
/el-popover
>
);
},
},
// {
...
...
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
db41784e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notAdd
notDel
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkList"
>
<el-checkbox
v-for=
"(item,index) in setcolum"
:key=
"index"
:label=
"item.label"
>
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button>
取消
</el-button>
<el-button
type=
"primary"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 导出记录查看 -->
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 10"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"times"
>
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
</div>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notAdd
notDel
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button
>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkList"
>
<el-checkbox
v-for=
"(item, index) in setcolum"
:key=
"index"
:label=
"item.label"
>
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button>
取消
</el-button>
<el-button
type=
"primary"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 导出记录查看 -->
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 10"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"times"
>
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
getFirstDay
,
getLastDay
,
getdiffdate
,
timestampToTime
,
getMyDay
}
from
'
@/assets/utils/dateFormat.js
'
export
default
{
name
:
"
AttendanceStatList
"
,
components
:
{
dialogShow
},
mixins
:
[
table
],
created
()
{
this
.
query
.
startTime
=
getFirstDay
()
this
.
query
.
endTime
=
getLastDay
()
this
.
initalArr
=
this
.
config
.
columns
},
methods
:
{
// 处理
handleArr
(
arr
,
currentTime
){
let
index
=
arr
.
findIndex
(
item
=>
item
.
createTime
===
currentTime
)
if
(
index
>
-
1
){
return
arr
[
index
].
attendanceSummary
}
else
{
return
'
-
'
}
},
afterRender
(
data
)
{
this
.
addColumn
=
getdiffdate
(
this
.
query
.
startTime
,
this
.
query
.
endTime
)
// 动态处理
let
addobjArr
=
[]
this
.
addColumn
.
map
((
item
,
index
)
=>
{
let
obj
=
{
label
:
item
+
'
(
'
+
getMyDay
(
new
Date
(
item
))
+
'
)
'
,
prop
:
'
attendanceStaffStatEntities
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
attendanceStaffStatEntities
.
length
>
0
){
return
this
.
handleArr
(
row
.
attendanceStaffStatEntities
,
item
)
}
else
{
return
'
-
'
}
}
}
addobjArr
.
push
(
obj
)
})
this
.
config
.
columns
=
[...
this
.
initalArr
,...
addobjArr
]
this
.
$forceUpdate
()
},
beforeRender
(
row
)
{
row
.
data
.
forEach
(
element
=>
{
if
(
element
.
attendanceStaffStatEntities
.
length
>
0
){
element
.
attendanceStaffStatEntities
.
forEach
(
item1
=>
{
item1
.
createTime
=
timestampToTime
(
item1
.
createTime
,
3
)
})
}
})
return
row
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
setdialog
(){
this
.
isdialog
=
true
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
},
lookexportHis
(){
this
.
drawerhistory
=
true
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
let
params
=
{}
for
(
let
value
of
this
.
config
.
search
){
if
(
this
.
query
[
value
.
name
]){
params
[
value
.
name
]
=
this
.
query
[
value
.
name
]
}
}
if
(
this
.
selection
.
length
>
0
){
params
[
'
idList
'
]
=
this
.
selection
}
this
.
$download
(
"
/attendance/stat/exportExcel
"
,
{
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
getFirstDay
,
getLastDay
,
getdiffdate
,
timestampToTime
,
getMyDay
,
}
from
"
@/assets/utils/dateFormat.js
"
;
export
default
{
name
:
"
AttendanceStatList
"
,
components
:
{
dialogShow
,
},
mixins
:
[
table
],
created
()
{
this
.
query
.
startTime
=
getFirstDay
();
this
.
query
.
endTime
=
getLastDay
();
this
.
initalArr
=
this
.
config
.
columns
;
},
methods
:
{
// 处理
handleArr
(
arr
,
currentTime
)
{
let
index
=
arr
.
findIndex
((
item
)
=>
item
.
createTime
===
currentTime
);
if
(
index
>
-
1
)
{
return
arr
[
index
].
attendanceSummary
;
}
else
{
return
"
-
"
;
}
},
afterRender
(
data
)
{
this
.
addColumn
=
getdiffdate
(
this
.
query
.
startTime
,
this
.
query
.
endTime
);
// 动态处理
let
addobjArr
=
[];
this
.
addColumn
.
map
((
item
,
index
)
=>
{
let
obj
=
{
label
:
item
+
"
(
"
+
getMyDay
(
new
Date
(
item
))
+
"
)
"
,
prop
:
"
attendanceStaffStatEntities
"
,
formatter
:
(
row
)
=>
{
if
(
row
.
attendanceStaffStatEntities
.
length
>
0
)
{
return
this
.
handleArr
(
row
.
attendanceStaffStatEntities
,
item
);
}
else
{
return
"
-
"
;
}
},
};
addobjArr
.
push
(
obj
);
});
this
.
config
.
columns
=
[...
this
.
initalArr
,
...
addobjArr
];
this
.
$forceUpdate
();
},
beforeRender
(
row
)
{
row
.
data
.
forEach
((
element
)
=>
{
if
(
element
.
attendanceStaffStatEntities
.
length
>
0
)
{
element
.
attendanceStaffStatEntities
.
forEach
((
item1
)
=>
{
item1
.
createTime
=
timestampToTime
(
item1
.
createTime
,
3
);
});
}
});
return
row
;
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
setdialog
()
{
this
.
isdialog
=
true
;
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
(
item
)
=>
item
.
label
&&
item
.
prop
);
},
lookexportHis
()
{
this
.
drawerhistory
=
true
;
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
let
params
=
{};
for
(
let
value
of
this
.
config
.
search
)
{
if
(
this
.
query
[
value
.
name
])
{
params
[
value
.
name
]
=
this
.
query
[
value
.
name
];
}
}
if
(
this
.
selection
.
length
>
0
)
{
params
[
"
idList
"
]
=
this
.
selection
;
}
this
.
$download
(
"
/attendance/stat/exportExcel
"
,
{
...
params
,
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
false
},
{
name
:
"
groupId
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
false
},
{
name
:
"
classId
"
,
type
:
"
select
"
,
label
:
"
全部班次
"
,
fuzzy
:
false
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
label
:
"
考勤开始时间
"
,
fuzzy
:
false
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
label
:
"
考勤结束时间
"
,
fuzzy
:
false
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
true
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
'
left
'
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
'
left
'
},
{
label
:
"
窗口类别
"
,
prop
:
"
windowCategory
"
,
fixed
:
'
left
'
,
width
:
100
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
,
fixed
:
'
left
'
,
width
:
100
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
出勤天数
"
,
prop
:
"
goTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
上午缺卡次数
"
,
prop
:
"
morningTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
下午缺卡次数
"
,
prop
:
"
afternoonTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
},
{
type
:
"
excel
"
}
)
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
});
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
false
,
},
{
name
:
"
groupId
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
false
,
},
{
name
:
"
classId
"
,
type
:
"
select
"
,
label
:
"
全部班次
"
,
fuzzy
:
false
,
},
{
name
:
"
startTime
"
,
type
:
"
date
"
,
label
:
"
考勤开始时间
"
,
fuzzy
:
false
,
},
{
name
:
"
endTime
"
,
type
:
"
date
"
,
label
:
"
考勤结束时间
"
,
fuzzy
:
false
,
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
,
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
true
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
},
{
label
:
"
窗口类别
"
,
prop
:
"
windowCategory
"
,
fixed
:
"
left
"
,
width
:
100
,
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
,
fixed
:
"
left
"
,
width
:
100
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
出勤天数
"
,
prop
:
"
goTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
上午缺卡次数
"
,
prop
:
"
morningTimes
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
下午缺卡次数
"
,
prop
:
"
afternoonTimes
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
}
]
},
setcolum
:[],
isdialog
:
false
,
checkList
:[],
drawerhistory
:
false
,
// 动态新增列表
addColumn
:[],
initalArr
:[]
}
}
}
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
},
],
},
setcolum
:
[],
isdialog
:
false
,
checkList
:
[],
drawerhistory
:
false
,
// 动态新增列表
addColumn
:
[],
initalArr
:
[],
};
},
};
</
script
>
<
style
scoped
lang=
"less"
>
.hisList{
padding: 15px;
.list{
background-color: rgba(64, 158, 255, 0.1);
font-size: 14px;
border-radius: 10px;
padding: 10px;
.times{
font-size: 12px;
color: #999;
}
.hisList {
padding: 15px;
.list {
background-color: rgba(64, 158, 255, 0.1);
font-size: 14px;
border-radius: 10px;
padding: 10px;
.times {
font-size: 12px;
color: #999;
}
}
}
.tipsword{
margin: 20px 0;
color: #999;
.tipsword
{
margin: 20px 0;
color: #999;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/check/attend/record/drawershow.vue
View file @
db41784e
...
...
@@ -69,10 +69,20 @@
{{
form
.
subAddType
==
1
?
"
加分人员:
"
:
"
扣分人员:
"
}}
{{
form
.
deductPerson
?
form
.
deductPerson
:
"
--
"
}}
</el-col
>
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -88,7 +98,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
attendance-performance-manager-ui/admin/src/views/check/complain/record/drawershow.vue
View file @
db41784e
...
...
@@ -83,9 +83,19 @@
{{
form
.
deductTime
?
form
.
deductTime
:
"
--
"
}}
</el-col
>
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -101,7 +111,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
attendance-performance-manager-ui/admin/src/views/check/effect/record/drawershow.vue
View file @
db41784e
...
...
@@ -60,9 +60,17 @@
>
</el-row>
<el-row>
<el-col
:span=
"24"
>
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -78,7 +86,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
attendance-performance-manager-ui/admin/src/views/check/gowork/record/drawershow.vue
View file @
db41784e
...
...
@@ -62,9 +62,17 @@
>
</el-row>
<el-row>
<el-col
:span=
"24"
>
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -80,7 +88,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
attendance-performance-manager-ui/admin/src/views/check/other/record/drawershow.vue
View file @
db41784e
...
...
@@ -58,9 +58,17 @@
</el-col>
</el-row>
<el-row>
<el-col
:span=
"24"
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -76,7 +84,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
attendance-performance-manager-ui/admin/src/views/check/review/record/drawershow.vue
View file @
db41784e
...
...
@@ -63,9 +63,17 @@
</el-row>
<el-row>
<el-col
:span=
"12"
>
巡查人员:
{{
form
.
createUserId
?
util_formatter
(
"
createUserId
"
,
form
.
createUserId
)
:
"
--
"
}}
</el-col>
<el-col
:span=
"12"
>
图片凭证:
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -81,7 +89,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</el-col>
</el-row>
...
...
@@ -414,6 +423,7 @@ export default {
kaoqinCateArr
:
[],
kaoqinArr
:
[],
urls
:
{
saveUrl
:
"
/check/review/record/examine
"
},
//重写核查地址
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
,
};
},
...
...
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
View file @
db41784e
...
...
@@ -4,6 +4,7 @@
<el-button
class=
"backBtn"
size=
"small"
@
click=
"$router.back()"
>
返回上一级
</el-button>
<el-tabs
v-model=
"tabs"
>
<el-tab-pane
label=
"设计问卷"
name=
"1"
>
<!-- 步骤1 填写问卷名称 -->
<div
style=
"width: 800px;margin: 100px auto;"
v-show=
"step"
>
<el-form
:model=
"titleForm"
:rules=
"titleRules"
ref=
"titleForm"
>
<el-form-item
label=
"问卷名称:"
prop=
"title"
label-width=
"125px"
>
...
...
@@ -20,20 +21,22 @@
</div>
</el-form>
</div>
<!-- 动态表单配置 -->
<div
v-show=
"!step"
>
<fc-designer
style=
"height: 79vh;"
ref=
"designer"
>
<template
slot=
"handle"
>
<ElButton
style=
"margin-left: 10px;"
icon=
"el-icon-upload"
type=
"primary"
size=
"small"
@
click=
"issueBtn"
round
>
问卷发布
@
click=
"issueBtn"
round
>
问卷
配置
发布
</ElButton>
<
!--
<ElButton
style=
"margin-left: 10px;"
icon=
"el-icon-upload"
type=
"primary
"
size=
"small"
@
click=
"
issueBtn"
round
>
外部链接
</ElButton>
-->
<ElButton
icon=
"el-icon-view"
type=
"success"
size=
"small"
@
click=
"showDrawer"
round
>
手机
模拟
预览
<
ElButton
style=
"margin-left: 10px;"
icon=
"el-icon-position"
type=
"warning
"
size=
"small"
@
click=
"
outsideBtn"
round
>
外部链接发布
</ElButton>
<ElButton
icon=
"el-icon-view"
type=
"success"
size=
"small"
@
click=
"showDrawer"
round
>
手机预览
</ElButton>
</
template
>
</fc-designer>
</div>
<!-- 手机模拟预览 -->
<el-drawer
:visible.sync=
"drawer"
title=
"预览"
>
<div
class=
"showPhone"
>
<div
class=
"phone"
>
...
...
@@ -44,13 +47,16 @@
</div>
</div>
</el-drawer>
<!-- 问卷发布弹出框 -->
<el-dialog
title=
"问卷发布"
:visible.sync=
"issueDialog"
width=
"30%"
top=
"25vh"
>
<el-form
:model=
"issueForm"
:rules=
"issueRules"
ref=
"issueForm"
>
<el-form-item
label=
"链接地址:"
label-width=
"125px"
prop=
"webUrl"
v-if=
"weblink"
>
<el-input
v-model=
"issueForm.webUrl"
placeholder=
"请输入链接地址"
></el-input>
</el-form-item>
<el-form-item
label=
"问卷封面:"
label-width=
"125px"
>
<div
style=
"display: flex;align-items: center;"
>
<img
style=
"width:80px; height: 80px; margin-right: 10px;cursor: pointer;"
v-for=
"(i, j) in coverImg"
:key=
"j"
:src=
"ImgUrl + '/' + i.url"
alt=
""
v-for=
"(i, j) in coverImg"
:key=
"j"
:src=
"
show
ImgUrl + '/' + i.url"
alt=
""
:class=
"selImg == j ? 'selImg' : ''"
@
click=
"selImg = j"
>
<el-upload
v-show=
"coverImg.length < 4"
:action=
"ImgUrl + '/attendance/file/commonupload'"
accept=
"image/jpeg,image/png,image/jpg"
list-type=
"picture-card"
class=
"upload"
...
...
@@ -75,8 +81,8 @@
</div>
</el-form>
</el-dialog>
<el-dialog
title=
"人员选择"
:visible.sync=
"treeDialog"
>
<!-- 人员选择弹出框 -->
<el-dialog
title=
"人员选择"
:visible.sync=
"treeDialog"
width=
"40%"
>
<div
class=
"treeDialog"
>
<el-tree
class=
"treeCss"
:data=
"treeData"
node-key=
"id"
:props=
"defaultProps"
@
node-click=
"handleNodeClick"
></el-tree>
...
...
@@ -158,6 +164,10 @@ export default {
issueRules
:
{
time
:
[
{
required
:
true
,
message
:
'
请输入选择反馈期限
'
,
trigger
:
'
blur
'
},
],
webUrl
:
[
{
required
:
true
,
message
:
'
请输入链接地址
'
,
trigger
:
'
blur
'
},
{
pattern
:
/^https
?
:
\/\/((
.
)
+
(\.)?)
*
(
:
\d
+
)?(\/((\.)?(\?)?
=
?
&
?
.
(\?)?)
*
)
*$/i
,
message
:
'
请输入正确的链接 例:https://www.baidu.com
'
,
trigger
:
'
change
'
}
]
},
treeData
:
[],
...
...
@@ -175,7 +185,25 @@ export default {
editStyle
:
false
,
loadingstate
:
false
,
ImgUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
,
coverImg
:
[]
showImgUrl
:
''
,
coverImg
:
[],
weblink
:
0
,
webUrl
:
''
,
}
},
watch
:
{
issueDialog
(
val
)
{
//监听关闭外联状态
if
(
!
val
)
{
this
.
weblink
=
0
}
}
},
created
(){
if
(
process
.
env
.
NODE_ENV
==
"
development
"
){
this
.
showImgUrl
=
process
.
env
.
VUE_APP_API_BASE_URL
}
else
{
this
.
showImgUrl
=
''
}
},
mounted
()
{
...
...
@@ -199,6 +227,10 @@ export default {
this
.
getFile
()
},
methods
:
{
outsideBtn
()
{
this
.
weblink
=
1
this
.
issueDialog
=
1
},
handleUploadSuccess
(
res
)
{
console
.
log
(
res
)
this
.
coverImg
.
push
(
res
)
...
...
@@ -250,7 +282,6 @@ export default {
console
.
log
(
file
)
}
},
//获取问卷封面
getFile
()
{
this
.
$post
(
'
/feedback/file/list
'
,
{
page
:
1
,
size
:
3
}).
then
(
res
=>
{
...
...
@@ -357,12 +388,12 @@ export default {
return
JSON
.
stringify
(
FcDesignerOptions
)
},
issueFormBtn
(
formName
)
{
if
(
this
.
checkedUser
.
length
<
1
)
{
this
.
$message
.
warning
(
'
请选择人员后发布问卷
'
)
return
}
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
checkedUser
.
length
<
1
)
{
this
.
$message
.
warning
(
'
请选择人员后发布问卷
'
)
return
}
console
.
log
(
this
.
issueForm
)
this
.
Frule
.
forEach
(
i
=>
{
i
.
remark
=
i
.
field
...
...
@@ -381,7 +412,8 @@ export default {
})
let
sub
=
{
weblink
:
this
.
weblink
,
webUrl
:
this
.
issueForm
.
webUrl
,
staffList
:
this
.
checkedUser
,
id
:
this
.
feedbackId
,
...
this
.
titleForm
,
...
...
attendance-performance-manager-ui/admin/src/views/feedback/list.vue
View file @
db41784e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notDel
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notDel
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
...
...
@@ -11,140 +10,190 @@
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
FeedbackList
"
,
components
:
{
drawerShow
name
:
"
FeedbackList
"
,
components
:
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
renderTable
(
tableData
)
{
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
{
this
.
columnSet
.
map
((
item
)
=>
this
.
renderTableColumn
(
item
))}
<
/el-table
>
);
},
mixins
:
[
table
],
created
()
{
renderTableColumn
(
options
)
{
return
(
<
el
-
table
-
column
prop
=
{
options
.
prop
}
label
=
{
options
.
label
}
width
=
{
options
.
width
}
formatter
=
{
options
.
formatter
}
><
/el-table-column
>
);
},
methods
:
{
renderTable
(
tableData
)
{
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
{
this
.
columnSet
.
map
((
item
)
=>
this
.
renderTableColumn
(
item
))}
<
/el-table
>
);
},
renderTableColumn
(
options
)
{
return
(
<
el
-
table
-
column
prop
=
{
options
.
prop
}
label
=
{
options
.
label
}
width
=
{
options
.
width
}
formatter
=
{
options
.
formatter
}
>
<
/el-table-column
>
);
},
/** 重写新增方法 */
toAdd
(
row
)
{
// this.$refs.drawerform.add(row);
this
.
$router
.
push
(
"
/feedback/addQuestion/list
"
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
// this.$refs.drawerform.edit(row);
this
.
$router
.
push
({
path
:
`/feedback/addQuestion/list?id=
${
row
.
id
}
`
});
localStorage
.
setItem
(
'
editFeedback
'
,
JSON
.
stringify
(
row
))
},
/** 重写查看方法 */
toView
(
row
)
{
console
.
log
(
row
)
localStorage
.
setItem
(
'
checkFeedbackId
'
,
row
.
id
)
// this.$refs.drawerform.view(row);
this
.
$router
.
push
(
'
/feedback/questionnaire/list
'
)
/** 重写新增方法 */
toAdd
(
row
)
{
// this.$refs.drawerform.add(row);
this
.
$router
.
push
(
"
/feedback/addQuestion/list
"
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
// this.$refs.drawerform.edit(row);
this
.
$router
.
push
({
path
:
`/feedback/addQuestion/list?id=
${
row
.
id
}
`
});
localStorage
.
setItem
(
"
editFeedback
"
,
JSON
.
stringify
(
row
));
},
/** 重写查看方法 */
toView
(
row
)
{
console
.
log
(
row
);
localStorage
.
setItem
(
"
checkFeedbackId
"
,
row
.
id
);
// this.$refs.drawerform.view(row);
this
.
$router
.
push
(
"
/feedback/questionnaire/list
"
);
},
goPage
(
path
)
{
this
.
$router
.
push
(
path
);
},
},
data
()
{
return
{
/** 子表列元素 */
columnSet
:
[
{
label
:
"
反馈问卷id号
"
,
prop
:
"
feedbackId
"
,
formatter
:
this
.
formatter
,
},
goPage
(
path
)
{
this
.
$router
.
push
(
path
)
}
{
label
:
"
问题内容
"
,
prop
:
"
content
"
},
{
label
:
"
问题类型
"
,
prop
:
"
questionType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
是否必填
"
,
prop
:
"
require
"
,
formatter
:
this
.
formatter
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
},
],
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
feedbackTimeStart
"
,
type
:
"
datetime
"
,
label
:
"
请选择日期
"
,
fuzzy
:
false
,
},
{
name
:
"
title
"
,
type
:
"
text
"
,
label
:
"
输入问卷标题关键字搜索
"
,
fuzzy
:
false
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
},
data
()
{
return
{
/** 子表列元素 */
columnSet
:
[
{
label
:
"
反馈问卷id号
"
,
prop
:
"
feedbackId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
问题内容
"
,
prop
:
"
content
"
},
{
label
:
"
问题类型
"
,
prop
:
"
questionType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
是否必填
"
,
prop
:
"
require
"
,
formatter
:
this
.
formatter
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
},
],
config
:
{
isshowTabPane
:
true
,
search
:
[
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
问卷标题
"
,
prop
:
"
title
"
},
{
label
:
"
问卷标题
"
,
prop
:
"
title
"
},
{
label
:
"
更新时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
更新时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
反馈开始时间
"
,
prop
:
"
feedbackTimeStart
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
反馈开始时间
"
,
prop
:
"
feedbackTimeStart
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
反馈结束时间
"
,
prop
:
"
feedbackTimeEnd
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
反馈结束时间
"
,
prop
:
"
feedbackTimeEnd
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
邀请人数
"
,
prop
:
"
inviteNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
邀请人数
"
,
prop
:
"
inviteNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
反馈人数
"
,
prop
:
"
feedbackNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
反馈人数
"
,
prop
:
"
feedbackNum
"
,
formatter
:
this
.
formatter
},
// { label: "创建用户", prop: "createUserId", formatter: this.formatter },
{
label
:
"
状态
"
,
prop
:
"
processStatus
"
,
formatter
:
(
row
)
=>
{
let
str
=
"
未开始
"
if
(
row
.
processStatus
==
1
)
{
str
=
"
进行中
"
}
else
if
(
row
.
processStatus
==
2
)
{
str
=
"
已结束
"
}
return
(
<
el
-
tag
type
=
{
row
.
processStatus
?
row
.
processStatus
==
2
?
'
success
'
:
'
info
'
:
'
danger
'
}
size
=
"
small
"
>
{
str
}
<
/el-tag
>
)
}
},
// {
// label: "绩效反馈问题",
// width: 120,
// prop: "subColumns",
// formatter: (row) => {
// return pre + Number(cur.width);
// }, 50);
// return (
//
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
// {this.renderTable(row.feedbackQuestionList)}
//
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
//
<
/el-popover
>
// );
// },
// },
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
if
(
row
.
processStatus
==
0
)
{
return
(
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
else
{
return
(
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
// return
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
}
}
]
}
};
}
// { label: "创建用户", prop: "createUserId", formatter: this.formatter },
{
label
:
"
状态
"
,
prop
:
"
processStatus
"
,
formatter
:
(
row
)
=>
{
let
str
=
"
未开始
"
;
if
(
row
.
processStatus
==
1
)
{
str
=
"
进行中
"
;
}
else
if
(
row
.
processStatus
==
2
)
{
str
=
"
已结束
"
;
}
return
(
<
el
-
tag
type
=
{
row
.
processStatus
?
row
.
processStatus
==
1
?
"
success
"
:
"
info
"
:
"
danger
"
}
size
=
"
small
"
>
{
str
}
<
/el-tag
>
);
},
},
// {
// label: "绩效反馈问题",
// width: 120,
// prop: "subColumns",
// formatter: (row) => {
// return pre + Number(cur.width);
// }, 50);
// return (
//
<
el
-
popover
placement
=
"
right
"
width
=
{
widthsize
}
trigger
=
"
click
"
>
// {this.renderTable(row.feedbackQuestionList)}
//
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
//
<
/el-popover
>
// );
// },
// },
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
if
(
row
.
processStatus
==
0
)
{
return
(
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
else
{
return
(
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
// return
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
},
},
],
},
};
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/ .buttons {
margin-bottom: 10px;
margin-bottom: 10px;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/feedback/questionnaire/list.vue
View file @
db41784e
...
...
@@ -15,9 +15,8 @@
</div>
<div
style=
"margin: 10px 0;"
>
<el-tag
:type=
"feedbackData.processStatus ? feedbackData.processStatus = 1 ? 'success' : 'info' : 'danger'"
>
{{
feedbackData
.
processStatus
?
feedbackData
.
processStatus
==
1
?
'
进行中
'
:
'
已结束
'
:
'
未开始
'
}}
</el-tag>
:type=
"feedbackData.processStatus ? feedbackData.processStatus == 1 ? 'success' : 'info' : 'danger'"
>
{{
feedbackData
.
processStatus
?
feedbackData
.
processStatus
==
1
?
'
进行中
'
:
'
已结束
'
:
'
未开始
'
}}
</el-tag>
反馈时间:
{{
feedbackData
.
timeStart
}}
~
{{
feedbackData
.
timeEnd
}}
</div>
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
db41784e
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
v-if=
"from == 'job'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
:enumData=
"dict.group"
type=
"select"
placeholder=
"请选择分组"
/>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
v-if=
"from == 'job'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
:enumData=
"dict.groupId"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"from == 'group'"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"from == 'group'"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
:maxLength=
"10"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
v-if=
"from == 'job'"
/>
<Field
label=
"职位名称"
prop=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"from == 'job'"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
:maxLength=
"10"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
v-if=
"from == 'job'"
/>
<Field
label=
"职位名称"
prop=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"from == 'job'"
/>
<Field
label=
"类型"
disabled
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
</el-drawer>
<Field
label=
"类型"
disabled
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
JobDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
job
"
)
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
职位信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
toDate
:[
],
// 表单校验
rules
:
{
},
from
:
''
};
},
methods
:
{
/** 编辑 */
edit
(
from
,
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
from
=
from
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
JobDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
job
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
职位信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
// 表单校验
rules
:
{
groupId
:
[{
required
:
true
,
message
:
"
请选择分组
"
,
trigger
:
"
change
"
}],
},
from
:
""
,
};
},
this
.
title
=
from
===
'
group
'
?
"
修改分组信息
"
:
'
修改职位信息
'
;
},
/** 新增 */
add
(
row
)
{
console
.
log
(
row
,
'
添加
'
)
this
.
from
=
row
this
.
title
=
row
===
'
group
'
?
"
新增分组信息
"
:
'
新增职位信息
'
;
this
.
reset
()
this
.
urls
.
currUrl
=
"
job/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
职位信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
methods
:
{
/** 编辑 */
edit
(
from
,
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
from
=
from
;
// 固定新增类型
if
(
this
.
from
==
'
group
'
){
this
.
form
.
type
=
'
1
'
}
else
{
this
.
form
.
type
=
'
2
'
}
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
this
.
title
=
from
===
"
group
"
?
"
修改分组信息
"
:
"
修改职位信息
"
;
},
/** 新增 */
add
(
row
)
{
console
.
log
(
row
,
"
添加
"
);
this
.
from
=
row
;
this
.
title
=
row
===
"
group
"
?
"
新增分组信息
"
:
"
新增职位信息
"
;
this
.
reset
();
this
.
urls
.
currUrl
=
"
job/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
职位信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
// 固定新增类型
if
(
this
.
from
==
"
group
"
)
{
this
.
form
.
type
=
"
1
"
;
}
else
{
this
.
form
.
type
=
"
2
"
;
}
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
groupId
:
null
,
groupName
:
""
,
jobCode
:
""
,
jobName
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
groupId
:
""
,
groupName
:
""
,
jobCode
:
""
,
jobName
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/attend/appeal/components/BarCharts.vue
View file @
db41784e
...
...
@@ -70,13 +70,27 @@ export default {
color
:
"
#000
"
,
},
},
dataZoom
:
[
{
show
:
true
,
realtime
:
true
,
start
:
0
,
end
:
100
},
{
type
:
'
inside
'
,
realtime
:
true
,
start
:
0
,
end
:
100
}
],
tooltip
:
{},
xAxis
:
{
data
:
this
.
chartsData
.
map
(
i
=>
{
// console.log(i)
if
(
this
.
title
==
"
申诉次数部门排名TOP20
"
)
return
i
.
deptName
if
(
this
.
title
==
"
申诉次数个人排名TOP20
"
)
return
i
.
staffName
if
(
this
.
title
==
"
申诉次数规则排名TOP20
"
)
return
i
.
ruleName
if
(
this
.
title
==
"
申诉次数部门排名TOP20
"
)
return
i
.
deptName
if
(
this
.
title
==
"
申诉次数个人排名TOP20
"
)
return
i
.
staffName
if
(
this
.
title
==
"
申诉次数规则排名TOP20
"
)
return
i
.
ruleName
// return i.ruleName || i.deptName || i.staffName
})
// this.title == "申诉次数部门排名TOP20"
...
...
@@ -151,7 +165,7 @@ export default {
grid
:
{
left
:
"
5%
"
,
right
:
"
4%
"
,
bottom
:
"
2
%
"
,
// bottom: "1
%",
containLabel
:
true
,
},
// color:[ "#61a0a8",],
...
...
attendance-performance-manager-ui/admin/src/views/perform/attend/record/drawershow.vue
View file @
db41784e
...
...
@@ -122,7 +122,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -138,7 +138,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/complain/record/drawershow.vue
View file @
db41784e
...
...
@@ -175,7 +175,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -191,7 +191,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/effect/record/drawershow.vue
View file @
db41784e
...
...
@@ -150,7 +150,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -166,7 +166,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/gowork/record/drawershow.vue
View file @
db41784e
...
...
@@ -127,7 +127,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -143,7 +143,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/other/record/drawershow.vue
View file @
db41784e
...
...
@@ -87,7 +87,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -103,7 +103,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/review/record/drawershow.vue
View file @
db41784e
...
...
@@ -140,7 +140,7 @@
<el-col
:span=
"22"
>
<el-form-item
label=
"图片凭证:"
>
<div
v-if=
"form.view == '查看'"
>
<el-image
<
!--
<
el-image
v-if=
"form.filePaths"
style=
"width: 100px; height: 100px"
:src=
"
...
...
@@ -156,7 +156,8 @@
: [form.filePaths]
"
>
</el-image>
</el-image>
-->
<filepReview
v-if=
"form.filePaths"
:src=
"form.filePaths"
/>
<span
v-else
>
--
</span>
</div>
<ImageUpload
...
...
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
View file @
db41784e
...
...
@@ -121,7 +121,7 @@ export default {
{
label
:
"
增减类型
"
,
prop
:
"
subAddType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
分值
"
,
prop
:
"
score
"
},
{
label
:
"
分值
"
,
prop
:
"
score
"
,
formatter
:
this
.
formatter
},
{
label
:
"
负责人分值
"
,
prop
:
"
ownerScore
"
},
...
...
@@ -226,7 +226,9 @@ export default {
type
:
this
.
activeName
,
page
:
this
.
query
.
page
,
orderColList
:
this
.
typeArr
,
name
:
`%
${
this
.
searchValue
}
%`
,
andConditionList
:
[
{
content
:
`%
${
this
.
searchValue
}
%`
,
name
:
`%
${
this
.
searchValue
}
%`
},
],
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
tableData
=
res
.
data
;
...
...
attendance-performance-manager-ui/admin/src/views/staff/dialogshow.vue
View file @
db41784e
<
template
>
<!-- 弹出框表单 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
<Field
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
<Field
label=
"照片"
prop=
"photoPath"
v-model=
"form.photoPath"
type=
"textarea"
placeholder=
"请输入照片"
/>
<Field
label=
"联系电话"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"政治面貌 "
prop=
"politicalstatus"
v-model=
"form.politicalstatus"
type=
"select"
:enumData=
"dict.politicalstatus"
placeholder=
"请选择政治面貌 "
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门"
/>
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
<Field
label=
"职位ID"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请输入职位ID"
/>
<Field
label=
"职位名称"
prop=
"positionName"
v-model=
"form.positionName"
placeholder=
"请输入职位名称"
/>
<Field
label=
"员工类型"
prop=
"staffType"
v-model=
"form.staffType"
type=
"select"
:enumData=
"dict.staffType"
placeholder=
"请选择员工类型"
/>
<Field
label=
"员工状态"
prop=
"status"
v-model=
"form.status"
type=
"select"
:enumData=
"dict.status"
placeholder=
"请选择员工状态"
/>
<Field
label=
"入职登记表"
prop=
"registerPath"
v-model=
"form.registerPath"
type=
"textarea"
placeholder=
"请输入入职登记表"
/>
<Field
label=
"入职时间"
prop=
"entryDate"
v-model=
"form.entryDate"
type=
"date"
/>
<Field
label=
"转正时间"
prop=
"regularDate"
v-model=
"form.regularDate"
type=
"date"
/>
<Field
label=
"离职时间"
prop=
"leaveDate"
v-model=
"form.leaveDate"
type=
"date"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 弹出框表单 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
<Field
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
<Field
label=
"照片"
prop=
"photoPath"
v-model=
"form.photoPath"
type=
"textarea"
placeholder=
"请输入照片"
/>
<Field
label=
"联系电话"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"政治面貌 "
prop=
"politicalstatus"
v-model=
"form.politicalstatus"
type=
"select"
:enumData=
"dict.politicalstatus"
placeholder=
"请选择政治面貌 "
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门"
/>
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
<Field
label=
"职位ID"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请输入职位ID"
/>
<Field
label=
"职位名称"
prop=
"positionName"
v-model=
"form.positionName"
placeholder=
"请输入职位名称"
/>
<Field
label=
"员工类型"
prop=
"staffType"
v-model=
"form.staffType"
type=
"select"
:enumData=
"dict.staffType"
placeholder=
"请选择员工类型"
/>
<Field
label=
"员工状态"
prop=
"status"
v-model=
"form.status"
type=
"select"
:enumData=
"dict.status"
placeholder=
"请选择员工状态"
/>
<Field
label=
"入职登记表"
prop=
"registerPath"
v-model=
"form.registerPath"
type=
"textarea"
placeholder=
"请输入入职登记表"
/>
<Field
label=
"入职时间"
prop=
"entryDate"
v-model=
"form.entryDate"
type=
"date"
/>
<Field
label=
"转正时间"
prop=
"regularDate"
v-model=
"form.regularDate"
type=
"date"
/>
<Field
label=
"离职时间"
prop=
"leaveDate"
v-model=
"form.leaveDate"
type=
"date"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
员工基本信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:[
"
gender
"
,
"
politicalstatus
"
,
"
staffType
"
,
"
status
"
,
],
// 表单校验
rules
:
{
name
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
}
};
},
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
员工基本信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:
[
"
gender
"
,
"
politicalstatus
"
,
"
staffType
"
,
"
status
"
],
// 表单校验
rules
:
{
name
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改员工基本信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
staff/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增员工基本信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
员工基本信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改员工基本信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
staff/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增员工基本信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
员工基本信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
name
:
""
,
gender
:
1
,
birthday
:
null
,
photoPath
:
""
,
phoneNumber
:
""
,
idCard
:
""
,
workNum
:
""
,
politicalstatus
:
1
,
deptId
:
null
,
deptName
:
""
,
positionId
:
null
,
positionName
:
""
,
staffType
:
1
,
status
:
1
,
registerPath
:
""
,
entryDate
:
null
,
regularDate
:
null
,
leaveDate
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
name
:
""
,
gender
:
1
,
birthday
:
null
,
photoPath
:
""
,
phoneNumber
:
""
,
idCard
:
""
,
workNum
:
""
,
politicalstatus
:
1
,
deptId
:
null
,
deptName
:
""
,
positionId
:
null
,
positionName
:
""
,
staffType
:
1
,
status
:
1
,
registerPath
:
""
,
entryDate
:
null
,
regularDate
:
null
,
leaveDate
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/staff/list.vue
View file @
db41784e
...
...
@@ -52,6 +52,7 @@
:expand-on-click-node=
"false"
:render-content=
"renderContent"
@
node-click=
"handleNodeClick"
:default-expand-all=
"true"
>
</el-tree>
</el-scrollbar>
...
...
@@ -151,13 +152,13 @@
<!-- 花名册记录查看 -->
<el-drawer
title=
"历史花名册"
:visible.sync=
"drawerhistory"
direction=
"rtl"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 1
0
"
:key=
"item"
>
<div
class=
"list mt10"
v-for=
"item in 1"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
花名册记录
</div>
<
el-button
type=
"text"
>
查看
</el-button
>
<
!--
<el-button
type=
"text"
>
查看
</el-button>
--
>
</div>
<div
class=
"times"
>
导出时间:202
0-08-13
导出时间:202
3-07-19
</div>
</div>
</div>
...
...
@@ -182,7 +183,12 @@
</div>
</el-dialog>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
:bumentree=
"areaData"
:currentNode=
"currentNode"
/>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
:bumentree=
"areaData"
:currentNode=
"currentNode"
/>
</div>
</
template
>
...
...
@@ -248,7 +254,7 @@ export default {
},
handleNodeClick
(
node
)
{
console
.
log
(
node
,
123123
);
console
.
log
(
node
,
123123
);
this
.
currentNode
=
node
;
this
.
query
=
{
deptId
:
node
.
id
};
this
.
getData
();
...
...
@@ -327,13 +333,13 @@ export default {
name
:
"
name
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
fals
e
,
fuzzy
:
tru
e
,
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
fals
e
,
fuzzy
:
tru
e
,
},
],
columns
:
[
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
View file @
db41784e
...
...
@@ -80,7 +80,7 @@ export default {
name
:
'
目标线
'
,
yAxis
:
this
.
markLine
,
label
:
{
formatter
:
'
{b}:
'
+
this
.
legendName
+
'
不高于20.0%,
'
,
formatter
:
'
{b}:
'
+
this
.
legendName
+
'
不高于20.0%,
'
,
position
:
'
insideStartTop
'
},
lineStyle
:
{
...
...
@@ -188,6 +188,10 @@ export default {
]
})
}
myChart
.
on
(
'
click
'
,
(
params
)
=>
{
this
.
$emit
(
"
click
"
,
params
)
})
},
},
};
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
View file @
db41784e
...
...
@@ -9,17 +9,8 @@
<el-radio-button
:label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<div
class=
"search_box"
>
<el-select
v-model=
"boardQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-select
v-model=
"boardQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-button
type=
"primary"
>
搜索
</el-button>
...
...
@@ -28,60 +19,30 @@
<div
class=
"mid"
>
<div
class=
"mid_top"
>
<div
class=
"jixiaozongfen"
>
<bar-charts
:title=
"'绩效总分排名'"
:id=
"'jixiaozongfen'"
:legendName=
"'绩效总分'"
:parameter=
"depStatObj.totalScore"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'绩效总分排名'"
:id=
"'jixiaozongfen'"
:legendName=
"'绩效总分'"
:parameter=
"depStatObj.totalScore"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"jixiaopingjunfen"
>
<line-charts
:title=
"'绩效平均分排名'"
:id=
"'jixiaopingjunfen'"
:parameter=
"depStatObj.averageScore"
:legendName=
"'绩效平均分'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<line-charts
:title=
"'绩效平均分排名'"
:id=
"'jixiaopingjunfen'"
:parameter=
"depStatObj.averageScore"
:legendName=
"'绩效平均分'"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
</div>
<div
class=
"mid_down"
>
<div
class=
"top_10 box"
>
<bar-charts
:title=
"'部门加分排名TOP10'"
:id=
"'top_10'"
:parameter=
"depStatObj.totalAddScore"
:legendName=
"'部门加分分值'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'部门加分排名TOP10'"
:id=
"'top_10'"
:parameter=
"depStatObj.totalAddScore"
:legendName=
"'部门加分分值'"
@
click=
"rowClick"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"jiafen box"
>
<pie-charts
:title=
"'部门加分整体分布'"
:id=
"'jiafen'"
:parameter=
"depStatObj.pieAddScore"
:legendName=
"'部门加分'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<pie-charts
:title=
"'部门加分整体分布'"
:id=
"'jiafen'"
:parameter=
"depStatObj.pieAddScore"
:legendName=
"'部门加分'"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"koufen_10 box"
>
<bar-charts
:title=
"'部门扣分排名TOP10'"
:id=
"'koufen_10'"
:parameter=
"depStatObj.totalSubScore"
:legendName=
"'部门分值'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'部门扣分排名TOP10'"
:id=
"'koufen_10'"
:parameter=
"depStatObj.totalSubScore"
:legendName=
"'部门分值'"
@
click=
"rowClickSub"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"koufen box"
>
<pie-charts
:parameter=
"depStatObj.pieSubScore"
:title=
"'部门扣分整体分布'"
:id=
"'koufen'"
:legendName=
"'部门扣分'"
:styleObj=
"
{ onAssessmentScope2width: '100%', height: '300px' }"
/>
<pie-charts
:parameter=
"depStatObj.pieSubScore"
:title=
"'部门扣分整体分布'"
:id=
"'koufen'"
:legendName=
"'部门扣分'"
:styleObj=
"
{ onAssessmentScope2width: '100%', height: '300px' }" />
</div>
</div>
</div>
...
...
@@ -96,41 +57,20 @@
</el-radio-group>
<div
class=
"search_box"
>
<el-select
v-model=
"value"
@
change=
"deptList"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-select
@
change=
"deptList"
v-model=
"StatQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-select
@
change=
"deptList"
v-model=
"StatQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-button
type=
"primary"
@
click=
"deptList"
>
搜索
</el-button>
</div>
</div>
<div
class=
"bar_content"
>
<bar-charts
:title=
"`$
{type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`"
:id="'bar_content'"
:legendName="alignmentName"
:option="{title:{left:'center',textStyle:{fontSize:24}}}"
:markLine="0.2"
:parameter="depStatObj.alignment"
:styleObj="{ width: '1800px', height: '650px' }"
/>
<bar-charts
:title=
"`$
{type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`" :id="'bar_content'"
:legendName="alignmentName" :option="{ title: { left: 'center', textStyle: { fontSize: 24 } } }" :markLine="0.2"
:parameter="depStatObj.alignment" :styleObj="{ width: '1800px', height: '650px' }" />
</div>
</div>
</el-tab-pane>
...
...
@@ -142,48 +82,34 @@
<el-radio-button
:label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<el-button
type=
"primary"
style=
"margin: 0 20px;"
@
click=
"addGoal"
>
+ 创建目标
</el-button
>
+ 创建目标
</el-button>
</div>
<div
class=
"mid_content"
style=
"height: auto;"
>
<div
class=
"goal_box"
v-for=
"(val, i) in dataList"
:key=
"i"
>
<div
class=
"goal_title"
>
<img
src=
"../../../../assets/images/u17641.svg"
alt=
""
/>
<span>
{{
dictString
(
'
assessmentType
'
,
val
.
assessmentType
)
}}{{
dictString
(
'
compareScope
'
,
val
.
compareScope
)
}}{{
val
.
ratio
}}
%
{{
dictString
(
'
assessmentType
'
,
val
.
assessmentType
)
}}{{
dictString
(
'
compareScope
'
,
val
.
compareScope
)
}}{{
val
.
ratio
}}
%
</span>
</div>
<p
class=
"goal_txt"
>
<span>
{{
type2
==
1
?
"
目标部门:
"
:
"
目标个人:
"
}}
</span
><span>
{{
<span>
{{
type2
==
1
?
"
目标部门:
"
:
"
目标个人:
"
}}
</span><span>
{{
type2
==
1
?
val
.
deptPerpose
:
val
.
staffPerpose
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
周期:
</span><span>
{{
val
.
year
}}
{{
dictString
(
'
periodType
'
,
val
.
periodType
)
}}
</span>
<span>
周期:
</span><span>
{{
val
.
year
}}
{{
dictString
(
'
periodType
'
,
val
.
periodType
)
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
负责人:
</span><span>
{{
val
.
leaders
}}
</span>
<span>
负责人:
</span><span>
{{
val
.
leaders
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
最近更新:
</span><span>
{{
val
.
updateTime
}}
</span>
<span>
最近更新:
</span><span>
{{
val
.
updateTime
}}
</span>
</p>
<p
class=
"goal_txt"
><span>
更新人员:
</span><span>
{{
dictString
(
'
updateUserId
'
,
val
.
updateUserId
)
}}
</span></p>
<p
class=
"goal_txt"
><span>
更新人员:
</span><span>
{{
dictString
(
'
updateUserId
'
,
val
.
updateUserId
)
}}
</span></p>
<div
class=
"button_box"
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button
>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button>
</div>
</div>
</div>
...
...
@@ -217,10 +143,10 @@ export default {
},
methods
:
{
// 个人绩效分数统计
staffStatList
(){
staffStatList
()
{
this
.
$post
(
"
/staff/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -234,10 +160,10 @@ export default {
}
});
// 加分top10
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
}
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
}
this
.
$post
(
"
/staff/perform/stat/list
"
,
top10
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -251,10 +177,10 @@ export default {
}
});
// 减分
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/staff/perform/stat/list
"
,
top10Sub
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -269,10 +195,10 @@ export default {
});
},
// 部门绩效分数统计
statList
(){
this
.
$post
(
"
/dept/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
statList
()
{
this
.
$post
(
"
/dept/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -292,10 +218,10 @@ export default {
}
});
// 加分top10
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalAddScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalAddScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/dept/perform/stat/list
"
,
top10
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -306,14 +232,14 @@ export default {
});
this
.
depStatObj
.
totalAddScore
.
x
=
x
this
.
depStatObj
.
totalAddScore
.
y
=
y
this
.
depStatObj
.
totalAddScore
.
row
=
row
}
});
// 减分
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/dept/perform/stat/list
"
,
top10Sub
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -328,10 +254,10 @@ export default {
});
},
// 部门目标对齐
deptList
(){
deptList
()
{
this
.
$post
(
"
/perform/perpose/dept/stat/list
"
,
this
.
StatQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
const
x
=
[]
const
y
=
[]
...
...
@@ -345,10 +271,10 @@ export default {
});
},
// 个人对齐方式
staffList
(){
staffList
()
{
this
.
$post
(
"
/perform/perpose/staff/stat/list
"
,
this
.
StatQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
const
x
=
[]
const
y
=
[]
...
...
@@ -379,9 +305,9 @@ export default {
},
// 目标管理
getData
()
{
this
.
$post
(
"
/perform/perpose/list
"
,
this
.
query
).
then
((
res
)
=>
{
console
.
log
(
res
,
"
@@@@@@@@@@@@
"
);
const
{
code
,
data
,
dict
}
=
res
this
.
$post
(
"
/perform/perpose/list
"
,
this
.
query
).
then
((
res
)
=>
{
console
.
log
(
res
,
"
@@@@@@@@@@@@
"
);
const
{
code
,
data
,
dict
}
=
res
this
.
dict
=
dict
||
{}
if
(
code
==
1
)
{
this
.
dataList
=
data
.
data
;
...
...
@@ -391,39 +317,64 @@ export default {
});
},
// 字典转换
dictString
(
key
,
id
)
{
const
keyName
=
this
.
dict
[
key
]
return
keyName
?
keyName
[
id
]:
""
dictString
(
key
,
id
)
{
const
keyName
=
this
.
dict
[
key
]
return
keyName
?
keyName
[
id
]
:
""
},
// TAB个人/法人
onAssessmentScope
(
v
){
if
(
v
==
1
)
{
onAssessmentScope
(
v
)
{
if
(
v
==
1
)
{
this
.
statList
()
}
else
{
}
else
{
this
.
staffStatList
()
}
},
// 目标看齐
onAssessmentScope1
(
v
){
if
(
v
==
1
)
{
onAssessmentScope1
(
v
)
{
if
(
v
==
1
)
{
this
.
deptList
()
}
else
{
}
else
{
this
.
staffList
()
}
},
onAssessmentScope2
(
v
){
if
(
v
==
1
)
{
onAssessmentScope2
(
v
)
{
if
(
v
==
1
)
{
this
.
query
.
assessmentScope
=
1
}
else
{
}
else
{
this
.
query
.
assessmentScope
=
2
}
this
.
getData
()
},
rowClick
(
row
)
{
const
{
dataIndex
}
=
row
const
{
attendScoreAdd
,
reviewScoreAdd
,
goworkScoreAdd
,
effectScoreAdd
,
otherScoreAdd
,
complainScoreAdd
}
=
this
.
depStatObj
.
totalAddScore
.
row
[
dataIndex
]
this
.
depStatObj
.
pieAddScore
=
[
{
value
:
attendScoreAdd
,
name
:
'
考勤绩效
'
},
{
value
:
reviewScoreAdd
,
name
:
'
评价绩效
'
},
{
value
:
goworkScoreAdd
,
name
:
'
办件绩效
'
},
{
value
:
effectScoreAdd
,
name
:
'
效能绩效
'
},
{
value
:
complainScoreAdd
,
name
:
'
投诉绩效
'
},
{
value
:
otherScoreAdd
,
name
:
'
其它绩效
'
},
]
},
// 减分top10
rowClickSub
(
row
)
{
const
{
dataIndex
}
=
row
const
{
attendScoreSub
,
reviewScoreSub
,
goworkScoreSub
,
effectScoreSub
,
complainScoreSub
,
otherScoreSub
}
=
this
.
depStatObj
.
totalAddScore
.
row
[
dataIndex
]
this
.
depStatObj
.
pieSubScore
=
[
{
value
:
attendScoreSub
,
name
:
'
考勤绩效
'
},
{
value
:
reviewScoreSub
,
name
:
'
评价绩效
'
},
{
value
:
goworkScoreSub
,
name
:
'
办件绩效
'
},
{
value
:
effectScoreSub
,
name
:
'
效能绩效
'
},
{
value
:
complainScoreSub
,
name
:
'
投诉绩效
'
},
{
value
:
otherScoreSub
,
name
:
'
其它绩效
'
},
]
}
},
computed
:
{
alignmentName
:
function
()
{
const
obj
=
this
.
options
.
find
(
v
=>
v
.
value
==
this
.
value
)
alignmentName
:
function
()
{
const
obj
=
this
.
options
.
find
(
v
=>
v
.
value
==
this
.
value
)
return
obj
.
label
}
},
...
...
@@ -528,63 +479,63 @@ export default {
],
value
:
"
lateRate
"
,
//默认显示迟到类型
dataList
:
[],
depStatObj
:{
totalScore
:{
x
:[],
y
:[]
depStatObj
:
{
totalScore
:
{
x
:
[],
y
:
[]
},
//绩效总分排名
averageScore
:{
x
:[],
y
:[]
averageScore
:
{
x
:
[],
y
:
[]
},
//绩效平均排名
totalAddScore
:{
x
:[],
y
:[]
totalAddScore
:
{
x
:
[],
y
:
[]
},
//加分
totalSubScore
:{
x
:[],
y
:[]
totalSubScore
:
{
x
:
[],
y
:
[]
},
//减分
alignment
:{
x
:[],
y
:[]
alignment
:
{
x
:
[],
y
:
[]
},
//目标对齐
pieAddScore
:[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
pieAddScore
:
[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
],
//部门加分分布
pieSubScore
:[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
pieSubScore
:
[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
]
//部门减分分布
},
//按部门
month
:
""
,
//月份
boardQuery
:{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
month
:
""
,
//月份
boardQuery
:
{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
},
//看板查询条件
query
:{
page
:
1
,
size
:
-
1
,
assessmentScope
:
1
//考核范围(1.部门,2.个人)
query
:
{
page
:
1
,
size
:
-
1
,
assessmentScope
:
1
//考核范围(1.部门,2.个人)
},
//目标管理查询条件
StatQuery
:{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
StatQuery
:
{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
},
//对齐方式入参
dict
:{}
//字典
dict
:
{}
//字典
};
},
};
...
...
@@ -594,55 +545,66 @@ export default {
width: 100%;
height: 100%;
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 14px;
text-align: center;
}
.content {
width: 100%;
height: 100%;
.search_top {
width: 100%;
height: 1000%;
display: flex;
justify-content: space-between;
}
/deep/.el-radio-button {
width: 150px;
text-align: center;
border: 1px solid #eee;
}
/deep/.el-radio-button__inner {
width: 150px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
/deep/.el-radio-button__orig-radio:checked+.el-radio-button__inner {
width: 150px;
border: none;
background: #1890ff;
color: #fff;
border: 1px solid #eee;
}
.top {
width: 100%;
height: 60px;
}
.mid {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.mid_top {
width: 100%;
height: 300px;
display: flex;
justify-content: space-between;
.jixiaozongfen,
.jixiaopingjunfen {
width: 48%;
height: 100%;
}
}
.mid_down {
width: 100%;
height: 380px;
...
...
@@ -656,16 +618,19 @@ export default {
}
}
}
.mid_content,
.bar_content {
width: 100%;
height: 700px;
overflow: hidden;
}
.mid_content {
overflow-y: auto;
display: flex;
flex-wrap: wrap;
.goal_box {
width: 405px;
height: 238px;
...
...
@@ -678,14 +643,17 @@ export default {
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 10px 20px 20px 10px;
padding: 20px;
.goal_title {
width: 100%;
display: flex;
align-items: center;
img {
margin-right: 10px;
}
}
.goal_txt {
font-family: "微软雅黑", sans-serif;
font-weight: 400;
...
...
@@ -695,6 +663,7 @@ export default {
width: 100%;
margin: 10px 0;
}
.button_box {
width: 100%;
display: flex;
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
View file @
db41784e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
:config=
"tableConfig"
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
...
...
@@ -26,7 +19,7 @@ export default {
dialogShow
,
},
mixins
:
[
table
],
created
()
{},
created
()
{
},
methods
:
{
/** 导出Excel */
doExport
()
{
...
...
@@ -92,7 +85,7 @@ export default {
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
...
...
@@ -103,15 +96,16 @@ export default {
},
},
{
label
:
"
考勤绩效
"
,
prop
:
"
attendScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤绩效
指标分数
"
,
prop
:
"
attendScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效
"
,
prop
:
"
assessScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效指标分数
"
,
prop
:
"
reviewScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
投诉绩效指标分数
"
,
prop
:
"
reviewScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效
"
,
prop
:
"
workScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效
分数
"
,
prop
:
"
workScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效
"
,
prop
:
"
effectScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效
分数
"
,
prop
:
"
effectScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效
"
,
prop
:
"
otherScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效
分数
"
,
prop
:
"
otherScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
累计异常分数
"
,
...
...
attendance-performance-manager-ui/admin/yarn.lock
View file @
db41784e
...
...
@@ -22,7 +22,7 @@
resolved "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.9.tgz?cache=0&sync_timestamp=1627804534988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.14.9.tgz"
integrity sha1-rHmWzqr8+PQQEZyK8NHbTPkUohA=
"@babel/core@^7.
0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-
0", "@babel/core@^7.9.6":
"@babel/core@^7.
11.
0", "@babel/core@^7.9.6":
version "7.14.8"
resolved "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.8.tgz"
integrity sha1-IM33yEtdhtg/rIcQqLxgWnuj8BA=
...
...
@@ -1057,7 +1057,7 @@
resolved "https://registry.nlark.com/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz"
integrity sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=
"@hapi/hoek@
^8.3.0", "@hapi/hoek@8.x.x
":
"@hapi/hoek@
8.x.x", "@hapi/hoek@^8.3.0
":
version "8.5.1"
resolved "https://registry.nlark.com/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz"
integrity sha1-/elgZMpEbeyMVajC8TCVewcMbgY=
...
...
@@ -1408,7 +1408,7 @@
resolved "https://registry.nlark.com/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.13.tgz"
integrity sha1-mGRti8HmnPbGpsui/tPqzgNWw2A=
"@vue/cli-service@
^3.0.0 || ^4.0.0-0", "@vue/cli-service@
4.4.6":
"@vue/cli-service@4.4.6":
version "4.4.6"
resolved "https://registry.nlark.com/@vue/cli-service/download/@vue/cli-service-4.4.6.tgz"
integrity sha1-g8oFjQgesUW7wa4v6AadLZ3ffhg=
...
...
@@ -1693,16 +1693,16 @@ acorn-walk@^7.1.1:
resolved "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1624951909442&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz"
integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^7.1.1, acorn@^7.2.0, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1624526873403&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz"
integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=
acorn@^6.4.1:
version "6.4.2"
resolved "https://registry.nlark.com/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1624526873403&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-6.4.2.tgz"
integrity sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=
acorn@^7.1.1, acorn@^7.2.0, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1624526873403&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz"
integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=
address@^1.1.2:
version "1.1.2"
resolved "https://registry.nlark.com/address/download/address-1.1.2.tgz"
...
...
@@ -1739,7 +1739,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
resolved "https://registry.nlark.com/ajv-keywords/download/ajv-keywords-3.5.2.tgz"
integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0=
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4
, ajv@^6.9.1, ajv@>=5.0.0
:
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz"
integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=
...
...
@@ -1801,21 +1801,7 @@ ansi-styles@^2.2.1:
resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995588464&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz"
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
ansi-styles@^3.1.0:
version "3.2.1"
resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618995588464&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz"
integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
dependencies:
color-convert "^1.9.0"
ansi-styles@^3.2.0:
version "3.2.1"
resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618995588464&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz"
integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
dependencies:
color-convert "^1.9.0"
ansi-styles@^3.2.1:
ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618995588464&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz"
integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
...
...
@@ -1882,16 +1868,16 @@ arr-union@^3.1.0:
resolved "https://registry.nlark.com/arr-union/download/arr-union-3.1.0.tgz"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
array-flatten@^2.1.0:
version "2.1.2"
resolved "https://registry.nlark.com/array-flatten/download/array-flatten-2.1.2.tgz"
integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/array-flatten/download/array-flatten-1.1.1.tgz"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
array-flatten@^2.1.0:
version "2.1.2"
resolved "https://registry.nlark.com/array-flatten/download/array-flatten-2.1.2.tgz"
integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
array-union@^1.0.1, array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.nlark.com/array-union/download/array-union-1.0.2.tgz"
...
...
@@ -1926,7 +1912,7 @@ asn1@~0.2.3:
dependencies:
safer-buffer "~2.1.0"
assert-plus@
^1.0.0, assert-plus@
1.0.0:
assert-plus@
1.0.0, assert-plus@^
1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/assert-plus/download/assert-plus-1.0.0.tgz"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
...
...
@@ -2090,6 +2076,11 @@ balanced-match@^1.0.0:
resolved "https://registry.nlark.com/balanced-match/download/balanced-match-1.0.2.tgz"
integrity sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz"
integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
base@^0.11.1:
version "0.11.2"
resolved "https://registry.nlark.com/base/download/base-0.11.2.tgz"
...
...
@@ -2103,11 +2094,6 @@ base@^0.11.1:
mixin-deep "^1.2.0"
pascalcase "^0.1.1"
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz"
integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
batch@0.6.1:
version "0.6.1"
resolved "https://registry.nlark.com/batch/download/batch-0.6.1.tgz"
...
...
@@ -2155,6 +2141,13 @@ binary-extensions@^2.0.0:
resolved "https://registry.nlark.com/binary-extensions/download/binary-extensions-2.2.0.tgz"
integrity sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=
bindings@^1.5.0:
version "1.5.0"
resolved "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
dependencies:
file-uri-to-path "1.0.0"
blob.js@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/blob.js/-/blob.js-1.0.1.tgz"
...
...
@@ -2170,12 +2163,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
resolved "https://registry.nlark.com/bn.js/download/bn.js-4.12.0.tgz"
integrity sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=
bn.js@^5.0.0:
version "5.2.0"
resolved "https://registry.nlark.com/bn.js/download/bn.js-5.2.0.tgz"
integrity sha1-NYhgZ0OWxpl3canQUfzBtX1K4AI=
bn.js@^5.1.1:
bn.js@^5.0.0, bn.js@^5.1.1:
version "5.2.0"
resolved "https://registry.nlark.com/bn.js/download/bn.js-5.2.0.tgz"
integrity sha1-NYhgZ0OWxpl3canQUfzBtX1K4AI=
...
...
@@ -2237,14 +2225,7 @@ braces@^2.2.2, braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
braces@^3.0.1:
version "3.0.2"
resolved "https://registry.nlark.com/braces/download/braces-3.0.2.tgz"
integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc=
dependencies:
fill-range "^7.0.1"
braces@~3.0.2:
braces@^3.0.1, braces@~3.0.2:
version "3.0.2"
resolved "https://registry.nlark.com/braces/download/braces-3.0.2.tgz"
integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc=
...
...
@@ -2563,6 +2544,23 @@ cfb@^1.1.4:
adler-32 "~1.3.0"
crc-32 "~1.2.0"
chalk@2.3.0:
version "2.3.0"
resolved "https://registry.nlark.com/chalk/download/chalk-2.3.0.tgz?cache=0&sync_timestamp=1627646614989&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.3.0.tgz"
integrity sha1-tepI78nBeT3MybR2fJORTT8tUro=
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chalk@4.1.0:
version "4.1.0"
resolved "https://registry.nlark.com/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz"
integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz"
...
...
@@ -2574,16 +2572,7 @@ chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
chalk@^2.0.0:
version "2.4.2"
resolved "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^2.0.1, chalk@^2.4.2:
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
...
...
@@ -2592,33 +2581,7 @@ chalk@^2.0.1, chalk@^2.4.2:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^2.3.0:
version "2.4.2"
resolved "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz"
integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chalk@^4.0.0:
version "4.1.2"
resolved "https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz"
integrity sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.1.0:
chalk@^4.0.0, chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz"
integrity sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=
...
...
@@ -2626,23 +2589,6 @@ chalk@^4.1.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@2.3.0:
version "2.3.0"
resolved "https://registry.nlark.com/chalk/download/chalk-2.3.0.tgz?cache=0&sync_timestamp=1627646614989&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.3.0.tgz"
integrity sha1-tepI78nBeT3MybR2fJORTT8tUro=
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chalk@4.1.0:
version "4.1.0"
resolved "https://registry.nlark.com/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1627646734234&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz"
integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.nlark.com/chardet/download/chardet-0.7.0.tgz"
...
...
@@ -2653,6 +2599,21 @@ check-types@^8.0.3:
resolved "https://registry.nlark.com/check-types/download/check-types-8.0.3.tgz"
integrity sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=
"chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.1:
version "3.5.2"
resolved "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763736136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz"
integrity sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.nlark.com/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1623763736136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz"
...
...
@@ -2672,36 +2633,6 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
chokidar@^3.4.1:
version "3.5.2"
resolved "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763736136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz"
integrity sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
"chokidar@>=2.0.0 <4.0.0":
version "3.5.2"
resolved "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763736136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz"
integrity sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
chownr@^1.1.1, chownr@^1.1.2:
version "1.1.4"
resolved "https://registry.nlark.com/chownr/download/chownr-1.1.4.tgz"
...
...
@@ -2895,16 +2826,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.nlark.com/color-name/download/color-name-1.1.3.tgz"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
color-string@^1.6.0:
version "1.6.0"
resolved "https://registry.nlark.com/color-string/download/color-string-1.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcolor-string%2Fdownload%2Fcolor-string-1.6.0.tgz"
...
...
@@ -2933,6 +2864,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
commander@2.17.x, commander@~2.17.1:
version "2.17.1"
resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
commander@^2.18.0, commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1627359190297&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz"
...
...
@@ -2948,21 +2884,11 @@ commander@~2.14.1:
resolved "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz"
integrity sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==
commander@~2.17.1:
version "2.17.1"
resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz"
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
commander@~2.19.0:
version "2.19.0"
resolved "https://registry.nlark.com/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1627359190297&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz"
integrity sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=
commander@2.17.x:
version "2.17.1"
resolved "https://registry.nlark.com/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1627359190297&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz"
integrity sha1-vXerfebelCBc6sxy8XFtKfIKd78=
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.nlark.com/commondir/download/commondir-1.0.1.tgz"
...
...
@@ -3132,20 +3058,22 @@ core-js-pure@^3.30.2:
resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz"
integrity sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw==
core-js@3.8.1:
version "3.8.1"
resolved "https://registry.nlark.com/core-js/download/core-js-3.8.1.tgz"
integrity sha1-9RUjZorIopTRKFw7nbRAJf2mbUc=
core-js@^2.4.0:
version "2.6.12"
resolved "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz"
integrity sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=
core-js@^3.6.5:
version "3.16.0"
core-js@3.8.1:
version "3.8.1"
resolved "https://registry.nlark.com/core-js/download/core-js-3.8.1.tgz"
integrity sha1-9RUjZorIopTRKFw7nbRAJf2mbUc=
version "3.31.1"
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.31.1.tgz#f2b0eea9be9da0def2c5fece71064a7e5d687653"
integrity sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==
core-util-is@
~1.0.0, core-util-is@1.0.2
:
core-util-is@
1.0.2, core-util-is@~1.0.0
:
version "1.0.2"
resolved "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
...
...
@@ -3253,7 +3181,7 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
css-color-names@
^0.0.4, css-color-names@
0.0.4:
css-color-names@
0.0.4, css-color-names@^
0.0.4:
version "0.0.4"
resolved "https://registry.nlark.com/css-color-names/download/css-color-names-0.0.4.tgz"
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
...
...
@@ -3266,7 +3194,7 @@ css-declaration-sorter@^4.0.1:
postcss "^7.0.1"
timsort "^0.3.0"
css-loader@
*, css-loader@
^3.5.3:
css-loader@^3.5.3:
version "3.6.0"
resolved "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1626731974484&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz"
integrity sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=
...
...
@@ -3311,14 +3239,6 @@ css-select@^4.1.3:
domutils "^2.6.0"
nth-check "^2.0.0"
css-tree@^1.1.2:
version "1.1.3"
resolved "https://registry.nlark.com/css-tree/download/css-tree-1.1.3.tgz"
integrity sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
resolved "https://registry.nlark.com/css-tree/download/css-tree-1.0.0-alpha.37.tgz"
...
...
@@ -3327,6 +3247,14 @@ css-tree@1.0.0-alpha.37:
mdn-data "2.0.4"
source-map "^0.6.1"
css-tree@^1.1.2:
version "1.1.3"
resolved "https://registry.nlark.com/css-tree/download/css-tree-1.1.3.tgz"
integrity sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
css-what@^3.2.1:
version "3.4.2"
resolved "https://registry.nlark.com/css-what/download/css-what-3.4.2.tgz?cache=0&sync_timestamp=1622227191786&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-what%2Fdownload%2Fcss-what-3.4.2.tgz"
...
...
@@ -3434,28 +3362,21 @@ de-indent@^1.0.2:
resolved "https://registry.nlark.com/de-indent/download/de-indent-1.0.2.tgz"
integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
debug@
^2.2.0
:
debug@
2.6.9, debug@^2.2.0, debug@^2.3.3
:
version "2.6.9"
resolved "https://registry.nlark.com/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz"
integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=
dependencies:
ms "2.0.0"
debug@
^2.3.3
:
version "
2.6.9
"
resolved "https://registry.nlark.com/debug/download/debug-
2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-2.6.9
.tgz"
integrity sha1-
XRKFFd8TT/Mn6QpMk/Tgd6U2NB8
=
debug@
=3.1.0
:
version "
3.1.0
"
resolved "https://registry.nlark.com/debug/download/debug-
3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.1.0
.tgz"
integrity sha1-
W7WgZyYotkFJVmuhaBnmFRjGcmE
=
dependencies:
ms "2.0.0"
debug@^3.1.1:
version "3.2.7"
resolved "https://registry.nlark.com/debug/download/debug-3.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz"
integrity sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=
dependencies:
ms "^2.1.1"
debug@^3.2.6:
debug@^3.1.1, debug@^3.2.6:
version "3.2.7"
resolved "https://registry.nlark.com/debug/download/debug-3.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz"
integrity sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=
...
...
@@ -3469,20 +3390,6 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
dependencies:
ms "2.1.2"
debug@=3.1.0:
version "3.1.0"
resolved "https://registry.nlark.com/debug/download/debug-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz"
integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=
dependencies:
ms "2.0.0"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.nlark.com/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz"
integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=
dependencies:
ms "2.0.0"
decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.nlark.com/decamelize/download/decamelize-1.2.0.tgz"
...
...
@@ -3515,21 +3422,16 @@ deep-is@^0.1.3:
resolved "https://registry.nlark.com/deep-is/download/deep-is-0.1.3.tgz"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
deepmerge@^1.2.0:
version "1.5.2"
resolved "https://registry.nlark.com/deepmerge/download/deepmerge-1.5.2.tgz"
integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M=
deepmerge@^1.5.2:
version "1.5.2"
resolved "https://registry.nlark.com/deepmerge/download/deepmerge-1.5.2.tgz"
integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M=
deepmerge@1.3.2:
version "1.3.2"
resolved "https://registry.nlark.com/deepmerge/download/deepmerge-1.3.2.tgz"
integrity sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=
deepmerge@^1.2.0, deepmerge@^1.5.2:
version "1.5.2"
resolved "https://registry.nlark.com/deepmerge/download/deepmerge-1.5.2.tgz"
integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M=
default-gateway@^4.2.0:
version "4.2.0"
resolved "https://registry.nlark.com/default-gateway/download/default-gateway-4.2.0.tgz"
...
...
@@ -3682,6 +3584,14 @@ dom-converter@^0.2.0:
dependencies:
utila "~0.4"
dom-serializer@0:
version "0.2.2"
resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz"
integrity sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=
dependencies:
domelementtype "^2.0.1"
entities "^2.0.0"
dom-serializer@^1.0.1:
version "1.3.2"
resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz"
...
...
@@ -3691,20 +3601,12 @@ dom-serializer@^1.0.1:
domhandler "^4.2.0"
entities "^2.0.0"
dom-serializer@0:
version "0.2.2"
resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz"
integrity sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=
dependencies:
domelementtype "^2.0.1"
entities "^2.0.0"
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.nlark.com/domain-browser/download/domain-browser-1.2.0.tgz"
integrity sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=
domelementtype@
^1.3.1, domelementtype@
1:
domelementtype@
1, domelementtype@^1.3.
1:
version "1.3.1"
resolved "https://registry.nlark.com/domelementtype/download/domelementtype-1.3.1.tgz"
integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=
...
...
@@ -3741,16 +3643,7 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
domutils@^2.5.2:
version "2.7.0"
resolved "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz"
integrity sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=
dependencies:
dom-serializer "^1.0.1"
domelementtype "^2.2.0"
domhandler "^4.2.0"
domutils@^2.6.0:
domutils@^2.5.2, domutils@^2.6.0:
version "2.7.0"
resolved "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz"
integrity sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=
...
...
@@ -3824,7 +3717,7 @@ echarts-wordcloud@^1.1.3:
resolved "https://registry.nlark.com/echarts-wordcloud/download/echarts-wordcloud-1.1.3.tgz"
integrity sha1-B7FAyLp2sZwxe0PDEPPV3Jkon/I=
echarts@^4.
8.0, echarts@^4.9.0, echarts@>3.0
.0:
echarts@^4.
9
.0:
version "4.9.0"
resolved "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz"
integrity sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==
...
...
@@ -3922,7 +3815,7 @@ enhanced-resolve@^4.5.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
enquirer@^2.3.5, enquirer@^2.3.6
, "enquirer@>= 2.3.0 < 3"
:
enquirer@^2.3.5, enquirer@^2.3.6:
version "2.3.6"
resolved "https://registry.nlark.com/enquirer/download/enquirer-2.3.6.tgz"
integrity sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=
...
...
@@ -4002,7 +3895,7 @@ escape-html@~1.0.3:
resolved "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@
^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@
1.0.5:
escape-string-regexp@
1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^
1.0.5:
version "1.0.5"
resolved "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
...
...
@@ -4061,7 +3954,7 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.nlark.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz"
integrity sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=
"eslint@^6.2.0 || ^7.0.0", "eslint@>= 1.6.0", "eslint@>= 4.12.1", "eslint@>=1.6.0 <7.0.0", eslint@>=5.0.0,
eslint@7.15.0:
eslint@7.15.0:
version "7.15.0"
resolved "https://registry.nlark.com/eslint/download/eslint-7.15.0.tgz?cache=0&sync_timestamp=1627688614405&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint%2Fdownload%2Feslint-7.15.0.tgz"
integrity sha1-6xVfuO0IZfz12QP3a+Llts1+C8c=
...
...
@@ -4146,12 +4039,7 @@ estraverse@^4.1.1:
resolved "https://registry.nlark.com/estraverse/download/estraverse-4.3.0.tgz"
integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=
estraverse@^5.1.0:
version "5.2.0"
resolved "https://registry.nlark.com/estraverse/download/estraverse-5.2.0.tgz"
integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA=
estraverse@^5.2.0:
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.2.0"
resolved "https://registry.nlark.com/estraverse/download/estraverse-5.2.0.tgz"
integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA=
...
...
@@ -4319,15 +4207,7 @@ extend-shallow@^2.0.1:
dependencies:
is-extendable "^0.1.0"
extend-shallow@^3.0.0:
version "3.0.2"
resolved "https://registry.nlark.com/extend-shallow/download/extend-shallow-3.0.2.tgz"
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
dependencies:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
extend-shallow@^3.0.2:
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
version "3.0.2"
resolved "https://registry.nlark.com/extend-shallow/download/extend-shallow-3.0.2.tgz"
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
...
...
@@ -4363,16 +4243,16 @@ extglob@^2.0.2, extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.nlark.com/extsprintf/download/extsprintf-1.4.0.tgz"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.nlark.com/extsprintf/download/extsprintf-1.3.0.tgz"
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.nlark.com/extsprintf/download/extsprintf-1.4.0.tgz"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.nlark.com/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz"
...
...
@@ -4431,7 +4311,7 @@ file-entry-cache@^6.0.0:
dependencies:
flat-cache "^3.0.4"
file-loader@
*, file-loader@
^4.2.0:
file-loader@^4.2.0:
version "4.3.0"
resolved "https://registry.nlark.com/file-loader/download/file-loader-4.3.0.tgz"
integrity sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=
...
...
@@ -4439,15 +4319,20 @@ file-loader@*, file-loader@^4.2.0:
loader-utils "^1.2.3"
schema-utils "^2.5.0"
file-saver@2.0.4:
version "2.0.4"
resolved "https://registry.npm.taobao.org/file-saver/download/file-saver-2.0.4.tgz?cache=0&sync_timestamp=1605790866952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-saver%2Fdownload%2Ffile-saver-2.0.4.tgz"
integrity sha1-RMQOg1MZyYNqhCIbTiVdS7TLe7U=
file-saver@^1.3.3:
version "1.3.8"
resolved "https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz"
integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==
file-
saver@2.0.4
:
version "
2.0.4
"
resolved "https://registry.npm
.taobao.org/file-saver/download/file-saver-2.0.4.tgz?cache=0&sync_timestamp=1605790866952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-saver%2Fdownload%2Ffile-saver-2.0.4.tgz
"
integrity sha
1-RMQOg1MZyYNqhCIbTiVdS7TLe7U
=
file-
uri-to-path@1.0.0
:
version "
1.0.0
"
resolved "https://registry.npm
mirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd
"
integrity sha
512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=
=
filesize@^3.6.1:
version "3.6.1"
...
...
@@ -4471,19 +4356,6 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
finalhandler@~1.1.2:
version "1.1.2"
resolved "https://registry.nlark.com/finalhandler/download/finalhandler-1.1.2.tgz"
integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.3"
statuses "~1.5.0"
unpipe "~1.0.0"
finalhandler@1.1.0:
version "1.1.0"
resolved "https://registry.nlark.com/finalhandler/download/finalhandler-1.1.0.tgz"
...
...
@@ -4497,6 +4369,19 @@ finalhandler@1.1.0:
statuses "~1.3.1"
unpipe "~1.0.0"
finalhandler@~1.1.2:
version "1.1.2"
resolved "https://registry.nlark.com/finalhandler/download/finalhandler-1.1.2.tgz"
integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.3"
statuses "~1.5.0"
unpipe "~1.0.0"
find-cache-dir@^0.1.1:
version "0.1.1"
resolved "https://registry.nlark.com/find-cache-dir/download/find-cache-dir-0.1.1.tgz?cache=0&sync_timestamp=1618910407412&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-0.1.1.tgz"
...
...
@@ -4568,11 +4453,6 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
follow-redirects@^1.0.0:
version "1.14.1"
resolved "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz"
integrity sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M=
follow-redirects@1.5.10:
version "1.5.10"
resolved "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.5.10.tgz"
...
...
@@ -4580,6 +4460,11 @@ follow-redirects@1.5.10:
dependencies:
debug "=3.1.0"
follow-redirects@^1.0.0:
version "1.14.1"
resolved "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz"
integrity sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M=
for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.npmmirror.com/for-in/-/for-in-0.1.8.tgz"
...
...
@@ -4672,6 +4557,19 @@ fs.realpath@^1.0.0:
resolved "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@^1.2.7:
version "1.2.13"
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
dependencies:
bindings "^1.5.0"
nan "^2.12.1"
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/function-bind/download/function-bind-1.1.1.tgz"
...
...
@@ -4755,14 +4653,7 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
glob-parent@^5.0.0:
version "5.1.2"
resolved "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1626760165717&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz"
integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
dependencies:
is-glob "^4.0.1"
glob-parent@~5.1.2:
glob-parent@^5.0.0, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1626760165717&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz"
integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
...
...
@@ -4975,7 +4866,7 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
he@
^1.1.0, he@^1.1.1, he@1.2.x
:
he@
1.2.x, he@^1.1.0, he@^1.1.1
:
version "1.2.0"
resolved "https://registry.nlark.com/he/download/he-1.2.0.tgz"
integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8=
...
...
@@ -5057,7 +4948,7 @@ html-tags@^3.1.0:
resolved "https://registry.nlark.com/html-tags/download/html-tags-3.1.0.tgz"
integrity sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=
"html-webpack-plugin@^3.0.0 || ^4.0.0", html-webpack-plugin@^3.2.0, html-webpack-plugin@>=2.26
.0:
html-webpack-plugin@^3.2
.0:
version "3.2.0"
resolved "https://registry.nlark.com/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1624367726063&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz"
integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s=
...
...
@@ -5097,6 +4988,17 @@ http-deceiver@^1.2.7:
resolved "https://registry.nlark.com/http-deceiver/download/http-deceiver-1.2.7.tgz"
integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
http-errors@1.7.2:
version "1.7.2"
resolved "https://registry.nlark.com/http-errors/download/http-errors-1.7.2.tgz"
integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.1"
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.nlark.com/http-errors/download/http-errors-1.6.3.tgz"
...
...
@@ -5118,17 +5020,6 @@ http-errors@~1.7.2:
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-errors@1.7.2:
version "1.7.2"
resolved "https://registry.nlark.com/http-errors/download/http-errors-1.7.2.tgz"
integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.1"
statuses ">= 1.5.0 < 2"
toidentifier "1.0.0"
http-parser-js@>=0.5.1:
version "0.5.3"
resolved "https://registry.nlark.com/http-parser-js/download/http-parser-js-0.5.3.tgz"
...
...
@@ -5172,7 +5063,7 @@ human-signals@^1.1.1:
resolved "https://registry.nlark.com/human-signals/download/human-signals-1.1.1.tgz"
integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M=
iconv-lite@
^0.4.24, iconv-lite@
0.4.24:
iconv-lite@
0.4.24, iconv-lite@^
0.4.24:
version "0.4.24"
resolved "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1621826522823&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz"
integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
...
...
@@ -5277,7 +5168,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@
^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4
:
inherits@
2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3
:
version "2.0.4"
resolved "https://registry.nlark.com/inherits/download/inherits-2.0.4.tgz"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
...
...
@@ -5343,7 +5234,7 @@ ip@^1.1.0, ip@^1.1.5:
resolved "https://registry.nlark.com/ip/download/ip-1.1.5.tgz"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
ipaddr.js@
^1.9.0, ipaddr.js@1.9.1
:
ipaddr.js@
1.9.1, ipaddr.js@^1.9.0
:
version "1.9.1"
resolved "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz"
integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=
...
...
@@ -5684,7 +5575,7 @@ is-wsl@^2.1.1:
dependencies:
is-docker "^2.0.0"
isarray@
^1.0.0, isarray@~1.0.0, isarray@
1.0.0:
isarray@
1.0.0, isarray@^1.0.0, isarray@~
1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
...
...
@@ -5699,14 +5590,7 @@ isexe@^2.0.0:
resolved "https://registry.nlark.com/isexe/download/isexe-2.0.0.tgz"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isobject@^2.0.0:
version "2.1.0"
resolved "https://registry.nlark.com/isobject/download/isobject-2.1.0.tgz"
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
dependencies:
isarray "1.0.0"
isobject@^2.1.0:
isobject@^2.0.0, isobject@^2.1.0:
version "2.1.0"
resolved "https://registry.nlark.com/isobject/download/isobject-2.1.0.tgz"
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
...
...
@@ -5913,22 +5797,12 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
kind-of@^5.0.0:
version "5.1.0"
resolved "https://registry.nlark.com/kind-of/download/kind-of-5.1.0.tgz"
integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=
kind-of@^5.0.2:
kind-of@^5.0.0, kind-of@^5.0.2:
version "5.1.0"
resolved "https://registry.nlark.com/kind-of/download/kind-of-5.1.0.tgz"
integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=
kind-of@^6.0.0:
version "6.0.3"
resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
kind-of@^6.0.2:
kind-of@^6.0.0, kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz"
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
...
...
@@ -5957,7 +5831,7 @@ less-loader@^4.1.0:
loader-utils "^1.1.0"
pify "^3.0.0"
"less@^2.3.1 || ^3.0.0",
less@^3.0.4:
less@^3.0.4:
version "3.13.1"
resolved "https://registry.nlark.com/less/download/less-3.13.1.tgz"
integrity sha1-DryR0qDpwMZzW4PUlrCrBYMHeQk=
...
...
@@ -6112,16 +5986,16 @@ lodash.uniq@^4.5.0:
resolved "https://registry.nlark.com/lodash.uniq/download/lodash.uniq-4.5.0.tgz"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
version "4.17.21"
resolved "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1618910518249&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flodash%2Fdownload%2Flodash-4.17.21.tgz"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
lodash@4.17.11:
version "4.17.11"
resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz"
integrity sha1-s56mIp72B+zYniyN8SU2iRysm40=
lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
version "4.17.21"
resolved "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1618910518249&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flodash%2Fdownload%2Flodash-4.17.21.tgz"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
log-symbols@^2.2.0:
version "2.2.0"
resolved "https://registry.nlark.com/log-symbols/download/log-symbols-2.2.0.tgz"
...
...
@@ -6185,16 +6059,9 @@ make-dir@^2.0.0, make-dir@^2.1.0:
integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=
dependencies:
pify "^4.0.1"
semver "^5.6.0"
make-dir@^3.0.2:
version "3.1.0"
resolved "https://registry.nlark.com/make-dir/download/make-dir-3.1.0.tgz"
integrity sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=
dependencies:
semver "^6.0.0"
semver "^5.6.0"
make-dir@^3.1.0:
make-dir@^3.
0.2, make-dir@^3.
1.0:
version "3.1.0"
resolved "https://registry.nlark.com/make-dir/download/make-dir-3.1.0.tgz"
integrity sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=
...
...
@@ -6305,6 +6172,25 @@ microcli@1.3.3:
lodash "4.17.11"
microargs "1.1.2"
micromatch@3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.0.tgz?cache=0&sync_timestamp=1618054841521&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.0.tgz"
integrity sha1-UQLU6vILaZfWAI46z+HESj+oFeI=
dependencies:
arr-diff "^4.0.0"
array-unique "^0.3.2"
braces "^2.2.2"
define-property "^1.0.0"
extend-shallow "^2.0.1"
extglob "^2.0.2"
fragment-cache "^0.2.1"
kind-of "^5.0.2"
nanomatch "^1.2.1"
object.pick "^1.3.0"
regex-not "^1.0.0"
snapdragon "^0.8.1"
to-regex "^3.0.1"
micromatch@^3.1.10, micromatch@^3.1.4:
version "3.1.10"
resolved "https://registry.nlark.com/micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618910283285&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz"
...
...
@@ -6332,25 +6218,6 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.2.3"
micromatch@3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.0.tgz?cache=0&sync_timestamp=1618054841521&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.0.tgz"
integrity sha1-UQLU6vILaZfWAI46z+HESj+oFeI=
dependencies:
arr-diff "^4.0.0"
array-unique "^0.3.2"
braces "^2.2.2"
define-property "^1.0.0"
extend-shallow "^2.0.1"
extglob "^2.0.2"
fragment-cache "^0.2.1"
kind-of "^5.0.2"
nanomatch "^1.2.1"
object.pick "^1.3.0"
regex-not "^1.0.0"
snapdragon "^0.8.1"
to-regex "^3.0.1"
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.nlark.com/miller-rabin/download/miller-rabin-4.0.1.tgz"
...
...
@@ -6359,7 +6226,7 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
"mime-db@>= 1.43.0 < 2", mime-db@1.49.0
:
mime-db@1.49.0, "mime-db@>= 1.43.0 < 2"
:
version "1.49.0"
resolved "https://registry.nlark.com/mime-db/download/mime-db-1.49.0.tgz"
integrity sha1-89/eYMmenPO8lwHWh3ePU3ABy+0=
...
...
@@ -6371,7 +6238,7 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
dependencies:
mime-db "1.49.0"
mime@
^1.4.1, mime@1.6.0
:
mime@
1.6.0, mime@^1.4.1
:
version "1.6.0"
resolved "https://registry.nlark.com/mime/download/mime-1.6.0.tgz"
integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
...
...
@@ -6512,11 +6379,6 @@ move-concurrently@^1.0.1:
rimraf "^2.5.4"
run-queue "^1.0.3"
ms@^2.1.1:
version "2.1.3"
resolved "https://registry.nlark.com/ms/download/ms-2.1.3.tgz"
integrity sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=
ms@2.0.0:
version "2.0.0"
resolved "https://registry.nlark.com/ms/download/ms-2.0.0.tgz"
...
...
@@ -6532,6 +6394,11 @@ ms@2.1.2:
resolved "https://registry.nlark.com/ms/download/ms-2.1.2.tgz"
integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
ms@^2.1.1:
version "2.1.3"
resolved "https://registry.nlark.com/ms/download/ms-2.1.3.tgz"
integrity sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=
multicast-dns-service-types@^1.1.0:
version "1.1.0"
resolved "https://registry.nlark.com/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz"
...
...
@@ -6559,6 +6426,11 @@ mz@^2.4.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
nan@^2.12.1:
version "2.17.0"
resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
nanoid@^3.1.23:
version "3.1.23"
resolved "https://registry.nlark.com/nanoid/download/nanoid-3.1.23.tgz"
...
...
@@ -6700,11 +6572,6 @@ normalize-range@^0.1.2:
resolved "https://registry.nlark.com/normalize-range/download/normalize-range-0.1.2.tgz"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
normalize-url@^3.0.0:
version "3.3.0"
resolved "https://registry.nlark.com/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1625826704090&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz"
integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk=
normalize-url@1.9.1:
version "1.9.1"
resolved "https://registry.nlark.com/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&sync_timestamp=1625826704090&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz"
...
...
@@ -6715,6 +6582,11 @@ normalize-url@1.9.1:
query-string "^4.1.0"
sort-keys "^1.0.0"
normalize-url@^3.0.0:
version "3.3.0"
resolved "https://registry.nlark.com/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1625826704090&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz"
integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk=
normalize-wheel@^1.0.1:
version "1.0.1"
resolved "https://registry.nlark.com/normalize-wheel/download/normalize-wheel-1.0.1.tgz"
...
...
@@ -7143,12 +7015,7 @@ path-key@^2.0.0, path-key@^2.0.1:
resolved "https://registry.nlark.com/path-key/download/path-key-2.0.1.tgz"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
path-key@^3.0.0:
version "3.1.1"
resolved "https://registry.nlark.com/path-key/download/path-key-3.1.1.tgz"
integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
path-key@^3.1.0:
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.nlark.com/path-key/download/path-key-3.1.1.tgz"
integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
...
...
@@ -7603,12 +7470,7 @@ postcss-value-parser@^3.0.0:
resolved "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz"
integrity sha1-n/giVH4okyE88cMO+lGsX9G6goE=
postcss-value-parser@^4.0.2:
version "4.1.0"
resolved "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz"
integrity sha1-RD9qIM7WSBor2k+oUypuVdeJoss=
postcss-value-parser@^4.1.0:
postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
version "4.1.0"
resolved "https://registry.nlark.com/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz"
integrity sha1-RD9qIM7WSBor2k+oUypuVdeJoss=
...
...
@@ -7792,6 +7654,11 @@ pumpify@^1.3.3:
inherits "^2.0.3"
pump "^2.0.0"
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.nlark.com/punycode/download/punycode-1.3.2.tgz"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
punycode@^1.2.4:
version "1.4.1"
resolved "https://registry.nlark.com/punycode/download/punycode-1.4.1.tgz"
...
...
@@ -7802,11 +7669,6 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.nlark.com/punycode/download/punycode-2.1.1.tgz"
integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew=
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.nlark.com/punycode/download/punycode-1.3.2.tgz"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
q@^1.1.2:
version "1.5.1"
resolved "https://registry.nlark.com/q/download/q-1.5.1.tgz"
...
...
@@ -7825,16 +7687,16 @@ qrcode@^1.4.4:
pngjs "^3.3.0"
yargs "^13.2.4"
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.nlark.com/qs/download/qs-6.5.2.tgz"
integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=
qs@6.7.0:
version "6.7.0"
resolved "https://registry.nlark.com/qs/download/qs-6.7.0.tgz"
integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.nlark.com/qs/download/qs-6.5.2.tgz"
integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=
query-string@^4.1.0, query-string@^4.3.2:
version "4.3.4"
resolved "https://registry.nlark.com/query-string/download/query-string-4.3.4.tgz?cache=0&sync_timestamp=1624297110017&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz"
...
...
@@ -7924,7 +7786,7 @@ read-pkg@^5.1.1:
parse-json "^5.0.0"
type-fest "^0.6.0"
readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6, "readable-stream@1 || 2"
:
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6
:
version "2.3.7"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
...
...
@@ -7937,25 +7799,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.0.6:
version "3.6.0"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz"
integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readable-stream@^3.1.1:
version "3.6.0"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz"
integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readable-stream@^3.6.0:
readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-3.6.0.tgz"
integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
...
...
@@ -8248,20 +8092,15 @@ rxjs@^6.6.0, rxjs@^6.6.7:
dependencies:
tslib "^1.9.0"
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.2.1.tgz"
integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz"
integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
safe-buffer@
5.1.2
:
version "5.
1.2
"
resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.
1.2
.tgz"
integrity sha1-
mR7GnSluAxN0fVm9/St0XDX4go0
=
safe-buffer@
>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0
:
version "5.
2.1
"
resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.
2.1
.tgz"
integrity sha1-
Hq+fqb2x/dTsdfWPnNtOa3gn7sY
=
safe-regex@^1.1.0:
version "1.1.0"
...
...
@@ -8270,7 +8109,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3"
, safer-buffer@~2.1.0:
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0
, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz"
integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
...
...
@@ -8308,43 +8147,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
schema-utils@^2.0.0:
version "2.7.1"
resolved "https://registry.nlark.com/schema-utils/download/schema-utils-2.7.1.tgz"
integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
dependencies:
"@types/json-schema" "^7.0.5"
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^2.5.0:
version "2.7.1"
resolved "https://registry.nlark.com/schema-utils/download/schema-utils-2.7.1.tgz"
integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
dependencies:
"@types/json-schema" "^7.0.5"
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^2.6.5:
version "2.7.1"
resolved "https://registry.nlark.com/schema-utils/download/schema-utils-2.7.1.tgz"
integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
dependencies:
"@types/json-schema" "^7.0.5"
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^2.6.6:
version "2.7.1"
resolved "https://registry.nlark.com/schema-utils/download/schema-utils-2.7.1.tgz"
integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
dependencies:
"@types/json-schema" "^7.0.5"
ajv "^6.12.4"
ajv-keywords "^3.5.2"
schema-utils@^2.7.0:
schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0:
version "2.7.1"
resolved "https://registry.nlark.com/schema-utils/download/schema-utils-2.7.1.tgz"
integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
...
...
@@ -8394,45 +8197,28 @@ semver-compare@^1.0.0:
resolved "https://registry.nlark.com/semver-compare/download/semver-compare-1.0.0.tgz"
integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
semver@^5.5
.0:
"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6
.0:
version "5.7.1"
resolved "https://registry.nlark.com/semver/download/semver-5.7.1.tgz"
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
semver@
^5.6
.0:
version "
5.7.1
"
resolved "https://registry.nlark.com/semver/download/semver-
5.7.1
.tgz"
integrity sha1-
qVT5Ma66UI0we78Gnv8MAclhFvc
=
semver@
7.0
.0:
version "
7.0.0
"
resolved "https://registry.nlark.com/semver/download/semver-
7.0.0
.tgz"
integrity sha1-
XzyjV2HkfgWyBsba/yz4FPAxa44
=
semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.nlark.com/semver/download/semver-6.3.0.tgz"
integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=
semver@^7.2.1:
version "7.3.5"
resolved "https://registry.nlark.com/semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1618910479221&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz"
integrity sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=
dependencies:
lru-cache "^6.0.0"
semver@^7.3.2:
semver@^7.2.1, semver@^7.3.2:
version "7.3.5"
resolved "https://registry.nlark.com/semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1618910479221&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz"
integrity sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=
dependencies:
lru-cache "^6.0.0"
"semver@2 || 3 || 4 || 5":
version "5.7.1"
resolved "https://registry.nlark.com/semver/download/semver-5.7.1.tgz"
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
semver@7.0.0:
version "7.0.0"
resolved "https://registry.nlark.com/semver/download/semver-7.0.0.tgz"
integrity sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=
send@0.17.1:
version "0.17.1"
resolved "https://registry.nlark.com/send/download/send-0.17.1.tgz"
...
...
@@ -8713,12 +8499,7 @@ source-map-url@^0.4.0:
resolved "https://registry.nlark.com/source-map-url/download/source-map-url-0.4.1.tgz"
integrity sha1-CvZmBadFpaL5HPG7+KevvCg97FY=
source-map@^0.5.0:
version "0.5.7"
resolved "https://registry.nlark.com/source-map/download/source-map-0.5.7.tgz"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
source-map@^0.5.6:
source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.nlark.com/source-map/download/source-map-0.5.7.tgz"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
...
...
@@ -8891,20 +8672,6 @@ strict-uri-encode@^1.0.0:
resolved "https://registry.nlark.com/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz"
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.3.0.tgz"
integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
string-argv@0.3.1:
version "0.3.1"
resolved "https://registry.npm.taobao.org/string-argv/download/string-argv-0.3.1.tgz"
...
...
@@ -8952,6 +8719,20 @@ string.prototype.trimstart@^1.0.4:
call-bind "^1.0.2"
define-properties "^1.1.3"
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.3.0.tgz"
integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
stringify-object@^3.3.0:
version "3.3.0"
resolved "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz"
...
...
@@ -8961,14 +8742,7 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
strip-ansi@^3.0.0:
version "3.0.1"
resolved "https://registry.nlark.com/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618910488314&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz"
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
dependencies:
ansi-regex "^2.0.0"
strip-ansi@^3.0.1:
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.nlark.com/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618910488314&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz"
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
...
...
@@ -8982,14 +8756,7 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
strip-ansi@^5:
version "5.2.0"
resolved "https://registry.nlark.com/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618910488314&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz"
integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=
dependencies:
ansi-regex "^4.1.0"
strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
strip-ansi@^5, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
version "5.2.0"
resolved "https://registry.nlark.com/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618910488314&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz"
integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=
...
...
@@ -9226,11 +8993,6 @@ throttle-debounce@^1.0.1:
resolved "https://registry.nlark.com/throttle-debounce/download/throttle-debounce-1.1.0.tgz"
integrity sha1-UYU9o3vmihVctugns1FKPEIuic0=
through@^2.3.6, through@^2.3.8:
version "2.3.8"
resolved "https://registry.nlark.com/through/download/through-2.3.8.tgz"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
through2@^2.0.0:
version "2.0.5"
resolved "https://registry.nlark.com/through2/download/through2-2.0.5.tgz"
...
...
@@ -9239,6 +9001,11 @@ through2@^2.0.0:
readable-stream "~2.3.6"
xtend "~4.0.1"
through@^2.3.6, through@^2.3.8:
version "2.3.8"
resolved "https://registry.nlark.com/through/download/through-2.3.8.tgz"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
thunky@^1.0.2:
version "1.1.0"
resolved "https://registry.nlark.com/thunky/download/thunky-1.1.0.tgz"
...
...
@@ -9490,7 +9257,7 @@ universalify@^0.1.0:
resolved "https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz"
integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=
unpipe@
~1.0.0, unpipe@
1.0.0:
unpipe@
1.0.0, unpipe@~
1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/unpipe/download/unpipe-1.0.0.tgz"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
...
...
@@ -9579,6 +9346,14 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
resolved "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
util.promisify@1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/util.promisify/download/util.promisify-1.0.0.tgz"
integrity sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=
dependencies:
define-properties "^1.1.2"
object.getownpropertydescriptors "^2.0.3"
util.promisify@~1.0.0:
version "1.0.1"
resolved "https://registry.nlark.com/util.promisify/download/util.promisify-1.0.1.tgz"
...
...
@@ -9589,13 +9364,12 @@ util.promisify@~1.0.0:
has-symbols "^1.0.1"
object.getownpropertydescriptors "^2.1.0"
util
.promisify@1.0.0
:
version "
1.0.0
"
resolved "https://registry.nlark.com/util
.promisify/download/util.promisify-1.0.0
.tgz"
integrity sha1-
RA9xZaRZyaFtwUXrjnLzVocJcDA
=
util
@0.10.3
:
version "
0.10.3
"
resolved "https://registry.nlark.com/util
/download/util-0.10.3
.tgz"
integrity sha1-
evsa/lCAUkZInj23/g7TeTNqwPk
=
dependencies:
define-properties "^1.1.2"
object.getownpropertydescriptors "^2.0.3"
inherits "2.0.1"
util@^0.11.0:
version "0.11.1"
...
...
@@ -9604,13 +9378,6 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
util@0.10.3:
version "0.10.3"
resolved "https://registry.nlark.com/util/download/util-0.10.3.tgz"
integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
dependencies:
inherits "2.0.1"
utila@~0.4:
version "0.4.0"
resolved "https://registry.nlark.com/utila/download/utila-0.4.0.tgz"
...
...
@@ -9752,7 +9519,7 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-template-compiler@^2.
0.0, vue-template-compiler@^2.
6.14:
vue-template-compiler@^2.6.14:
version "2.6.14"
resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz"
integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==
...
...
@@ -9765,16 +9532,16 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.nlark.com/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz"
integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
vue@*, "vue@^2 || ^3.0.0-0", vue@^2.0.0, vue@^2.2.0, vue@^2.5.17, vue@^2.5.4, vue@^2.6.0, vue@^2.6.14, vue@>2.0.0:
version "2.6.14"
resolved "https://registry.nlark.com/vue/download/vue-2.6.14.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.14.tgz"
integrity sha1-5RqlJQJQ1Wmj+606ilpofWA24jU=
vue2-org-tree@^1.3.5:
version "1.3.5"
resolved "https://registry.npm.taobao.org/vue2-org-tree/download/vue2-org-tree-1.3.5.tgz"
integrity sha1-RGpSjCMTo5tTIKEbMIORbbi13GI=
vue@^2.6.14:
version "2.6.14"
resolved "https://registry.nlark.com/vue/download/vue-2.6.14.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.14.tgz"
integrity sha1-5RqlJQJQ1Wmj+606ilpofWA24jU=
vuex@3.6.0:
version "3.6.0"
resolved "https://registry.nlark.com/vuex/download/vuex-3.6.0.tgz"
...
...
@@ -9926,7 +9693,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-
source-list-map "^2.0.0"
source-map "~0.6.1"
"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", webpack@^4.0.0, "webpack@^4.0.0 || ^5.0.0", webpack@^4.4.0, webpack@>=2, "webpack@>=2.0.0 <5.0.0", webpack@>=
4.0.0:
webpack@^
4.0.0:
version "4.46.0"
resolved "https://registry.nlark.com/webpack/download/webpack-4.46.0.tgz?cache=0&sync_timestamp=1627568684063&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack%2Fdownload%2Fwebpack-4.46.0.tgz"
integrity sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=
...
...
@@ -9955,7 +9722,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-
watchpack "^1.7.4"
webpack-sources "^1.4.1"
websocket-driver@
^0.7.4, websocket-driver@>=0.5.1
:
websocket-driver@
>=0.5.1, websocket-driver@^0.7.4
:
version "0.7.4"
resolved "https://registry.nlark.com/websocket-driver/download/websocket-driver-0.7.4.tgz"
integrity sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=
...
...
@@ -10162,7 +9929,7 @@ yorkie@^2.0.0:
normalize-path "^1.0.0"
strip-indent "^2.0.0"
zrender@
^4.3.1, zrender@
4.3.2:
zrender@4.3.2:
version "4.3.2"
resolved "https://registry.nlark.com/zrender/download/zrender-4.3.2.tgz"
integrity sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY=
attendance-performance-manager/pom.xml
View file @
db41784e
...
...
@@ -68,6 +68,7 @@
<profiles.hik.appSecret>
2m9RcPJOKq5j2QPQM4v5
</profiles.hik.appSecret>
<profiles.dingtalk.domain>
https://oapi.dingtalk.com
</profiles.dingtalk.domain>
<profiles.dingtalk.oaUrl>
api.dingtalk.com
</profiles.dingtalk.oaUrl>
<profiles.dingtalk.agentId>
2652674890
</profiles.dingtalk.agentId>
<profiles.dingtalk.appKey>
dingpqzradgfr4efdi2j
</profiles.dingtalk.appKey>
<profiles.dingtalk.appSecret>
bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd
</profiles.dingtalk.appSecret>
...
...
@@ -98,6 +99,7 @@
<profiles.hik.appSecret>
2m9RcPJOKq5j2QPQM4v5
</profiles.hik.appSecret>
<profiles.dingtalk.domain>
http://172.15.28.113:8918
</profiles.dingtalk.domain>
<profiles.dingtalk.oaUrl>
172.15.28.113:8919
</profiles.dingtalk.oaUrl>
<profiles.dingtalk.agentId>
2652674890
</profiles.dingtalk.agentId>
<profiles.dingtalk.appKey>
dingpqzradgfr4efdi2j
</profiles.dingtalk.appKey>
<profiles.dingtalk.appSecret>
bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd
</profiles.dingtalk.appSecret>
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
View file @
db41784e
...
...
@@ -158,11 +158,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
homeStatInfo
.
setTotalDeptNum
(
totalDeptNum
);
//todo
homeStatInfo
.
setAttendRadio
(
new
BigDecimal
(
9
1
.00
));
homeStatInfo
.
setAttendRadio
(
new
BigDecimal
(
9
8
.00
));
homeStatInfo
.
setLevealPersonNum
(
6
);
homeStatInfo
.
setLatePersonNum
(
2
);
homeStatInfo
.
setLeftEarlyPersonNum
(
1
);
homeStatInfo
.
setMissCardPersonNum
(
0
);
homeStatInfo
.
setMissCardPersonNum
(
23
);
homeStatInfo
.
setAttendPersonNum
(
426
);
data
.
put
(
"homeStat"
,
homeStatInfo
);
data
.
put
(
"token"
,
token
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/BaseReq.java
View file @
db41784e
...
...
@@ -19,8 +19,6 @@ public abstract class BaseReq implements Serializable {
*/
private
Integer
size
;
/**
* 工号
*/
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/MockDataController.java
View file @
db41784e
...
...
@@ -16,7 +16,9 @@ import com.mortals.xhx.base.system.user.model.UserEntity;
import
com.mortals.xhx.base.system.user.model.UserQuery
;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptPerformStatEntity
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptPerformStatService
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.hik.face.model.req.img.ImgReq
;
import
com.mortals.xhx.module.hik.face.service.IHikFaceService
;
...
...
@@ -26,10 +28,8 @@ import com.mortals.xhx.module.perform.model.PerformPerposeStaffStatEntity;
import
com.mortals.xhx.module.perform.service.PerformPerposeDeptStatService
;
import
com.mortals.xhx.module.perform.service.PerformPerposeStaffService
;
import
com.mortals.xhx.module.perform.service.PerformPerposeStaffStatService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffPerformSummaryEntity
;
import
com.mortals.xhx.module.staff.model.StaffPerformSummaryQuery
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.model.*
;
import
com.mortals.xhx.module.staff.service.StaffPerformStatService
;
import
com.mortals.xhx.module.staff.service.StaffPerformSummaryService
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
com.mortals.xhx.module.workman.model.WorkmanEntity
;
...
...
@@ -80,7 +80,10 @@ public class MockDataController {
private
PerformPerposeDeptStatService
perposeDeptStatService
;
@Autowired
private
StaffPerformSummaryService
summaryService
;
@Autowired
private
StaffPerformStatService
staffPerformStatService
;
@Autowired
private
DeptPerformStatService
deptPerformStatService
;
/**
* 生成模拟数据
...
...
@@ -196,15 +199,15 @@ public class MockDataController {
statEntity
.
setWorkNum
(
item
.
getWorkNum
());
statEntity
.
setDeptId
(
item
.
getDeptId
());
statEntity
.
setDeptName
(
item
.
getDeptName
());
BigDecimal
attendScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
errorScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
attendScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
errorScore
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
15
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
totalScore
=
attendScore
.
add
(
reviewScore
).
add
(
complainScore
).
add
(
goworkScore
).
add
(
effectScore
).
add
(
otherScore
).
add
(
errorScore
);
BigDecimal
totalScore
=
attendScore
.
add
(
reviewScore
).
add
(
complainScore
).
add
(
goworkScore
).
add
(
effectScore
).
add
(
otherScore
).
add
(
errorScore
);
statEntity
.
setAttendScore
(
attendScore
);
statEntity
.
setReviewScore
(
reviewScore
);
...
...
@@ -228,6 +231,159 @@ public class MockDataController {
}
/**
* 生成模拟数据
* mortals_xhx_staff_perform_stat
*
* @return
*/
@GetMapping
(
"randomStaffPerformStatData"
)
@UnAuth
public
Rest
<
Void
>
randomStaffPerformStatData
()
{
List
<
StaffEntity
>
cacheList
=
staffService
.
getCacheList
();
//最近两月模拟数据
DateTime
beforeStartDate
=
DateUtil
.
offsetDay
(
new
Date
(),
-
60
);
for
(
int
i
=
1
;
i
<=
60
;
i
++)
{
DateTime
curDate
=
DateUtil
.
offsetDay
(
beforeStartDate
,
i
);
List
<
StaffPerformStatEntity
>
collect
=
cacheList
.
stream
().
map
(
item
->
{
StaffPerformStatEntity
statEntity
=
new
StaffPerformStatEntity
();
statEntity
.
initAttrValue
();
statEntity
.
setStaffId
(
item
.
getId
());
statEntity
.
setStaffName
(
item
.
getName
());
BigDecimal
attendScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
attendScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
statEntity
.
setAttendScoreAdd
(
attendScoreAdd
);
statEntity
.
setAttendScoreSub
(
attendScoreSub
);
statEntity
.
setReviewScoreAdd
(
reviewScoreAdd
);
statEntity
.
setReviewScoreSub
(
reviewScoreSub
);
statEntity
.
setComplainScoreAdd
(
complainScoreAdd
);
statEntity
.
setComplainScoreSub
(
complainScoreSub
);
statEntity
.
setGoworkScoreAdd
(
goworkScoreAdd
);
statEntity
.
setGoworkScoreSub
(
goworkScoreSub
);
statEntity
.
setEffectScoreAdd
(
effectScoreAdd
);
statEntity
.
setEffectScoreSub
(
effectScoreSub
);
statEntity
.
setOtherScoreAdd
(
otherScoreAdd
);
statEntity
.
setOtherScoreSub
(
otherScoreSub
);
BigDecimal
totalScoreAdd
=
attendScoreAdd
.
add
(
reviewScoreAdd
).
add
(
complainScoreAdd
)
.
add
(
goworkScoreAdd
).
add
(
effectScoreAdd
).
add
(
otherScoreAdd
);
BigDecimal
totalScoreSub
=
attendScoreSub
.
add
(
reviewScoreSub
).
add
(
complainScoreSub
)
.
add
(
goworkScoreSub
).
add
(
effectScoreSub
).
add
(
otherScoreSub
);
statEntity
.
setTotalAddScore
(
totalScoreAdd
);
statEntity
.
setTotalSubScore
(
totalScoreSub
);
BigDecimal
subtract
=
statEntity
.
getTotalAddScore
().
subtract
(
statEntity
.
getTotalSubScore
());
statEntity
.
setTotalScore
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
?
subtract
:
BigDecimal
.
ZERO
);
statEntity
.
setYear
(
DateUtil
.
year
(
curDate
));
statEntity
.
setMonth
(
DateUtil
.
month
(
curDate
)
+
1
);
statEntity
.
setDay
(
DateUtil
.
dayOfMonth
(
curDate
));
return
statEntity
;
}).
collect
(
Collectors
.
toList
());
staffPerformStatService
.
save
(
collect
);
}
return
Rest
.
ok
();
}
/**
* 生成模拟数据
* mortals_xhx_dept_perform_stat
*
* @return
*/
@GetMapping
(
"randomDeptPerformStatData"
)
@UnAuth
public
Rest
<
Void
>
randomDeptPerformStatData
()
{
List
<
DeptEntity
>
deptEntityList
=
deptService
.
find
(
new
DeptQuery
());
//最近两月模拟数据
DateTime
beforeStartDate
=
DateUtil
.
offsetDay
(
new
Date
(),
-
60
);
for
(
int
i
=
1
;
i
<=
60
;
i
++)
{
DateTime
curDate
=
DateUtil
.
offsetDay
(
beforeStartDate
,
i
);
List
<
DeptPerformStatEntity
>
collect
=
deptEntityList
.
stream
().
map
(
item
->
{
DeptPerformStatEntity
statEntity
=
new
DeptPerformStatEntity
();
statEntity
.
initAttrValue
();
statEntity
.
setDeptId
(
item
.
getId
());
statEntity
.
setDeptName
(
item
.
getDeptName
());
int
personNum
=
staffService
.
count
(
new
StaffQuery
().
deptId
(
item
.
getId
()),
null
);
BigDecimal
attendScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScoreAdd
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
attendScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
reviewScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
complainScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
goworkScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
effectScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
BigDecimal
otherScoreSub
=
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"5"
)).
multiply
(
new
BigDecimal
(
personNum
)).
setScale
(
1
,
BigDecimal
.
ROUND_CEILING
);
statEntity
.
setAttendScoreAdd
(
attendScoreAdd
);
statEntity
.
setAttendScoreSub
(
attendScoreSub
);
statEntity
.
setReviewScoreAdd
(
reviewScoreAdd
);
statEntity
.
setReviewScoreSub
(
reviewScoreSub
);
statEntity
.
setComplainScoreAdd
(
complainScoreAdd
);
statEntity
.
setComplainScoreSub
(
complainScoreSub
);
statEntity
.
setGoworkScoreAdd
(
goworkScoreAdd
);
statEntity
.
setGoworkScoreSub
(
goworkScoreSub
);
statEntity
.
setEffectScoreAdd
(
effectScoreAdd
);
statEntity
.
setEffectScoreSub
(
effectScoreSub
);
statEntity
.
setOtherScoreAdd
(
otherScoreAdd
);
statEntity
.
setOtherScoreSub
(
otherScoreSub
);
BigDecimal
totalScoreAdd
=
attendScoreAdd
.
add
(
reviewScoreAdd
).
add
(
complainScoreAdd
)
.
add
(
goworkScoreAdd
).
add
(
effectScoreAdd
).
add
(
otherScoreAdd
);
BigDecimal
totalScoreSub
=
attendScoreSub
.
add
(
reviewScoreSub
).
add
(
complainScoreSub
)
.
add
(
goworkScoreSub
).
add
(
effectScoreSub
).
add
(
otherScoreSub
);
statEntity
.
setTotalAddScore
(
totalScoreAdd
);
statEntity
.
setTotalSubScore
(
totalScoreSub
);
BigDecimal
subtract
=
statEntity
.
getTotalAddScore
().
subtract
(
statEntity
.
getTotalSubScore
());
statEntity
.
setTotalScore
(
subtract
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
?
subtract
:
BigDecimal
.
ZERO
);
if
(
personNum
>
0
)
{
BigDecimal
aver
=
statEntity
.
getTotalScore
().
divide
(
new
BigDecimal
(
personNum
),
2
,
BigDecimal
.
ROUND_CEILING
);
statEntity
.
setAverageScore
(
aver
);
}
else
{
statEntity
.
setAverageScore
(
BigDecimal
.
ZERO
);
}
statEntity
.
setYear
(
DateUtil
.
year
(
curDate
));
statEntity
.
setMonth
(
DateUtil
.
month
(
curDate
)
+
1
);
statEntity
.
setDay
(
DateUtil
.
dayOfMonth
(
curDate
));
return
statEntity
;
}).
collect
(
Collectors
.
toList
());
deptPerformStatService
.
save
(
collect
);
}
return
Rest
.
ok
();
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
RandomUtil
.
randomBigDecimal
(
BigDecimal
.
ZERO
,
new
BigDecimal
(
"1"
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
));
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java
View file @
db41784e
...
...
@@ -3,18 +3,33 @@ package com.mortals.xhx.busiz;
import
cn.hutool.core.codec.Base64
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.PageUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.utils.ServletUtils
;
import
com.mortals.xhx.base.system.idgenerator.service.IdgeneratorService
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.base.system.user.model.UserEntity
;
import
com.mortals.xhx.base.system.user.model.UserQuery
;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.busiz.h5.rsp.ApiResp
;
import
com.mortals.xhx.common.code.ApiRespCodeEnum
;
import
com.mortals.xhx.common.code.YesNoEnum
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordHikService
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq
;
import
com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo
;
import
com.mortals.xhx.module.hik.door.service.IHikDoorService
;
import
com.mortals.xhx.module.hik.face.model.req.img.ImgReq
;
import
com.mortals.xhx.module.hik.face.service.IHikFaceService
;
import
com.mortals.xhx.module.perform.service.PerformPerposeStaffService
;
...
...
@@ -25,17 +40,13 @@ import com.mortals.xhx.module.workman.model.WorkmanEntity;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -62,26 +73,234 @@ public class TestController {
private
IHikFaceService
faceService
;
@Autowired
private
UploadService
uploadService
;
@Autowired
private
DeptService
deptService
;
@Autowired
private
PerformPerposeStaffService
performPerposeStaffService
;
@Autowired
private
AttendanceRecordHikService
recordHikService
;
@Autowired
private
IHikDoorService
hikDoorService
;
/**
* 同步指定日期的海康数据
*
* @param req
* @return
*/
@PostMapping
(
"hik"
)
public
String
register
(
@RequestBody
TestReq
req
)
{
log
.
info
(
"【测试消息】【请求体】--> "
+
JSONObject
.
toJSONString
(
req
));
DoorEventReq
doorEventReq
=
new
DoorEventReq
();
List
<
Integer
>
eventTypes
=
new
ArrayList
<>();
eventTypes
.
add
(
196885
);
eventTypes
.
add
(
196887
);
eventTypes
.
add
(
196893
);
eventTypes
.
add
(
196888
);
eventTypes
.
add
(
196889
);
eventTypes
.
add
(
196890
);
eventTypes
.
add
(
196891
);
doorEventReq
.
setEventTypes
(
eventTypes
);
doorEventReq
.
setStartTime
(
req
.
getCreateTimeStart
());
doorEventReq
.
setEndTime
(
req
.
getCreateTimeEnd
());
doorEventReq
.
setPageNo
(
1
);
doorEventReq
.
setPageSize
(
1
);
Rest
<
DoorEventDataInfo
>
doorEventsRest
=
hikDoorService
.
getDoorEvents
(
doorEventReq
);
log
.
info
(
"doorEventsRest:{} msg:{}"
,
doorEventsRest
.
getCode
(),
doorEventsRest
.
getMsg
());
if
(
doorEventsRest
.
getCode
()
==
YesNoEnum
.
YES
.
getValue
())
{
//分页获取考勤数据
Integer
total
=
doorEventsRest
.
getData
().
getTotal
();
int
pageCount
=
PageUtil
.
totalPage
(
total
,
1000
);
for
(
int
i
=
1
;
i
<=
pageCount
;
i
++)
{
doorEventReq
.
setPageNo
(
i
);
doorEventReq
.
setPageSize
(
1000
);
doorEventsRest
=
hikDoorService
.
getDoorEvents
(
doorEventReq
);
log
.
info
(
"doorEventsRest:{} msg:{},page:{}"
,
doorEventsRest
.
getCode
(),
doorEventsRest
.
getMsg
(),
doorEventReq
.
getPageNo
());
getDoorEvents
(
doorEventsRest
);
}
}
return
"ok"
;
}
private
void
getDoorEvents
(
Rest
<
DoorEventDataInfo
>
doorEventsRest
)
{
//同步当前考勤数据
List
<
AttendanceRecordHikEntity
>
attRecords
=
doorEventsRest
.
getData
().
getList
().
stream
().
map
(
item
->
{
AttendanceRecordHikEntity
recordHikEntity
=
new
AttendanceRecordHikEntity
();
recordHikEntity
.
initAttrValue
();
StaffEntity
staffCache
=
staffService
.
getExtCache
(
StrUtil
.
padPre
(
item
.
getJobNo
(),
8
,
"0"
));
if
(
ObjectUtils
.
isEmpty
(
staffCache
))
{
log
.
info
(
"staff is null !staffCode:{}"
,
item
.
getJobNo
());
return
null
;
}
recordHikEntity
.
setStaffId
(
staffCache
.
getId
());
recordHikEntity
.
setStaffName
(
staffCache
.
getName
());
recordHikEntity
.
setWorkNum
(
staffCache
.
getWorkNum
());
recordHikEntity
.
setDeptId
(
staffCache
.
getDeptId
());
recordHikEntity
.
setDeptName
(
staffCache
.
getDeptName
());
recordHikEntity
.
setPositionId
(
staffCache
.
getPositionId
());
recordHikEntity
.
setPositionName
(
staffCache
.
getPositionName
());
recordHikEntity
.
setAttendanceDate
(
item
.
getEventTime
());
recordHikEntity
.
setAttendanceAddress
(
item
.
getDoorName
());
recordHikEntity
.
setEventSource
(
"门禁点"
);
recordHikEntity
.
setRemark
(
item
.
getEventId
());
recordHikEntity
.
setCreateTime
(
item
.
getEventTime
());
recordHikEntity
.
setCreateUserName
(
"system"
);
recordHikEntity
.
setCreateUserId
(
1L
);
return
recordHikEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
log
.
info
(
"attRecords size:{}"
,
attRecords
.
size
());
if
(!
ObjectUtils
.
isEmpty
(
attRecords
))
{
for
(
AttendanceRecordHikEntity
attRecord
:
attRecords
)
{
//recordHikService.save(attRecord);
try
{
recordHikService
.
getDao
().
insert
(
attRecord
);
}
catch
(
Exception
e
){
log
.
error
(
"异常"
,
e
);
}
}
}
/*
List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
//查询当天考勤记录是否有重复的 有的 则不添加
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setAttendanceDateEnd(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setRemarkList(eventIds);
Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveRecordList)) {
recordHikService.save(saveRecordList);
}
log.info("saveRecordList size:{}", saveRecordList.size());*/
}
@GetMapping
(
"updateDeptNum"
)
@UnAuth
public
String
updateDeptNum
()
{
log
.
info
(
"更新部门用户数量"
);
Map
<
Long
,
Long
>
collect
=
staffService
.
find
(
new
StaffQuery
()).
stream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getDeptId
(),
Collectors
.
counting
()));
DeptEntity
deptEntity1
=
new
DeptEntity
();
deptEntity1
.
setPersonNum
(
0
);
deptService
.
getDao
().
update
(
deptEntity1
,
new
HashMap
<>());
collect
.
entrySet
().
stream
().
forEach
(
item
->
{
Long
deptId
=
item
.
getKey
();
Long
count
=
item
.
getValue
();
log
.
info
(
"deptId:{},num:{}"
,
deptId
,
count
);
DeptEntity
deptEntity
=
deptService
.
get
(
deptId
);
if
(!
ObjectUtils
.
isEmpty
(
deptEntity
))
{
deptEntity
.
setPersonNum
(
count
.
intValue
());
deptService
.
update
(
deptEntity
);
}
});
// @GetMapping("webservice")@GetMapping("idGens")
// public String idGens() {
// log.info("测试id生成");
//
// String stringId = idgeneratorService.getLongId(IdgeneratorServiceImpl.IdGeneratorKey.EFFECT).toString();
//
//
// return stringId;
// }
public
String
webservice
()
{
log
.
info
(
"测试"
);
for
(
Map
.
Entry
<
Long
,
Long
>
item
:
collect
.
entrySet
())
{
Long
deptId
=
item
.
getKey
();
if
(
deptId
==
-
1
)
continue
;
DeptEntity
deptEntity
=
deptService
.
get
(
deptId
);
if
(!
ObjectUtils
.
isEmpty
(
deptEntity
))
{
//查询当前父节点的所有子部门
DeptQuery
deptQuery
=
new
DeptQuery
();
deptQuery
.
setParentId
(
deptEntity
.
getParentId
());
int
sum
=
deptService
.
find
(
new
DeptQuery
().
parentId
(
deptEntity
.
getParentId
())).
stream
().
map
(
i
->
i
.
getPersonNum
()).
reduce
(
0
,
Integer:
:
sum
);
;
DeptEntity
parentDept
=
deptService
.
get
(
deptEntity
.
getParentId
());
log
.
info
(
"dept:{},sum:{}"
,
parentDept
.
getDeptName
(),
sum
);
if
(!
ObjectUtils
.
isEmpty
(
parentDept
))
{
log
.
info
(
"parentDept:{},sum:{}"
,
parentDept
.
getDeptName
(),
sum
);
parentDept
.
setPersonNum
(
sum
);
deptService
.
update
(
parentDept
);
// updateDeptPersonNum(parentDept);
}
}
}
/*
//更新父部门的人数归集
collect.entrySet().stream().forEach(item -> {
Long deptId = item.getKey();
DeptEntity deptEntity = deptService.get(deptId);
if (!ObjectUtils.isEmpty(deptEntity) && !ObjectUtils.isEmpty(deptEntity.getParentId())) {
int sum = deptService.find(new DeptQuery().parentId(deptEntity.getId())).stream().mapToInt(i -> i.getPersonNum()).sum();
DeptEntity parentDept = deptService.get(deptEntity.getParentId());
if (ObjectUtils.isEmpty(parentDept)) {
parentDept.setPersonNum(sum);
deptService.update(parentDept);
updateDeptPersonNum(parentDept);
}
}
// updateDeptPersonNum(deptEntity);
});*/
return
"ok"
;
}
public
static
void
calculateParentValue
(
DeptEntity
root
)
{
if
(
root
==
null
)
{
return
;
}
// 递归处理叶子节点
if
(
root
.
getChildren
().
isEmpty
())
{
return
;
}
// 递归计算所有子节点的值之和
int
sum
=
0
;
for
(
DeptEntity
child
:
root
.
getChildren
())
{
calculateParentValue
(
child
);
sum
+=
child
.
getPersonNum
();
}
// 更新当前节点的值为所有子节点值之和
root
.
setPersonNum
(
sum
);
}
private
void
updateDeptPersonNum
(
DeptEntity
deptEntity
)
{
if
(!
ObjectUtils
.
isEmpty
(
deptEntity
)
&&
!
ObjectUtils
.
isEmpty
(
deptEntity
.
getParentId
()))
{
int
sum
=
deptService
.
find
(
new
DeptQuery
().
parentId
(
deptEntity
.
getId
())).
stream
().
mapToInt
(
i
->
i
.
getPersonNum
()).
sum
();
DeptEntity
parentDept
=
deptService
.
get
(
deptEntity
.
getParentId
());
if
(
ObjectUtils
.
isEmpty
(
parentDept
))
{
parentDept
.
setPersonNum
(
sum
);
deptService
.
update
(
parentDept
);
updateDeptPersonNum
(
parentDept
);
}
}
}
//
@GetMapping
(
"updatePersons"
)
@UnAuth
...
...
@@ -211,7 +430,8 @@ public class TestController {
/**
* 生成模拟数据
* mortals_xhx_perform_perpose_staff_stat
* mortals_xhx_perform_perpose_staff_stat
*
* @return
*/
@GetMapping
(
"randomStatPerposeStaffData"
)
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestReq.java
0 → 100644
View file @
db41784e
package
com.mortals.xhx.busiz
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
TestReq
{
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTimeStart
;
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTimeEnd
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/EffectSaveReq.java
View file @
db41784e
...
...
@@ -27,4 +27,9 @@ public class EffectSaveReq extends BaseReq {
* 报警时间
*/
private
Date
alarmTime
;
/**
* 窗口编号
*/
private
String
windowNum
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/req/ReviewSaveReq.java
View file @
db41784e
...
...
@@ -28,6 +28,9 @@ public class ReviewSaveReq extends BaseReq {
*/
private
String
reviewDevice
;
/**
* 窗口编号
*/
private
String
windowNum
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java
View file @
db41784e
...
...
@@ -219,7 +219,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setRuleName
(
rule
.
getName
());
recordEntity
.
setCategoryId
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setCreateUserId
(
1L
);
recordEntity
.
setCreateTime
(
new
Date
());
...
...
@@ -254,11 +254,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setRuleName
(
rule
.
getName
());
recordEntity
.
setCategoryId
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setCreateUserId
(
1L
);
recordEntity
.
setCreateTime
(
new
Date
());
recordEntity
.
setWorkNum
(
staffEntity
.
getWorkNum
());
recordEntity
.
setWindowNum
(
req
.
getWindowNum
());
PerformRulesCategoryEntity
categoryEntity
=
categoryService
.
get
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
categoryEntity
==
null
?
""
:
categoryEntity
.
getName
());
PerformReviewRecordEntity
save
=
reviewRecordService
.
save
(
recordEntity
);
...
...
@@ -285,7 +286,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setRuleName
(
rule
.
getName
());
recordEntity
.
setCategoryId
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setWorkNum
(
staffEntity
.
getWorkNum
());
...
...
@@ -317,7 +318,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setRuleName
(
rule
.
getName
());
recordEntity
.
setCategoryId
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setWorkNum
(
staffEntity
.
getWorkNum
());
...
...
@@ -350,10 +351,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setRuleName
(
rule
.
getName
());
recordEntity
.
setCategoryId
(
rule
.
getCategoryId
());
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setWorkNum
(
staffEntity
.
getWorkNum
());
recordEntity
.
setWindowNum
(
req
.
getWindowNum
());
recordEntity
.
setCreateUserId
(
1L
);
recordEntity
.
setCreateTime
(
new
Date
());
PerformRulesCategoryEntity
categoryEntity
=
categoryService
.
get
(
rule
.
getCategoryId
());
...
...
@@ -384,7 +387,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity
.
setCategoryName
(
rule
.
getCategoryName
());
recordEntity
.
setWorkNum
(
staffEntity
.
getWorkNum
());
recordEntity
.
setDeductPerson
(
"
admin
"
);
recordEntity
.
setDeductPerson
(
"
系统管理员
"
);
recordEntity
.
setDeductTime
(
new
Date
());
recordEntity
.
setCreateUserId
(
1L
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java
View file @
db41784e
...
...
@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.busiz.h5.req.AppealReq
;
...
...
@@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -131,6 +133,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
query
.
setCreateTimeStart
(
appealReq
.
getApperalStartDate
());
query
.
setCreateTimeEnd
(
appealReq
.
getAppealEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
PerformAttendAppealEntity
>
result
=
appealService
.
find
(
query
,
pageInfo
,
context
);
model
.
put
(
KEY_RESULT_DATA
,
result
.
getList
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/FeedbackApiController.java
View file @
db41784e
...
...
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.busiz.h5.req.FeedbackReq
;
...
...
@@ -93,6 +94,8 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery
.
setIdList
(
feedbackIdList
);
feedbackQuery
.
setCreateTimeStart
(
feedbackReq
.
getFeedBackStartDate
());
feedbackQuery
.
setCreateTimeEnd
(
feedbackReq
.
getFeedBackEndDate
());
feedbackQuery
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
FeedbackEntity
>
result
=
feedbackService
.
find
(
feedbackQuery
,
pageAllInfo
,
null
);
model
.
put
(
PAGEINFO_KEY
,
result
.
getPageInfo
());
model
.
put
(
KEY_RESULT_DATA
,
result
.
getList
());
...
...
@@ -113,6 +116,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery
.
setCreateTimeStart
(
feedbackReq
.
getFeedBackStartDate
());
feedbackQuery
.
setCreateTimeEnd
(
feedbackReq
.
getFeedBackEndDate
());
feedbackQuery
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
FeedbackEntity
>
result
=
feedbackService
.
find
(
feedbackQuery
,
pageAllInfo
,
null
);
...
...
@@ -136,6 +140,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery
.
setIdList
(
unfinFeedbackList
);
feedbackQuery
.
setCreateTimeStart
(
feedbackReq
.
getFeedBackStartDate
());
feedbackQuery
.
setCreateTimeEnd
(
feedbackReq
.
getFeedBackEndDate
());
feedbackQuery
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
FeedbackEntity
>
result
=
feedbackService
.
find
(
feedbackQuery
,
pageAllInfo
,
null
);
model
.
put
(
PAGEINFO_KEY
,
result
.
getPageInfo
());
model
.
put
(
KEY_RESULT_DATA
,
result
.
getList
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java
View file @
db41784e
...
...
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.busiz.h5.req.InspectSaveReq
;
...
...
@@ -164,6 +165,7 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
query
.
setCreateTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setCreateUserId
(
context
.
getUser
().
getId
());
query
.
setSubMethod
(
SubMethodEnum
.
大厅巡查
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
log
.
info
(
"inspect query:{}"
,
JSONObject
.
toJSONString
(
query
));
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java
View file @
db41784e
...
...
@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.busiz.h5.req.PerformReq
;
...
...
@@ -36,10 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
...
...
@@ -182,6 +180,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckAllRecordVo
>
result
=
checkAllRecordService
.
getAllCheckRecord
(
query
,
pageInfo
);
List
<
CheckAllRecordVo
>
allCheckRecord
=
result
.
getList
();
...
...
@@ -202,6 +201,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckAttendRecordEntity
>
result
=
checkAttendRecordService
.
find
(
query
,
pageInfo
,
context
);
List
<
PerformInfo
>
collect
=
result
.
getList
().
stream
().
map
(
item
->
{
PerformInfo
performInfo
=
new
PerformInfo
();
...
...
@@ -222,6 +223,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckReviewRecordEntity
>
result
=
checkReviewRecordService
.
find
(
query
,
pageInfo
,
context
);
List
<
PerformInfo
>
collect
=
result
.
getList
().
stream
().
map
(
item
->
{
PerformInfo
performInfo
=
new
PerformInfo
();
...
...
@@ -242,6 +245,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckComplainRecordEntity
>
result
=
checkComplainRecordService
.
find
(
query
,
pageInfo
,
context
);
List
<
PerformInfo
>
collect
=
result
.
getList
().
stream
().
map
(
item
->
{
PerformInfo
performInfo
=
new
PerformInfo
();
...
...
@@ -262,6 +267,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckGoworkRecordEntity
>
result
=
checkGoworkRecordService
.
find
(
query
,
pageInfo
,
context
);
List
<
PerformInfo
>
collect
=
result
.
getList
().
stream
().
map
(
item
->
{
PerformInfo
performInfo
=
new
PerformInfo
();
...
...
@@ -282,6 +289,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query
.
setCheckTimeEnd
(
performReq
.
getPerformEndDate
());
query
.
setStaffId
(
context
.
getUser
().
getCustomerId
());
query
.
setCheckStatus
(
CheckStatusEnum
.
已处理
.
getValue
());
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
Result
<
CheckEffectRecordEntity
>
result
=
checkEffectRecordService
.
find
(
query
,
pageInfo
,
context
);
List
<
PerformInfo
>
collect
=
result
.
getList
().
stream
().
map
(
item
->
{
PerformInfo
performInfo
=
new
PerformInfo
();
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
0 → 100644
View file @
db41784e
package
com.mortals.xhx.daemon.task
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.PageUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITaskExcuteService
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.xhx.base.system.user.model.UserEntity
;
import
com.mortals.xhx.common.code.YesNoEnum
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordHikService
;
import
com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq
;
import
com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo
;
import
com.mortals.xhx.module.hik.door.service.IHikDoorService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* 同步获取下午海康门禁事件
*/
@Slf4j
@Service
(
"SyncDoorsEventAfterTask"
)
public
class
SyncDoorsEventAfterTaskImpl
implements
ITaskExcuteService
{
@Autowired
private
AttendanceRecordHikService
recordHikService
;
@Autowired
private
StaffService
staffService
;
@Autowired
private
IHikDoorService
hikDoorService
;
@Override
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
syncDoorEvents
();
calculateAttendByDay
();
}
private
void
calculateAttendByDay
()
{
Context
context
=
new
Context
();
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setCreateUserId
(
1L
);
userEntity
.
setCreateUserName
(
"system"
);
userEntity
.
setCreateTime
(
new
Date
());
context
.
setUser
(
userEntity
);
AttendanceRecordHikQuery
recordHikEntity
=
new
AttendanceRecordHikQuery
();
// Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
recordHikEntity
.
setAttendanceDateStart
(
DateUtil
.
offsetHour
(
new
Date
(),
-
5
).
toString
());
recordHikEntity
.
setAttendanceDateEnd
(
DateUtils
.
getCurrStrDate
());
try
{
recordHikService
.
addAttendanceRecordByQuery
(
recordHikEntity
,
context
);
}
catch
(
Exception
e
)
{
log
.
error
(
"计算考勤异常"
,
e
);
}
}
private
void
syncDoorEvents
()
{
DoorEventReq
doorEventReq
=
new
DoorEventReq
();
List
<
Integer
>
eventTypes
=
new
ArrayList
<>();
eventTypes
.
add
(
196885
);
eventTypes
.
add
(
196887
);
eventTypes
.
add
(
196893
);
eventTypes
.
add
(
196888
);
eventTypes
.
add
(
196889
);
eventTypes
.
add
(
196890
);
eventTypes
.
add
(
196891
);
doorEventReq
.
setEventTypes
(
eventTypes
);
// 获取当天的开始时间
Date
todayStart
=
DateUtil
.
offsetHour
(
new
Date
(),
-
5
).
toJdkDate
();
// Date todayStart = DateUtil.beginOfDay(new Date());
// 获取当天的结束时间
Date
todayEnd
=
DateUtil
.
endOfDay
(
new
Date
());
doorEventReq
.
setStartTime
(
todayStart
);
doorEventReq
.
setEndTime
(
todayEnd
);
doorEventReq
.
setPageNo
(
1
);
doorEventReq
.
setPageSize
(
1
);
Rest
<
DoorEventDataInfo
>
doorEventsRest
=
hikDoorService
.
getDoorEvents
(
doorEventReq
);
log
.
info
(
"doorEventsRest:{} msg:{}"
,
doorEventsRest
.
getCode
(),
doorEventsRest
.
getMsg
());
if
(
doorEventsRest
.
getCode
()
==
YesNoEnum
.
YES
.
getValue
())
{
//分页获取考勤数据
Integer
total
=
doorEventsRest
.
getData
().
getTotal
();
int
pageCount
=
PageUtil
.
totalPage
(
total
,
1000
);
for
(
int
i
=
1
;
i
<=
pageCount
;
i
++)
{
doorEventReq
.
setPageNo
(
i
);
doorEventReq
.
setPageSize
(
1000
);
doorEventsRest
=
hikDoorService
.
getDoorEvents
(
doorEventReq
);
log
.
info
(
"doorEventsRest:{} msg:{},page:{}"
,
doorEventsRest
.
getCode
(),
doorEventsRest
.
getMsg
(),
doorEventReq
.
getPageNo
());
getDoorEvents
(
doorEventsRest
);
}
}
}
private
void
getDoorEvents
(
Rest
<
DoorEventDataInfo
>
doorEventsRest
)
{
//同步当前考勤数据
List
<
AttendanceRecordHikEntity
>
attRecords
=
doorEventsRest
.
getData
().
getList
().
stream
().
map
(
item
->
{
AttendanceRecordHikEntity
recordHikEntity
=
new
AttendanceRecordHikEntity
();
recordHikEntity
.
initAttrValue
();
StaffEntity
staffCache
=
staffService
.
getExtCache
(
StrUtil
.
padPre
(
item
.
getJobNo
(),
8
,
"0"
));
if
(
ObjectUtils
.
isEmpty
(
staffCache
))
{
log
.
info
(
"staff is null !staffCode:{}"
,
item
.
getJobNo
());
return
null
;
}
recordHikEntity
.
setStaffId
(
staffCache
.
getId
());
recordHikEntity
.
setStaffName
(
staffCache
.
getName
());
recordHikEntity
.
setWorkNum
(
staffCache
.
getWorkNum
());
recordHikEntity
.
setDeptId
(
staffCache
.
getDeptId
());
recordHikEntity
.
setDeptName
(
staffCache
.
getDeptName
());
recordHikEntity
.
setPositionId
(
staffCache
.
getPositionId
());
recordHikEntity
.
setPositionName
(
staffCache
.
getPositionName
());
recordHikEntity
.
setAttendanceDate
(
item
.
getEventTime
());
recordHikEntity
.
setAttendanceAddress
(
item
.
getDoorName
());
recordHikEntity
.
setEventSource
(
"门禁点"
);
recordHikEntity
.
setRemark
(
item
.
getEventId
());
recordHikEntity
.
setCreateTime
(
new
Date
());
recordHikEntity
.
setCreateUserName
(
"系统管理员"
);
recordHikEntity
.
setCreateUserId
(
1L
);
return
recordHikEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
log
.
info
(
"attRecords size:{}"
,
attRecords
.
size
());
List
<
String
>
eventIds
=
attRecords
.
parallelStream
().
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
)
&&
!
ObjectUtils
.
isEmpty
(
f
.
getRemark
())).
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toList
());
//查询当天考勤记录是否有重复的 有的 则不添加
AttendanceRecordHikQuery
recordHikQuery
=
new
AttendanceRecordHikQuery
();
recordHikQuery
.
setAttendanceDateStart
(
DateUtil
.
format
(
DateUtil
.
beginOfDay
(
new
Date
()),
"yyyy-MM-dd"
));
recordHikQuery
.
setAttendanceDateEnd
(
DateUtil
.
format
(
DateUtil
.
beginOfDay
(
new
Date
()),
"yyyy-MM-dd"
));
recordHikQuery
.
setRemarkList
(
eventIds
);
Set
<
String
>
eventIdSet
=
recordHikService
.
find
(
recordHikQuery
).
parallelStream
().
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toSet
());
//去重 时分秒打卡的 也要去掉重复。
List
<
AttendanceRecordHikEntity
>
saveRecordList
=
attRecords
.
stream
().
filter
(
f
->
!
eventIdSet
.
contains
(
f
.
getRemark
())).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
saveRecordList
))
{
//单个插入 去掉重复时间段的打卡记录
for
(
AttendanceRecordHikEntity
recordHikEntity
:
saveRecordList
)
{
try
{
recordHikService
.
save
(
recordHikEntity
);
}
catch
(
Exception
e
)
{
log
.
error
(
"基础考勤数据保存异常"
,
e
.
getMessage
());
}
}
// recordHikService.save(saveRecordList);
}
log
.
info
(
"saveRecordList size:{}"
,
saveRecordList
.
size
());
}
@Override
public
void
stopTask
(
ITask
task
)
throws
AppException
{
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
View file @
db41784e
...
...
@@ -3,8 +3,6 @@ package com.mortals.xhx.daemon.task;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.PageUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
...
...
@@ -22,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.time.Year
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -66,10 +62,13 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
userEntity
.
setCreateTime
(
new
Date
());
context
.
setUser
(
userEntity
);
AttendanceRecordHikQuery
recordHikEntity
=
new
AttendanceRecordHikQuery
();
recordHikEntity
.
setAttendanceDateStart
(
DateUtils
.
getCurrStrDate
());
// Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
recordHikEntity
.
setAttendanceDateStart
(
DateUtil
.
offsetHour
(
new
Date
(),
-
5
).
toString
());
recordHikEntity
.
setAttendanceDateEnd
(
DateUtils
.
getCurrStrDate
());
try
{
recordHikService
.
addAttendanceRecord
(
recordHikEntity
,
context
);
recordHikService
.
addAttendanceRecord
ByQuery
(
recordHikEntity
,
context
);
}
catch
(
Exception
e
)
{
log
.
error
(
"计算考勤异常"
,
e
);
}
...
...
@@ -87,7 +86,8 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
eventTypes
.
add
(
196891
);
doorEventReq
.
setEventTypes
(
eventTypes
);
// 获取当天的开始时间
Date
todayStart
=
DateUtil
.
beginOfDay
(
new
Date
());
Date
todayStart
=
DateUtil
.
offsetHour
(
new
Date
(),
-
5
).
toJdkDate
();
// Date todayStart = DateUtil.beginOfDay(new Date());
// 获取当天的结束时间
Date
todayEnd
=
DateUtil
.
endOfDay
(
new
Date
());
doorEventReq
.
setStartTime
(
todayStart
);
...
...
@@ -118,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity
.
initAttrValue
();
StaffEntity
staffCache
=
staffService
.
getExtCache
(
StrUtil
.
padPre
(
item
.
getJobNo
(),
8
,
"0"
));
if
(
ObjectUtils
.
isEmpty
(
staffCache
))
{
log
.
info
(
"staff is null !staffCode:{}"
,
item
.
getJobNo
());
log
.
info
(
"staff is null !staffCode:{}"
,
item
.
getJobNo
());
return
null
;
}
...
...
@@ -135,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity
.
setEventSource
(
"门禁点"
);
recordHikEntity
.
setRemark
(
item
.
getEventId
());
recordHikEntity
.
setCreateTime
(
new
Date
());
recordHikEntity
.
setCreateUserName
(
"
system
"
);
recordHikEntity
.
setCreateUserName
(
"
系统管理员
"
);
recordHikEntity
.
setCreateUserId
(
1L
);
return
recordHikEntity
;
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
log
.
info
(
"attRecords size:{}"
,
attRecords
.
size
());
List
<
String
>
eventIds
=
attRecords
.
parallelStream
().
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
)
&&
!
ObjectUtils
.
isEmpty
(
f
.
getRemark
())).
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toList
());
//查询当天考勤记录是否有重复的 有的 则不添加
...
...
@@ -151,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikQuery
.
setRemarkList
(
eventIds
);
Set
<
String
>
eventIdSet
=
recordHikService
.
find
(
recordHikQuery
).
parallelStream
().
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toSet
());
//去重 时分秒打卡的 也要去掉重复。
List
<
AttendanceRecordHikEntity
>
saveRecordList
=
attRecords
.
stream
().
filter
(
f
->
!
eventIdSet
.
contains
(
f
.
getRemark
())).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
saveRecordList
))
{
recordHikService
.
save
(
saveRecordList
);
//单个插入 去掉重复时间段的打卡记录
for
(
AttendanceRecordHikEntity
recordHikEntity
:
saveRecordList
)
{
try
{
recordHikService
.
save
(
recordHikEntity
);
}
catch
(
Exception
e
)
{
log
.
error
(
"基础考勤数据保存异常"
,
e
.
getMessage
());
}
}
// recordHikService.save(saveRecordList);
}
log
.
info
(
"saveRecordList size:{}"
,
saveRecordList
.
size
());
}
...
...
@@ -163,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
public
void
stopTask
(
ITask
task
)
throws
AppException
{
}
public
static
void
main
(
String
[]
args
)
{
// 获取当前时间的小时数
int
hour
=
DateUtil
.
hour
(
new
Date
(),
true
);
// 获取当前时间所在小时的开始时间和结束时间
Date
startTime
=
DateUtil
.
beginOfHour
(
new
Date
());
Date
endTime
=
DateUtil
.
endOfHour
(
new
Date
());
// 格式化时间为指定格式
String
startTimeStr
=
DateUtil
.
format
(
startTime
,
"yyyy-MM-dd HH:00:00"
);
String
endTimeStr
=
DateUtil
.
format
(
endTime
,
"yyyy-MM-dd HH:59:59"
);
// 输出结果
System
.
out
.
println
(
"当前时间所在小时的开始时间:"
+
startTimeStr
);
System
.
out
.
println
(
"当前时间所在小时的结束时间:"
+
endTimeStr
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
View file @
db41784e
...
...
@@ -74,7 +74,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
for
(
PersonInfo
personInfo
:
personInfoList
)
{
StaffEntity
staffEntity
=
staffService
.
getExtCache
(
StrUtil
.
padPre
(
personInfo
.
getJobNo
(),
8
,
"0"
));
DeptEntity
deptEntity
=
deptService
.
selectOne
(
new
DeptQuery
().
deptCode
(
personInfo
.
getOrgIndexCode
()));
// AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
// AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
// AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId()));
//判断本地数据是否为空
if
(
ObjectUtils
.
isEmpty
(
staffEntity
))
{
...
...
@@ -106,7 +106,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
balanceEntity
.
setCreateUserId
(
1L
);
balanceEntity
.
setCreateTime
(
new
Date
());
balanceService
.
save
(
balanceEntity
);
//AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
//AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
AttendanceStatEntity
attendanceStatEntity
=
new
AttendanceStatEntity
();
attendanceStatEntity
.
initAttrValue
();
...
...
@@ -139,16 +139,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
attendanceStatEntity
.
setHomeLeave
(
balanceEntity
.
getHomeLeave
());
attendanceStatEntity
.
setPersonalLeave
(
balanceEntity
.
getPersonalLeaveDays
());
attendanceStatService
.
save
(
attendanceStatEntity
);
//统计各级部门员工数量 todo 优化统计
String
ancestor
=
deptEntity
.
getAncestors
().
split
(
","
,
2
)[
1
];
String
[]
ancestors
=
ancestor
.
split
(
","
);
for
(
String
newAncestor
:
ancestors
)
{
DeptEntity
deptEntity2
=
deptService
.
get
(
Long
.
valueOf
(
newAncestor
));
if
(
Objects
.
nonNull
(
deptEntity2
))
{
deptEntity2
.
setPersonNum
(
deptEntity2
.
getPersonNum
()
+
1
);
deptService
.
update
(
deptEntity2
);
}
}
}
else
{
//更新
if
(!
ObjectUtils
.
isEmpty
(
deptEntity
))
{
...
...
@@ -165,16 +156,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity
.
setUpdateUserId
(
1L
);
staffEntity
.
setUpdateTime
(
new
Date
());
staffService
.
update
(
staffEntity
);
//统计各级部门员工数量
String
ancestor
=
deptEntity
.
getAncestors
().
split
(
","
,
2
)[
1
];
String
[]
ancestors
=
ancestor
.
split
(
","
);
for
(
String
newAncestor
:
ancestors
)
{
DeptEntity
deptEntity2
=
deptService
.
get
(
Long
.
valueOf
(
newAncestor
));
if
(
Objects
.
nonNull
(
deptEntity2
))
{
deptEntity2
.
setPersonNum
(
deptEntity2
.
getPersonNum
()
+
1
);
deptService
.
update
(
deptEntity2
);
}
}
}
}
}
...
...
@@ -220,6 +202,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
}
}
}
@Override
public
void
stopTask
(
ITask
task
)
throws
AppException
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
View file @
db41784e
...
...
@@ -20,6 +20,9 @@ import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity;
import
com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService
;
import
com.mortals.xhx.module.dingding.personal.service.IDingPersonService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.logging.Log
;
import
org.apache.poi.ss.formula.functions.T
;
...
...
@@ -54,7 +57,8 @@ public class DingMessageController {
private
IDingPersonService
dingPersonService
;
@Autowired
private
AttendanceLeaveRecordService
attendanceLeaveRecordService
;
@Autowired
private
StaffService
staffService
;
/**
* appKey
...
...
@@ -109,136 +113,170 @@ public class DingMessageController {
AttendanceLeaveRecordEntity
leaveRecordEntity
=
new
AttendanceLeaveRecordEntity
();
leaveRecordEntity
.
initAttrValue
();
leaveRecordEntity
.
setRemark
(
processInstanceId
);
//将钉钉的事物id作为备注填入数据库
leaveRecordEntity
.
setLeavePersonId
(
Long
.
parseLong
(
result
.
getOriginatorUserId
()));
leaveRecordEntity
.
setLeavePerson
(
result
.
getTitle
().
substring
(
0
,
result
.
getTitle
().
indexOf
(
"提交"
)));
leaveRecordEntity
.
setDeptId
(
Long
.
parseLong
(
result
.
getOriginatorDeptId
()));
leaveRecordEntity
.
setDeptName
(
result
.
getOriginatorDeptName
());
Rest
<
String
>
mobileRest
=
dingPersonService
.
getPersonById
(
result
.
getOriginatorUserId
());
if
(
mobileRest
.
getCode
()
==
Rest
.
SUCCESS
)
{
String
mobile
=
mobileRest
.
getData
();
StaffEntity
staffEntity
=
staffService
.
selectOne
(
new
StaffQuery
().
phoneNumber
(
mobile
));
if
(!
ObjectUtils
.
isEmpty
(
staffEntity
)){
leaveRecordEntity
.
setLeavePersonId
(
staffEntity
.
getId
());
leaveRecordEntity
.
setLeavePerson
(
staffEntity
.
getName
());
leaveRecordEntity
.
setDeptId
(
staffEntity
.
getDeptId
());
leaveRecordEntity
.
setDeptName
(
staffEntity
.
getDeptName
());
leaveRecordEntity
.
setPhoneNumber
(
staffEntity
.
getPhoneNumber
());
if
(
result
.
getTasks
().
size
()
>
0
){
Date
startTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getCreateTime
());
Date
endTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getFinishTime
());
leaveRecordEntity
.
setStartTime
(
startTime
);
leaveRecordEntity
.
setEndTime
(
endTime
);
leaveRecordEntity
.
setDuration
((
int
)
((
endTime
.
getTime
()
-
startTime
.
getTime
())/
1000
));
}
if
(
result
.
getFormComponentValues
().
size
()
>
0
){
JSONArray
jsonArray
=
JSONArray
.
parseArray
(
result
.
getFormComponentValues
().
get
(
0
).
getValue
());
if
(
jsonArray
.
size
()
>
0
){
Date
startTime1
=
dateFormat
(
jsonArray
.
get
(
0
).
toString
());
leaveRecordEntity
.
setStartTime
(
startTime1
);
}
if
(
jsonArray
.
size
()
>
1
){
Date
endTime1
=
dateFormat
(
jsonArray
.
get
(
1
).
toString
());
leaveRecordEntity
.
setEndTime
(
endTime1
);
}
if
(
jsonArray
.
size
()
>
2
){
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
));
}
if
(
jsonArray
.
size
()
>
4
){
switch
(
jsonArray
.
get
(
4
).
toString
()){
case
"调休"
:
leaveRecordEntity
.
setLeaveType
(
2
);
break
;
case
"病假"
:
leaveRecordEntity
.
setLeaveType
(
3
);
break
;
case
"年假"
:
leaveRecordEntity
.
setLeaveType
(
4
);
break
;
case
"产假"
:
leaveRecordEntity
.
setLeaveType
(
5
);
break
;
case
"陪产假"
:
leaveRecordEntity
.
setLeaveType
(
6
);
break
;
case
"婚假"
:
leaveRecordEntity
.
setLeaveType
(
7
);
break
;
case
"例假"
:
leaveRecordEntity
.
setLeaveType
(
8
);
break
;
case
"哺乳假"
:
leaveRecordEntity
.
setLeaveType
(
9
);
break
;
case
"丧假"
:
leaveRecordEntity
.
setLeaveType
(
10
);
break
;
case
"回单位"
:
leaveRecordEntity
.
setLeaveType
(
11
);
break
;
case
"因公请假"
:
leaveRecordEntity
.
setLeaveType
(
12
);
break
;
case
"外出勘验"
:
leaveRecordEntity
.
setLeaveType
(
13
);
break
;
case
"值班补班"
:
leaveRecordEntity
.
setLeaveType
(
14
);
break
;
case
"体检"
:
leaveRecordEntity
.
setLeaveType
(
15
);
break
;
case
"隔离"
:
leaveRecordEntity
.
setLeaveType
(
16
);
break
;
case
"因公外出"
:
leaveRecordEntity
.
setLeaveType
(
17
);
break
;
case
"公休"
:
leaveRecordEntity
.
setLeaveType
(
18
);
break
;
case
"育儿假"
:
leaveRecordEntity
.
setLeaveType
(
19
);
break
;
case
"调回单位"
:
leaveRecordEntity
.
setLeaveType
(
20
);
break
;
case
"探亲假"
:
leaveRecordEntity
.
setLeaveType
(
21
);
break
;
default
:
leaveRecordEntity
.
setLeaveType
(
1
);
//默认事假
break
;
}
}
}
else
if
(
result
.
getFormComponentValues
().
size
()
>
1
)
{
//请假理由
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResultFormComponentValues
resonEntity
=
result
.
getFormComponentValues
().
get
(
1
);
if
(
resonEntity
.
getName
().
equals
(
"请假事由"
)){
leaveRecordEntity
.
setReason
(
resonEntity
.
getValue
());
}
}
else
if
(
result
.
getFormComponentValues
().
size
()
>
2
)
{
//上传的附件
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResultFormComponentValues
picEntity
=
result
.
getFormComponentValues
().
get
(
2
);
if
(
picEntity
.
getName
().
equals
(
"图片"
)
&&
picEntity
.
getValue
()
!=
null
){
leaveRecordEntity
.
setReason
(
picEntity
.
getValue
());
}
}
if
(
result
.
getTasks
().
size
()
>
0
){
Date
startTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getCreateTime
());
Date
endTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getFinishTime
());
leaveRecordEntity
.
setStartTime
(
startTime
);
leaveRecordEntity
.
setEndTime
(
endTime
);
leaveRecordEntity
.
setDuration
((
int
)
((
endTime
.
getTime
()
-
startTime
.
getTime
())/
1000
));
}
if
(
result
.
getFormComponentValues
().
size
()
>
0
){
JSONArray
jsonArray
=
JSONArray
.
parseArray
(
result
.
getFormComponentValues
().
get
(
0
).
getValue
());
if
(
jsonArray
.
size
()
>
0
){
Date
startTime1
=
dateFormat
(
jsonArray
.
get
(
0
).
toString
());
leaveRecordEntity
.
setStartTime
(
startTime1
);
}
if
(
jsonArray
.
size
()
>
1
){
Date
endTime1
=
dateFormat
(
jsonArray
.
get
(
1
).
toString
());
leaveRecordEntity
.
setEndTime
(
endTime1
);
}
if
(
jsonArray
.
size
()
>
2
){
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
));
}
if
(
jsonArray
.
size
()
>
4
){
switch
(
jsonArray
.
get
(
4
).
toString
()){
case
"调休"
:
leaveRecordEntity
.
setLeaveType
(
2
);
break
;
case
"病假"
:
leaveRecordEntity
.
setLeaveType
(
3
);
break
;
case
"年假"
:
leaveRecordEntity
.
setLeaveType
(
4
);
break
;
case
"产假"
:
leaveRecordEntity
.
setLeaveType
(
5
);
break
;
case
"陪产假"
:
leaveRecordEntity
.
setLeaveType
(
6
);
break
;
case
"婚假"
:
leaveRecordEntity
.
setLeaveType
(
7
);
break
;
case
"例假"
:
leaveRecordEntity
.
setLeaveType
(
8
);
break
;
case
"哺乳假"
:
leaveRecordEntity
.
setLeaveType
(
9
);
break
;
case
"丧假"
:
leaveRecordEntity
.
setLeaveType
(
10
);
break
;
case
"回单位"
:
leaveRecordEntity
.
setLeaveType
(
11
);
break
;
case
"因公请假"
:
leaveRecordEntity
.
setLeaveType
(
12
);
break
;
case
"外出勘验"
:
leaveRecordEntity
.
setLeaveType
(
13
);
break
;
case
"值班补班"
:
leaveRecordEntity
.
setLeaveType
(
14
);
break
;
case
"体检"
:
leaveRecordEntity
.
setLeaveType
(
15
);
break
;
case
"隔离"
:
leaveRecordEntity
.
setLeaveType
(
16
);
break
;
case
"因公外出"
:
leaveRecordEntity
.
setLeaveType
(
17
);
break
;
case
"公休"
:
leaveRecordEntity
.
setLeaveType
(
18
);
break
;
case
"育儿假"
:
leaveRecordEntity
.
setLeaveType
(
19
);
break
;
case
"调回单位"
:
leaveRecordEntity
.
setLeaveType
(
20
);
break
;
case
"探亲假"
:
leaveRecordEntity
.
setLeaveType
(
21
);
break
;
default
:
leaveRecordEntity
.
setLeaveType
(
1
);
//默认事假
break
;
if
(
result
.
getStatus
().
compareToIgnoreCase
(
"NEW"
)
==
0
||
result
.
getStatus
().
compareToIgnoreCase
(
"RUNNING"
)
==
0
){
leaveRecordEntity
.
setProcessStatus
(
1
);
}
else
if
(
result
.
getStatus
().
compareToIgnoreCase
(
"COMPLETED"
)
==
0
||
result
.
getStatus
().
compareToIgnoreCase
(
"CANCELED"
)
==
0
||
result
.
getStatus
().
compareToIgnoreCase
(
"TERMINATED"
)
==
0
){
leaveRecordEntity
.
setProcessStatus
(
2
);
}
if
(
result
.
getResult
().
compareToIgnoreCase
(
"AGREE"
)
==
0
){
leaveRecordEntity
.
setAuditResult
(
1
);
}
else
{
leaveRecordEntity
.
setAuditResult
(
2
);
}
}
log
.
info
(
"钉钉返回的result:"
+
result
.
getResult
()+
"\nauditresult:"
+
leaveRecordEntity
.
getAuditResult
());
leaveRecordEntity
.
setAuditDesc
(
result
.
getOperationRecords
().
get
(
0
).
getRemark
());
}
AttendanceLeaveRecordEntity
recordEntity
=
attendanceLeaveRecordService
.
selectOne
(
new
AttendanceLeaveRecordQuery
().
remark
(
processInstanceId
));
if
(
ObjectUtils
.
isEmpty
(
recordEntity
)){
if
(
result
.
getStatus
().
equals
(
"NEW"
)
||
result
.
getStatus
().
equals
(
"RUNNING"
)){
leaveRecordEntity
.
setProcessStatus
(
1
);
}
else
if
(
result
.
getStatus
().
equals
(
"COMPLETED"
)
||
result
.
getStatus
().
equals
(
"CANCELED"
)
||
result
.
getStatus
().
equals
(
"TERMINATED"
)){
leaveRecordEntity
.
setProcessStatus
(
2
);
}
leaveRecordEntity
.
setCreateTime
(
new
Date
());
leaveRecordEntity
.
setCreateUserId
(
1L
);
attendanceLeaveRecordService
.
save
(
leaveRecordEntity
);
}
else
{
leaveRecordEntity
.
setId
(
recordEntity
.
getId
());
if
(
result
.
getResult
().
equals
(
"AGREE"
)){
leaveRecordEntity
.
setAuditResult
(
1
);
}
else
{
leaveRecordEntity
.
setAuditResult
(
2
);
}
leaveRecordEntity
.
setUpdateUserId
(
1L
);
leaveRecordEntity
.
setUpdateTime
(
new
Date
()
);
attendanceLeaveRecordService
.
update
(
leaveRecordEntity
);
}
leaveRecordEntity
.
setAuditDesc
(
result
.
getOperationRecords
().
get
(
0
).
getRemark
());
AttendanceLeaveRecordEntity
recordEntity
=
attendanceLeaveRecordService
.
selectOne
(
new
AttendanceLeaveRecordQuery
().
remark
(
processInstanceId
));
if
(
ObjectUtils
.
isEmpty
(
recordEntity
)){
leaveRecordEntity
.
setCreateTime
(
new
Date
());
leaveRecordEntity
.
setCreateUserId
(
1L
);
attendanceLeaveRecordService
.
save
(
leaveRecordEntity
);
}
else
{
leaveRecordEntity
.
setId
(
recordEntity
.
getId
());
}
else
{
log
.
info
(
"该号码("
+
mobile
+
")未在本系统绑定"
);
}
leaveRecordEntity
.
setUpdateUserId
(
1L
);
leaveRecordEntity
.
setUpdateTime
(
new
Date
());
attendanceLeaveRecordService
.
update
(
leaveRecordEntity
);
}
else
{
log
.
info
(
"根据id在钉钉平台查询电话失败"
+
mobileRest
.
getMsg
());
}
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java
View file @
db41784e
package
com.mortals.xhx.module.attendance.model
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.ArrayList
;
import
cn.hutool.core.date.DateUtil
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
...
...
@@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/**
* 员工姓名
*/
@Excel
(
name
=
"员工姓名"
)
private
String
staffName
;
/**
* 所属部门
...
...
@@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/**
* 所属部门名称
*/
@Excel
(
name
=
"部门名称"
)
private
String
deptName
;
/**
* 回单位(天)
...
...
@@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this
.
earlyLeaveMeeting
=
BigDecimal
.
valueOf
(
0
);
this
.
year
=
-
1
;
this
.
year
=
DateUtil
.
year
(
new
Date
())
;
this
.
month
=
-
1
;
this
.
month
=
DateUtil
.
month
(
new
Date
())+
1
;
this
.
day
=
-
1
;
this
.
day
=
DateUtil
.
dayOfMonth
(
new
Date
())
;
this
.
remark
=
""
;
...
...
@@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this
.
afternoonTimes
=
0
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
DateUtil
.
dayOfMonth
(
new
Date
()));
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
View file @
db41784e
package
com.mortals.xhx.module.attendance.service
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
java.util.List
;
/**
* AttendanceRecordHikService
*
...
...
@@ -13,10 +16,29 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
*/
public
interface
AttendanceRecordHikService
extends
ICRUDService
<
AttendanceRecordHikEntity
,
Long
>{
AttendanceRecordHikDao
getDao
();
/**
* 根据查询条件生成打卡记录
* @param attendanceRecordHikQuery
*/
void
addAttendanceRecordByQuery
(
AttendanceRecordHikEntity
attendanceRecordHikQuery
,
Context
context
)
throws
Exception
;
/**
*
将原始数据导入打卡记录表
* @param
e
ntity
*
根据查询条件生成打卡记录
* @param
hikE
ntity
*/
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
;
void
addAttendanceRecord
(
AttendanceRecordHikEntity
hikEntity
,
Context
context
)
throws
Exception
;
/**
* 根据查原始记录列表生成打卡记录
* @param hikEntityList
*/
void
addAttendanceRecordList
(
List
<
AttendanceRecordHikEntity
>
hikEntityList
,
Context
context
)
throws
Exception
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
db41784e
...
...
@@ -6,6 +6,7 @@ import com.mortals.framework.service.IUser;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.common.code.*
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.service.*
;
import
com.mortals.xhx.module.dept.service.DeptService
;
...
...
@@ -14,6 +15,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
...
...
@@ -60,16 +62,200 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
@Autowired
private
AttendanceRecordErrorService
errorService
;
@Override
public
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
{
public
void
addAttendanceRecord
(
AttendanceRecordHikEntity
hikEntity
,
Context
context
)
throws
Exception
{
List
<
AttendanceRecordHikEntity
>
hikEntityList
=
new
ArrayList
<>();
addAttendanceRecordList
(
hikEntityList
,
context
);
}
List
<
AttendanceRecordHikEntity
>
hikEntityList
=
attendanceRecordHikService
.
find
(
entity
);
@Override
public
void
addAttendanceRecordByQuery
(
AttendanceRecordHikEntity
attendanceRecordHikQuery
,
Context
context
)
throws
Exception
{
List
<
AttendanceRecordHikEntity
>
hikEntityList
=
attendanceRecordHikService
.
find
(
attendanceRecordHikQuery
);
addAttendanceRecordList
(
hikEntityList
,
context
);
}
public
void
addAttendanceRecordList
(
List
<
AttendanceRecordHikEntity
>
hikEntityList
,
Context
context
)
throws
Exception
{
//对考勤数据根据考勤时间进行排序
List
<
AttendanceRecordHikEntity
>
collect
=
hikEntityList
.
stream
().
sorted
(
Comparator
.
comparing
(
AttendanceRecordHikEntity:
:
getAttendanceDate
)).
collect
(
Collectors
.
toList
());
//根据工号对考勤数据进行分组
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
listMap
=
collect
.
stream
().
collect
(
Collectors
.
groupingBy
(
AttendanceRecordHikEntity:
:
getWorkNum
));
//Map<String, Map<String, List<AttendanceRecordHikEntity>>> groupMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum, Collectors.groupingBy(x -> com.mortals.framework.util.DateUtils.getDateTimeStr(x.getAttendanceDate(), "yyyy-MM-dd"))));
//map遍历.先把所有键取出来
for
(
Map
.
Entry
<
String
,
List
<
AttendanceRecordHikEntity
>>
itemEntry
:
listMap
.
entrySet
())
{
String
workNum
=
itemEntry
.
getKey
();
List
<
AttendanceRecordHikEntity
>
recordHikEntityList
=
itemEntry
.
getValue
();
//对按照工号分组了的数据recordHikEntityList进行时间分组
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
dateRecordMap
=
recordHikEntityList
.
stream
().
collect
(
Collectors
.
groupingBy
(
hikEntity
->
DateUtil
.
formatDate
(
hikEntity
.
getAttendanceDate
())));
for
(
Map
.
Entry
<
String
,
List
<
AttendanceRecordHikEntity
>>
dateEntry
:
dateRecordMap
.
entrySet
())
{
String
dateStr
=
dateEntry
.
getKey
();
List
<
AttendanceRecordHikEntity
>
attendanceRecordHikEntities
=
dateEntry
.
getValue
();
//对相同工号的人员进行遍历判断考勤规则
AttendanceRecordEntity
attendanceRecordEntity
=
new
AttendanceRecordEntity
();
attendanceRecordEntity
.
initAttrValue
();
List
<
AttendanceRecordDetailEntity
>
detailEntityList
=
new
ArrayList
<>();
for
(
AttendanceRecordHikEntity
item
:
attendanceRecordHikEntities
)
{
//对主表的对象进行赋值
attendanceRecordEntity
.
setStaffId
(
item
.
getStaffId
());
attendanceRecordEntity
.
setStaffName
(
item
.
getStaffName
());
attendanceRecordEntity
.
setDeptId
(
item
.
getDeptId
());
attendanceRecordEntity
.
setDeptName
(
item
.
getDeptName
());
attendanceRecordEntity
.
setPositionId
(
item
.
getPositionId
());
attendanceRecordEntity
.
setPositionName
(
item
.
getPositionName
());
attendanceRecordEntity
.
setWorkNum
(
item
.
getWorkNum
());
attendanceRecordEntity
.
setAttendanceDate
(
item
.
getAttendanceDate
());
attendanceRecordEntity
.
setCreateTime
(
new
Date
());
attendanceRecordEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
//获取考勤打卡时间
Date
attendanceDate
=
item
.
getAttendanceDate
();
//通过工号查询员工信息
StaffEntity
staffEntity
=
staffService
.
getExtCache
(
StrUtil
.
padPre
(
item
.
getWorkNum
(),
8
,
"0"
));
if
(
ObjectUtils
.
isEmpty
(
staffEntity
))
{
log
.
info
(
"staffEntity is null ,workNum:{}"
,
StrUtil
.
padPre
(
item
.
getWorkNum
(),
8
,
"0"
));
continue
;
}
//通过员工id查询考勤组人员信息
List
<
AttendanceGroupStaffEntity
>
attendanceGroupStaffEntities
=
attendanceGroupStaffService
.
find
(
new
AttendanceGroupStaffQuery
().
staffId
(
staffEntity
.
getId
()));
//查询该考勤人员,如果查出来的考勤人员信息list长度为1 则该考勤人员只有一个考勤组
if
(!
ObjectUtils
.
isEmpty
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()
==
1
)
checkAttendGroupByOne
(
attendanceRecordEntity
,
detailEntityList
,
attendanceDate
,
attendanceGroupStaffEntities
.
get
(
0
),
context
);
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
if
(
StringUtils
.
isNotNull
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()
>
1
)
{
for
(
AttendanceGroupStaffEntity
groupStaffEntity
:
attendanceGroupStaffEntities
)
{
//多考勤组 todo 暂时和单一覆盖
checkAttendGroupByOne
(
attendanceRecordEntity
,
detailEntityList
,
attendanceDate
,
groupStaffEntity
,
context
);
}
}
}
//处理异常打卡,所以异常打卡的 都新增一条记录
List
<
AttendanceRecordErrorEntity
>
errorEntityList
=
new
ArrayList
<>();
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
detailEntityList
)
{
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//SimpleDateFormat sdft = new SimpleDateFormat("HH:mm:ss");
Integer
goWorkResult
=
recordDetailEntity
.
getGoWorkResult
();
Integer
offWorkResult
=
recordDetailEntity
.
getOffWorkResult
();
//判断上班
if
(
GoWorkResultEnum
.
正常
.
getValue
()
!=
goWorkResult
)
{
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
BeanUtils
.
copyProperties
(
attendanceRecordEntity
,
errorEntity
,
new
String
[]{
"id"
});
Date
goWorkDate
=
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getGoWorkDate
();
errorEntity
.
setGoOffDateTime
(
goWorkDate
);
if
(!
ObjectUtils
.
isEmpty
(
recordDetailEntity
.
getGoWorkDate
()))
{
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getGoWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getGoWorkDate
());
}
else
{
errorEntity
.
setErrorDateTime
(
goWorkDate
);
}
if
(
GoWorkResultEnum
.
早退
.
getValue
()
==
recordDetailEntity
.
getGoWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
早退
.
getValue
());
}
if
(
GoWorkResultEnum
.
迟到
.
getValue
()
==
recordDetailEntity
.
getGoWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
迟到
.
getValue
());
}
if
(
GoWorkResultEnum
.
缺卡
.
getValue
()
==
recordDetailEntity
.
getGoWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
缺卡
.
getValue
());
}
errorEntity
.
setProcessStatus
(
YesNoEnum
.
NO
.
getValue
());
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
errorEntityList
.
add
(
errorEntity
);
}
//判断下班
if
(
OffWorkResultEnum
.
正常
.
getValue
()
!=
offWorkResult
)
{
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
errorEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
attendanceRecordEntity
,
errorEntity
,
new
String
[]{
"id"
});
Date
offWorkDate
=
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getOffWorkDate
();
errorEntity
.
setGoOffDateTime
(
offWorkDate
);
if
(!
ObjectUtils
.
isEmpty
(
recordDetailEntity
.
getGoWorkDate
()))
{
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getGoWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getGoWorkDate
());
}
else
{
errorEntity
.
setErrorDateTime
(
offWorkDate
);
}
if
(
OffWorkResultEnum
.
缺卡
.
getValue
()
==
recordDetailEntity
.
getOffWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
缺卡
.
getValue
());
}
if
(
OffWorkResultEnum
.
早退
.
getValue
()
==
recordDetailEntity
.
getOffWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
早退
.
getValue
());
}
if
(
OffWorkResultEnum
.
迟到
.
getValue
()
==
recordDetailEntity
.
getOffWorkResult
())
{
errorEntity
.
setErrorStatus
(
ErrorStatusEnum
.
迟到
.
getValue
());
}
errorEntity
.
setProcessStatus
(
YesNoEnum
.
NO
.
getValue
());
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
errorEntityList
.
add
(
errorEntity
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
detailEntityList
))
{
if
(!
ObjectUtils
.
isEmpty
(
detailEntityList
))
{
errorService
.
save
(
errorEntityList
,
context
);
}
attendanceRecordEntity
.
setShiftsName
(
detailEntityList
.
get
(
0
).
getShiftsName
());
attendanceRecordEntity
.
setShiftsId
(
detailEntityList
.
get
(
0
).
getShiftsId
());
attendanceRecordEntity
.
setAttendanceRecordDetailList
(
detailEntityList
);
//判断签到 只要存在一次正常打卡详细记录 就判断签到
for
(
AttendanceRecordDetailEntity
detailEntity
:
detailEntityList
)
{
if
(
GoWorkResultEnum
.
正常
.
getValue
()
==
detailEntity
.
getGoWorkResult
()
||
GoWorkResultEnum
.
迟到
.
getValue
()
==
detailEntity
.
getOffWorkResult
())
{
attendanceRecordEntity
.
setSignInResult
(
YesNoEnum
.
YES
.
getValue
());
break
;
}
}
for
(
AttendanceRecordDetailEntity
detailEntity
:
detailEntityList
)
{
if
(
OffWorkResultEnum
.
正常
.
getValue
()
==
detailEntity
.
getOffWorkResult
()
||
OffWorkResultEnum
.
早退
.
getValue
()
==
detailEntity
.
getOffWorkResult
())
{
attendanceRecordEntity
.
setSignOutResult
(
YesNoEnum
.
YES
.
getValue
());
break
;
}
}
for
(
AttendanceRecordDetailEntity
detailEntity
:
detailEntityList
)
{
if
(
OffWorkResultEnum
.
缺卡
.
getValue
()
==
detailEntity
.
getOffWorkResult
())
{
attendanceRecordEntity
.
setPunchResult
(
YesNoEnum
.
NO
.
getValue
());
break
;
}
if
(
OffWorkResultEnum
.
缺卡
.
getValue
()
==
detailEntity
.
getOffWorkResult
())
{
attendanceRecordEntity
.
setPunchResult
(
YesNoEnum
.
NO
.
getValue
());
break
;
}
}
if
(
YesNoEnum
.
YES
.
getValue
()
==
attendanceRecordEntity
.
getSignInResult
()
&&
YesNoEnum
.
YES
.
getValue
()
==
attendanceRecordEntity
.
getSignOutResult
())
{
attendanceRecordEntity
.
setPunchResult
(
YesNoEnum
.
YES
.
getValue
());
}
attendanceRecordEntity
.
setAttendType
(
"现场打卡"
);
//判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId
AttendanceRecordQuery
query
=
new
AttendanceRecordQuery
();
query
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
query
.
setShiftsId
(
attendanceRecordEntity
.
getShiftsId
());
query
.
setAttendanceGroupId
(
attendanceRecordEntity
.
getAttendanceGroupId
());
query
.
setAttendanceDate
(
attendanceRecordEntity
.
getAttendanceDate
());
AttendanceRecordEntity
recordEntity
=
attendanceRecordService
.
selectOne
(
query
);
if
(!
ObjectUtils
.
isEmpty
(
recordEntity
))
{
attendanceRecordEntity
.
setId
(
recordEntity
.
getId
());
attendanceRecordEntity
.
setUpdateTime
(
new
Date
());
attendanceRecordEntity
.
setUpdateUserId
(
this
.
getContextUserId
(
context
));
attendanceRecordService
.
update
(
attendanceRecordEntity
,
context
);
}
else
{
attendanceRecordService
.
save
(
attendanceRecordEntity
,
context
);
}
}
}
}
/* //map遍历.先把所有键取出来
Set<String> workNumSet = listMap.keySet();
//根据键取出value
for (String workNum : workNumSet) {
...
...
@@ -119,7 +305,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(attendanceGroupStaffEntities.get(0).getGroupId()));
attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity.getId());
attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity.getGroupName());
//log.info("attendanceGroupEntity.getId()=={}", attendanceGroupEntity.getId());
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
...
...
@@ -455,17 +640,117 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
attendanceRecordService.save(attendanceRecordEntity, context);
}
}
}
}*/
}
private
void
checkAttendGroupByOne
(
AttendanceRecordEntity
attendanceRecordEntity
,
List
<
AttendanceRecordDetailEntity
>
detailEntityList
,
Date
attendanceDate
,
AttendanceGroupStaffEntity
attendanceGroupStaffEntity
,
Context
context
)
{
//查询考勤组
AttendanceGroupEntity
attendanceGroupEntity
=
attendanceGroupService
.
get
(
attendanceGroupStaffEntity
.
getGroupId
(),
context
);
attendanceRecordEntity
.
setAttendanceGroupId
(
attendanceGroupEntity
==
null
?
0L
:
attendanceGroupEntity
.
getId
());
attendanceRecordEntity
.
setAttendanceGroupName
(
attendanceGroupEntity
==
null
?
""
:
attendanceGroupEntity
.
getGroupName
());
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
new
AttendanceGroupFixedworkQuery
()
.
groupId
(
attendanceGroupEntity
.
getId
()));
//判断当前考勤日期为周几
String
week
=
this
.
getWeek
(
attendanceDate
);
//log.info("week:{}", week);
//通过考勤日期的星期拿到班次id.
if
(
ObjectUtils
.
isEmpty
(
attendanceGroupFixedworkEntity
))
{
log
.
info
(
"attendanceGroupFixedworkEntity is null ! groupId:{}"
,
attendanceGroupEntity
.
getId
());
return
;
}
Long
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
week
);
//log.info("weekClassId:{}", weekClassId);
//weekClassId为-1 则不在考勤
if
(
weekClassId
==
-
1L
)
{
//跳过本次循环
return
;
}
//获取班次信息
AttendanceClassEntity
attendanceClassEntity
=
attendanceClassService
.
get
(
weekClassId
);
if
(
ObjectUtils
.
isEmpty
(
attendanceClassEntity
))
{
log
.
info
(
"attendanceClassEntity is null ,weekClassId:{}"
,
weekClassId
);
return
;
}
//获取班次详细信息
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
new
AttendanceClassDetailQuery
().
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
//构造数据
if
(
ObjectUtils
.
isEmpty
(
detailEntityList
))
{
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
recordDetailEntity
.
setShiftsId
(
classDetailEntity
.
getId
());
recordDetailEntity
.
setShiftsName
(
classDetailEntity
.
getClassName
());
recordDetailEntity
.
setGoWorkResult
(
GoWorkResultEnum
.
缺卡
.
getValue
());
recordDetailEntity
.
setOffWorkResult
(
GoWorkResultEnum
.
缺卡
.
getValue
());
recordDetailEntity
.
setOrderNum
(
orderNum
);
detailEntityList
.
add
(
recordDetailEntity
);
}
}
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
//计算区间范围
//上班打卡前时间
Date
goWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
());
//上班打卡后时间
Date
goWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
());
// 下班打卡前时间
Date
offWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
());
//下班打卡后时间
Date
offWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
());
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean
goInTime
=
DateUtil
.
isIn
(
attendanceDate
,
goWorkDateBefore
,
goWorkDateAfter
);
//判断考勤时间是否在下班打卡区间内
boolean
offInTime
=
DateUtil
.
isIn
(
attendanceDate
,
offWorkDateBefore
,
offWorkDateAfter
);
if
(
goInTime
==
false
&&
offInTime
==
false
)
{
log
.
info
(
"考勤时间不在上班区间与下班区间中,不做处理!attendDate:{}"
,
DateUtil
.
formatDateTime
(
attendanceDate
));
continue
;
}
if
(
goInTime
)
{
//如果是上班打卡区间范围,判断是否迟到
boolean
inTime
=
DateUtil
.
isIn
(
attendanceDate
,
goWorkDateBefore
,
classDetail
.
getGoWorkDate
());
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntityList
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
()
==
classDetail
.
getClassId
())
{
attendanceRecordDetailEntity
.
setGoWorkResult
(
GoWorkResultEnum
.
正常
.
getValue
());
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
else
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntityList
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
()
==
classDetail
.
getClassId
())
{
attendanceRecordDetailEntity
.
setGoWorkResult
(
GoWorkResultEnum
.
迟到
.
getValue
());
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
}
if
(
offInTime
)
{
boolean
inTime
=
DateUtil
.
isIn
(
attendanceDate
,
classDetail
.
getOffWorkDate
(),
offWorkDateAfter
);
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntityList
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()
==
classDetail
.
getId
().
longValue
())
{
attendanceRecordDetailEntity
.
setGoWorkResult
(
GoWorkResultEnum
.
正常
.
getValue
());
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
else
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntityList
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()
==
classDetail
.
getId
().
longValue
())
{
attendanceRecordDetailEntity
.
setOffWorkResult
(
GoWorkResultEnum
.
早退
.
getValue
());
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
}
}
}
public
String
getWeek
(
Date
date
)
{
public
String
getWeek
(
Date
date
)
{
// Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday)
int
dayOfWeek
=
DateUtil
.
dayOfWeek
(
date
);
// Map the numeric day of the week to its corresponding Chinese name
String
[]
dayOfWeekNames
=
new
String
[]{
"星期日"
,
"星期一"
,
"星期二"
,
"星期三"
,
"星期四"
,
"星期五"
,
"星期六"
...
...
@@ -473,74 +758,8 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
// Get the Chinese name of the day of the week
String
dayOfWeekName
=
dayOfWeekNames
[
dayOfWeek
-
1
];
return
dayOfWeekName
;
//
// SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
// String week = sdf.format(date);
// return week;
}
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
*
* @return
*/
/* public Long getWeekClassId(AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity, String week) {
Long weekClassId = 0L;
switch (week) {
case "星期一":
if (attendanceGroupFixedworkEntity.getMonday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getMondayClassId();
break;
case "星期二":
if (attendanceGroupFixedworkEntity.getTuesday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getTuesdayClassId();
break;
case "星期三":
if (attendanceGroupFixedworkEntity.getWednesday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getWednesdayClassId();
break;
case "星期四":
if (attendanceGroupFixedworkEntity.getThursday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getThursdayClassId();
break;
case "星期五":
if (attendanceGroupFixedworkEntity.getFriday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getFridayClassId();
break;
case "星期六":
if (attendanceGroupFixedworkEntity.getSaturday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSaturdayClassId();
break;
case "星期日":
if (attendanceGroupFixedworkEntity.getSunday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSundayClassId();
break;
}
return weekClassId;
}*/
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
*
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java
View file @
db41784e
package
com.mortals.xhx.module.attendance.web
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -47,5 +50,13 @@ public class AttendanceExportRecordController extends BaseCRUDJsonBodyMappingCon
super
.
init
(
model
,
context
);
}
@Override
protected
void
doListBefore
(
AttendanceExportRecordEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
if
(
ObjectUtils
.
isEmpty
(
query
.
getOrderColList
()))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
),
new
OrderCol
(
"staffName"
,
OrderCol
.
DESCENDING
)));
}
else
{
query
.
getOrderColList
().
add
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
));
}
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
View file @
db41784e
package
com.mortals.xhx.module.attendance.web
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
...
...
@@ -19,8 +20,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
com.mortals.framework.model.Context
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.mortals.framework.util.StringUtils
;
...
...
@@ -28,20 +31,22 @@ import com.mortals.framework.util.StringUtils;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
/**
*
* 考勤打卡记录异常信息
*
* @author zxfei
* @date 2023-04-08
*/
* 考勤打卡记录异常信息
*
* @author zxfei
* @date 2023-04-08
*/
@RestController
@RequestMapping
(
"attendance/record/error"
)
public
class
AttendanceRecordErrorController
extends
BaseCRUDJsonBodyMappingController
<
AttendanceRecordErrorService
,
AttendanceRecordErrorEntity
,
Long
>
{
public
class
AttendanceRecordErrorController
extends
BaseCRUDJsonBodyMappingController
<
AttendanceRecordErrorService
,
AttendanceRecordErrorEntity
,
Long
>
{
@Autowired
private
ParamService
paramService
;
...
...
@@ -67,17 +72,17 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Autowired
private
AttendanceRecordErrorService
errorService
;
public
AttendanceRecordErrorController
(){
super
.
setModuleDesc
(
"考勤打卡记录异常信息"
);
public
AttendanceRecordErrorController
()
{
super
.
setModuleDesc
(
"考勤打卡记录异常信息"
);
}
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"errorStatus"
,
ErrorStatusEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"processStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordError"
,
"processStatus"
));
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
this
.
addDict
(
model
,
"groupId"
,
attendanceGroupService
.
find
(
new
AttendanceGroupQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getGroupName
())));
this
.
addDict
(
model
,
"classId"
,
attendanceClassService
.
find
(
new
AttendanceClassQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getClassName
())));
this
.
addDict
(
model
,
"processStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordError"
,
"processStatus"
));
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
this
.
addDict
(
model
,
"groupId"
,
attendanceGroupService
.
find
(
new
AttendanceGroupQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getGroupName
())));
this
.
addDict
(
model
,
"classId"
,
attendanceClassService
.
find
(
new
AttendanceClassQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getClassName
())));
super
.
init
(
model
,
context
);
}
...
...
@@ -92,11 +97,11 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
query
.
setProcessResult
(
"已撤销处理"
);
errorService
.
update
(
query
);
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
AttendanceRecordQuery
attendanceRecordQuery
=
new
AttendanceRecordQuery
();
attendanceRecordQuery
.
setStaffId
(
query
.
getStaffId
());
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
AttendanceRecordEntity
attendanceRecordEntity
=
attendanceRecordService
.
selectOne
(
attendanceRecordQuery
);
AttendanceRecordDetailQuery
detailQuery
=
new
AttendanceRecordDetailQuery
();
detailQuery
.
setRecordId
(
attendanceRecordEntity
.
getId
());
...
...
@@ -104,25 +109,25 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetailEntity
=
attendanceRecordDetailService
.
find
(
detailQuery
);
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
attendanceRecordDetailEntity
)
{
if
(
query
.
getGoOrOff
().
equals
(
"上班"
)){
if
(
query
.
getErrorStatus
()
==
0
)
{
if
(
query
.
getGoOrOff
().
equals
(
"上班"
))
{
if
(
query
.
getErrorStatus
()
==
0
)
{
recordDetailEntity
.
setGoWorkResult
(
3
);
}
if
(
query
.
getErrorStatus
()
==
2
)
{
if
(
query
.
getErrorStatus
()
==
2
)
{
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
if
(
query
.
getGoOrOff
().
equals
(
"下班"
)){
if
(
query
.
getErrorStatus
()
==
0
)
{
if
(
query
.
getGoOrOff
().
equals
(
"下班"
))
{
if
(
query
.
getErrorStatus
()
==
0
)
{
recordDetailEntity
.
setOffWorkResult
(
3
);
}
if
(
query
.
getErrorStatus
()
==
1
)
{
if
(
query
.
getErrorStatus
()
==
1
)
{
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
}
return
Rest
.
ok
();
return
Rest
.
ok
();
}
...
...
@@ -139,11 +144,11 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
this
.
batchSave
(
entity
.
getRecordErrorEntities
());
for
(
AttendanceRecordErrorEntity
item
:
entity
.
getRecordErrorEntities
())
{
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
AttendanceRecordQuery
attendanceRecordQuery
=
new
AttendanceRecordQuery
();
attendanceRecordQuery
.
setStaffId
(
item
.
getStaffId
());
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
AttendanceRecordEntity
attendanceRecordEntity
=
attendanceRecordService
.
selectOne
(
attendanceRecordQuery
);
AttendanceRecordDetailQuery
detailQuery
=
new
AttendanceRecordDetailQuery
();
detailQuery
.
setRecordId
(
attendanceRecordEntity
.
getId
());
...
...
@@ -153,46 +158,46 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
attendanceRecordDetailEntity
)
{
Date
goWorkDate
=
recordDetailEntity
.
getGoWorkDate
();
Date
offWorkDate
=
recordDetailEntity
.
getOffWorkDate
();
if
(
item
.
getProcessResult
().
contains
(
"正常"
)){
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
)){
if
(
goWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
if
(
item
.
getProcessResult
().
contains
(
"正常"
))
{
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
))
{
if
(
goWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
recordDetailEntity
.
setGoWorkResult
(
1
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
)){
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
))
{
recordDetailEntity
.
setGoWorkResult
(
1
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
)){
if
(
offWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
))
{
if
(
offWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
recordDetailEntity
.
setOffWorkResult
(
1
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
)){
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
))
{
recordDetailEntity
.
setOffWorkResult
(
1
);
}
}
}
if
(
item
.
getProcessResult
().
contains
(
"早退"
)){
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
)){
if
(
offWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
if
(
item
.
getProcessResult
().
contains
(
"早退"
))
{
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
))
{
if
(
offWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
)){
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
))
{
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
}
if
(
item
.
getProcessResult
().
contains
(
"迟到"
)){
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
)){
if
(
goWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
if
(
item
.
getProcessResult
().
contains
(
"迟到"
))
{
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
))
{
if
(
goWorkDate
.
getTime
()
==
item
.
getGoOffDateTime
().
getTime
())
{
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
)){
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
))
{
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
...
...
@@ -205,7 +210,7 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Override
protected
int
editAfter
(
Long
id
,
Map
<
String
,
Object
>
model
,
AttendanceRecordErrorEntity
entity
,
Context
context
)
throws
AppException
{
this
.
addDict
(
model
,
"errorStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordDetail"
,
"goWorkResult"
));
this
.
addDict
(
model
,
"errorStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordDetail"
,
"goWorkResult"
));
return
super
.
editAfter
(
id
,
model
,
entity
,
context
);
}
...
...
@@ -214,11 +219,13 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
for
(
AttendanceRecordErrorEntity
errorEntity
:
list
)
{
Long
shiftsId
=
errorEntity
.
getShiftsId
();
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
classDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
shiftsId
));
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()==
attendanceClassDetailEntity
.
getGoWorkDate
().
getTime
()){
errorEntity
.
setGoOrOff
(
"上班"
);
}
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()==
attendanceClassDetailEntity
.
getOffWorkDate
().
getTime
()){
errorEntity
.
setGoOrOff
(
"下班"
);
if
(!
ObjectUtils
.
isEmpty
(
attendanceClassDetailEntity
))
{
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()
==
attendanceClassDetailEntity
.
getGoWorkDate
().
getTime
())
{
errorEntity
.
setGoOrOff
(
"上班"
);
}
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()
==
attendanceClassDetailEntity
.
getOffWorkDate
().
getTime
())
{
errorEntity
.
setGoOrOff
(
"下班"
);
}
}
}
super
.
doListAfter
(
query
,
list
,
context
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
View file @
db41784e
...
...
@@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
if
(
ObjectUtils
.
isEmpty
(
hikEntity
.
getAttendanceDateStart
()))
{
throw
new
AppException
(
"请选择开始日期"
);
}
hikService
.
addAttendanceRecord
(
hikEntity
,
getContext
());
hikService
.
addAttendanceRecord
ByQuery
(
hikEntity
,
getContext
());
model
.
put
(
"message_info"
,
busiDesc
+
"成功"
);
this
.
recordSysLog
(
this
.
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java
View file @
db41784e
...
...
@@ -5,11 +5,14 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import
com.mortals.xhx.common.code.AllHolidaysEnum
;
import
com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
*
...
...
@@ -25,6 +28,9 @@ public class AttendanceVacationBalanceController extends BaseCRUDJsonBodyMapping
@Autowired
private
ParamService
paramService
;
@Autowired
private
DeptService
deptService
;
public
AttendanceVacationBalanceController
(){
super
.
setModuleDesc
(
"员工假期余额信息"
);
...
...
@@ -33,6 +39,7 @@ public class AttendanceVacationBalanceController extends BaseCRUDJsonBodyMapping
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"AllHolidays"
,
AllHolidaysEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
super
.
init
(
model
,
context
);
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/model/CheckAllRecordQuery.java
View file @
db41784e
package
com.mortals.xhx.module.check.model
;
import
com.mortals.framework.model.OrderCol
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
CheckAllRecordQuery
{
/**
...
...
@@ -34,5 +38,6 @@ public class CheckAllRecordQuery {
*/
private
Integer
subAddType
;
private
transient
List
<
OrderCol
>
orderColList
=
new
ArrayList
();
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckAttendRecordServiceImpl.java
View file @
db41784e
...
...
@@ -227,7 +227,7 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -238,7 +238,7 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
staffPerformSummaryEntity
.
setEffectScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckComplainRecordServiceImpl.java
View file @
db41784e
...
...
@@ -222,7 +222,7 @@ public class CheckComplainRecordServiceImpl extends AbstractCRUDServiceImpl<Chec
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -236,7 +236,7 @@ public class CheckComplainRecordServiceImpl extends AbstractCRUDServiceImpl<Chec
staffPerformSummaryEntity
.
setEffectScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckEffectRecordServiceImpl.java
View file @
db41784e
...
...
@@ -222,7 +222,7 @@ public class CheckEffectRecordServiceImpl extends AbstractCRUDServiceImpl<CheckE
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -236,7 +236,7 @@ public class CheckEffectRecordServiceImpl extends AbstractCRUDServiceImpl<CheckE
staffPerformSummaryEntity
.
setGoworkScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckGoworkRecordServiceImpl.java
View file @
db41784e
...
...
@@ -221,7 +221,7 @@ public class CheckGoworkRecordServiceImpl extends AbstractCRUDServiceImpl<CheckG
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -235,7 +235,7 @@ public class CheckGoworkRecordServiceImpl extends AbstractCRUDServiceImpl<CheckG
staffPerformSummaryEntity
.
setEffectScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckOtherRecordServiceImpl.java
View file @
db41784e
...
...
@@ -226,7 +226,7 @@ public class CheckOtherRecordServiceImpl extends AbstractCRUDServiceImpl<CheckOt
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -240,7 +240,7 @@ public class CheckOtherRecordServiceImpl extends AbstractCRUDServiceImpl<CheckOt
staffPerformSummaryEntity
.
setEffectScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/check/service/impl/CheckReviewRecordServiceImpl.java
View file @
db41784e
...
...
@@ -226,7 +226,7 @@ public class CheckReviewRecordServiceImpl extends AbstractCRUDServiceImpl<CheckR
erro
=
erro
.
add
(
staffPerformSummaryEntity
.
getComplainScore
());
staffPerformSummaryEntity
.
setErrorScore
(
erro
);
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
erro
));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
erro
));
staffPerformSummaryEntity
.
setId
(
temp
.
getId
());
staffPerformSummaryEntity
.
setUpdateTime
(
new
Date
());
staffPerformSummaryService
.
update
(
staffPerformSummaryEntity
);
...
...
@@ -240,7 +240,7 @@ public class CheckReviewRecordServiceImpl extends AbstractCRUDServiceImpl<CheckR
staffPerformSummaryEntity
.
setEffectScore
(
new
BigDecimal
(
0
));
staffPerformSummaryEntity
.
setErrorScore
(
vo
.
getSumScore
());
BigDecimal
total
=
new
BigDecimal
(
100
);
staffPerformSummaryEntity
.
setTotalScore
(
total
.
subtract
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setTotalScore
(
total
.
add
(
vo
.
getSumScore
()));
staffPerformSummaryEntity
.
setCreateUserId
(
1
l
);
staffPerformSummaryEntity
.
setCreateTime
(
new
Date
());
staffPerformSummaryService
.
save
(
staffPerformSummaryEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java
View file @
db41784e
package
com.mortals.xhx.module.dept.model
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.ArrayList
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
java.util.Date
;
import
cn.hutool.core.date.DateUtil
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.xhx.module.dept.model.vo.DeptPerformStatVo
;
import
lombok.Data
;
/**
* 部门绩效分数统计实体对象
*
* @author zxfei
* @date 2023-07-14
*/
* 部门绩效分数统计实体对象
*
* @author zxfei
* @date 2023-07-20
*/
@Data
public
class
DeptPerformStatEntity
extends
DeptPerformStatVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 部门id号
*/
* 部门id号
*/
private
Long
deptId
;
/**
* 部门名称
*/
* 部门名称
*/
private
String
deptName
;
/**
* 部门绩效总分数
*/
* 部门绩效总分数
*/
@Excel
(
name
=
"部门绩效总分数"
)
private
BigDecimal
totalScore
;
/**
* 部门绩效加分总分数汇总
*/
* 部门绩效加分总分数汇总
*/
@Excel
(
name
=
"部门绩效加分总分数汇总"
)
private
BigDecimal
totalAddScore
;
/**
* 部门绩效减分总分数汇总
*/
* 部门绩效减分总分数汇总
*/
@Excel
(
name
=
"部门绩效减分总分数汇总"
)
private
BigDecimal
totalSubScore
;
/**
* 考勤绩效指标增加分数
*/
* 考勤绩效指标增加分数
*/
private
BigDecimal
attendScoreAdd
;
/**
* 考勤绩效指标扣减分数
*/
* 考勤绩效指标扣减分数
*/
private
BigDecimal
attendScoreSub
;
/**
* 评价绩效指标增加分数
*/
* 评价绩效指标增加分数
*/
private
BigDecimal
reviewScoreAdd
;
/**
* 评价绩效指标扣减分数
*/
* 评价绩效指标扣减分数
*/
private
BigDecimal
reviewScoreSub
;
/**
* 投诉绩效指标增加分数
*/
* 投诉绩效指标增加分数
*/
private
BigDecimal
complainScoreAdd
;
/**
* 投诉绩效指标扣减分数
*/
* 投诉绩效指标扣减分数
*/
private
BigDecimal
complainScoreSub
;
/**
* 办件绩效指标增加分数
*/
* 办件绩效指标增加分数
*/
private
BigDecimal
goworkScoreAdd
;
/**
* 办件绩效指标扣减分数
*/
* 办件绩效指标扣减分数
*/
private
BigDecimal
goworkScoreSub
;
/**
* 效能绩效指标增加分数
*/
* 效能绩效指标增加分数
*/
private
BigDecimal
effectScoreAdd
;
/**
* 效能绩效指标扣减分数
*/
* 效能绩效指标扣减分数
*/
private
BigDecimal
effectScoreSub
;
/**
* 其它绩效指标增加分数
*/
* 其它绩效指标增加分数
*/
private
BigDecimal
otherScoreAdd
;
/**
* 其它绩效指标扣减分数
*/
* 其它绩效指标扣减分数
*/
private
BigDecimal
otherScoreSub
;
/**
* 部门绩效平均分数,根据部门所属人数平均
*/
* 部门绩效平均分数,根据部门所属人数平均
*/
@Excel
(
name
=
"部门绩效平均分数,根据部门所属人数平均"
)
private
BigDecimal
averageScore
;
/**
* 备注
*/
* 备注
*/
private
String
remark
;
/**
* 年
*/
* 年
*/
private
Integer
year
;
/**
* 月
*/
* 月
*/
private
Integer
month
;
/**
* 日
*/
* 日
*/
private
Integer
day
;
@Override
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
return
this
.
getId
().
hashCode
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
...
...
@@ -119,7 +117,7 @@ public class DeptPerformStatEntity extends DeptPerformStatVo {
if
(
obj
instanceof
DeptPerformStatEntity
)
{
DeptPerformStatEntity
tmp
=
(
DeptPerformStatEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
return
true
;
}
}
return
false
;
...
...
@@ -127,48 +125,48 @@ public class DeptPerformStatEntity extends DeptPerformStatVo {
public
void
initAttrValue
(){
this
.
deptId
=
0L
;
this
.
deptId
=
0L
;
this
.
deptName
=
""
;
this
.
deptName
=
""
;
this
.
totalScore
=
new
BigDecimal
(
0
);
this
.
totalScore
=
new
BigDecimal
(
0
);
this
.
totalAddScore
=
new
BigDecimal
(
0
);
this
.
totalAddScore
=
new
BigDecimal
(
0
);
this
.
totalSubScore
=
new
BigDecimal
(
0
);
this
.
totalSubScore
=
new
BigDecimal
(
0
);
this
.
attendScoreAdd
=
new
BigDecimal
(
0
);
this
.
attendScoreAdd
=
new
BigDecimal
(
0
);
this
.
attendScoreSub
=
new
BigDecimal
(
0
);
this
.
attendScoreSub
=
new
BigDecimal
(
0
);
this
.
reviewScoreAdd
=
new
BigDecimal
(
0
);
this
.
reviewScoreAdd
=
new
BigDecimal
(
0
);
this
.
reviewScoreSub
=
new
BigDecimal
(
0
);
this
.
reviewScoreSub
=
new
BigDecimal
(
0
);
this
.
complainScoreAdd
=
new
BigDecimal
(
0
);
this
.
complainScoreAdd
=
new
BigDecimal
(
0
);
this
.
complainScoreSub
=
new
BigDecimal
(
0
);
this
.
complainScoreSub
=
new
BigDecimal
(
0
);
this
.
goworkScoreAdd
=
new
BigDecimal
(
0
);
this
.
goworkScoreAdd
=
new
BigDecimal
(
0
);
this
.
goworkScoreSub
=
new
BigDecimal
(
0
);
this
.
goworkScoreSub
=
new
BigDecimal
(
0
);
this
.
effectScoreAdd
=
new
BigDecimal
(
0
);
this
.
effectScoreAdd
=
new
BigDecimal
(
0
);
this
.
effectScoreSub
=
new
BigDecimal
(
0
);
this
.
effectScoreSub
=
new
BigDecimal
(
0
);
this
.
otherScoreAdd
=
new
BigDecimal
(
0
);
this
.
otherScoreAdd
=
new
BigDecimal
(
0
);
this
.
otherScoreSub
=
new
BigDecimal
(
0
);
this
.
otherScoreSub
=
new
BigDecimal
(
0
);
this
.
averageScore
=
new
BigDecimal
(
0
);
this
.
averageScore
=
new
BigDecimal
(
0
);
this
.
remark
=
""
;
this
.
remark
=
""
;
this
.
year
=
-
1
;
this
.
year
=
DateUtil
.
year
(
new
Date
())
;
this
.
month
=
-
1
;
this
.
month
=
DateUtil
.
month
(
new
Date
())+
1
;
this
.
day
=
-
1
;
this
.
day
=
DateUtil
.
dayOfMonth
(
new
Date
())
;
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
View file @
db41784e
package
com.mortals.xhx.module.dept.service
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.dept.dao.DeptDao
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptTreeSelect
;
...
...
@@ -15,6 +16,8 @@ import java.util.List;
*/
public
interface
DeptService
extends
ICRUDService
<
DeptEntity
,
Long
>{
DeptDao
getDao
();
/**
* 是否存在部门信息节点
*
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java
View file @
db41784e
...
...
@@ -52,6 +52,12 @@ public abstract class AbstractDingTalkService implements IDingPersonService {
@Value
(
"${dingtalk.AppSecret:''}"
)
protected
String
appSecret
;
/**
* appKey
*/
@Value
(
"${dingtalk.oaUrl:}"
)
protected
String
oaUrl
;
@Autowired
private
ICacheService
cacheService
;
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java
View file @
db41784e
...
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dingding.personal.service;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody
;
import
com.dingtalk.api.response.OapiV2UserGetResponse
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.xhx.module.dingding.IDingTalkService
;
import
com.mortals.xhx.module.dingding.personal.model.req.workmsg.WorkMsgReq
;
...
...
@@ -27,6 +28,14 @@ public interface IDingPersonService extends IDingTalkService {
*/
Rest
<
String
>
getPersonByMobile
(
String
mobile
);
/**
* 根据id获取用户电话
*
* @param id
* @return
*/
Rest
<
String
>
getPersonById
(
String
id
);
/**
* 根据code获取钉钉用户id
*
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
View file @
db41784e
...
...
@@ -6,9 +6,11 @@ import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody;
import
com.aliyun.tea.TeaException
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request
;
import
com.dingtalk.api.request.OapiV2UserGetRequest
;
import
com.dingtalk.api.request.OapiV2UserGetbymobileRequest
;
import
com.dingtalk.api.request.OapiV2UserGetuserinfoRequest
;
import
com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response
;
import
com.dingtalk.api.response.OapiV2UserGetResponse
;
import
com.dingtalk.api.response.OapiV2UserGetbymobileResponse
;
import
com.dingtalk.api.response.OapiV2UserGetuserinfoResponse
;
import
com.mortals.framework.common.Rest
;
...
...
@@ -22,6 +24,8 @@ import org.apache.poi.ss.formula.functions.T;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.HashMap
;
@Service
(
"dingPersonService"
)
@Slf4j
...
...
@@ -48,6 +52,26 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
}
}
@Override
public
Rest
<
String
>
getPersonById
(
String
id
)
{
try
{
DingTalkClient
client
=
getDingTalkClient
(
"/topapi/v2/user/get"
);
OapiV2UserGetRequest
req
=
new
OapiV2UserGetRequest
();
req
.
setUserid
(
id
);
//用户id
log
.
info
(
"getPersonByID:{}"
,
id
);
OapiV2UserGetResponse
rsp
=
client
.
execute
(
req
,
getToken
());
log
.
info
(
"钉钉返回用户信息:{}"
,
rsp
.
getBody
());
if
(
rsp
.
getErrcode
()
==
0
)
{
return
Rest
.
ok
(
"成功"
,
rsp
.
getResult
().
getMobile
());
}
else
{
return
Rest
.
fail
(
String
.
format
(
"code:%s,msg:%s"
,
rsp
.
getErrcode
(),
rsp
.
getErrmsg
()));
}
}
catch
(
ApiException
e
)
{
log
.
info
(
"根据手机号码查询人员异常"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
}
}
@Override
public
Rest
<
String
>
getPersonByCode
(
String
code
)
{
try
{
...
...
@@ -118,9 +142,9 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
*/
public
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
createClient
()
throws
Exception
{
com
.
aliyun
.
teaopenapi
.
models
.
Config
config
=
new
com
.
aliyun
.
teaopenapi
.
models
.
Config
();
config
.
protocol
=
"http
s
"
;
config
.
protocol
=
"http"
;
config
.
regionId
=
"central"
;
config
.
endpoint
=
domain
.
replace
(
"http://"
,
""
)
;
config
.
endpoint
=
oaUrl
;
return
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
(
config
);
}
...
...
@@ -130,13 +154,17 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
client
=
createClient
();
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
getProcessInstanceHeaders
=
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
();
getProcessInstanceHeaders
.
xAcsDingtalkAccessToken
=
getToken
();
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
getProcessInstanceHeaders
.
setCommonHeaders
(
map
);
getProcessInstanceHeaders
.
getCommonHeaders
().
put
(
"host"
,
"172.15.28.113:8919"
);
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceRequest
getProcessInstanceRequest
=
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceRequest
()
.
setProcessInstanceId
(
processInstanceId
);
log
.
info
(
"processInstanceId:{}"
,
processInstanceId
);
GetProcessInstanceResponse
rsp
=
client
.
getProcessInstanceWithOptions
(
getProcessInstanceRequest
,
getProcessInstanceHeaders
,
new
com
.
aliyun
.
teautil
.
models
.
RuntimeOptions
());
return
Rest
.
ok
(
"成功"
,
rsp
.
getBody
().
getResult
());
}
catch
(
Exception
e
)
{
log
.
info
(
"根据用户查询审批详情失败"
,
e
);
log
.
error
(
"根据用户查询审批详情失败"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/feedback/web/FeedbackController.java
View file @
db41784e
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
...
...
@@ -73,6 +74,15 @@ public class FeedbackController extends BaseCRUDJsonBodyMappingController<Feedba
super
.
init
(
model
,
context
);
}
@Override
protected
void
doListBefore
(
FeedbackEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
if
(
ObjectUtils
.
isEmpty
(
query
.
getOrderColList
()))
{
query
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
)));
}
else
{
query
.
getOrderColList
().
add
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
));
}
}
@Override
protected
int
infoAfter
(
Long
id
,
Map
<
String
,
Object
>
model
,
FeedbackEntity
entity
,
Context
context
)
throws
AppException
{
if
(
CollectionUtils
.
isNotEmpty
(
entity
.
getFeedbackQuestionList
()))
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/AbstractHikService.java
View file @
db41784e
...
...
@@ -8,7 +8,7 @@ import java.util.Map;
public
abstract
class
AbstractHikService
{
@Value
(
"${hik.host:
''
}"
)
@Value
(
"${hik.host:}"
)
protected
String
host
;
@Value
(
"${hik.appKey:''}"
)
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/job/model/JobEntity.java
View file @
db41784e
...
...
@@ -159,7 +159,7 @@ public class JobEntity extends JobVo {
public
void
initAttrValue
(){
this
.
groupId
=
0L
;
this
.
groupId
=
null
;
this
.
groupName
=
""
;
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/job/web/JobController.java
View file @
db41784e
...
...
@@ -42,7 +42,7 @@ public class JobController extends BaseCRUDJsonBodyMappingController<JobService,
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"type"
,
JobTypeEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"group"
,
service
.
queryGroupName
(
new
JobQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getGroupName
(),(
o
,
n
)->
n
)));
this
.
addDict
(
model
,
"group
Id
"
,
service
.
queryGroupName
(
new
JobQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getGroupName
(),(
o
,
n
)->
n
)));
super
.
init
(
model
,
context
);
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java
View file @
db41784e
...
...
@@ -124,11 +124,11 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
sendCheckDingTalk
(
appealEntity
);
log
.
info
(
appealMsg
);
if
(
appeal
.
getAppealResult
()
==
AppealResultEnum
.
通过
.
getValue
())
{
if
(
appeal
.
getSubAddType
()
==
SubAddTypeEnum
.
扣除
.
getValue
())
{
if
(
appeal
Entity
.
getAppealResult
()
==
AppealResultEnum
.
通过
.
getValue
())
{
if
(
appeal
Entity
.
getSubAddType
()
==
SubAddTypeEnum
.
扣除
.
getValue
())
{
//需增一条记录后 冲销相关核查的记录
if
(
PerformTypeEnum
.
考勤绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckAttendRecordEntity
checkEntity
=
checkAttendRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
if
(
PerformTypeEnum
.
考勤绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckAttendRecordEntity
checkEntity
=
checkAttendRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckAttendRecordEntity
checkAttendRecordEntity
=
new
CheckAttendRecordEntity
();
checkAttendRecordEntity
.
initAttrValue
();
...
...
@@ -137,8 +137,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
checkAttendRecordEntity
.
setSubMethod
(
SubMethodEnum
.
申诉冲销
.
getValue
());
checkAttendRecordEntity
.
setRemark
(
appealMsg
);
checkAttendRecordService
.
save
(
checkAttendRecordEntity
,
context
);
}
else
if
(
PerformTypeEnum
.
评价差评绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckReviewRecordEntity
checkEntity
=
checkReviewRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
}
else
if
(
PerformTypeEnum
.
评价差评绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckReviewRecordEntity
checkEntity
=
checkReviewRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckReviewRecordEntity
checkRecordEntity
=
new
CheckReviewRecordEntity
();
checkRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
checkEntity
,
checkRecordEntity
,
new
String
[]{
"id"
,
"recordId"
});
...
...
@@ -148,8 +148,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
checkRecordEntity
.
setCreateTime
(
new
Date
());
checkRecordEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
checkReviewRecordService
.
save
(
checkRecordEntity
,
context
);
}
else
if
(
PerformTypeEnum
.
评价投诉绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckComplainRecordEntity
checkEntity
=
checkComplainRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
}
else
if
(
PerformTypeEnum
.
评价投诉绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckComplainRecordEntity
checkEntity
=
checkComplainRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckComplainRecordEntity
checkRecordEntity
=
new
CheckComplainRecordEntity
();
checkRecordEntity
.
initAttrValue
();
...
...
@@ -161,8 +161,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
checkRecordEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
checkComplainRecordService
.
save
(
checkRecordEntity
,
context
);
}
else
if
(
PerformTypeEnum
.
办件绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckGoworkRecordEntity
checkEntity
=
checkGoworkRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
}
else
if
(
PerformTypeEnum
.
办件绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckGoworkRecordEntity
checkEntity
=
checkGoworkRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckGoworkRecordEntity
checkRecordEntity
=
new
CheckGoworkRecordEntity
();
checkRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
checkEntity
,
checkRecordEntity
,
new
String
[]{
"id"
,
"recordId"
});
...
...
@@ -173,8 +173,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
checkRecordEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
checkGoworkRecordService
.
save
(
checkRecordEntity
,
context
);
}
else
if
(
PerformTypeEnum
.
效能绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckEffectRecordEntity
checkEntity
=
checkEffectRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
}
else
if
(
PerformTypeEnum
.
效能绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckEffectRecordEntity
checkEntity
=
checkEffectRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckEffectRecordEntity
checkRecordEntity
=
new
CheckEffectRecordEntity
();
checkRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
checkEntity
,
checkRecordEntity
,
new
String
[]{
"id"
,
"recordId"
});
...
...
@@ -185,8 +185,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
checkRecordEntity
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
checkEffectRecordService
.
save
(
checkRecordEntity
,
context
);
}
else
if
(
PerformTypeEnum
.
其它绩效
.
getValue
().
equals
(
appeal
.
getPerformType
()))
{
CheckOtherRecordEntity
checkEntity
=
checkOtherRecordService
.
get
(
appeal
.
getCheckRecordId
(),
context
);
}
else
if
(
PerformTypeEnum
.
其它绩效
.
getValue
().
equals
(
appeal
Entity
.
getPerformType
()))
{
CheckOtherRecordEntity
checkEntity
=
checkOtherRecordService
.
get
(
appeal
Entity
.
getCheckRecordId
(),
context
);
CheckOtherRecordEntity
checkRecordEntity
=
new
CheckOtherRecordEntity
();
checkRecordEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
checkEntity
,
checkRecordEntity
,
new
String
[]{
"id"
,
"recordId"
});
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java
View file @
db41784e
...
...
@@ -12,6 +12,8 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import
com.mortals.xhx.base.system.user.model.UserQuery
;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.common.code.*
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.perform.model.PerformRulesQuery
;
import
com.mortals.xhx.module.perform.model.vo.AppealInfo
;
import
com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery
;
...
...
@@ -65,6 +67,8 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
private
UserService
userService
;
@Autowired
private
PerformRulesService
rulesService
;
@Autowired
private
DeptService
deptService
;
public
PerformAttendAppealController
()
{
...
...
@@ -77,14 +81,16 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
this
.
addDict
(
model
,
"updateUserId"
,
userService
.
find
(
new
UserQuery
()).
stream
().
collect
(
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getRealName
(),
(
o
,
n
)
->
n
)));
this
.
addDict
(
model
,
"ruleId"
,
rulesService
.
find
(
new
PerformRulesQuery
()).
stream
().
collect
(
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getName
(),
(
o
,
n
)
->
n
)));
this
.
addDict
(
model
,
"checkResult"
,
CheckResultEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"subMethod"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"subMethod"
));
this
.
addDict
(
model
,
"subAddType"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"subAddType"
));
this
.
addDict
(
model
,
"subMethod"
,
SubMethodEnum
.
getEnumMap
(
));
this
.
addDict
(
model
,
"subAddType"
,
SubAddTypeEnum
.
getEnumMap
(
));
this
.
addDict
(
model
,
"processStatus"
,
ProcessStatusEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"appealResult"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"appealResult"
));
this
.
addDict
(
model
,
"appealResult"
,
AppealResultEnum
.
getEnumMap
(
));
this
.
addDict
(
model
,
"reviewResult"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"reviewResult"
));
this
.
addDict
(
model
,
"reviewSource"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"reviewSource"
));
this
.
addDict
(
model
,
"irregularType"
,
IrregularTypeEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"irregularOtherType"
,
paramService
.
getParamBySecondOrganize
(
"PerformAttendAppeal"
,
"irregularOtherType"
));
this
.
addDict
(
model
,
"irregularOtherType"
,
IrregularOtherTypeEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
super
.
init
(
model
,
context
);
}
...
...
@@ -96,7 +102,7 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
}
else
{
query
.
getOrderColList
().
add
(
new
OrderCol
(
"createTime"
,
OrderCol
.
DESCENDING
));
}
if
(!
ObjectUtils
.
isEmpty
(
query
.
getCreateTime
()))
{
if
(!
ObjectUtils
.
isEmpty
(
query
.
getCreateTime
()))
{
query
.
setCreateTimeStart
(
DateUtil
.
formatDate
(
query
.
getCreateTime
()));
query
.
setCreateTimeEnd
(
DateUtil
.
formatDate
(
query
.
getCreateTime
()));
}
...
...
@@ -132,7 +138,7 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
*/
@PostMapping
(
value
=
"audit"
)
public
String
appealAudit
(
@RequestBody
PerformAttendAppealEntity
appeal
)
{
log
.
info
(
"appeal audit ==>{}"
,
JSONObject
.
toJSONString
(
appeal
));
log
.
info
(
"appeal audit ==>{}"
,
JSONObject
.
toJSONString
(
appeal
));
JSONObject
jsonObject
=
new
JSONObject
();
String
busiDesc
=
this
.
getModuleDesc
()
+
"审核"
;
try
{
...
...
@@ -142,7 +148,7 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
}
recordSysLog
(
request
,
busiDesc
+
" 【成功】"
);
jsonObject
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_SUCCESS
);
jsonObject
.
put
(
KEY_RESULT_MSG
,
busiDesc
+
"成功!"
);
jsonObject
.
put
(
KEY_RESULT_MSG
,
busiDesc
+
"成功!"
);
}
catch
(
Exception
e
)
{
log
.
error
(
"申诉审核"
,
e
);
jsonObject
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
...
...
@@ -153,6 +159,7 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
/**
* 申述分布情况统计
*
* @param query
* @return
*/
...
...
@@ -166,15 +173,15 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
int
code
=
1
;
try
{
List
<
PerformAttendAppealEntity
>
result
=
this
.
getService
().
getAppealSummaryList
(
query
);
Map
<
String
,
String
>
dict
=
new
HashMap
<>();
Map
<
String
,
String
>
dict
=
new
HashMap
<>();
//attend:考勤绩效,review:评价差评绩效,complain:评价投诉绩效,gowork:办件绩效,effect:效能绩效,other:其它绩效
dict
.
put
(
"attend"
,
"考勤绩效"
);
dict
.
put
(
"review"
,
"评价差评绩效"
);
dict
.
put
(
"complain"
,
"评价投诉绩效"
);
dict
.
put
(
"gowork"
,
"办件绩效"
);
dict
.
put
(
"effect"
,
"效能绩效"
);
dict
.
put
(
"other"
,
"其它绩效"
);
this
.
addDict
(
model
,
"performType"
,
dict
);
dict
.
put
(
"attend"
,
"考勤绩效"
);
dict
.
put
(
"review"
,
"评价差评绩效"
);
dict
.
put
(
"complain"
,
"评价投诉绩效"
);
dict
.
put
(
"gowork"
,
"办件绩效"
);
dict
.
put
(
"effect"
,
"效能绩效"
);
dict
.
put
(
"other"
,
"其它绩效"
);
this
.
addDict
(
model
,
"performType"
,
dict
);
model
.
put
(
"data"
,
result
);
model
.
put
(
"message_info"
,
busiDesc
+
"成功"
);
if
(!
ObjectUtils
.
isEmpty
(
context
)
&&
!
ObjectUtils
.
isEmpty
(
context
.
getUser
()))
{
...
...
attendance-performance-manager/src/main/resources/bootstrap.yml
View file @
db41784e
...
...
@@ -74,4 +74,5 @@ dingtalk:
AppSecret
:
@
profiles.dingtalk.appSecret@
AesKey
:
@
profiles.dingtalk.aesKey@
token
:
@
profiles.dingtalk.token@
oaUrl
:
@
profiles.dingtalk.oaUrl@
attendance-performance-manager/src/main/resources/config/mybatis-sqlmap-config.xml
View file @
db41784e
...
...
@@ -20,7 +20,7 @@
<plugin
interceptor=
"com.mortals.framework.thirty.mybatis.LogInterceptor"
>
<property
name=
"enableExecutorTime"
value=
"true"
/>
<property
name=
"showSql"
value=
"
tru
e"
/>
<property
name=
"showSql"
value=
"
fals
e"
/>
</plugin>
</plugins>
</configuration>
\ No newline at end of file
attendance-performance-manager/src/main/resources/sqlmap/module/check/CheckAllRecordMapper.xml
View file @
db41784e
...
...
@@ -74,6 +74,15 @@
<if
test=
"checkTimeEnd != null and checkTimeEnd!=''"
>
AND checkTime
<![CDATA[ <= ]]>
STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if
test=
"createUserId != null and createUserId!=''"
>
AND createUserId = #{createUserId}
</if>
) AS a
<if
test=
"orderColList != null and !orderColList.isEmpty()"
>
order by
<trim
suffixOverrides=
","
suffix=
""
>
<foreach
collection=
"orderColList"
open=
""
close=
""
index=
"index"
item=
"item"
separator=
","
>
${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
</select>
<select
id=
"getListCount"
parameterType=
"com.mortals.xhx.module.check.model.CheckAllRecordQuery"
resultType=
"int"
>
...
...
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