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
c53922a6
Commit
c53922a6
authored
2 years ago
by
dll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
海康打卡 假期余额
parent
ba2fd033
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
849 additions
and
385 deletions
+849
-385
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+2
-2
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
...nce-performance-manager-ui/admin/src/assets/utils/ajax.js
+1
-2
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
...rformance-manager-ui/admin/src/assets/utils/dateFormat.js
+2
-1
attendance-performance-manager-ui/admin/src/assets/utils/vaild.js
...ce-performance-manager-ui/admin/src/assets/utils/vaild.js
+9
-0
attendance-performance-manager-ui/admin/src/components/FormField.vue
...performance-manager-ui/admin/src/components/FormField.vue
+3
-3
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
...erformance-manager-ui/admin/src/components/SearchForm.vue
+14
-8
attendance-performance-manager-ui/admin/src/views/attendance/group/groupTemplate.vue
...ger-ui/admin/src/views/attendance/group/groupTemplate.vue
+75
-41
attendance-performance-manager-ui/admin/src/views/attendance/record/error/drawershow.vue
...ui/admin/src/views/attendance/record/error/drawershow.vue
+194
-0
attendance-performance-manager-ui/admin/src/views/attendance/record/error/list.vue
...nager-ui/admin/src/views/attendance/record/error/list.vue
+49
-31
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+103
-48
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+39
-30
attendance-performance-manager-ui/admin/src/views/attendance/staff/stat/list.vue
...manager-ui/admin/src/views/attendance/staff/stat/list.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+44
-37
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue
...dmin/src/views/attendance/vacation/balance/drawershow.vue
+157
-97
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/list.vue
...r-ui/admin/src/views/attendance/vacation/balance/list.vue
+27
-39
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/view.vue
...r-ui/admin/src/views/attendance/vacation/balance/view.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+6
-5
attendance-performance-manager-ui/admin/src/views/job/list.vue
...dance-performance-manager-ui/admin/src/views/job/list.vue
+48
-8
attendance-performance-manager-ui/admin/src/views/login/login.vue
...ce-performance-manager-ui/admin/src/views/login/login.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/staff/care/list.vue
...erformance-manager-ui/admin/src/views/staff/care/list.vue
+10
-4
attendance-performance-manager-ui/admin/src/views/staff/contract/drawershow.vue
...-manager-ui/admin/src/views/staff/contract/drawershow.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
...rformance-manager-ui/admin/src/views/staff/drawershow.vue
+4
-13
attendance-performance-manager-ui/admin/src/views/staff/list.vue
...nce-performance-manager-ui/admin/src/views/staff/list.vue
+57
-11
No files found.
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
c53922a6
...
...
@@ -219,8 +219,8 @@ export default {
// 查看天数
formatterDay
(
row
,
column
,
val
)
{
return
<
el
-
tag
onClick
=
{()
=>
{
this
.
handleCountDays
(
row
,
column
)
}}
>
{
((
val
||
0
)
/
1000
).
toFixed
(
2
)
}
<
/el-tag
>
this
.
handleCountDays
(
row
,
column
,
val
)
}}
>
{
val
}
<
/el-tag
>
},
// 格式化单元格数据
formatterDate
(
row
,
column
)
{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
View file @
c53922a6
...
...
@@ -35,14 +35,13 @@ instance.interceptors.request.use(config => {
// 温
// http://192.168.0.116/17500
// 代
// http://192.168.0.108/17500
const
hostname
=
'
192.168.0.116
'
const
port
=
'
17500
'
// const hostname = '192.168.0.
9
8'
// const hostname = '192.168.0.
10
8'
// const port = '11039'
// 动态修改请求地址
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
View file @
c53922a6
...
...
@@ -39,4 +39,5 @@ export const transFormTime = (num) => {
else
{
return
"
0:00
"
;
}
}
\ No newline at end of file
}
// 时间戳 转 yyyy-MM-dd
\ No newline at end of file
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/assets/utils/vaild.js
View file @
c53922a6
// 前端正则验证方法
export
default
{
day
(
rule
,
value
,
callback
)
{
if
(
!
value
)
return
callback
();
if
(
/^
[
0-9
]
+
\.{0,1}[
0-9
]{0,1}
$/
.
test
(
value
))
{
callback
();
}
else
{
callback
(
new
Error
(
'
请输入正确的金额如 1.5
'
));
}
},
// 手机号码
phone
(
rule
,
value
,
callback
)
{
if
(
/^1
[
3456789
][
0-9
]{9}
$/
.
test
(
value
))
{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/components/FormField.vue
View file @
c53922a6
...
...
@@ -4,12 +4,12 @@
<el-form-item
:label=
"label"
:prop=
"prop"
class=
'my-form-field'
>
<slot>
<el-input
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
@
focus=
"emit"
v-if=
'type === "text"'
:class=
"inputClass"
:clearable=
'clearable'
></el-input>
<el-input
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
'password'
v-if=
'type === "password"'
></el-input>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
@
focus=
"emit"
v-if=
'type === "text"'
:class=
"inputClass"
:clearable=
'clearable'
></el-input>
<el-input
show-word-limit
:maxlength=
"maxLength"
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
type=
'password'
v-if=
'type === "password"'
></el-input>
<el-input-number
:disabled=
'disabled'
v-model=
"field"
size=
"small"
:placeholder=
'placeholder'
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "num"'
></el-input-number>
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
:maxlength=
"maxLength"
<el-input
show-word-limit
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
:maxlength=
"maxLength"
@
change=
"emit"
:rows=
'rows'
@
input=
"emit"
v-if=
'type === "textarea"'
type=
'textarea'
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<!-- 一级 -->
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
View file @
c53922a6
...
...
@@ -230,7 +230,6 @@ export default {
//初始化查询表单
let
newFormData
=
{};
// this.form = this.encode(data, this.form);
console
.
log
(
this
.
search
,
'
ddd
'
)
this
.
search
.
forEach
((
item
)
=>
{
//复选框
if
(
item
.
type
===
"
checkbox
"
)
{
...
...
@@ -256,7 +255,7 @@ export default {
});
this
.
form
=
Object
.
assign
({},
this
.
form
,
newFormData
);
this
.
form
=
Object
.
assign
({},
this
.
form
,
data
);
console
.
log
(
this
.
form
,
'
dddddd
'
)
//
console.log(this.form,'dddddd')
},
cleanForm
()
{
this
.
clean
();
...
...
@@ -276,11 +275,18 @@ export default {
},
onSubmit
()
{
let
{
path
,
query
}
=
this
.
$route
;
if
(
this
.
form
.
attendanceDateStart
&&
this
.
form
.
attendanceDateEnd
){
let
startValue
=
Date
.
parse
(
this
.
form
.
attendanceDateStart
)
let
endValue
=
Date
.
parse
(
this
.
form
.
attendanceDateEnd
)
if
(
startValue
>
endValue
){
this
.
$message
.
error
(
'
查询-结束的日期需大于开始日期
'
)
this
.
form
.
attendanceDateEnd
=
''
return
false
}
}
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
//不更改原始数据
console
.
log
(
this
.
form
,
'
form参数
'
)
//
console.log(this.form,'form参数')
let
data
=
this
.
decode
(
params
);
console
.
log
(
data
,
'
参数
'
)
// Object.assign({}, query, data)
this
.
$router
.
push
({
path
:
path
,
...
...
@@ -369,11 +375,11 @@ export default {
data
()
{
return
{
form
:
{
groupList
:
[],
//
groupList: [],
},
remoteOptions
:
{},
}
;
}
,
}
}
};
</
script
>
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/group/groupTemplate.vue
View file @
c53922a6
...
...
@@ -178,32 +178,32 @@
</div>
<div
class=
"mt10"
>
<el-button
@
click=
"setMustTimes('must'
,attendanceGroupFixedworkSpecialList[0],0
)"
>
<el-button
@
click=
"setMustTimes('must')"
>
+新增必须打卡的日期
</el-button>
<div
class=
"el-tag ml20"
type=
"primary"
size=
"mini"
plain
v-if=
"
attendanceGroupFixedworkSpecialList[0]
"
>
{{
attendanceGroupFixedworkSpecialList
[
0
]
.
specialTime
?
attendanceGroupFixedworkSpecialList
[
0
]
.
specialTime
:
'
未设置
'
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
0
)"
></i>
v-if=
"
mustDakaObj
"
>
{{
mustDakaObj
.
specialTime
?
mustDakaObj
.
specialTime
:
'
未设置
'
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
'must'
)"
></i>
</div>
</div>
<div
class=
"mt10"
>
<el-button
@
click=
"setMustTimes('noneed'
,attendanceGroupFixedworkSpecialList[1],1
)"
>
<el-button
@
click=
"setMustTimes('noneed')"
>
+新增无需打卡的日期
</el-button>
<div
class=
"el-tag ml20"
type=
"primary"
size=
"mini"
plain
v-if=
"
attendanceGroupFixedworkSpecialList[1]&&attendanceGroupFixedworkSpecialList[1]
.specialTime"
>
{{
attendanceGroupFixedworkSpecialList
[
1
]
.
specialTime
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
1
)"
></i>
v-if=
"
noneedDakaObj&&noneedDakaObj
.specialTime"
>
{{
noneedDakaObj
.
specialTime
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
'must'
)"
></i>
</div>
<div
class=
"el-tag ml20"
v-else-if=
"
attendanceGroupFixedworkSpecialList[1]&&attendanceGroupFixedworkSpecialList[1]
.specialStartTime"
>
{{
attendanceGroupFixedworkSpecialList
[
1
]
.
specialStartTime
}}
至
{{
attendanceGroupFixedworkSpecialList
[
1
]
.
specialEndTime
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
1
)"
></i>
v-else-if=
"
noneedDakaObj&&noneedDakaObj
.specialStartTime"
>
{{
noneedDakaObj
.
specialStartTime
}}
至
{{
noneedDakaObj
.
specialEndTime
}}
<i
class=
"el-icon-close"
@
click=
"deleteSpecal(
'noneed'
)"
></i>
</div>
</div>
</div>
...
...
@@ -436,7 +436,8 @@
// 特殊日期
if
(
groupFixedworkEntity
&&
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
){
// 固定班制
this
.
attendanceGroupFixedworkSpecialList
=
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
this
.
noneedDakaObj
=
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
.
find
(
item
=>
item
.
must
===
0
)
this
.
mustDakaObj
=
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
.
find
(
item
=>
item
.
must
===
1
)
}
...
...
@@ -446,7 +447,8 @@
this
.
holidays
=
attendanceGroupFreeworkEntity
.
holidays
}
if
(
attendanceGroupFreeworkEntity
&&
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
){
this
.
attendanceGroupFixedworkSpecialList
=
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
this
.
noneedDakaObj
=
groupFixedworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
0
)
this
.
mustDakaObj
=
groupFixedworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
1
)
}
//负责人
...
...
@@ -529,16 +531,17 @@
// ----- 特殊日期选择 ----
// 删除必须
deleteSpecal
(
index
){
this
.
attendanceGroupFixedworkSpecialList
.
splice
(
index
,
1
)
deleteSpecal
(
from
){
if
(
from
==
'
must
'
){
this
.
mustDakaObj
=
null
}
else
{
this
.
noneedDakaObj
=
null
}
},
// 新增必须打卡 --- 触发班次
setMustTimes
(
from
,
item
,
index
){
if
(
this
.
attendanceGroupFixedworkSpecialList
.
length
){
}
else
{
if
(
from
==
'
must
'
){
this
.
attendanceGroupFixedworkSpecialList
.
splice
(
0
,
0
,{
setMustTimes
(
from
){
if
(
from
==
'
must
'
&&
!
this
.
mustDakaObj
){
this
.
mustDakaObj
=
{
must
:
1
,
//必需打卡
specialStartTime
:
''
,
//时间段
specialEndTime
:
''
,
//
...
...
@@ -546,9 +549,9 @@
addWay
:
0
,
//日期还是时间段
classId
:
''
,
classArr
:{}
}
)
}
else
{
this
.
attendanceGroupFixedworkSpecialList
.
splice
(
1
,
0
,
{
}
}
else
if
(
from
==
'
noneed
'
&&
!
this
.
noneedDakaObj
)
{
this
.
noneedDakaObj
=
{
must
:
0
,
//无需打卡
specialStartTime
:
''
,
//时间段
specialEndTime
:
''
,
//
...
...
@@ -557,16 +560,19 @@
classId
:
''
,
classArr
:{}
}
)
}
}
}
this
.
currentParams
=
this
.
attendanceGroupFixedworkSpecialList
[
index
]
if
(
from
==
'
must
'
){
this
.
mustDaka
=
true
this
.
currentParams
=
this
.
mustDakaObj
this
.
currentselectBanciRow
=
this
.
currentParams
.
classArr
}
else
{
this
.
noneedRange
=
[
this
.
currentParams
.
specialStartTime
,
this
.
currentParams
.
specialEndTime
]
this
.
currentParams
=
this
.
noneedDakaObj
if
(
this
.
currentParams
.
specialStartTime
){
this
.
noneedRange
=
[
this
.
currentParams
.
specialStartTime
,
this
.
currentParams
.
specialEndTime
]
}
else
{
this
.
noneedRange
=
[]
}
this
.
noneedDaka
=
true
}
...
...
@@ -584,13 +590,13 @@
this
.
$message
.
error
(
'
请选择班次
'
)
return
}
if
(
this
.
attendanceGroupFixedworkSpecialList
[
1
]
){
if
(
this
.
attendanceGroupFixedworkSpecialList
[
1
]
.
specialTime
===
this
.
currentParams
.
specialTime
){
if
(
this
.
noneedDakaObj
){
if
(
this
.
noneedDakaObj
.
specialTime
===
this
.
currentParams
.
specialTime
){
this
.
$message
.
error
(
'
该日期已设置为无需打卡日,请重新选择
'
)
return
}
let
timeStart
=
Date
.
parse
(
this
.
attendanceGroupFixedworkSpecialList
[
1
]
.
specialStartTime
)
//无需开始时间戳
let
timeEnd
=
Date
.
parse
(
this
.
attendanceGroupFixedworkSpecialList
[
1
]
.
specialEndTime
)
//无需结束时间戳
let
timeStart
=
Date
.
parse
(
this
.
noneedDakaObj
.
specialStartTime
)
//无需开始时间戳
let
timeEnd
=
Date
.
parse
(
this
.
noneedDakaObj
.
specialEndTime
)
//无需结束时间戳
let
mustTime
=
Date
.
parse
(
this
.
currentParams
.
specialTime
)
//必须时间戳
if
(
mustTime
>=
timeStart
&&
mustTime
<=
timeEnd
){
...
...
@@ -598,7 +604,7 @@
return
false
}
}
this
.
attendanceGroupFixedworkSpecialList
[
0
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
currentParams
))
this
.
mustDakaObj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
currentParams
))
this
.
cancelSpecial
()
},
...
...
@@ -631,21 +637,21 @@
return
}
if
(
this
.
attendanceGroupFixedworkSpecialList
[
0
]
){
if
(
this
.
attendanceGroupFixedworkSpecialList
[
0
]
.
specialTime
===
this
.
currentParams
.
specialTime
&&
this
.
attendanceGroupFixedworkSpecialList
[
0
]
.
specialTime
!=
''
){
if
(
this
.
mustDakaObj
){
if
(
this
.
mustDakaObj
.
specialTime
===
this
.
currentParams
.
specialTime
&&
this
.
mustDakaObj
.
specialTime
!=
''
){
this
.
$message
.
error
(
'
该日期已设置为必须打卡日,请重新选择
'
)
return
}
let
timeStart
=
Date
.
parse
(
this
.
currentParams
.
specialStartTime
)
//无需开始时间戳
let
timeEnd
=
Date
.
parse
(
this
.
currentParams
.
specialEndTime
)
//无需结束时间戳
let
mustTime
=
Date
.
parse
(
this
.
attendanceGroupFixedworkSpecialList
[
0
]
.
specialTime
)
//必须时间戳
let
mustTime
=
Date
.
parse
(
this
.
mustDakaObj
.
specialTime
)
//必须时间戳
if
(
mustTime
>=
timeStart
&&
mustTime
<=
timeEnd
){
this
.
$message
.
error
(
'
无需打卡时间段内不能含有[必须打卡日期],请重新选择
'
)
return
false
}
}
this
.
attendanceGroupFixedworkSpecialList
[
1
]
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
currentParams
))
this
.
noneedDakaObj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
currentParams
))
this
.
cancelSpecial
()
},
...
...
@@ -846,6 +852,13 @@
}
// -----end ---
// 处理特殊日期
if
(
this
.
mustDakaObj
){
this
.
attendanceGroupFixedworkSpecialList
.
push
(
this
.
mustDakaObj
)
}
if
(
this
.
noneedDakaObj
){
this
.
attendanceGroupFixedworkSpecialList
.
push
(
this
.
noneedDakaObj
)
}
// ---- 根据类型判断 ---
// 固定班制校验
...
...
@@ -1079,8 +1092,29 @@
},
holidays
:
0
,
// 假期排休 法定节假日自动排休(0.否,1.是)
// 公共 - 特殊日期设置
attendanceGroupFixedworkSpecialList
:[],
// 必须打卡日期
mustDakaObj
:{
must
:
1
,
//必需打卡
specialStartTime
:
''
,
//时间段
specialEndTime
:
''
,
//
specialTime
:
''
,
//必须打卡日期
addWay
:
0
,
//日期还是时间段
classId
:
''
,
classArr
:{}
},
// 无需打卡日期
noneedDakaObj
:{
must
:
0
,
//无需打卡
specialStartTime
:
''
,
//时间段
specialEndTime
:
''
,
//
specialTime
:
''
,
//必须打卡日期
addWay
:
0
,
//日期还是时间段
classId
:
''
,
classArr
:{}
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/record/error/drawershow.vue
0 → 100644
View file @
c53922a6
<
template
>
<!-- 弹出框表单 -->
<el-drawer
title=
"批量处理"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<div>
已选择6个:
</div>
<div
class=
"staffList"
>
<div
v-for=
"item in 5"
:key=
"item"
class=
"mt10"
>
将
<span>
刘德华
</span>
<span>
的下班时间18:00打卡异常状态
</span>
<span
class=
"ml10"
>
缺卡
</span>
<span
class=
"ml10"
>
修改为
</span>
</div>
<div>
<!-- 处理异常状态 -->
<el-select>
<el-option></el-option>
</el-select>
<!-- 早退/迟到 -->
<el-input
style=
"width:220px"
placeholder=
"请输入数字"
>
<template
slot=
"append"
>
分钟
</
template
>
</el-input>
</div>
<div>
<span>
备注:
</span>
<el-input
placeholder=
"请输入备注"
v-model=
"dealParams.remark"
></el-input>
</div>
</div>
</el-drawer>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
AttendanceRecordDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
attendance/record
"
)
},
data
()
{
return
{
// 子表选中数据
checkedAttendanceRecordDetail
:
[],
// 考勤打卡记录详细信息表格数据
attendanceRecordDetailList
:
[],
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
考勤打卡记录信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
toDate
:[
"
attendanceDate
"
,
],
// 表单校验
rules
:
{
staffName
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
},
dealParams
:{
remark
:
''
,
errorStatus
:
''
}
}
},
methods
:
{
/** 考勤打卡记录详细信息序号 */
rowAttendanceRecordDetailIndex
({
row
,
rowIndex
})
{
row
.
index
=
rowIndex
+
1
;
},
/** 考勤打卡记录详细信息添加按钮操作 */
handleAddAttendanceRecordDetail
()
{
let
obj
=
{};
obj
.
shiftsId
=
""
;
obj
.
shiftsName
=
""
;
obj
.
goWorkDate
=
""
;
obj
.
goWorkResult
=
""
;
obj
.
offWorkDate
=
""
;
obj
.
offWorkResult
=
""
;
obj
.
remark
=
""
;
obj
.
createUserId
=
""
;
obj
.
createTime
=
""
;
obj
.
updateUserId
=
""
;
obj
.
updateTime
=
""
;
this
.
attendanceRecordDetailList
.
push
(
obj
);
},
/** 考勤打卡记录详细信息删除按钮操作 */
handleDeleteAttendanceRecordDetail
()
{
if
(
this
.
checkedAttendanceRecordDetail
.
length
==
0
)
{
this
.
$alert
(
"
请先选择要删除的考勤打卡记录详细信息数据
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
});
}
else
{
this
.
attendanceRecordDetailList
.
splice
(
this
.
checkedAttendanceRecordDetail
[
0
].
index
-
1
,
1
);
}
},
/** 单选框选中数据 */
handleAttendanceRecordDetailSelectionChange
(
selection
)
{
if
(
selection
.
length
>
1
)
{
this
.
$refs
.
attendanceRecordDetail
.
clearSelection
();
this
.
$refs
.
attendanceRecordDetail
.
toggleRowSelection
(
selection
.
pop
());
}
else
{
this
.
checkedAttendanceRecordDetail
=
selection
;
}
},
// 渲染前置处理
beforeRender
(
data
)
{
if
(
data
.
entity
.
attendanceRecordDetailList
)
{
this
.
attendanceRecordDetailList
=
data
.
entity
.
attendanceRecordDetailList
;
}
return
data
},
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/record/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改考勤打卡记录信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
attendance/record/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增考勤打卡记录信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/record/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
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
null
,
staffName
:
""
,
workNum
:
""
,
deptId
:
null
,
deptName
:
""
,
positionId
:
null
,
positionName
:
""
,
attendanceGroupId
:
null
,
attendanceGroupName
:
""
,
shiftsId
:
null
,
shiftsName
:
""
,
attendanceDate
:
null
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/record/error/list.vue
View file @
c53922a6
...
...
@@ -10,6 +10,14 @@
>
批量处理
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 撤销提示 -->
<el-dialog
:visible.sync=
"dialogVisible"
title=
"提示"
width=
"40%"
>
<div>
撤销异常处理结果后,当天的考勤结果将会重新计算,系统需要花费一点时间。
</div>
<div
class=
"flex flex_end"
>
<el-button
@
click=
"dialogVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"resetError"
>
确定
</el-button>
</div>
</el-dialog>
</div>
</
template
>
...
...
@@ -21,33 +29,44 @@
name
:
"
AttendanceRecordErrorList
"
,
components
:
{
dialogShow
},
},
mixins
:
[
table
],
created
()
{
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
morehandle
(){
console
.
log
(
this
.
selection
)
},
// toAdd(row) {
// this.$refs.dialogform.add(row);
// },
// /** 重写编辑方法 */
// toEdit(row) {
// this.$refs.dialogform.edit(row);
// },
// /** 重写查看方法 */
// toView(row) {
// this.$refs.dialogform.view(row);
// },
// morehandle(row){
// console.log(this.selection)
// this.$refs.dialogform.edit(row);
// },
// 处理
handle
(
err
){
console
.
log
(
err
)
this
.
$refs
.
dialogform
.
edit
(
err
);
},
// 撤销
reCancle
(
err
){
console
.
log
(
err
)
this
.
dialogVisible
=
true
},
resetError
(
data
){
this
.
$get
(
'
attendance/record/error/delete
'
,{
id
:
data
.
id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
this
.
dialogVisible
=
false
this
.
getData
()
}
})
}
},
data
()
{
...
...
@@ -59,57 +78,55 @@
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部班次
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
errorStatus
"
,
type
:
"
select
"
,
label
:
"
全部异常状态
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
error
Status
"
,
name
:
"
process
Status
"
,
type
:
"
select
"
,
label
:
"
全部处理状态
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
],
columns
:
[
...
...
@@ -138,17 +155,18 @@
<
span
>
<
el
-
button
type
=
"
text
"
size
=
'
mini
'
onClick
=
{(
row
)
=>
{
this
.
handle
(
row
)
}}
>
处理
<
/el-button
>
}}
v
-
if
=
{
row
.
processStatus
==
0
}
>
处理
<
/el-button
>
<
el
-
button
type
=
"
text
"
size
=
'
mini
'
onClick
=
{(
row
)
=>
{
this
.
reCancle
(
row
)
}}
>
撤销
<
/el-button
>
}}
v
-
else
>
撤销
<
/el-button
>
<
/span
>
)
}
}
]
}
};
},
dialogVisible
:
false
}
}
};
</
script
>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
c53922a6
...
...
@@ -73,13 +73,32 @@
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"
item in 10"
:key=
"item
"
>
<div
class=
"list mt10"
v-for=
"
(item,index) in exportList"
:key=
"index"
@
click=
"changeStatus(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
class=
"details"
v-if=
"item.islook"
>
<div
class=
"mt10"
v-if=
"item.recordIdList"
>
选择列表id:
{{
item
.
recordIdList
}}
</div>
<div
class=
"mt10"
v-if=
"item.deptName"
>
选择部门:
{{
item
.
deptName
}}
</div>
<div
class=
"mt10"
v-if=
"item.groupName"
>
选择考勤组:
{{
item
.
groupName
}}
</div>
<div
class=
"mt10"
v-if=
"item.className"
>
选择班次:
{{
item
.
className
}}
</div>
<div
class=
"mt10"
>
<el-link
:href=
"baseUrl+item.filePath"
target=
"_blank"
type=
"primary"
>
重新下载
</el-link>
</div>
</div>
<div
class=
"times mt10"
>
导出时间:
{{
item
.
createTime
}}
</div>
</div>
</div>
...
...
@@ -91,6 +110,7 @@
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
timestampToTime
}
from
'
@/assets/utils/dateFormat
'
export
default
{
name
:
"
AttendanceRecordHikList
"
,
components
:
{
...
...
@@ -101,7 +121,26 @@
// console.log(this.$route.query,'sssss')
},
methods
:
{
// 更改状态
changeStatus
(
item
){
this
.
$set
(
item
,
'
islook
'
,
!
item
.
islook
)
},
// 导出记录
lookexportHis
(){
this
.
$post
(
'
/attendance/export/record/list
'
,{
type
:
1
,
page
:
1
,
size
:
-
1
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
let
arr
=
res
.
data
.
data
this
.
exportList
=
arr
.
map
(
item
=>
{
item
.
createTime
=
timestampToTime
(
item
.
createTime
)
item
.
islook
=
false
return
item
})
}
})
// 导出记录
this
.
drawerhistory
=
true
},
...
...
@@ -132,15 +171,26 @@
this
.
$alert
(
response
.
msg
,
"
导入结果
"
,
{
dangerouslyUseHTMLString
:
true
});
this
.
getData
();
},
/** 提交上传文件 */
/** 提交上传文件 */
submitFileForm
()
{
this
.
$refs
.
upload
.
submit
();
},
/** 导出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/record/hik/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
...
params
,
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
...
...
@@ -184,45 +234,43 @@
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
workN
ame
'
,
name
:
'
workN
um
'
,
type
:
'
text
'
,
label
:
'
工号
'
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
所属部门
"
,
fuzzy
:
true
fuzzy
:
false
},
// {
// name: "deptId",
// type: "select",
// label: "所属部门",
// fuzzy: false
// },
// {
// name: "attendanceGroupId",
// type: "select",
// label: "所属考勤组",
// fuzzy: false
// },
// {
// name: "shiftsId",
// type: "select",
// label: "班次",
// fuzzy: false
// },
{
name
:
"
attendanceGroupId
"
,
type
:
"
select
"
,
label
:
"
所属考勤组
"
,
fuzzy
:
true
},
{
name
:
"
shiftsId
"
,
type
:
"
select
"
,
label
:
"
班次
"
,
fuzzy
:
true
},
{
name
:
'
startTime
'
,
name
:
'
attendanceDateStart
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
endTime
'
,
name
:
'
attendanceDateEnd
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
}
],
columns
:
[
...
...
@@ -230,27 +278,29 @@
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
考勤组
"
,
prop
:
"
attendanceGroupName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
},
{
label
:
"
班次
"
,
prop
:
"
shiftsName
"
},
//
{label: "部门", prop: "deptName"},
//
{label: "考勤组", prop: "attendanceGroupName"},
//
{label: "职位", prop: "positionName"},
//
{label: "班次", prop: "shiftsName"},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
考勤点名称
"
,
prop
:
"
attendanceAddress
"
},
{
label
:
"
事件源
"
,
prop
:
"
eventSource
"
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noDel
noEdit
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
//
{
//
label: "操作",
//
width: 240,
//
formatter: row => {
//
return (
//
<
table
-
buttons
noAdd
noDel
noEdit
noView
row
=
{
row
}
//
onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
//
)
//
}
//
}
]
},
drawerhistory
:
false
};
drawerhistory
:
false
,
exportList
:[],
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
}
}
};
</
script
>
...
...
@@ -266,6 +316,11 @@
font-size
:
12px
;
color
:
#999
;
}
cursor
:
pointer
;
}
}
.details
{
cursor
:
pointer
;
}
</
style
>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
c53922a6
...
...
@@ -48,6 +48,7 @@
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<!-- 导出记录查看 -->
...
...
@@ -181,8 +182,18 @@
/** 导出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/record/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
...
...
@@ -278,13 +289,13 @@
fuzzy
:
true
},
{
name
:
"
attendanceG
roupId
"
,
name
:
"
g
roupId
"
,
type
:
"
select
"
,
label
:
"
所属考勤组
"
,
fuzzy
:
true
},
{
name
:
"
shift
sId
"
,
name
:
"
clas
sId
"
,
type
:
"
select
"
,
label
:
"
班次
"
,
fuzzy
:
true
...
...
@@ -292,14 +303,12 @@
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
}
...
...
@@ -313,31 +322,31 @@
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
},
{
label
:
"
班次
"
,
prop
:
"
shiftsName
"
},
{
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
>
);
},
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noEdit
noView
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
//
{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
>
//
);
//
},
//
},
//
{
//
label: "操作",
//
width: 240,
//
formatter: row => {
//
return (
//
<
table
-
buttons
noAdd
noEdit
noView
noDel
//
row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
//
);
//
}
//
}
]
},
drawerhistory
:
false
,
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/staff/stat/list.vue
View file @
c53922a6
...
...
@@ -42,7 +42,7 @@
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
],
columns
:
[
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
c53922a6
...
...
@@ -94,8 +94,17 @@
/** 导出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
"
,
{
"
idList
"
:
this
.
selection
,
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
...
...
@@ -111,45 +120,43 @@
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部班次
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
}
],
columns
:
[
...
...
@@ -162,59 +169,59 @@
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
回单位(天)
"
,
prop
:
"
backToUnit
"
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公请假(天)
"
,
prop
:
"
onDutyLeave
"
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
外出勘验(天)
"
,
prop
:
"
outOfOffice
"
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
值班补班(天)
"
,
prop
:
"
shiftCompensation
"
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
体检(天)
"
,
prop
:
"
physicalExamination
"
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
隔离(天)
"
,
prop
:
"
quarantine
"
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公外出(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
公休(天)
"
,
prop
:
"
publicHoliday
"
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeave
"
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
丧假(天)
"
,
prop
:
"
funeralLeave
"
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeave
"
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
育儿假(天)
"
,
prop
:
"
childRearingLeave
"
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
产假(陪护假/天)
"
,
prop
:
"
maternityLeave
"
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
调回单位(或离职/天)
"
,
prop
:
"
transferBack
"
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
探亲假(天)
"
,
prop
:
"
homeLeave
"
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
事假(天)
"
,
prop
:
"
personalLeave
"
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
},
// {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue
View file @
c53922a6
<
template
>
<!-- 弹出框表单 -->
<el-drawer
title=
"假期使用记录"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<div
class=
"mt20"
>
<span>
当前假期余额:20天
</span>
<el-tag
type=
"success"
size=
"mini"
>
修改余额
</el-tag>
</div>
<div
class=
"mt20"
>
<el-steps
direction=
"vertical"
:active=
"1"
>
<el-step
title=
"步骤 1"
></el-step>
<el-step
title=
"步骤 2"
></el-step>
<el-step
title=
"步骤 3"
description=
"这是一段很长很长很长的描述性文字"
></el-step>
</el-steps>
</div>
<div
class=
"tips mt20"
>
当前病假规则:每年1月1日自动发放 30天
</div>
<!--
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工id"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工id"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
type=
"textarea"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"部门id"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入部门id"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入部门名称"
/>
<Field
label=
"入职时间"
prop=
"entryTime"
v-model=
"form.entryTime"
type=
"date"
/>
<Field
label=
"事假"
prop=
"personalLeaveDays"
v-model=
"form.personalLeaveDays"
placeholder=
"请输入事假"
/>
<Field
label=
"调休"
prop=
"compensatedLeaveDays"
v-model=
"form.compensatedLeaveDays"
placeholder=
"请输入调休"
/>
<Field
label=
"病假"
prop=
"sickLeaveDays"
v-model=
"form.sickLeaveDays"
placeholder=
"请输入病假"
/>
<Field
label=
"年假"
prop=
"annualLeaveDays"
v-model=
"form.annualLeaveDays"
placeholder=
"请输入年假"
/>
<Field
label=
"婚假"
prop=
"marriageLeaveDays"
v-model=
"form.marriageLeaveDays"
placeholder=
"请输入婚假"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
-->
</el-drawer>
<div>
<!-- 弹出框表单 -->
<el-drawer
title=
"假期使用记录"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<div
style=
"padding:20px"
>
<div
class=
"mt20"
>
<span>
当前假期余额:
{{
days
}}
天
</span>
<el-button
type=
"success"
size=
"mini"
class=
"ml20"
@
click=
"editFn"
>
修改余额
</el-button>
</div>
<div
class=
"mt20"
>
<el-steps
direction=
"vertical"
>
<el-step
:title=
"item.createTime"
v-for=
"(item,index) in recordList"
:key=
"index"
>
<i
class=
"el-icon-timer"
slot=
"icon"
></i>
<template
slot=
"description"
>
<div>
<span
style=
"color:#000"
>
{{
item
.
subOrAddDays
}}
</span>
<span
class=
"ml20"
>
{{
item
.
validityPeriod
}}
有效
</span>
</div>
<div>
<span
style=
"color:#000"
>
{{
item
.
content
}}
</span>
</div>
<div>
<span
style=
"color:#000"
>
理由:
{{
item
.
reason
}}
</span>
</div>
</
template
>
</el-step>
</el-steps>
</div>
<div
class=
"tips mt20"
>
当前病假规则:每年1月1日自动发放 30天
</div>
</div>
</el-drawer>
<el-dialog
title=
"修改余额"
:show-close=
"false"
:visible.sync=
"isedit"
>
<el-form
ref=
"form"
:model=
"editParams"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
label=
"修改类型"
prop=
"subAddType"
>
<el-select
v-model=
"editParams.subAddType"
>
<el-option
v-for=
'($label, $value) in dict.subAddType'
:key=
"$value"
:label=
"$label"
:value=
"$value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"修改天数"
prop=
"subOrAddDays"
>
<el-input
v-model=
"editParams.subOrAddDays"
style=
"width:220px"
></el-input>
<span>
天
</span>
</el-form-item>
<el-form-item
label=
"修改理由"
prop=
"reason"
>
<el-input
type=
"textarea"
placeholder=
"请输入理由"
v-model=
"editParams.reason"
></el-input>
</el-form-item>
<el-form-item>
<el-button
@
click=
"subMit"
type=
"primary"
size=
"mini"
>
确认
</el-button>
<el-button
@
click=
"cancle"
size=
"mini"
>
取消
</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
{
timestampToTime
}
from
'
@/assets/utils/dateFormat
'
export
default
{
name
:
"
AttendanceVacationBalanceDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
attendance/vacation/balance
"
)
// this.changePath("attendance/vacation/record
")
},
data
()
{
var
day
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
return
callback
();
if
(
/^
[
0-9
]
+
\.{0,1}[
0-9
]{0,1}
$/
.
test
(
value
))
{
callback
();
}
else
{
callback
(
new
Error
(
'
请输入正确的金额如 1.5
'
));
}
}
return
{
days
:
0
,
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
员工假期余额信息
"
,
// 是否显示弹出层
open
:
false
,
isedit
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
...
...
@@ -62,36 +103,83 @@ export default {
],
// 表单校验
rules
:
{
}
};
subAddType
:[
{
required
:
true
,
message
:
"
请选择类型
"
,
trigger
:
'
change
'
},
],
subOrAddDays
:[
{
required
:
true
,
message
:
"
请输入天数
"
},
{
validator
:
day
,
trigger
:
'
blur
'
}
],
reason
:[
{
required
:
true
,
message
:
'
请输入理由
'
}
]
},
recordList
:[],
editParams
:{
// id:'',
staffId
:
""
,
type
:
''
,
subAddType
:
""
,
subOrAddDays
:
''
,
reason
:
""
,
},
dict
:{},
//字典
}
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/vacation/balance/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改员工假期余额信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
attendance/vacation/balance/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增员工假期余额信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/vacation/balance/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
员工假期余额信息详细
"
;
this
.
editParams
.
type
=
row
.
type
this
.
editParams
.
staffId
=
row
.
staffId
// this.editParams.id = row.id
this
.
days
=
row
.
val
this
.
$post
(
"
/attendance/vacation/record/list
"
,
{
page
:
1
,
size
:
-
1
,
type
:
row
.
type
,
staffId
:
row
.
staffId
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
open
=
true
let
arr
=
res
.
data
.
data
this
.
recordList
=
arr
.
map
(
item
=>
{
item
.
createTime
=
timestampToTime
(
item
.
createTime
)
return
item
})
this
.
dict
=
res
.
data
.
dict
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
msg
);
})
},
// 修改余额
editFn
(){
this
.
isedit
=
true
},
subMit
(){
this
.
$refs
[
'
form
'
].
validate
((
valid
)
=>
{
if
(
valid
){
this
.
$post
(
'
attendance/vacation/record/save
'
,
this
.
editParams
).
then
(
res
=>
{
if
(
res
.
code
==
1
){
this
.
afterSubmit
()
}
else
{
this
.
$message
.
error
(
res
.
msg
)
}
})
}
})
},
cancle
(){
this
.
editParams
.
subAddType
=
''
this
.
editParams
.
subOrAddDays
=
''
this
.
editParams
.
reason
=
''
this
.
isedit
=
false
},
/**取消按钮 */
cancel
()
{
...
...
@@ -101,41 +189,13 @@ export default {
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
isedit
=
false
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
null
,
staffName
:
""
,
deptId
:
null
,
deptName
:
""
,
entryTime
:
null
,
personalLeaveDays
:
0
,
compensatedLeaveDays
:
0
,
sickLeaveDays
:
0
,
annualLeaveDays
:
0
,
maternityLeaveDays
:
0
,
paternityLeaveDays
:
0
,
marriageLeaveDays
:
0
,
menstrualLeaveDays
:
0
,
breastfeedingLeaveDays
:
0
,
bereavementLeaveDays
:
0
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
}
}
}
</
script
>
<
style
scoped
lang=
"less"
>
.tips{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/list.vue
View file @
c53922a6
...
...
@@ -24,43 +24,30 @@ export default {
// 导出
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/vacation/balance/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
/** 查看不同类型假期记录 */
handleCountDays
(
row
,
leavetype
){
this
.
$
post
(
"
/attendance/vacation/record/list
"
,
{
page
:
1
,
s
ize
:
-
1
,
type
:
leavetype
,
staffId
:
row
.
staffId
handleCountDays
(
row
,
column
,
val
){
this
.
$
refs
.
drawerform
.
view
(
{
type
:
this
.
util_formatter
(
'
AllHolidays
'
,
column
.
property
)
,
s
taffId
:
row
.
staffId
,
id
:
row
.
id
,
val
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
//todo 抽屉打开 假期明细信息
//this.$message.success("激活设备成功!");
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
})
}
},
...
...
@@ -93,17 +80,18 @@ export default {
{
label
:
"
病假(天)
"
,
prop
:
"
sickLeaveDays
"
,
formatter
:
this
.
formatterDay
},
{
label
:
"
年假(天)
"
,
prop
:
"
annualLeaveDays
"
,
formatter
:
this
.
formatterDay
},
{
label
:
"
婚假(天)
"
,
prop
:
"
marriageLeaveDays
"
,
formatter
:
this
.
formatterDay
},
{
label
:
"
哺乳假(天)
"
,
prop
:
"
breastfeedingLeaveDays
"
,
formatter
:
this
.
formatterDay
},
// {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noEdit
noView
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
//
{
//
label: "操作",
//
width: 240,
//
formatter: row => {
//
return (
//
<
table
-
buttons
noAdd
noEdit
noView
noDel
row
=
{
row
}
//
onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
//
)
//
}
//
}
],
isExport
:
false
}
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/view.vue
View file @
c53922a6
...
...
@@ -8,7 +8,7 @@
<
template
slot=
"extra"
>
<el-button
type=
"primary"
@
click=
"$router.go(-1)"
size=
"small"
>
返回
</el-button>
</
template
>
<el-descriptions-item
label=
"员工id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
<el-descriptions-item
label=
"员工id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.staffId}}
</el-descriptions-item>
<el-descriptions-item
label=
"员工姓名"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
c53922a6
...
...
@@ -8,12 +8,13 @@
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
v-if=
"title == '新增职位信息'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"title == '新增分组信息'"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
:maxLength=
"10"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
v-if=
"title == '新增职位信息'"
/>
<Field
label=
"职位名称"
prop=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"title == '新增职位信息'"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
/>
<Field
label=
"职位名称"
prop=
"jobName"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
/>
<Field
label=
"类型"
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
...
...
@@ -88,9 +89,9 @@
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
form
.
type
=
this
.
form
.
type
.
toString
()
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/job/list.vue
View file @
c53922a6
...
...
@@ -10,6 +10,7 @@
<el-button
type=
"success"
size=
"mini"
@
click=
"saveFn('position')"
>
新增职位
</el-button>
</div>
<el-scrollbar
style=
"height: 100%"
>
<!-- 区分分组和职位 -->
<el-tree
size=
"mini"
ref=
"siteTree"
...
...
@@ -25,6 +26,13 @@
:render-content=
"renderContent"
@
node-click=
"handleNodeClick"
>
<span
slot-scope=
"
{ node, data }">
<span
style=
"font-size:14px"
>
{{
node
.
label
}}
</span>
<span>
<i
class=
"el-icon-edit"
style=
"color:#409EFF"
@
click=
"editJob(node)"
></i>
<i
class=
"el-icon-delete"
style=
"color:#F56C6C"
@
click=
"deleteFn(node)"
></i>
</span>
</span>
</el-tree>
</el-scrollbar>
</el-col>
...
...
@@ -90,9 +98,17 @@
},
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
(
"
/job/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
...
...
@@ -123,6 +139,29 @@
path
:
key
})
},
// 职位
editJob
(
row
){
// 编辑职位/分组
this
.
toEdit
(
row
)
},
// 删除
deleteFn
(
row
){
this
.
$confirm
(
'
此操作将永久删除该信息, 是否继续?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(
res
=>
{
// 删除操作
this
.
$post
(
'
/job/delete
'
,{
id
:
row
.
id
}).
then
(
data
=>
{
if
(
data
.
code
===
1
){
this
.
$message
({
type
:
'
success
'
,
message
:
'
删除成功!
'
})
}
})
})
}
},
data
()
{
return
{
...
...
@@ -157,17 +196,18 @@
// {label: "职位编码", prop: "jobCode"},
// {label: "职位名称", prop: "jobName"},
{
label
:
"
姓名
"
,
prop
:
"
job
Name
"
},
{
label
:
"
部门
"
,
prop
:
"
job
Name
"
},
{
label
:
"
员工类型
"
,
prop
:
"
jobName
"
},
{
label
:
"
手机号
"
,
prop
:
"
jobName
"
},
{
label
:
"
添加时间
"
,
prop
:
"
jobName
"
},
{
label
:
"
姓名
"
,
prop
:
"
staff
Name
"
},
{
label
:
"
部门
"
,
prop
:
"
dept
Name
"
},
{
label
:
"
员工类型
"
,
prop
:
"
staffType
"
,
formatter
:
this
.
formatterType
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
添加时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDateOnly
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
table
-
buttons
noAdd
noView
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/login/login.vue
View file @
c53922a6
...
...
@@ -20,9 +20,9 @@
</el-form>
</div>
<div
class=
"footer"
>
<
!--
<
div
class=
"footer"
>
登陆
©
<a
href=
""
>
信宏翔网络科技有限公司
</a>
出品
</div>
</div>
-->
</div>
</
template
>
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/care/list.vue
View file @
c53922a6
...
...
@@ -162,11 +162,17 @@ export default {
/** 导出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
(
"
/staff/care/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
staffName
'
:
this
.
$route
.
query
[
'
staffName
'
],
'
careType
'
:
this
.
$route
.
query
[
'
careType
'
],
'
sendStatus
'
:
this
.
$route
.
query
[
'
sendStatus
'
],
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/contract/drawershow.vue
View file @
c53922a6
...
...
@@ -7,7 +7,7 @@
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
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"
/>
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
View file @
c53922a6
...
...
@@ -18,15 +18,15 @@
<!--
<Field
label=
"政治面貌 "
prop=
"politicalstatus"
v-model=
"form.politicalstatus"
type=
"select"
:enumData=
"dict.politicalstatus"
placeholder=
"请选择政治面貌 "
/>
-->
<!--
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
-->
<Field
label=
"员工姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"员工姓名"
:maxLength=
"10"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"手机号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"手机号码"
:maxLength=
"11"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请选择所属部门"
@
focus=
"ishowBumen = true"
/>
<Field
label=
"所属部门"
:maxLength=
"10"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请选择所属部门"
@
focus=
"ishowBumen = true"
/>
<Field
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
:enumData=
"dict.positionId"
type=
"select"
placeholder=
"请选择职位"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"工号"
:maxLength=
"15"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<!--
<Field
label=
"是否在政务大厅"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请选择"
type=
"select"
/>
-->
<!--
<Field
label=
"职位名称"
prop=
"positionName"
v-model=
"form.positionName"
placeholder=
"请输入职位名称"
/>
-->
...
...
@@ -101,7 +101,6 @@
},
created
()
{
this
.
changePath
(
"
staff
"
)
this
.
getjobSelect
()
},
data
()
{
return
{
...
...
@@ -175,9 +174,6 @@
},
// 点击
handleNodeClick
(
node
)
{
if
(
node
.
children
.
length
>
0
){
return
}
this
.
deptnode
=
node
},
comfirmbument
(){
...
...
@@ -257,11 +253,6 @@
},
cancledept
(){
this
.
deptnode
=
{}
},
getjobSelect
(){
this
.
$post
(
'
/job/list
'
).
then
(
res
=>
{
console
.
log
(
res
)
})
}
}
}
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/list.vue
View file @
c53922a6
...
...
@@ -60,7 +60,7 @@
<el-button
type=
"text"
@
click=
"lookDetailHis"
>
历史花名册
</el-button>
</el-dropdown-item>
<el-dropdown-item>
<el-button
type=
"text"
>
自定义列表字段
</el-button>
<el-button
type=
"text"
@
click=
"SelectEXport"
>
自定义列表字段
</el-button>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
...
...
@@ -117,7 +117,7 @@
<!-- 花名册记录查看 -->
<el-drawer
title=
"
花名册记录
"
title=
"
历史花名册
"
:visible.sync=
"drawerhistory"
direction=
"rtl"
>
<div
class=
"hisList"
>
...
...
@@ -133,6 +133,19 @@
</div>
</el-drawer>
<!-- 表格设置 -->
<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>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
:bumentree=
"areaData"
/>
</div>
</
template
>
...
...
@@ -156,6 +169,11 @@
})
},
methods
:
{
// 自定义字段
SelectEXport
(){
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
this
.
isdialog
=
true
},
/** 导入 */
handleImport
()
{
this
.
upload
.
title
=
"
员工导入
"
;
...
...
@@ -197,24 +215,49 @@
},
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
(
"
/staff/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
...
params
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 下载模板操作 */
downloadTemplate
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/staff/downloadTemplate
"
,
{},
{
type
:
"
excel
"
})
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
// 导出花名册
lookDetailHis
(){
console
.
log
(
'
1111
'
)
this
.
drawerhistory
=
true
}
},
/** 提交上传文件 */
submitFileForm
()
{
this
.
$refs
.
upload
.
submit
();
},
},
data
()
{
return
{
// 用户导入参数
upload
:
{
headers
:{
Authorization
:
window
.
sessionStorage
.
getItem
(
'
token
'
)
||
''
},
// 是否显示弹出层(员工关怀信息导入)
open
:
false
,
// 弹出层标题(员工关怀信息导入)
...
...
@@ -224,7 +267,7 @@
// 是否更新已经存在的数据
updateSupport
:
0
,
// 上传的地址
url
:
"
/attendance/staff/list
/importData
"
,
url
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/staff
/importData
"
,
},
config
:
{
search
:
[
...
...
@@ -232,13 +275,13 @@
name
:
"
name
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
tru
e
fuzzy
:
fals
e
},
{
name
:
'
phoneNumber
'
,
type
:
'
text
'
,
label
:
'
手机号
'
,
fuzzy
:
tru
e
fuzzy
:
fals
e
}
],
columns
:
[
...
...
@@ -247,11 +290,11 @@
{
label
:
"
员工姓名
"
,
prop
:
"
name
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
,
formatter
:
this
.
formatters
},
{
label
:
"
员工类型
"
,
prop
:
"
staffType
"
,
formatter
:
this
.
formatterType
},
{
label
:
"
员工状态
"
,
prop
:
"
status
"
,
formatter
:
this
.
formatter
},
{
label
:
"
是否在政务中心
"
,
prop
:
"
source
"
,
formatter
:
this
.
formatterSource
},
//未对
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
formatter
:
this
.
formatters
},
{
label
:
"
操作
"
,
width
:
240
,
...
...
@@ -268,7 +311,10 @@
personData
:[],
isExport
:
false
,
staffInfo
:{},
drawerhistory
:
false
drawerhistory
:
false
,
checkList
:[],
setcolum
:[],
isdialog
:
false
}
},
computed
:{
...
...
This diff is collapsed.
Click to expand it.
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