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
b8053e6c
Commit
b8053e6c
authored
Apr 10, 2023
by
dll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
4b7fe4c3
Changes
27
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
675 additions
and
385 deletions
+675
-385
attendance-performance-manager-ui/admin/src/assets/less/base.less
...ce-performance-manager-ui/admin/src/assets/less/base.less
+3
-0
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+21
-1
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
...rformance-manager-ui/admin/src/assets/utils/dateFormat.js
+14
-0
attendance-performance-manager-ui/admin/src/components/Header.vue
...ce-performance-manager-ui/admin/src/components/Header.vue
+15
-1
attendance-performance-manager-ui/admin/src/components/Table.vue
...nce-performance-manager-ui/admin/src/components/Table.vue
+22
-5
attendance-performance-manager-ui/admin/src/router.js
attendance-performance-manager-ui/admin/src/router.js
+1
-2
attendance-performance-manager-ui/admin/src/views/Layout.vue
attendance-performance-manager-ui/admin/src/views/Layout.vue
+1
-17
attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue
...ance-manager-ui/admin/src/views/attendance/class/list.vue
+2
-4
attendance-performance-manager-ui/admin/src/views/attendance/group/drawershow.vue
...anager-ui/admin/src/views/attendance/group/drawershow.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
...ance-manager-ui/admin/src/views/attendance/group/list.vue
+39
-25
attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue
...ance-manager-ui/admin/src/views/attendance/group/view.vue
+75
-31
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
...nager-ui/admin/src/views/attendance/leave/record/list.vue
+1
-0
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+2
-4
attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue
...erformance-manager-ui/admin/src/views/dept/drawershow.vue
+22
-7
attendance-performance-manager-ui/admin/src/views/dept/list.vue
...ance-performance-manager-ui/admin/src/views/dept/list.vue
+24
-24
attendance-performance-manager-ui/admin/src/views/dept/view.vue
...ance-performance-manager-ui/admin/src/views/dept/view.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/job/dialogshow.vue
...performance-manager-ui/admin/src/views/job/dialogshow.vue
+5
-7
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+1
-1
attendance-performance-manager-ui/admin/src/views/job/list.vue
...dance-performance-manager-ui/admin/src/views/job/list.vue
+70
-15
attendance-performance-manager-ui/admin/src/views/staff/black/list.vue
...rformance-manager-ui/admin/src/views/staff/black/list.vue
+3
-9
attendance-performance-manager-ui/admin/src/views/staff/care/list.vue
...erformance-manager-ui/admin/src/views/staff/care/list.vue
+1
-0
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
...rformance-manager-ui/admin/src/views/staff/drawershow.vue
+43
-23
attendance-performance-manager-ui/admin/src/views/staff/homepage.vue
...performance-manager-ui/admin/src/views/staff/homepage.vue
+0
-27
attendance-performance-manager-ui/admin/src/views/staff/leave/list.vue
...rformance-manager-ui/admin/src/views/staff/leave/list.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/staff/list.vue
...nce-performance-manager-ui/admin/src/views/staff/list.vue
+42
-39
attendance-performance-manager-ui/admin/src/views/staff/view.vue
...nce-performance-manager-ui/admin/src/views/staff/view.vue
+153
-95
attendance-performance-manager-ui/admin/src/views/system/menu/list.vue
...rformance-manager-ui/admin/src/views/system/menu/list.vue
+111
-44
No files found.
attendance-performance-manager-ui/admin/src/assets/less/base.less
View file @
b8053e6c
...
...
@@ -106,6 +106,9 @@ ins,a {
.flex-pack-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}
.flex-pack-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}
.flex_warp{flex-wrap: wrap;}
.flex_end{
justify-content: flex-end;
}
.clearfix{
&:after{
content: '';
...
...
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
b8053e6c
...
...
@@ -247,7 +247,7 @@ export default {
return
info
},
// 格式化员工类型
formatter
Status
(
row
,
column
,
val
){
formatter
Type
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
);
if
(
content
)
{
if
(
val
==
'
1
'
)
{
...
...
@@ -261,6 +261,19 @@ export default {
return
val
}
},
// 格式化是否在政务中心
formatterSource
(
row
,
column
,
val
){
const
content
=
formatter
(
this
.
tableData
,
column
,
val
);
if
(
content
)
{
if
(
val
==
'
1
'
)
{
return
<
el
-
tag
size
=
'
mini
'
>
是
<
/el-tag
>
}
else
if
(
val
==
'
2
'
)
{
return
<
el
-
tag
size
=
'
mini
'
>
否
<
/el-tag
>
}
}
else
{
return
val
}
},
// 多选表格行
handleSelectionChange
(
val
)
{
this
.
selection
=
val
.
map
(
i
=>
i
.
id
);
...
...
@@ -353,6 +366,13 @@ export default {
query
:
this
.
tableConfig
.
addQuery
,
})
},
// 导出
toexport
(){
this
.
$router
.
push
({
path
:
this
.
pageInfo
.
importView
,
query
:
this
.
tableConfig
.
addQuery
,
})
},
// 返回
toBack
()
{
this
.
$router
.
push
({
...
...
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
0 → 100644
View file @
b8053e6c
export
const
timestampToTime
=
(
timestamp
)
=>
{
// 时间戳为10位需*1000,时间戳为13位不需乘1000
var
date
=
new
Date
(
timestamp
*
1000
);
var
Y
=
date
.
getFullYear
()
+
"
-
"
;
var
M
=
(
date
.
getMonth
()
+
1
<
10
?
"
0
"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"
-
"
;
var
D
=
(
date
.
getDate
()
<
10
?
"
0
"
+
date
.
getDate
()
:
date
.
getDate
())
+
"
"
;
var
h
=
date
.
getHours
()
+
"
:
"
;
var
m
=
date
.
getMinutes
()
+
"
:
"
;
var
s
=
date
.
getSeconds
();
return
Y
+
M
+
D
;
}
\ No newline at end of file
attendance-performance-manager-ui/admin/src/components/Header.vue
View file @
b8053e6c
...
...
@@ -72,7 +72,21 @@ export default {
this
.
$store
.
commit
(
'
setThirdPath
'
,
path
)
this
.
$router
.
push
({
path
})
let
thirdArr
=
this
.
headBar
.
children
.
find
(
item
=>
item
.
path
===
path
)
this
.
$store
.
commit
(
'
setCurrentThirdArr
'
,
thirdArr
.
children
)
let
arr
=
[]
console
.
log
(
thirdArr
,
'
ssssss
'
)
if
(
thirdArr
.
children
.
length
===
0
){
arr
.
push
(
{
children
:
[],
id
:
thirdArr
.
id
,
name
:
thirdArr
.
name
,
path
:
thirdArr
.
path
}
)
}
else
{
arr
=
thirdArr
.
children
}
this
.
$store
.
commit
(
'
setCurrentThirdArr
'
,
arr
)
this
.
$emit
(
'
changePath
'
,
path
)
//触发点击事件
},
...
...
attendance-performance-manager-ui/admin/src/components/Table.vue
View file @
b8053e6c
...
...
@@ -2,11 +2,12 @@
<
template
>
<div
class=
"layout-table"
:loading=
"data.loading"
>
<TabPane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
v-if=
"config.isshowTabPane"
></TabPane>
<div
class=
"table-head flex flex-pack-justify"
>
<div
class=
"table-head-left flex flex-align-center"
>
<slot
name=
"breadcrumb"
>
<!--
<slot
name=
"breadcrumb"
>
<Breadcrumb
style=
"margin-left: 10px"
/>
</slot>
</slot>
-->
<div
class=
"buttons"
>
<el-row>
<slot
name=
"table-head-left"
></slot>
...
...
@@ -117,6 +118,7 @@
<div
class=
"table-form"
>
<slot
name=
"table-search-left"
></slot>
<SearchForm
:search=
"config.search"
v-if=
"isShowButton('notSearch')"
...
...
@@ -124,6 +126,7 @@
:downloadUrl=
"config.downloadUrl"
:areaSelect=
"config.areaSelect"
/>
</div>
</div>
</div>
...
...
@@ -217,7 +220,7 @@ import DataTable from "@/components/DataTable.vue";
import
DataTableMobile
from
"
./DataTableMobile.js
"
;
import
DataTableFlow
from
"
./DataTableFlow.vue
"
;
import
DataTreeTable
from
"
@/components/DataTreeTable.vue
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
export
default
{
props
:
{
data
:
{
...
...
@@ -239,6 +242,7 @@ export default {
DataTableMobile
,
DataTableFlow
,
DataTreeTable
,
TabPane
},
methods
:
{
// 根据url的query参数判断是否展示查询条件
...
...
@@ -264,6 +268,12 @@ export default {
isShowBtn
(
name
)
{
return
this
.
canShow
.
indexOf
(
name
)
!==
-
1
;
},
handleClick
(
key
){
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
}
},
watch
:
{
$route
(
route
)
{
...
...
@@ -278,14 +288,21 @@ export default {
this
.
showType
=
this
.
config
.
showType
?
this
.
config
.
showType
:
"
table
"
;
return
Object
.
keys
(
this
.
$attrs
)
||
[];
},
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
},
data
()
{
return
{
loading
:
this
.
config
.
loading
,
showSearch
:
this
.
isShowSearch
(
this
.
$route
.
query
),
showType
:
"
table
"
,
}
;
}
,
}
}
};
</
script
>
...
...
attendance-performance-manager-ui/admin/src/router.js
View file @
b8053e6c
...
...
@@ -21,6 +21,7 @@ const router = new Router({
builder
(
'
/authentication
'
,
'
login/authentication
'
),
builder
(
'
/login
'
,
'
login/login
'
),
builder
(
'
/sso
'
,
'
SSO
'
),
{
path
:
'
/
'
,
name
:
'
layout
'
,
...
...
@@ -37,10 +38,8 @@ const router = new Router({
...
restBuilder
(
'
user
'
,
'
system/user
'
),
// 用户管理 -- 管理用户
...
restBuilder
(
'
param
'
,
'
system/param
'
),
// 系统管理--参数管理
...
restBuilder
(
'
task
'
,
'
system/task
'
),
// 系统管理--任务管理
//部门
...
restBuilder
(
'
dept
'
,
'
dept
'
),
//部门
...
restBuilder
(
'
staff
'
,
'
staff
'
),
//花名册 员工信息
...
restBuilder
(
'
staff/care
'
,
'
staff/care
'
),
// 员工关怀信息
...
restBuilder
(
'
care/template
'
,
'
care/template
'
),
// 关怀问候信息
...
...
attendance-performance-manager-ui/admin/src/views/Layout.vue
View file @
b8053e6c
...
...
@@ -3,10 +3,7 @@
<LayoutHeader
v-if=
"menuPage!=='left'"
@
changePath=
"changePath"
></LayoutHeader>
<LayoutHeaderLeft
@
toggle=
"toggle"
:isOpen=
"isOpen"
v-if=
"menuPage==='left'"
/>
<div
style=
"padding:20px"
>
<el-card>
<TabPane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
></TabPane>
<router-view
:class=
"
{'active': !isOpen}" />
</el-card>
</div>
</div>
</
template
>
...
...
@@ -39,13 +36,6 @@ export default {
"
--padding-top
"
:
this
.
menuPage
===
"
left
"
?
"
60px
"
:
"
0px
"
,
"
--margin-left
"
:
this
.
menuPage
===
"
left
"
?
"
200px
"
:
"
0px
"
,
}
},
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
},
methods
:
{
...
...
@@ -54,12 +44,6 @@ export default {
},
changePath
(
e
){
this
.
path
=
e
},
handleClick
(
key
){
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
}
},
};
...
...
attendance-performance-manager-ui/admin/src/views/attendance/class/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -68,6 +65,7 @@
config
:
{
search
:
[
],
isshowTabPane
:
true
,
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/drawershow.vue
View file @
b8053e6c
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -40,11 +37,20 @@
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
// this.$refs.drawerform.add(row);
this
.
$router
.
push
(
{
path
:
'
/attendance/group/view
'
}
)
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
this
.
$router
.
push
(
{
path
:
'
/attendance/group/view
'
}
)
},
/** 重写查看方法 */
toView
(
row
)
{
...
...
@@ -64,36 +70,44 @@
{
prop
:
"
remark
"
,
label
:
"
备注
"
,
width
:
100
},
],
config
:
{
isshowTabPane
:
true
,
search
:
[
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
参与考勤人数
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤组名称
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
人数
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
负责人
"
,
prop
:
"
personNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
类型
"
,
prop
:
"
type
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
//
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label
:
"
未参与考勤人数
"
,
prop
:
"
personNumNo
"
,
formatter
:
this
.
formatter
},
//
{label: "未参与考勤人数", prop: "personNumNo",formatter: this.formatter},
{
label
:
"
考勤方式
"
,
prop
:
"
attendanceType
"
},
{
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
.
attendanceGroupStaffList
)}
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
<
/el-popover
>
);
},
},
// {label: "考勤方式", prop: "attendanceType"},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceType
"
},
// {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.attendanceGroupStaffList)}
//
<
el
-
button
type
=
"
text
"
slot
=
"
reference
"
>
详细
<
/el-button
>
//
<
/el-popover
>
// );
// },
// },
{
label
:
"
操作
"
,
width
:
240
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue
View file @
b8053e6c
<
template
>
<layout-view>
<el-descriptions
:title=
"title"
:column=
"column"
:size=
"size"
:colon=
"false"
border
>
<template
slot=
"title"
>
<i
class=
"el-icon-tickets"
></i>
基本详细信息
</
template
>
<
template
slot=
"extra"
>
<el-button
type=
"primary"
@
click=
"$router.go(-1)"
size=
"small"
>
返回
</el-button>
</
template
>
<el-descriptions-item
label=
"考勤组名称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.groupName}}
</el-descriptions-item>
<el-descriptions-item
label=
"参与考勤人数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.personNum}}
</el-descriptions-item>
<el-descriptions-item
label=
"类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
<el-descriptions-item
label=
"备注"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.remark}}
</el-descriptions-item>
<el-descriptions-item
label=
"未参与考勤人数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.personNumNo}}
</el-descriptions-item>
<el-descriptions-item
label=
"考勤方式"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("attendanceType", form.attendanceType) }}
</el-descriptions-item>
</el-descriptions>
<div
class=
"container"
>
<el-card
style=
"min-height:80vh"
>
<tab-pane
:activeName=
"activeName"
:thirdList=
"thirdList"
></tab-pane>
<div>
<div>
考勤组名称
</div>
<el-input
placeholder=
"请输入考勤组名称"
></el-input>
</div>
<div>
<div>
考勤人员
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
参与考勤人员
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
无需考勤人员
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
</layout-view>
<div
style=
"height:20px"
></div>
<div>
<div>
考勤组负责人
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
主负责人
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
子负责人
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
子负责人权限
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div
style=
"height:20px"
></div>
<div>
<div>
考勤时间
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
考勤类型
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
工作日设置
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div
style=
"height:20px"
></div>
<div>
<div>
打卡方式
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
<div>
<div>
考勤方式
</div>
<el-button
type=
"text"
>
设置
</el-button>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
view
from
"
@/assets/mixins/view
"
;
import
tabPane
from
'
@/components/tabPane.vue
'
export
default
{
mixins
:
[
view
],
components
:
{
tabPane
},
methods
:
{
...
...
@@ -52,6 +89,13 @@
],
toDate
:
[
],
activeName
:
'
/attendance/group/view
'
,
thirdList
:[
{
name
:
'
新增考勤组
'
,
path
:
'
/attendance/group/view
'
}
]
}
}
...
...
attendance-performance-manager-ui/admin/src/views/attendance/leave/record/list.vue
View file @
b8053e6c
...
...
@@ -38,6 +38,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
leavePersonId
"
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -38,6 +35,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
...
...
attendance-performance-manager-ui/admin/src/views/dept/drawershow.vue
View file @
b8053e6c
...
...
@@ -7,15 +7,30 @@
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"父id"
prop=
"parentId"
v-model=
"form.parentId"
placeholder=
"请输入父id"
/>
<Field
label=
"祖级列表"
prop=
"ancestors"
v-model=
"form.ancestors"
type=
"textarea"
placeholder=
"请输入祖级列表"
/>
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入部门名称"
/>
<Field
label=
"部门状态"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择部门状态"
/>
<Field
label=
"顺序"
prop=
"orderNum"
v-model=
"form.orderNum"
placeholder=
"请输入顺序"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<!--
<Field
label=
"父id"
prop=
"parentId"
v-model=
"form.parentId"
placeholder=
"请输入父id"
/>
-->
<!--
<Field
label=
"祖级列表"
prop=
"ancestors"
v-model=
"form.ancestors"
type=
"textarea"
placeholder=
"请输入祖级列表"
/>
-->
<!--
<Field
label=
"部门名称"
prop=
"deptName"
v-model=
"form.deptName"
type=
"textarea"
placeholder=
"请输入部门名称"
/>
-->
<!--
<Field
label=
"上级部门"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择上级部门"
/>
-->
<!--
<Field
label=
"负责人"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择员工"
/>
-->
<!--
<Field
label=
"部门状态"
prop=
"deptStatus"
v-model=
"form.deptStatus"
type=
"select"
:enumData=
"dict.deptStatus"
placeholder=
"请选择部门状态"
/>
-->
<!--
<Field
label=
"顺序"
prop=
"orderNum"
v-model=
"form.orderNum"
placeholder=
"请输入顺序"
/>
-->
<!--
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
</el-row>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
placeholder=
"请输入部门名称"
clearable
v-model=
"form.deptName"
></el-input>
</el-form-item>
<el-form-item
label=
"上级部门"
>
<el-select
placeholder=
"请选择上级部门"
clearable
v-model=
"form"
>
<el-option></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"负责人"
>
<el-select
placeholder=
"请选择员工"
clearable
>
<el-option></el-option>
</el-select>
</el-form-item>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
...
...
attendance-performance-manager-ui/admin/src/views/dept/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -38,40 +35,43 @@
data
()
{
return
{
config
:
{
search
:
[
{
name
:
"
orderNum
"
,
type
:
"
text
"
,
label
:
"
顺序
"
,
fuzzy
:
true
},
{
name
:
"
createUserId
"
,
type
:
"
text
"
,
label
:
"
创建用户
"
,
fuzzy
:
true
},
],
// search: [
// {
// name: "orderNum",
// type: "text",
// label: "顺序",
// fuzzy: true
// },
// {
// name: "createUserId",
// type: "text",
// label: "创建用户",
// fuzzy: true
// },
// ],
isshowTabPane
:
true
,
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
祖级列表
"
,
prop
:
"
ancestors
"
},
//
{label: "祖级列表", prop: "ancestors"},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
成员数量
"
,
prop
:
"
deptName
"
},
{
label
:
"
负责人
"
,
prop
:
"
deptName
"
},
{
label
:
"
部门状态
"
,
prop
:
"
deptStatus
"
,
formatter
:
this
.
formatter
},
//
{label: "部门状态", prop: "deptStatus",formatter: this.formatter},
{
label
:
"
顺序
"
,
prop
:
"
orderNum
"
,
formatter
:
this
.
formatter
},
//
{label: "顺序", prop: "orderNum",formatter: this.formatter},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
//
{label: "创建用户", prop: "createUserId", formatter: this.formatter},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
;
<
table
-
buttons
noAdd
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
]
...
...
attendance-performance-manager-ui/admin/src/views/dept/view.vue
View file @
b8053e6c
attendance-performance-manager-ui/admin/src/views/job/dialogshow.vue
View file @
b8053e6c
...
...
@@ -8,9 +8,7 @@
<Field
label=
"职位编码"
prop=
"jobCode"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
/>
<Field
label=
"职位名称"
prop=
"jobName"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
b8053e6c
...
...
@@ -67,7 +67,7 @@
this
.
urls
.
currUrl
=
"
job/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增
职位
信息
"
;
this
.
title
=
"
新增
员工
信息
"
;
},
/** 查看*/
view
(
row
)
{
...
...
attendance-performance-manager-ui/admin/src/views/job/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<div
style=
"margin:10px 0"
>
<tab-pane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
></tab-pane>
</div>
<el-row
:gutter=
"20"
>
<el-col
:span=
"6"
:xs=
"12"
class=
"mytree"
>
<div
class=
"titles"
>
<el-button
type=
"primary"
>
新增分组
</el-button>
<el-button
type=
"success"
>
新增职位
</el-button>
</div>
<el-scrollbar
style=
"height: 100%"
>
<el-tree
size=
"mini"
ref=
"siteTree"
:data=
"areaData"
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=
"18"
:xs=
"12"
class=
"mytree"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
</el-col>
</el-row>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -12,14 +40,26 @@
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
tree
from
"
@/assets/mixins/tree
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
export
default
{
name
:
"
JobList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
drawerShow
,
TabPane
},
mixins
:
[
table
,
tree
],
created
()
{
},
computed
:{
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
...
...
@@ -33,7 +73,16 @@
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
// 获取全部职位
getpositions
(){
},
handleClick
(
key
){
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
},
},
data
()
{
return
{
...
...
@@ -62,23 +111,29 @@
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
分组名称
"
,
prop
:
"
groupName
"
},
//
{label: "分组名称", prop: "groupName"},
{
label
:
"
职位编码
"
,
prop
:
"
jobCode
"
},
//
{label: "职位编码", prop: "jobCode"},
{
label
:
"
职位名称
"
,
prop
:
"
jobName
"
},
// {label: "职位名称", prop: "jobName"},
{
label
:
"
姓名
"
,
prop
:
"
jobName
"
},
{
label
:
"
部门
"
,
prop
:
"
jobName
"
},
{
label
:
"
员工类型
"
,
prop
:
"
jobName
"
},
{
label
:
"
手机号
"
,
prop
:
"
jobName
"
},
{
label
:
"
添加时间
"
,
prop
:
"
jobName
"
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
;
<
table
-
buttons
noAdd
noEdit
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
]
},
areaData
:[]
}
};
}
};
</
script
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/staff/black/list.vue
View file @
b8053e6c
...
...
@@ -35,14 +35,8 @@
data
()
{
return
{
config
:
{
search
:
[
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
},
],
isshowTabPane
:
true
,
showType
:[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
...
...
attendance-performance-manager-ui/admin/src/views/staff/care/list.vue
View file @
b8053e6c
...
...
@@ -38,6 +38,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
...
...
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
View file @
b8053e6c
...
...
@@ -5,27 +5,39 @@
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<div
class=
"tips"
>
此功能为快速添加员工入口,如需为员工办理完整的入职手续,请使用[员工关系-入职管理]功能
</div>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<!--
<Field
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
-->
<!--
<Field
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
-->
<!--
<Field
label=
"照片"
prop=
"photoPath"
v-model=
"form.photoPath"
type=
"textarea"
placeholder=
"请输入照片"
/>
-->
<!--
<Field
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
-->
<!--
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
-->
<!--
<Field
label=
"政治面貌 "
prop=
"politicalstatus"
v-model=
"form.politicalstatus"
type=
"select"
:enumData=
"dict.politicalstatus"
placeholder=
"请选择政治面貌 "
/>
-->
<!--
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
-->
<Field
label=
"员工姓名"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"性别"
prop=
"gender"
v-model=
"form.gender"
type=
"select"
:enumData=
"dict.gender"
placeholder=
"请选择性别"
/>
<Field
label=
"出生日期"
prop=
"birthday"
v-model=
"form.birthday"
type=
"date"
/>
<Field
label=
"照片"
prop=
"photoPath"
v-model=
"form.photoPath"
type=
"textarea"
placeholder=
"请输入照片"
/>
<Field
label=
"联系电话"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"身份证号码"
prop=
"idCard"
v-model=
"form.idCard"
placeholder=
"请输入身份证号码"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<Field
label=
"政治面貌 "
prop=
"politicalstatus"
v-model=
"form.politicalstatus"
type=
"select"
:enumData=
"dict.politicalstatus"
placeholder=
"请选择政治面貌 "
/>
<Field
label=
"手机号码"
prop=
"phoneNumber"
v-model=
"form.phoneNumber"
placeholder=
"请输入联系电话"
/>
<Field
label=
"所属部门"
prop=
"deptId"
v-model=
"form.deptId"
placeholder=
"请输入所属部门"
/>
<Field
label=
"所属部门名称"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请输入所属部门名称"
/>
<Field
label=
"职位ID"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请输入职位ID"
/>
<Field
label=
"职位名称"
prop=
"positionName"
v-model=
"form.positionName"
placeholder=
"请输入职位名称"
/>
<Field
label=
"员工类型"
prop=
"staffType"
v-model=
"form.staffType"
type=
"select"
:enumData=
"dict.staffType"
placeholder=
"请选择员工类型"
/>
<Field
label=
"员工状态"
prop=
"status"
v-model=
"form.status"
type=
"select"
:enumData=
"dict.status"
placeholder=
"请选择员工状态"
/>
<Field
label=
"入职登记表"
prop=
"registerPath"
v-model=
"form.registerPath"
type=
"textarea"
placeholder=
"请输入入职登记表"
/>
<Field
label=
"入职时间"
prop=
"entryDate"
v-model=
"form.entryDate"
type=
"date"
/>
<Field
label=
"转正时间"
prop=
"regularDate"
v-model=
"form.regularDate"
type=
"date"
/>
<Field
label=
"离职时间"
prop=
"leaveDate"
v-model=
"form.leaveDate"
type=
"date"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
type=
"select"
placeholder=
"请选择职位"
/>
<Field
label=
"工号"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请输入工号"
/>
<Field
label=
"是否在政务大厅"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请选择"
type=
"select"
/>
<!--
<Field
label=
"职位名称"
prop=
"positionName"
v-model=
"form.positionName"
placeholder=
"请输入职位名称"
/>
-->
<!--
<Field
label=
"员工类型"
prop=
"staffType"
v-model=
"form.staffType"
type=
"select"
:enumData=
"dict.staffType"
placeholder=
"请选择员工类型"
/>
-->
<!--
<Field
label=
"员工状态"
prop=
"status"
v-model=
"form.status"
type=
"select"
:enumData=
"dict.status"
placeholder=
"请选择员工状态"
/>
-->
<!--
<Field
label=
"入职登记表"
prop=
"registerPath"
v-model=
"form.registerPath"
type=
"textarea"
placeholder=
"请输入入职登记表"
/>
-->
<!--
<Field
label=
"入职时间"
prop=
"entryDate"
v-model=
"form.entryDate"
type=
"date"
/>
-->
<!--
<Field
label=
"转正时间"
prop=
"regularDate"
v-model=
"form.regularDate"
type=
"date"
/>
-->
<!--
<Field
label=
"离职时间"
prop=
"leaveDate"
v-model=
"form.leaveDate"
type=
"date"
/>
-->
<!--
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
-->
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
...
...
@@ -72,9 +84,9 @@
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
],
//
createTime: [
//
{required: true,message: "请选择创建时间" },
//
],
}
};
},
...
...
@@ -149,7 +161,15 @@
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
}
,
}
,
}
;
}
}
}
</
script
>
<
style
scoped
>
.tips
{
margin-left
:
120px
;
margin-bottom
:
20px
;
color
:
#999
;
font-size
:
15px
;
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/staff/homepage.vue
deleted
100644 → 0
View file @
4b7fe4c3
<
template
>
<div
class=
"personal"
>
<el-drawer
title=
"个人主页"
:visible.sync=
"open"
>
{{
data
}}
</el-drawer>
</div>
</
template
>
<
script
>
export
default
{
props
:{
data
:{
type
:
Object
,
default
:{}
}
},
data
(){
return
{
open
:
true
}
}
}
</
script
>
<
style
>
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/staff/leave/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
...
...
@@ -38,6 +37,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
...
...
attendance-performance-manager-ui/admin/src/views/staff/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<div
style=
"margin:10px 0"
>
<tab-pane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
></tab-pane>
</div>
<div
class=
"totalNum flex"
>
<div
class=
"item"
>
在职员工
<span
class=
"num"
>
66
</span></div>
<div
class=
"item flex"
>
...
...
@@ -40,9 +43,8 @@
<el-row>
<div
class=
"controllList"
>
<!--
<el-button
type=
"primary"
>
新增员工
</el-button>
-->
<el-button
type=
"primary"
>
导出数据
</el-button>
<el-dropdown
class=
"moreControll"
>
<!--
<el-button
type=
"primary"
>
导出数据
</el-button>
-->
<!--
<el-dropdown
class=
"moreControll"
>
<el-button
type=
"primary"
>
更多操作
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</el-button>
...
...
@@ -52,18 +54,18 @@
<el-dropdown-item>
历史花名册
</el-dropdown-item>
<el-dropdown-item>
自定义列表字段
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span
class=
"freshTime"
>
</el-dropdown>
-->
<
!--
<
span
class=
"freshTime"
>
<i
class=
"el-icon-refresh"
></i>
<span>
上次同步时间:2023-04-09 09:00:00
</span>
</span>
</span>
-->
</div>
<LayoutTable
notDel
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
</el-row>
</el-col>
</el-row>
<
!--
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
--
>
<
drawer-show
ref=
"drawerform"
@
ok=
"getData"
/
>
<home-page
v-if=
"isshowHome"
:data=
"personData"
></home-page>
</div>
</
template
>
...
...
@@ -73,12 +75,12 @@
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
tree
from
"
@/assets/mixins/tree
"
;
import
homePage
from
'
./homepage.vue
'
import
TabPane
from
"
@/components/tabPane.vue
"
export
default
{
name
:
"
StaffList
"
,
components
:
{
drawerShow
,
homePage
TabPane
,
},
mixins
:
[
table
,
tree
],
created
()
{
...
...
@@ -87,6 +89,13 @@
})
},
methods
:
{
handleClick
(
key
){
console
.
log
(
key
)
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
...
...
@@ -99,18 +108,20 @@
toView
(
row
)
{
// this.$refs.drawerform.view(row);
// console.log(row)
this
.
personData
=
row
this
.
isshowHome
=
true
// this.personData = row
// this.isshowHome = true
this
.
$router
.
push
({
path
:
'
/staff/view
'
,
query
:{
id
:
row
.
id
}
})
},
handleNodeClick
(
node
)
{
this
.
currentNode
=
node
;
this
.
query
=
{
deptId
:
node
.
id
};
this
.
getData
();
},
// 切换标签页
handleClick
(
e
){
console
.
log
(
this
.
activeName
)
}
},
data
()
{
...
...
@@ -120,27 +131,9 @@
{
name
:
"
name
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
label
:
"
员工姓名
或手机号
"
,
fuzzy
:
true
},
// {
// name: "politicalstatus",
// type: "select",
// label: "政治面貌 ",
// fuzzy: true
// },
// {
// name: "staffType",
// type: "select",
// label: "员工类型",
// fuzzy: true
// },
// {
// name: "status",
// type: "select",
// label: "员工状态",
// fuzzy: true
// },
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -149,10 +142,10 @@
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
职位
"
,
prop
:
"
positionName
"
},
{
label
:
"
员工类型
"
,
prop
:
"
staffType
"
,
formatter
:
this
.
formatter
Status
},
{
label
:
"
员工类型
"
,
prop
:
"
staffType
"
,
formatter
:
this
.
formatter
Type
},
{
label
:
"
员工状态
"
,
prop
:
"
status
"
,
formatter
:
this
.
formatter
},
{
label
:
"
是否在政务中心
"
,
prop
:
"
s
tatus
"
,
formatter
:
this
.
formatter
},
//未对
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
formatter
:
this
.
formatter
},
{
label
:
"
是否在政务中心
"
,
prop
:
"
s
ource
"
,
formatter
:
this
.
formatterSource
},
//未对
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
},
{
label
:
"
操作
"
,
width
:
240
,
...
...
@@ -162,12 +155,22 @@
)
}
}
]
],
isshowTabPane
:
false
},
activeName
:
'
first
'
,
isshowHome
:
false
,
personData
:[]
}
},
computed
:{
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
}
};
</
script
>
...
...
attendance-performance-manager-ui/admin/src/views/staff/view.vue
View file @
b8053e6c
<
template
>
<layout-view>
<el-descriptions
:title=
"title"
:column=
"column"
:size=
"size"
:colon=
"false"
border
>
<template
slot=
"title"
>
<i
class=
"el-icon-tickets"
></i>
qqq基本详细信息
</
template
>
<
template
slot=
"extra"
>
<el-button
type=
"primary"
@
click=
"$router.go(-1)"
size=
"small"
>
返回
</el-button>
</
template
>
<el-descriptions-item
label=
"员工姓名"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.name}}
</el-descriptions-item>
<el-descriptions-item
label=
"性别"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("gender", form.gender) }}
</el-descriptions-item>
<el-descriptions-item
label=
"出生日期"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.birthday)}}
</el-descriptions-item>
<el-descriptions-item
label=
"照片"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.photoPath}}
</el-descriptions-item>
<el-descriptions-item
label=
"联系电话"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.phoneNumber}}
</el-descriptions-item>
<el-descriptions-item
label=
"身份证号码"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.idCard}}
</el-descriptions-item>
<el-descriptions-item
label=
"工号"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.workNum}}
</el-descriptions-item>
<el-descriptions-item
label=
"政治面貌 "
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("politicalstatus", form.politicalstatus) }}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.deptId}}
</el-descriptions-item>
<el-descriptions-item
label=
"所属部门名称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.deptName}}
</el-descriptions-item>
<el-descriptions-item
label=
"职位ID"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.positionId}}
</el-descriptions-item>
<el-descriptions-item
label=
"职位名称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.positionName}}
</el-descriptions-item>
<el-descriptions-item
label=
"员工类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("staffType", form.staffType) }}
</el-descriptions-item>
<el-descriptions-item
label=
"员工状态"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("status", form.status) }}
</el-descriptions-item>
<el-descriptions-item
label=
"入职登记表"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.registerPath}}
</el-descriptions-item>
<el-descriptions-item
label=
"入职时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.entryDate)}}
</el-descriptions-item>
<el-descriptions-item
label=
"转正时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.regularDate)}}
</el-descriptions-item>
<el-descriptions-item
label=
"离职时间"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatterDate(form.leaveDate)}}
</el-descriptions-item>
<el-descriptions-item
label=
"备注"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.remark}}
</el-descriptions-item>
</el-descriptions>
</layout-view>
<div>
<el-card>
<div
class=
"flex flex flex-pack-justify"
style=
"margin:10px 0"
>
<div
style=
"color:rgb(20, 134, 248);font-weight:bold;padding: 0 20px;"
>
个人主页
</div>
<el-button
type=
"primary"
@
click=
"$router.back()"
size=
"small"
>
返回上级
</el-button>
</div>
<div
class=
"persons"
>
<div
class=
"cell1 flex flex-pack-justify"
>
<div
class=
"avator"
></div>
<div
class=
"content"
>
<div
class=
"c1"
>
<span>
{{
info
.
name
}}
</span>
<span
class=
"tags"
v-if=
"info.status == 1"
>
正式
</span>
<span
class=
"tags"
v-if=
"info.status == 2"
>
试用
</span>
<span
class=
"tags"
v-if=
"info.status == 3"
>
离职
</span>
</div>
<div
class=
"c2"
>
<span>
{{
info
.
positionName
}}
</span>
<span
style=
"margin:0 10px"
>
|
</span>
<span>
1512天
</span>
</div>
</div>
</div>
<div
class=
"cell2"
>
<div
class=
"title"
>
成长记录
</div>
<div
class=
"flex"
>
<div
class=
"history"
>
<div
class=
"times"
>
{{
info
.
entryDate
}}
</div>
<div>
入职时间
</div>
</div>
<div
class=
"history"
>
<div
class=
"times"
>
{{
info
.
regularDate
}}
</div>
<div>
转正时间
</div>
</div>
</div>
</div>
<div
class=
"cell2"
>
<div
class=
"title flex flex-pack-justify"
>
<div>
本月假勤统计
</div>
<div
class=
"times"
>
更多记录
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
实际出勤天数
</div>
<div
class=
"times"
>
2020天
</div>
</div>
<div
class=
"flex"
>
<div>
请假天数
</div>
<div
class=
"times"
>
2020天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
迟到早退次数
</div>
<div
class=
"times"
>
2020次
</div>
</div>
<div
class=
"flex"
>
<div>
旷工天数
</div>
<div
class=
"times"
>
2020天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
缺卡次数
</div>
<div
class=
"times"
>
2020天
</div>
</div>
<div
class=
"flex"
>
<div>
加班天数
</div>
<div
class=
"times"
>
2020天
</div>
</div>
</div>
</div>
<div
class=
"cell2"
>
<div
class=
"title"
>
当前剩余假期
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
调休
</div>
<div
class=
"times"
>
2020天
</div>
</div>
<div
class=
"flex"
>
<div>
婚假
</div>
<div
class=
"times"
>
2020天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
年假
</div>
<div
class=
"times"
>
2020天
</div>
</div>
<div
class=
"flex"
>
<div>
陪产假
</div>
<div
class=
"times"
>
2020天
</div>
</div>
</div>
</div>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
view
from
"
@/assets/mixins/view
"
;
import
{
timestampToTime
}
from
'
@/assets/utils/dateFormat.js
'
export
default
{
mixins
:
[
view
],
components
:
{
},
methods
:
{
getdata
(
id
){
this
.
$get
(
'
/staff/info
'
,{
id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
this
.
info
=
res
.
data
this
.
info
.
entryDate
=
timestampToTime
(
this
.
info
.
entryDate
)
this
.
info
.
regularDate
=
timestampToTime
(
this
.
info
.
regularDate
)
}
})
.
catch
(
err
=>
{
this
.
$message
.
error
(
err
.
message
)
})
}
},
data
()
{
return
{
size
:
"
small
"
,
column
:
2
,
toString
:[
"
gender
"
,
"
politicalstatus
"
,
"
staffType
"
,
"
status
"
,
],
toArrays
:
[
],
toDate
:
[
]
info
:{}
}
},
created
(){
this
.
getdata
(
this
.
$route
.
query
.
id
)
}
}
</
script
>
<
style
lang=
"less"
>
.labelClass{
width: 200px;
.persons{
width: 100%;
padding: 0 20px;
.title{
font-weight: bold;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
.cell1{
.avator{
width: 120px;
height: 150px;
background-color: aliceblue;
}
.c2{
color: #999;
font-size: 12px;
margin-top: 10px;
}
.tags{
background: aliceblue;
padding: 5px;
border-radius: 5px;
color: rgb(20, 134, 248);
font-size: 14px;
}
}
.cell2{
background-color: rgb(247, 246, 246);
border-radius: 10px;
margin-top: 20px;
font-size: 15px;
padding: 10px 15px;
.history{
margin-right: 50px;
margin-top: 20px;
}
.times{
color: rgb(20, 134, 248);
}
.contentClass{
width: 600px;
}
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/system/menu/list.vue
View file @
b8053e6c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
'tableData'
:config=
'tableConfig'
notPagination
/>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!--
<LayoutTable
:data=
'tableData'
:config=
'tableConfig'
notPagination
/>
-->
<!--
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
-->
<el-table
:data=
"tableData"
style=
"width: 100%;margin-bottom: 20px;"
row-key=
"id"
border
default-expand-all
:tree-props=
"
{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
v-for=
"(item,index) in config.columns"
:key=
"index"
:prop=
"item.prop"
:label=
"item.label"
width=
"180"
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"query.page"
:page-sizes=
"[10, 20, 30, 40]"
:page-size=
"query.size"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
>
</el-pagination>
</div>
</
template
>
<
script
>
import
table
from
'
@/assets/mixins/table
'
;
//
import table from '@/assets/mixins/table';
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
table
],
//
mixins: [table],
components
:
{
dialogShow
},
methods
:
{
// 菜单表格
gettableList
(){
this
.
$post
(
'
/menu/list
'
,
this
.
query
).
then
(
res
=>
{
if
(
res
.
code
==
1
){
// 原数组
let
arr
=
res
.
data
.
data
this
.
tableData
=
this
.
resetTableList
(
arr
)
this
.
total
=
res
.
data
.
total
}
})
},
// 重排表格
resetTableList
(
arr
){
let
result
=
arr
.
map
(
item
=>
{
// 一级目录
if
(
item
.
childList
.
length
==
0
){
return
{
...
item
,
children
:[]
}
}
else
if
(
item
.
childList
.
length
>
0
){
return
{
...
item
,
children
:
this
.
resetTableList
(
item
.
childList
)
}
}
})
return
result
},
//
handleSizeChange
(
size
){
this
.
query
.
size
=
size
this
.
gettableList
()
},
handleCurrentChange
(
page
){
this
.
query
.
page
=
page
this
.
gettableList
()
},
beforeRender
(
data
)
{
this
.
allMenu
=
this
.
sortByGroup
(
this
.
util_copy
(
data
.
data
));
console
.
log
(
this
.
allMenu
,
'
菜单数据
'
)
...
...
@@ -122,11 +183,14 @@ export default {
},
data
()
{
return
{
tableData
:[],
allMenu
:
[],
// 经过分组排序的表格数据
select
:
[],
// 当前展开的树节点
query
:
{
'
size
'
:
-
1
page
:
1
,
size
:
10
},
total
:
0
,
config
:
{
search
:
[
{
...
...
@@ -136,21 +200,21 @@ export default {
},
],
columns
:
[
{
type
:
"
selection
"
,
reserveSelection
:
true
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
align
:
"
center
"
,
width
:
50
},
{
width
:
60
,
formatter
:
row
=>
{
const
icon
=
this
.
select
.
indexOf
(
row
.
id
)
===
-
1
?
'
right
'
:
'
down
'
;
return
(
!
row
.
parentId
||
row
.
childList
.
length
>
0
?
<
div
onClick
=
{()
=>
{
this
.
selectHandler
(
row
)}}
>
<
i
class
=
{
'
el-icon-arrow-
'
+
icon
}
><
/i
>
<
/div
>
:
''
)
}
},
//
{ type: "selection",reserveSelection:true, width: 60 },
//
{ type: "index", label: "序号",align:"center", width: 50 },
//
{
//
width: 60,
//
formatter: row => {
//
const icon = this.select.indexOf(row.id) === -1 ? 'right' : 'down';
//
return (
//
!row.parentId||row.childList.length>0
//
?
<
div
onClick
=
{()
=>
{
this
.
selectHandler
(
row
)}}
>
//
<
i
class
=
{
'
el-icon-arrow-
'
+
icon
}
><
/i
>
//
<
/div
>
//
: ''
//
)
//
}
//
},
{
prop
:
'
id
'
,
label
:
'
ID
'
,
...
...
@@ -186,38 +250,41 @@ export default {
width
:
100
,
formatter
:
this
.
changeStatus
,
},
{
label
:
'
操作
'
,
formatter
:
(
row
)
=>
{
return
(
//
{
//
label: '操作',
//
formatter: (row)=> {
//
return (
<
div
>
<
el
-
link
style
=
"
margin-right:5px;margin-left:5px
"
icon
=
"
el-icon-top
"
onClick
=
{()
=>
{
this
.
handleUp
(
row
);
}}
><
/el-link
>
//
<
div
>
//
<
el
-
link
//
style="margin-right:5px;margin-left:5px"
//
icon="el-icon-top"
//
onClick={() => {
//
this.handleUp(row);
//
}}
//
>
<
/el-link
>
<
el
-
link
style
=
"
margin-right:5px;margin-left:5px
"
icon
=
"
el-icon-bottom
"
onClick
=
{()
=>
{
this
.
handleDown
(
row
);
}}
//
<
el
-
link
//
style="margin-right:5px;margin-left:5px"
//
icon="el-icon-bottom"
//
onClick={() => {
//
this.handleDown(row);
//
}}
><
/el-link
>
//
>
<
/el-link
>
<
table
-
buttons
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onDel
=
{
this
.
toDel
}
/
>
//
<
table
-
buttons
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onDel
=
{
this
.
toDel
}
/
>
<
/div
>
)
},
},
//
<
/div
>
//
)
//
},
//
},
],
},
}
},
created
(){
this
.
gettableList
()
}
}
</
script
>
...
...
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