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
15f70ac8
Commit
15f70ac8
authored
Jul 19, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改考勤汇总
parent
0edd87c4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
162 additions
and
158 deletions
+162
-158
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
...erformance-manager-ui/admin/src/components/SearchForm.vue
+148
-153
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceLeaveRecordEntity.java
.../module/attendance/model/AttendanceLeaveRecordEntity.java
+13
-4
db/add.sql
db/add.sql
+1
-1
No files found.
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
View file @
15f70ac8
...
...
@@ -4,171 +4,172 @@
<div
class=
"search-form-wapper"
>
<el-form
:inline=
"true"
:model=
"form"
ref=
"search-form"
size=
"small"
>
<el-form-item
v-for=
"(item, i) in search"
:key=
"i"
v-bind:class=
"
{ search_new_line: item.newLine }"
v-for=
"(item, i) in search"
:key=
"i"
v-bind:class=
"
{ search_new_line: item.newLine }"
>
<el-input
v-model=
"form[item.name]"
v-if=
"item.type === 'text'"
:placeholder=
"
v-model=
"form[item.name]"
v-if=
"item.type === 'text'"
:placeholder=
"
item.placeholder ? item.placeholder : '请输入' + item.label
"
></el-input>
<el-checkbox-group
v-model=
"form[item.name]"
v-if=
"item.type === 'checkbox'"
v-model=
"form[item.name]"
v-if=
"item.type === 'checkbox'"
>
<el-checkbox
v-for=
"(label, value) in table.dict[item.name]"
:label=
"value"
:key=
"value"
>
{{
label
}}
</el-checkbox
v-for=
"(label, value) in table.dict[item.name]"
:label=
"value"
:key=
"value"
>
{{
label
}}
</el-checkbox
>
</el-checkbox-group>
<el-select
v-model=
"form[item.name]"
:filterable=
"item.filterable"
:multiple=
"item.multiple"
clearable=
"true"
@
change=
"item.change"
@
clear=
"item.clear"
v-if=
"item.type === 'select'"
v-model=
"form[item.name]"
:filterable=
"item.filterable"
:multiple=
"item.multiple"
clearable=
"true"
@
change=
"item.change"
@
clear=
"item.clear"
:placeholder=
"item.label ? item.label : '请选择'"
v-if=
"item.type === 'select'"
>
<el-option
label=
"全部"
value=
""
v-if=
"!item.multiple && !item.notShowAll"
label=
"全部"
value=
""
v-if=
"!item.multiple && !item.notShowAll"
></el-option>
<el-option
:label=
"label"
:value=
"value"
v-for=
"(label, value) in table.dict[item.name]"
:key=
"value"
:label=
"label"
:value=
"value"
v-for=
"(label, value) in table.dict[item.name]"
:key=
"value"
></el-option>
</el-select>
<el-select
v-model=
"form[item.name]"
clearable
:multiple=
"item.multiple"
filterable
remote
v-if=
"item.type === 'remoteSelect'"
placeholder=
"请输入关键词"
searchType=
"item.searchType"
:remote-method=
"
v-model=
"form[item.name]"
clearable
:multiple=
"item.multiple"
filterable
remote
v-if=
"item.type === 'remoteSelect'"
placeholder=
"请输入关键词"
searchType=
"item.searchType"
:remote-method=
"
(query) =>
{
remoteMethod(query, item.searchType);
}
"
>
<el-option
:label=
"label"
:value=
"value"
v-for=
"(label, value) in remoteOptions[item.searchType]"
:key=
"value"
:label=
"label"
:value=
"value"
v-for=
"(label, value) in remoteOptions[item.searchType]"
:key=
"value"
></el-option>
</el-select>
<el-cascader
placeholder=
"选择区域"
v-if=
"item.type === 'cascader'"
v-model=
"selectedTreeID"
:filterable=
"item.filterable"
clearable=
"true"
change-on-select
@
change=
"treeSelecteds"
:options=
"treeDatas"
placeholder=
"选择区域"
v-if=
"item.type === 'cascader'"
v-model=
"selectedTreeID"
:filterable=
"item.filterable"
clearable=
"true"
change-on-select
@
change=
"treeSelecteds"
:options=
"treeDatas"
></el-cascader>
<el-select
v-model=
"form[item.name]"
:multiple=
"item.multiple"
:remote-method=
"userRemoteMethod"
:loading=
"loading"
@
focus=
"userRemoteMethod"
:reserve-keyword=
"item.reserve - keyword"
:clearable=
"item.clearable"
:placeholder=
"item.placeholder ? item.placeholder : '请输入用户'"
filterable
remote
v-if=
"item.type === 'userLoginNameRemoteSelect'"
v-model=
"form[item.name]"
:multiple=
"item.multiple"
:remote-method=
"userRemoteMethod"
:loading=
"loading"
@
focus=
"userRemoteMethod"
:reserve-keyword=
"item.reserve - keyword"
:clearable=
"item.clearable"
:placeholder=
"item.placeholder ? item.placeholder : '请输入用户'"
filterable
remote
v-if=
"item.type === 'userLoginNameRemoteSelect'"
>
<el-option
v-for=
"i in userData"
:key=
"i.loginName"
:label=
"i.realName"
:value=
"i.loginName"
v-for=
"i in userData"
:key=
"i.loginName"
:label=
"i.realName"
:value=
"i.loginName"
></el-option>
</el-select>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'date' && !item.valueFormat"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"选择日期
"
v-model=
"form[item.name]"
v-if=
"item.type === 'date' && !item.valueFormat"
type=
"date"
value-format=
"yyyy-MM-dd"
:placeholder=
"item.label ? item.label : '选择日期'
"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'date' && item.valueFormat"
type=
"date"
:value-format=
"item.valueFormat"
placeholder=
"选择日期
"
v-model=
"form[item.name]"
v-if=
"item.type === 'date' && item.valueFormat"
type=
"date"
:value-format=
"item.valueFormat"
:placeholder=
"item.label ? item.label : '选择日期'
"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'month' && !item.valueFormat"
type=
"month"
value-format=
"yyyy-MM"
placeholder=
"选择月份
"
v-model=
"form[item.name]"
v-if=
"item.type === 'month' && !item.valueFormat"
type=
"month"
value-format=
"yyyy-MM"
:placeholder=
"item.label ? item.label : '选择月份'
"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'month' && item.valueFormat"
type=
"month"
:value-format=
"item.valueFormat"
placeholder=
"选择月份
"
v-model=
"form[item.name]"
v-if=
"item.type === 'month' && item.valueFormat"
type=
"month"
:value-format=
"item.valueFormat"
:placeholder=
"item.label ? item.label : '选择月份'
"
>
</el-date-picker>
<el-date-picker
v-model=
"form[item.name]"
v-if=
"item.type === 'datetime'"
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
:placeholder=
"item.label"
v-model=
"form[item.name]"
v-if=
"item.type === 'datetime'"
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
:placeholder=
"item.label"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"addclass
"
icon=
"el-icon-search"
@
click=
"onSubmit"
title=
"查询"
>
查询
</el-button
type=
"primary
"
icon=
"el-icon-search"
@
click=
"onSubmit"
title=
"查询"
>
查询
</el-button
>
<el-button
icon=
"el-icon-download"
@
click=
"downloadFile"
:loading=
"isDownload"
v-if=
"downloadUrl"
>
下载
</el-button
icon=
"el-icon-download"
@
click=
"downloadFile"
:loading=
"isDownload"
v-if=
"downloadUrl"
>
下载
</el-button
>
<el-button
icon=
"el-icon-refresh-left"
@
click=
"cleanForm"
title=
"清空"
>
清空
</el-button
>
清空
</el-button
>
</el-form-item>
</el-form>
...
...
@@ -193,17 +194,16 @@ export default {
},
watch
:
{
$route
(
route
)
{
console
.
log
(
222
)
this
.
initForm
(
route
.
query
);
},
},
async
created
()
{
console
.
log
(
"
1111
"
)
this
.
initForm
(
this
.
$route
.
query
);
},
methods
:
{
remoteMethod
(
query
,
searchType
)
{
if
(
query
==
""
)
{
console
.
log
(
"
查询参数为空!
"
);
return
;
}
this
.
loading
=
true
;
...
...
@@ -220,8 +220,8 @@ export default {
});
this
.
remoteOptions
[
searchType
]
=
Object
.
assign
({},
tempOptions
);
sessionStorage
.
setItem
(
searchType
+
"
OptionsDict
"
,
JSON
.
stringify
(
this
.
remoteOptions
[
searchType
])
searchType
+
"
OptionsDict
"
,
JSON
.
stringify
(
this
.
remoteOptions
[
searchType
])
);
});
}
catch
(
error
)
{}
...
...
@@ -254,12 +254,11 @@ export default {
}
});
this
.
form
=
Object
.
assign
({},
this
.
form
,
newFormData
);
//
this.form = Object.assign({}, this.form, data);
// console.log(
"after form",this.form
)
this
.
form
=
Object
.
assign
({},
this
.
form
,
data
);
// console.log(
this.form,'dddddd'
)
},
cleanForm
()
{
this
.
clean
();
this
.
onSubmit
();
},
// 清空表单值
clean
()
{
...
...
@@ -268,36 +267,61 @@ export default {
if
(
item
.
name
===
"
groupList
"
)
{
newData
[
item
.
name
]
=
[];
}
else
{
newData
[
item
.
name
]
=
item
.
multiple
?
[]
:
undefined
;
newData
[
item
.
name
]
=
item
.
multiple
?
[]
:
""
;
}
});
this
.
form
=
Object
.
assign
({},
this
.
form
,
newData
);
this
.
onSubmit
();
},
onSubmit
()
{
let
{
path
,
query
}
=
this
.
$route
;
let
data
=
this
.
decode
(
this
.
form
);
console
.
log
(
"
data:
"
,
data
)
console
.
log
(
"
form
"
,
this
.
form
)
//delete this.form["deviceStatusList"]
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
;
}
}
if
(
this
.
form
.
startTime
&&
this
.
form
.
endTime
)
{
let
startValue
=
Date
.
parse
(
this
.
form
.
startTime
);
let
endValue
=
Date
.
parse
(
this
.
form
.
endTime
);
if
(
startValue
>
endValue
)
{
this
.
$message
.
error
(
"
查询-结束的日期需大于开始日期
"
);
this
.
form
.
endTime
=
""
;
return
false
;
}
}
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
));
//不更改原始数据
// console.log(this.form,'form参数')
let
data
=
this
.
decode
(
params
);
// Object.assign({}, query, data)
this
.
$router
.
push
({
path
:
path
,
query
:
Object
.
assign
({},
query
,
data
),
query
:
{
...
query
,
...
data
,
},
});
//this.decodetwo(this.form)
},
// 解析url字符串,去除query字段
encode
(
data
,
formTemp
)
{
let
newData
=
{};
Object
.
keys
(
Qs
.
parse
(
data
)).
forEach
((
item
)
=>
{
console
.
log
(
item
);
if
(
/^query
\.
/
.
test
(
item
))
{
let
val
=
data
[
item
];
let
key
=
item
.
replace
(
/^query
\.
/
,
""
);
this
.
search
.
forEach
((
obj
)
=>
{
if
(
obj
.
name
===
key
&&
obj
.
fuzzy
===
true
&&
val
&&
val
.
length
>
0
obj
.
name
===
key
&&
obj
.
fuzzy
===
true
&&
val
&&
val
.
length
>
0
)
{
//支持模糊查询,首尾去掉百分号
val
=
val
.
substring
(
1
,
val
.
length
-
1
);
...
...
@@ -307,9 +331,9 @@ export default {
let
isAreaTemp
=
[
"
areaId
"
];
let
isAreaParam
=
isAreaTemp
.
includes
(
key
);
newData
[
key
]
=
type
(
val
)
===
"
Array
"
?
val
.
map
(
isAreaParam
?
Number
:
String
)
:
val
;
type
(
val
)
===
"
Array
"
?
val
.
map
(
isAreaParam
?
Number
:
String
)
:
val
;
}
});
return
newData
;
...
...
@@ -322,10 +346,10 @@ export default {
let
val
=
data
[
item
];
this
.
search
.
forEach
((
obj
)
=>
{
if
(
obj
.
name
===
item
&&
obj
.
fuzzy
===
true
&&
val
&&
val
.
length
>
0
obj
.
name
===
item
&&
obj
.
fuzzy
===
true
&&
val
&&
val
.
length
>
0
)
{
//支持模糊查询,收尾增加百分号
val
=
val
.
trim
();
...
...
@@ -341,34 +365,6 @@ export default {
});
return
newData
;
},
decodetwo
(
data
)
{
let
newData
=
{
page
:
1
};
Object
.
keys
(
data
).
forEach
((
item
)
=>
{
let
val
=
data
[
item
];
this
.
search
.
forEach
((
obj
)
=>
{
if
(
obj
.
name
===
item
&&
obj
.
fuzzy
===
true
&&
val
&&
val
.
length
>
0
)
{
//支持模糊查询,收尾增加百分号
val
=
val
.
trim
();
if
(
val
.
charAt
(
0
)
==
"
%
"
)
{
val
=
val
.
slice
(
1
);
}
if
(
val
.
charAt
(
val
.
length
-
1
)
==
"
%
"
)
{
val
=
val
+
"
%
"
;
}
}
});
newData
[
item
]
=
this
.
decodeVal
(
val
);
});
return
newData
;
},
decodeVal
(
val
)
{
let
valType
=
type
(
val
);
if
([
"
Number
"
,
"
Boolean
"
].
indexOf
(
valType
)
>
-
1
)
{
...
...
@@ -390,7 +386,7 @@ export default {
data
()
{
return
{
form
:
{
groupList
:
[],
//
groupList: [],
},
remoteOptions
:
{},
};
...
...
@@ -428,4 +424,3 @@ export default {
}
}
</
style
>
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceLeaveRecordEntity.java
View file @
15f70ac8
...
...
@@ -11,7 +11,7 @@ import lombok.Data;
* 请假记录信息实体对象
*
* @author zxfei
* @date 2023-07-1
8
* @date 2023-07-1
9
*/
@Data
public
class
AttendanceLeaveRecordEntity
extends
AttendanceLeaveRecordVo
{
...
...
@@ -20,11 +20,11 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/**
* 请假人id
*/
@Excel
(
name
=
"请假人id"
)
private
Long
leavePersonId
;
/**
* 请假人
*/
@Excel
(
name
=
"请假人"
)
private
String
leavePerson
;
/**
* 所属部门id
...
...
@@ -37,26 +37,32 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/**
* 电话号码
*/
@Excel
(
name
=
"电话号码"
)
private
String
phoneNumber
;
/**
* 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)
*/
@Excel
(
name
=
"请假类型"
,
readConverterExp
=
"1=事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假"
)
private
Integer
leaveType
;
/**
* 开始时间
*/
@Excel
(
name
=
"开始时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
startTime
;
/**
* 结束时间
*/
@Excel
(
name
=
"结束时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
endTime
;
/**
* 时长,单位秒
*/
@Excel
(
name
=
"时长,单位秒"
)
private
Integer
duration
;
/**
* 请假事由
*/
@Excel
(
name
=
"请假事由"
)
private
String
reason
;
/**
* 审批负责人Id
...
...
@@ -85,14 +91,17 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/**
* 审核结果(1.申请通过,2.申请不通过)
*/
@Excel
(
name
=
"审核结果"
,
readConverterExp
=
"1=申请通过,2.申请不通过"
)
private
Integer
auditResult
;
/**
* 审核说明
*/
@Excel
(
name
=
"审核说明"
)
private
String
auditDesc
;
/**
* 审核时间
*/
@Excel
(
name
=
"审核时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
auditTime
;
/**
* 处理状态
...
...
@@ -116,7 +125,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
public
void
initAttrValue
(){
this
.
leavePersonId
=
null
;
this
.
leavePersonId
=
-
1L
;
this
.
leavePerson
=
""
;
...
...
@@ -126,7 +135,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
this
.
phoneNumber
=
""
;
this
.
leaveType
=
null
;
this
.
leaveType
=
null
;
this
.
startTime
=
null
;
...
...
db/add.sql
View file @
15f70ac8
...
...
@@ -800,7 +800,7 @@ ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `signOutResult` tinyint(2)
ALTER
TABLE
mortals_xhx_attendance_record
ADD
COLUMN
`attendType`
varchar
(
128
)
DEFAULT
'0'
COMMENT
'考勤类型'
;
ALTER
TABLE
mortals_xhx_attendance_record
ADD
COLUMN
`punchResult`
tinyint
(
2
)
DEFAULT
'0'
COMMENT
'打卡结果(0.否,1.是)'
;
ALTER
TABLE
mortals_xhx_attendance_record_hik
ADD
COLUMN
`signInResult`
tinyint
(
2
)
DEFAULT
'0'
COMMENT
'签到结果(0.否,1.是)'
;
ALTER
TABLE
mortals_xhx_attendance_record_hik
ADD
COLUMN
`signInResult`
tinyint
(
2
)
DEFAULT
'0'
COMMENT
'签到结果(0.否,1.是)'
;
ALTER
TABLE
mortals_xhx_attendance_record_hik
ADD
COLUMN
`signOutResult`
tinyint
(
2
)
DEFAULT
'0'
COMMENT
'签退结果(0.否,1.是)'
;
ALTER
TABLE
mortals_xhx_attendance_record_hik
ADD
COLUMN
`attendType`
varchar
(
128
)
DEFAULT
'0'
COMMENT
'考勤类型'
;
ALTER
TABLE
mortals_xhx_attendance_record_hik
ADD
COLUMN
`punchResult`
tinyint
(
2
)
DEFAULT
'0'
COMMENT
'打卡结果(0.否,1.是)'
;
...
...
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