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
3006d946
Commit
3006d946
authored
Apr 18, 2023
by
dll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
73f3c1ce
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
417 additions
and
63 deletions
+417
-63
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+18
-0
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
...nce-performance-manager-ui/admin/src/assets/utils/ajax.js
+1
-1
attendance-performance-manager-ui/admin/src/views/attendance/group/banciTable/index.vue
...-ui/admin/src/views/attendance/group/banciTable/index.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/attendance/group/groupTemplate.vue
...ger-ui/admin/src/views/attendance/group/groupTemplate.vue
+4
-2
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
...ui/admin/src/views/attendance/leave/record/drawershow.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/attendance/record/error/drawershow.vue
...ui/admin/src/views/attendance/record/error/drawershow.vue
+0
-1
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+22
-3
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+48
-9
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue
...dmin/src/views/attendance/vacation/balance/drawershow.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+11
-3
attendance-performance-manager-ui/admin/src/views/job/drawershowStaff.vue
...rmance-manager-ui/admin/src/views/job/drawershowStaff.vue
+249
-0
attendance-performance-manager-ui/admin/src/views/job/list.vue
...dance-performance-manager-ui/admin/src/views/job/list.vue
+58
-38
No files found.
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
3006d946
...
@@ -23,6 +23,24 @@ export default {
...
@@ -23,6 +23,24 @@ export default {
clearTimeout
(
this
.
loadingTimer
)
clearTimeout
(
this
.
loadingTimer
)
},
},
methods
:
{
methods
:
{
beforeUpload
(
file
)
{
if
(
file
.
size
/
1024
/
1024
>
200
)
{
this
.
$message
({
message
:
'
上传文件大小不能超过 200MB!
'
,
type
:
'
error
'
})
return
false
}
// 获取文件类型
var
test
=
file
.
name
.
substring
(
file
.
name
.
lastIndexOf
(
'
.
'
)
+
1
)
if
(
test
!==
'
xlsx
'
&&
test
!==
'
xls
'
)
{
this
.
$message
({
message
:
'
上传文件只能是 zip、rar格式!
'
,
type
:
'
warning
'
})
return
false
}
},
test
()
{
test
()
{
console
.
log
(
"
test
"
)
console
.
log
(
"
test
"
)
},
},
...
...
attendance-performance-manager-ui/admin/src/assets/utils/ajax.js
View file @
3006d946
...
@@ -38,7 +38,7 @@ instance.interceptors.request.use(config => {
...
@@ -38,7 +38,7 @@ instance.interceptors.request.use(config => {
// 代
// 代
// http://192.168.0.108/17500
// http://192.168.0.108/17500
const
hostname
=
'
192.168.0.1
16
'
const
hostname
=
'
192.168.0.1
08
'
const
port
=
'
17500
'
const
port
=
'
17500
'
// const hostname = '192.168.0.108'
// const hostname = '192.168.0.108'
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/banciTable/index.vue
View file @
3006d946
...
@@ -91,12 +91,12 @@ export default {
...
@@ -91,12 +91,12 @@ export default {
if
(
this
.
selectAll
){
if
(
this
.
selectAll
){
for
(
let
item
of
this
.
typeList
){
for
(
let
item
of
this
.
typeList
){
let
key
=
item
.
value
let
key
=
item
.
value
this
.
setParams
[
key
]
=
true
this
.
setParams
[
key
]
=
1
}
}
}
else
{
}
else
{
for
(
let
item
of
this
.
typeList
){
for
(
let
item
of
this
.
typeList
){
let
key
=
item
.
value
let
key
=
item
.
value
this
.
setParams
[
key
]
=
false
this
.
setParams
[
key
]
=
0
this
.
setParams
[
key
+
'
ClassTime
'
]
=
[]
this
.
setParams
[
key
+
'
ClassTime
'
]
=
[]
this
.
setParams
[
key
+
'
ClassName
'
]
=
''
this
.
setParams
[
key
+
'
ClassName
'
]
=
''
this
.
setParams
[
key
+
'
ClassId
'
]
=
''
this
.
setParams
[
key
+
'
ClassId
'
]
=
''
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/groupTemplate.vue
View file @
3006d946
...
@@ -433,6 +433,7 @@
...
@@ -433,6 +433,7 @@
this
.
cancelBanci
()
this
.
cancelBanci
()
this
.
holidays
=
groupFixedworkEntity
.
holidays
this
.
holidays
=
groupFixedworkEntity
.
holidays
}
}
// 特殊日期
// 特殊日期
if
(
groupFixedworkEntity
&&
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
){
if
(
groupFixedworkEntity
&&
groupFixedworkEntity
.
attendanceGroupFixedworkSpecialList
){
// 固定班制
// 固定班制
...
@@ -447,8 +448,9 @@
...
@@ -447,8 +448,9 @@
this
.
holidays
=
attendanceGroupFreeworkEntity
.
holidays
this
.
holidays
=
attendanceGroupFreeworkEntity
.
holidays
}
}
if
(
attendanceGroupFreeworkEntity
&&
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
){
if
(
attendanceGroupFreeworkEntity
&&
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
){
this
.
noneedDakaObj
=
groupFixedworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
0
)
this
.
mustDakaObj
=
groupFixedworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
1
)
this
.
noneedDakaObj
=
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
0
)
this
.
mustDakaObj
=
attendanceGroupFreeworkEntity
.
attendanceGroupFreeworkSpecialList
.
find
(
item
=>
item
.
must
===
1
)
}
}
//负责人
//负责人
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/drawershow.vue
View file @
3006d946
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
<el-row>
<el-row>
<!--
<Field
label=
"请假人"
prop=
"leavePersonId"
v-model=
"form.leavePersonId"
placeholder=
"请输入请假人"
/>
-->
<!--
<Field
label=
"请假人"
prop=
"leavePersonId"
v-model=
"form.leavePersonId"
placeholder=
"请输入请假人"
/>
-->
<Field
label=
"请假人"
prop=
"leavePerson"
v-model=
"form.leavePerson"
placeholder=
"请输入请假人"
/>
<Field
label=
"请假人"
prop=
"leavePerson"
v-model=
"form.leavePerson"
placeholder=
"请输入请假人"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
placeholder=
"请选择所属部门"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
type=
"select"
placeholder=
"请选择所属部门"
:enumData=
"dict.deptId"
/>
<!--
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入所属部门"
/>
-->
<!--
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入所属部门"
/>
-->
<Field
label=
"电话号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码"
/>
<Field
label=
"电话号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入电话号码"
/>
<Field
label=
"请假类型"
prop=
"leaveType"
v-model=
"form.leaveType"
type=
"select"
:enumData=
"dict.leaveType"
placeholder=
"请选择请假类型"
/>
<Field
label=
"请假类型"
prop=
"leaveType"
v-model=
"form.leaveType"
type=
"select"
:enumData=
"dict.leaveType"
placeholder=
"请选择请假类型"
/>
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
<Field
label=
"结束时间"
prop=
"endTime"
v-model=
"form.endTime"
type=
"date"
/>
<Field
label=
"结束时间"
prop=
"endTime"
v-model=
"form.endTime"
type=
"date"
/>
<Field
label=
"时长"
prop=
"duration"
v-model=
"form.duration"
placeholder=
"请输入时长"
/>
<Field
label=
"时长"
prop=
"duration"
v-model=
"form.duration"
placeholder=
"请输入时长"
/>
<Field
label=
"请假事由"
prop=
"reason"
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由"
/>
<Field
label=
"请假事由"
prop=
"reason"
v-model=
"form.reason"
type=
"textarea"
placeholder=
"请输入请假事由"
/>
<Field
label=
"审批负责人"
prop=
"approverId"
type=
"select"
v-model=
"form.approverId"
placeholder=
"请选择审批负责人"
/>
<Field
label=
"审批负责人"
prop=
"approverId"
type=
"select"
v-model=
"form.approverId"
placeholder=
"请选择审批负责人"
:enumData=
"dict.approverId"
/>
<!--
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入审批负责人"
/>
-->
<!--
<Field
label=
"审批负责人"
prop=
"approver"
v-model=
"form.approver"
placeholder=
"请输入审批负责人"
/>
-->
<!--
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件"
/>
-->
<!--
<Field
label=
"附件"
prop=
"attachment"
v-model=
"form.attachment"
type=
"textarea"
placeholder=
"请输入附件"
/>
-->
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/error/drawershow.vue
View file @
3006d946
...
@@ -15,7 +15,6 @@
...
@@ -15,7 +15,6 @@
<span
class=
"ml10"
>
缺卡
</span>
<span
class=
"ml10"
>
缺卡
</span>
<span
class=
"ml10"
>
修改为
</span>
<span
class=
"ml10"
>
修改为
</span>
</div>
</div>
<div>
<div>
<!-- 处理异常状态 -->
<!-- 处理异常状态 -->
<el-select>
<el-select>
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
3006d946
...
@@ -25,6 +25,8 @@
...
@@ -25,6 +25,8 @@
type=
"success"
type=
"success"
@
click=
"lookexportHis"
@
click=
"lookexportHis"
>
导出记录
</el-button>
>
导出记录
</el-button>
<el-button
type=
"primary"
size=
"mini"
slot=
"table-head-left2"
style=
"margin-left: 10px"
@
click=
"formatData"
>
生成打卡记录
</el-button>
</LayoutTable>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<el-dialog
<el-dialog
...
@@ -95,7 +97,6 @@
...
@@ -95,7 +97,6 @@
<div
class=
"mt10"
>
<div
class=
"mt10"
>
<el-link
:href=
"baseUrl+item.filePath"
target=
"_blank"
type=
"primary"
>
重新下载
</el-link>
<el-link
:href=
"baseUrl+item.filePath"
target=
"_blank"
type=
"primary"
>
重新下载
</el-link>
</div>
</div>
</div>
</div>
<div
class=
"times mt10"
>
<div
class=
"times mt10"
>
导出时间:
{{
item
.
createTime
}}
导出时间:
{{
item
.
createTime
}}
...
@@ -118,9 +119,25 @@
...
@@ -118,9 +119,25 @@
},
},
mixins
:
[
table
],
mixins
:
[
table
],
created
()
{
created
()
{
// console.log(this.$route.query,'sssss')
},
},
methods
:
{
methods
:
{
// 生成打卡记录
formatData
(){
let
list
=
[]
if
(
this
.
selection
.
length
>
0
){
list
=
this
.
tableData
.
data
.
filter
(
item
=>
{
if
(
this
.
selection
.
includes
(
item
.
id
)){
return
item
}
})
}
this
.
$post
(
'
/attendance/record/hik/addAttendanceRecord
'
,{
list
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
}
})
},
// 更改状态
// 更改状态
changeStatus
(
item
){
changeStatus
(
item
){
this
.
$set
(
this
.
$set
(
...
@@ -208,7 +225,9 @@
...
@@ -208,7 +225,9 @@
toView
(
row
)
{
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
this
.
$refs
.
dialogform
.
view
(
row
);
},
},
afterRender
(
data
)
{
console
.
log
(
this
.
tableData
.
data
)
},
},
},
data
()
{
data
()
{
return
{
return
{
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
3006d946
...
@@ -57,13 +57,31 @@
...
@@ -57,13 +57,31 @@
:visible.sync=
"drawerhistory"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
:direction=
"direction"
>
<div
class=
"hisList"
>
<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
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<div>
每日打卡记录
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
</div>
<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"
>
<div
class=
"times"
>
导出时间:
2020-08-13
导出时间:
{{
item
.
createTime
}}
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -148,6 +166,28 @@
...
@@ -148,6 +166,28 @@
created
()
{
created
()
{
},
},
methods
:
{
methods
:
{
changeStatus
(
item
){
this
.
$set
(
item
,
'
islook
'
,
!
item
.
islook
)
},
// 导出记录
lookexportHis
(){
this
.
$post
(
'
/attendance/export/record/list
'
,{
type
:
2
,
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
},
/** 导入 */
/** 导入 */
handleImport
()
{
handleImport
()
{
this
.
upload
.
title
=
"
打卡记录导入
"
;
this
.
upload
.
title
=
"
打卡记录导入
"
;
...
@@ -203,9 +243,6 @@
...
@@ -203,9 +243,6 @@
this
.
isdialog
=
true
this
.
isdialog
=
true
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
},
},
lookexportHis
(){
this
.
drawerhistory
=
true
},
renderTable
(
tableData
)
{
renderTable
(
tableData
)
{
return
(
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
...
@@ -301,13 +338,13 @@
...
@@ -301,13 +338,13 @@
fuzzy
:
true
fuzzy
:
true
},
},
{
{
name
:
'
startTime
'
,
name
:
'
attendanceDateStart
'
,
type
:
"
date
"
,
type
:
"
date
"
,
label
:
"
考勤开始时间
"
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
fuzzy
:
true
},
},
{
{
name
:
'
endTime
'
,
name
:
'
attendanceDateEnd
'
,
type
:
"
date
"
,
type
:
"
date
"
,
label
:
"
考勤结束时间
"
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
fuzzy
:
true
...
@@ -352,7 +389,9 @@
...
@@ -352,7 +389,9 @@
drawerhistory
:
false
,
drawerhistory
:
false
,
isdialog
:
false
,
isdialog
:
false
,
setcolum
:[],
setcolum
:[],
checkList
:[]
checkList
:[],
exportList
:[],
//导出记录
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
}
}
}
}
};
};
...
...
attendance-performance-manager-ui/admin/src/views/attendance/vacation/balance/drawershow.vue
View file @
3006d946
...
@@ -20,8 +20,8 @@
...
@@ -20,8 +20,8 @@
<template
slot=
"description"
>
<template
slot=
"description"
>
<div>
<div>
<span
style=
"color:#000"
>
{{
item
.
subOrAddDays
}}
</span>
<span
style=
"color:#000"
>
{{
item
.
sub
AddType
==
1
?
'
+
'
:
'
-
'
}}
{{
item
.
sub
OrAddDays
}}
</span>
<span
class=
"ml20"
>
{{
item
.
validityPeriod
}}
有效
</span>
<span
class=
"ml20"
v-if=
"item.validityPeriod"
>
{{
item
.
validityPeriod
}}
有效
</span>
</div>
</div>
<div>
<div>
<span
style=
"color:#000"
>
{{
item
.
content
}}
</span>
<span
style=
"color:#000"
>
{{
item
.
content
}}
</span>
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
3006d946
...
@@ -7,13 +7,15 @@
...
@@ -7,13 +7,15 @@
size=
"50%"
>
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<el-row>
<Field
v-if=
"title == '新增职位信息'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
v-if=
"title == '新增职位信息'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
:enumData=
"dict.group"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"title == '新增分组信息'"
/>
<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=
"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=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"title == '新增职位信息'"
/>
<Field
label=
"类型"
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<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=
"请输入备注"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
...
@@ -89,7 +91,13 @@
...
@@ -89,7 +91,13 @@
},
},
/**获取数据后弹框 */
/**获取数据后弹框 */
afterRender
(
data
)
{
afterRender
(
data
)
{
this
.
form
.
type
=
this
.
form
.
type
.
toString
()
// 固定新增类型
if
(
this
.
title
===
'
新增分组信息
'
){
this
.
form
.
type
=
'
1
'
}
else
{
this
.
form
.
type
=
'
2
'
}
this
.
open
=
true
;
this
.
open
=
true
;
},
},
afterSubmit
(
data
)
{
afterSubmit
(
data
)
{
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershowStaff.vue
0 → 100644
View file @
3006d946
<
template
>
<div>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工姓名"
:maxLength=
"10"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"手机号码"
:maxLength=
"11"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<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=
"工号"
:maxLength=
"15"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
</el-drawer>
<!-- 部门选择 -->
<el-dialog
:visible.sync=
"ishowBumen"
width=
"70%"
>
<el-row
type=
"flex"
:gutter=
"20"
style=
"height:40vh"
>
<el-col
:span=
"12"
>
<el-scrollbar
style=
"height: 100%"
>
<el-tree
size=
"mini"
ref=
"siteTree"
:data=
"bumentree"
id=
"el-tree"
node-key=
"id"
indent=
"4"
:props=
"treeProps"
:load=
"loadNode"
highlight-current
default-expand-all
:expand-on-click-node=
"false"
:render-content=
"renderContent"
@
node-click=
"handleNodeClick"
>
</el-tree>
</el-scrollbar>
</el-col>
<el-col
:span=
"12"
>
<div
class=
"titles"
>
已选部门
</div>
<div
class=
"el-tag flex flex-pack-justify mt10"
v-if=
"deptnode.label"
style=
"max-width:80%"
>
<div>
{{
deptnode
.
label
}}
</div>
<div
@
click=
"cancledept()"
>
<i
class=
"el-icon-close"
></i>
</div>
</div>
</el-col>
</el-row>
<div
class=
"mt20"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"comfirmbument"
>
确定
</el-button>
<el-button
size=
"mini"
@
click=
"ishowBumen = false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
StaffDetail
"
,
mixins
:
[
form
],
props
:{
bumentree
:{
type
:
Array
,
default
:[]
}
},
components
:
{
},
created
()
{
this
.
changePath
(
"
staff
"
)
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
个人主页
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
// 表单校验
rules
:
{
name
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
phoneNumber
:
[
{
required
:
true
,
message
:
"
请输入员工手机号码
"
,
trigger
:
"
blur
"
},
{
max
:
11
,
message
:
"
最多只能录入11个字符
"
,
trigger
:
"
blur
"
,},
],
deptName
:
[
{
required
:
true
,
message
:
"
请选择所属部门
"
,
trigger
:
"
change
"
},
],
positionId
:
[
{
required
:
true
,
message
:
"
请选择职位
"
,
trigger
:
"
blur
"
}
],
workNum
:
[
{
required
:
true
,
message
:
"
请输入工号
"
},
],
},
treeProps
:
{
id
:
"
id
"
,
label
:
"
label
"
,
areaCode
:
"
areaCode
"
,
type
:
"
type
"
,
isLeaf
:
"
isLeaf
"
,
children
:
"
children
"
,
icon
:
"
icon
"
,
},
ishowBumen
:
false
,
deptnode
:{}
}
},
methods
:
{
renderContent
:
function
(
h
,
{
node
,
data
,
store
})
{
return
(
<
span
>
<
i
style
=
"
font-size:16px;color:#409EFF
"
class
=
{
data
.
icon
}
><
/i
>
<
span
style
=
"
padding-left: 2px;font-size:14px
"
>
{
node
.
label
}
<
/span
>
<
/span
>
)
},
async
loadNode
(
node
,
resolve
)
{
if
(
node
.
level
===
0
)
{
return
;
}
resolve
(
data
.
result
);
},
// 点击
handleNodeClick
(
node
)
{
this
.
deptnode
=
node
},
comfirmbument
(){
this
.
form
.
deptId
=
this
.
deptnode
.
id
this
.
form
.
deptName
=
this
.
deptnode
.
label
this
.
ishowBumen
=
false
},
/** 编辑 */
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
"
);
},
// 表单重置
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
();
}
},
cancledept
(){
this
.
deptnode
=
{}
}
}
}
</
script
>
<
style
scoped
>
.tips
{
margin-left
:
120px
;
margin-bottom
:
20px
;
color
:
#999
;
font-size
:
15px
;
}
.titles
{
color
:
#409EFF
;
font-size
:
16px
;
display
:
flex
;
align-items
:
center
;
}
.titles
::before
{
content
:
''
;
width
:
6px
;
height
:
16px
;
background-color
:
#409EFF
;
display
:
inline-block
;
margin-right
:
10px
;
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/job/list.vue
View file @
3006d946
...
@@ -9,30 +9,49 @@
...
@@ -9,30 +9,49 @@
<el-button
type=
"primary"
size=
"mini"
@
click=
"saveFn('group')"
>
新增分组
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"saveFn('group')"
>
新增分组
</el-button>
<el-button
type=
"success"
size=
"mini"
@
click=
"saveFn('position')"
>
新增职位
</el-button>
<el-button
type=
"success"
size=
"mini"
@
click=
"saveFn('position')"
>
新增职位
</el-button>
</div>
</div>
<el-scrollbar
style=
"height: 100%"
>
<el-scrollbar
style=
"height: 100%"
class=
"mt20"
>
<!-- 区分分组和职位 -->
<!-- 区分分组和职位 -->
<!-- @node-click.self="handleNodeClick" -->
<el-tree
<el-tree
size=
"mini"
size=
"mini"
ref=
"siteTree"
ref=
"siteTree"
:data=
"
areaD
ata"
:data=
"
tableData.d
ata"
id=
"el-tree"
id=
"el-tree"
node-key=
"id"
node-key=
"id"
indent=
"4"
indent=
"4"
:props=
"treeProps"
:props=
"
{
children:'children'
}"
:load="loadNode"
:load="loadNode"
highlight-current
highlight-current
default-expand-all
default-expand-all
:expand-on-click-node="false"
:expand-on-click-node="false"
:render-content="renderContent"
:render-content="renderContent"
@
node-click=
"handleNodeClick"
>
>
<span
slot-scope=
"
{ node, data }">
<template
slot-scope=
"
{ node, data }">
<span
style=
"font-size:14px"
>
{{
node
.
label
}}
</span>
<span
class=
"custom-tree-node"
>
<span>
<span
style=
"font-size:14px"
v-if=
"!data.groupId"
>
{{
data
.
groupName
}}
</span>
<i
class=
"el-icon-edit"
style=
"color:#409EFF"
@
click=
"editJob(node)"
></i>
<span
style=
"font-size:14px"
v-if=
"data.groupId"
>
{{
data
.
jobName
}}
</span>
<i
class=
"el-icon-delete"
style=
"color:#F56C6C"
@
click=
"deleteFn(node)"
></i>
<span
style=
"margin-left:50px"
>
<el-button
type=
"text"
class=
"el-icon-edit-outline"
size=
"mini"
@
click.stop=
"editJob(data)"
></el-button>
<el-button
type=
"text"
class=
"el-icon-delete"
size=
"mini"
style=
"color:#F56C6C"
@
click.stop=
"deleteFn(data)"
></el-button>
</span>
</span>
</span>
</span>
</
template
>
</el-tree>
</el-tree>
</el-scrollbar>
</el-scrollbar>
</el-col>
</el-col>
...
@@ -53,17 +72,20 @@
...
@@ -53,17 +72,20 @@
/** 表单弹出框模式需引入 */
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
tree
from
"
@/assets/mixins/tree
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
import
TabPane
from
"
@/components/tabPane.vue
"
import
drawershowStaff
from
'
./drawershowStaff.vue
'
export
default
{
export
default
{
name
:
"
JobList
"
,
name
:
"
JobList
"
,
components
:
{
components
:
{
drawerShow
,
drawerShow
,
TabPane
TabPane
},
},
mixins
:
[
table
,
tree
],
mixins
:
[
table
],
created
()
{
created
()
{
console
.
log
(
this
.
activeName
,
'
ssss
'
)
this
.
query
=
{
"
page
"
:
1
,
"
size
"
:
-
1
}
},
},
computed
:{
computed
:{
thirdList
(){
thirdList
(){
...
@@ -75,21 +97,16 @@
...
@@ -75,21 +97,16 @@
}
}
},
},
methods
:
{
methods
:
{
handleNodeClick
(
node
){
console
.
log
(
node
)
},
// 获取数据后
afterRender
(){
console
.
log
(
this
.
tableData
.
data
)
},
saveFn
(
from
){
saveFn
(
from
){
this
.
$refs
.
drawerform
.
add
(
from
)
this
.
$refs
.
drawerform
.
add
(
from
)
},
},
renderContent
:
function
(
h
,
{
node
,
data
,
store
})
{
return
(
<
span
>
<
i
style
=
"
font-size:16px;color:#409EFF
"
class
=
{
data
.
icon
}
><
/i
>
<
span
style
=
"
padding-left: 2px;font-size:14px
"
>
{
node
.
label
}
<
/span
>
<
span
>
<
i
style
=
"
font-size:16px;color:#409EFF
"
class
=
'
el-icon-edit-outline
'
><
/i
>
<
i
style
=
"
font-size:16px;color:#409EFF
"
class
=
'
el-icon-delete
'
><
/i
>
<
/span
>
<
/span
>
)
},
async
loadNode
(
node
,
resolve
)
{
async
loadNode
(
node
,
resolve
)
{
if
(
node
.
level
===
0
)
{
if
(
node
.
level
===
0
)
{
return
;
return
;
...
@@ -120,19 +137,13 @@
...
@@ -120,19 +137,13 @@
// this.$refs.drawerform.add(row);
// this.$refs.drawerform.add(row);
},
},
/** 重写编辑方法 */
/** 重写编辑方法 */
toEdit
(
row
)
{
toEdit
(
form
,
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
this
.
$refs
.
drawerform
.
edit
(
form
,
row
);
},
},
/** 重写查看方法 */
/** 重写查看方法 */
toView
(
row
)
{
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
// 获取全部职位
getpositions
(){
this
.
$post
(
"
/job/treeselect
"
,
{}).
then
(({
data
})
=>
{
this
.
areaData
=
data
.
result
})
},
handleClick
(
key
){
handleClick
(
key
){
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
this
.
$router
.
push
({
...
@@ -141,8 +152,15 @@
...
@@ -141,8 +152,15 @@
},
},
// 职位
// 职位
editJob
(
row
){
editJob
(
row
){
let
from
=
''
// 编辑职位/分组
// 编辑职位/分组
this
.
toEdit
(
row
)
if
(
!
row
.
groupId
){
from
=
'
group
'
}
else
{
from
=
'
job
'
}
this
.
toEdit
(
from
,
row
)
},
},
// 删除
// 删除
deleteFn
(
row
){
deleteFn
(
row
){
...
@@ -152,12 +170,13 @@
...
@@ -152,12 +170,13 @@
type
:
'
warning
'
type
:
'
warning
'
}).
then
(
res
=>
{
}).
then
(
res
=>
{
// 删除操作
// 删除操作
this
.
$post
(
'
/job/delete
'
,{
id
:
row
.
id
}
).
then
(
data
=>
{
this
.
$post
(
'
/job/delete
?id=
'
+
row
.
id
).
then
(
data
=>
{
if
(
data
.
code
==
=
1
){
if
(
data
.
code
==
1
){
this
.
$message
({
this
.
$message
({
type
:
'
success
'
,
type
:
'
success
'
,
message
:
'
删除成功!
'
message
:
'
删除成功!
'
})
})
this
.
getData
()
}
}
})
})
})
})
...
@@ -216,7 +235,8 @@
...
@@ -216,7 +235,8 @@
isExport
:
false
,
isExport
:
false
,
saveFrom
:
''
,
saveFrom
:
''
,
addShow
:
false
,
addShow
:
false
,
staffList
:[]
}
}
}
}
}
;
}
</
script
>
</
script
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment