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
a182e17e
Commit
a182e17e
authored
Apr 11, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
7297488f
dddd0bca
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
993 additions
and
363 deletions
+993
-363
attendance-performance-manager-ui/admin/src/assets/mixins/tree.js
...ce-performance-manager-ui/admin/src/assets/mixins/tree.js
+5
-2
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
...rformance-manager-ui/admin/src/assets/utils/dateFormat.js
+6
-1
attendance-performance-manager-ui/admin/src/components/FormField.vue
...performance-manager-ui/admin/src/components/FormField.vue
+1
-2
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
...erformance-manager-ui/admin/src/components/SearchForm.vue
+5
-4
attendance-performance-manager-ui/admin/src/components/insertData.vue
...erformance-manager-ui/admin/src/components/insertData.vue
+61
-0
attendance-performance-manager-ui/admin/src/components/tabPane.vue
...e-performance-manager-ui/admin/src/components/tabPane.vue
+3
-0
attendance-performance-manager-ui/admin/src/router.js
attendance-performance-manager-ui/admin/src/router.js
+0
-2
attendance-performance-manager-ui/admin/src/views/Home.vue
attendance-performance-manager-ui/admin/src/views/Home.vue
+5
-3
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
...ance-manager-ui/admin/src/views/attendance/group/list.vue
+8
-2
attendance-performance-manager-ui/admin/src/views/attendance/group/view.vue
...ance-manager-ui/admin/src/views/attendance/group/view.vue
+92
-28
attendance-performance-manager-ui/admin/src/views/attendance/record/error/list.vue
...nager-ui/admin/src/views/attendance/record/error/list.vue
+63
-22
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+195
-15
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+287
-15
attendance-performance-manager-ui/admin/src/views/attendance/staff/stat/list.vue
...manager-ui/admin/src/views/attendance/staff/stat/list.vue
+2
-3
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+152
-194
attendance-performance-manager-ui/admin/src/views/dept/list.vue
...ance-performance-manager-ui/admin/src/views/dept/list.vue
+1
-3
attendance-performance-manager-ui/admin/src/views/job/list.vue
...dance-performance-manager-ui/admin/src/views/job/list.vue
+53
-21
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
...rformance-manager-ui/admin/src/views/staff/drawershow.vue
+6
-2
attendance-performance-manager-ui/admin/src/views/staff/list.vue
...nce-performance-manager-ui/admin/src/views/staff/list.vue
+14
-13
attendance-performance-manager-ui/admin/src/views/staff/view.vue
...nce-performance-manager-ui/admin/src/views/staff/view.vue
+34
-30
attendance-performance-manager-ui/admin/src/views/system/menu/dialogshow.vue
...nce-manager-ui/admin/src/views/system/menu/dialogshow.vue
+0
-1
No files found.
attendance-performance-manager-ui/admin/src/assets/mixins/tree.js
View file @
a182e17e
...
...
@@ -30,12 +30,15 @@ export default {
<
span
>
<
i
style
=
"
font-size:16px;color:#409EFF
"
class
=
{
data
.
icon
}
><
/i
>
<
span
style
=
"
padding-left: 2px;font-size:14px
"
>
{
node
.
label
}
<
/span
>
<
span
style
=
"
padding-left: 2px;font-size:14px;margin-left:20px
"
>
({
data
.
children
.
length
})
<
/span
>
<
/span
>
);
},
async
loadNode
(
node
,
resolve
)
{
console
.
log
(
node
)
if
(
node
.
level
===
0
)
{
return
;
}
...
...
@@ -52,7 +55,7 @@ export default {
let
node
=
this
.
$refs
.
areaTree
.
getNode
(
this
.
currentNode
.
id
);
// 通过节点id找到对应树节点对象
node
.
loaded
=
false
;
node
.
expand
();
// 主动调用展开节点方法,重新查询该节点下的所有子节点
this
.
toView
(
this
.
currentNode
);
this
.
toView
(
this
.
currentNode
);
},
},
...
...
attendance-performance-manager-ui/admin/src/assets/utils/dateFormat.js
View file @
a182e17e
export
const
timestampToTime
=
(
timestamp
)
=>
{
// 时间戳为10位需*1000,时间戳为13位不需乘1000
var
date
=
new
Date
(
timestamp
*
1000
);
var
date
=
null
if
(
timestamp
.
length
<
13
){
date
=
new
Date
(
timestamp
*
1000
);
}
else
{
date
=
new
Date
(
timestamp
);
}
var
Y
=
date
.
getFullYear
()
+
"
-
"
;
var
M
=
(
date
.
getMonth
()
+
1
<
10
...
...
attendance-performance-manager-ui/admin/src/components/FormField.vue
View file @
a182e17e
...
...
@@ -9,7 +9,6 @@
<el-input-number
:disabled=
'disabled'
v-model=
"field"
size=
"small"
:placeholder=
'placeholder'
@
change=
"emit"
@
input=
"emit"
v-if=
'type === "num"'
></el-input-number>
<el-input
:disabled=
'disabled'
:placeholder=
'placeholder'
v-model=
"field"
@
change=
"emit"
:rows=
'rows'
@
input=
"emit"
v-if=
'type === "textarea"'
type=
'textarea'
:autosize=
"textareaSize"
:class=
"inputClass"
></el-input>
<el-select
:disabled=
'disabled'
v-model=
"field"
@
change=
"emit"
:multiple=
'multiple'
:filterable=
'filterable'
:clearable=
'clearable'
v-if=
'type === "select"'
>
...
...
@@ -125,7 +124,7 @@ export default {
emit
()
{
this
.
$emit
(
'
input
'
,
this
.
newVal
)
this
.
$emit
(
'
change
'
,
this
.
newVal
)
this
.
$emit
(
''
)
this
.
$emit
(
'
focus
'
)
}
},
computed
:
{
...
...
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
View file @
a182e17e
...
...
@@ -35,6 +35,7 @@
clearable=
"true"
@
change=
"item.change"
@
clear=
"item.clear"
:placeholder=
"item.label?item.label:'请选择'"
v-if=
"item.type === 'select'"
>
<el-option
...
...
@@ -110,7 +111,7 @@
v-if=
"item.type === 'date' && !item.valueFormat"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"选择日期
"
:placeholder=
"item.label?item.label:'选择日期'
"
>
</el-date-picker>
...
...
@@ -119,7 +120,7 @@
v-if=
"item.type === 'date' && item.valueFormat"
type=
"date"
:value-format=
"item.valueFormat"
placeholder=
"选择日期
"
:placeholder=
"item.label?item.label:'选择日期'
"
>
</el-date-picker>
...
...
@@ -128,7 +129,7 @@
v-if=
"item.type === 'month' && !item.valueFormat"
type=
"month"
value-format=
"yyyy-MM"
placeholder=
"选择月份
"
:placeholder=
"item.label?item.label:'选择月份'
"
>
</el-date-picker>
...
...
@@ -137,7 +138,7 @@
v-if=
"item.type === 'month' && item.valueFormat"
type=
"month"
:value-format=
"item.valueFormat"
placeholder=
"选择月份
"
:placeholder=
"item.label?item.label:'选择月份'
"
>
</el-date-picker>
...
...
attendance-performance-manager-ui/admin/src/components/insertData.vue
0 → 100644
View file @
a182e17e
<
template
>
<el-dialog
:title=
"upload.title"
:visible.sync=
"upload.open"
width=
"400px"
append-to-body
>
<el-upload
ref=
"upload"
:limit=
"1"
accept=
".xlsx, .xls"
:headers=
"upload.headers"
:action=
"upload.url + '?updateSupport=' + upload.updateSupport"
:disabled=
"upload.isUploading"
:on-progress=
"handleFileUploadProgress"
:on-success=
"handleFileSuccess"
:auto-upload=
"false"
drag
>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em>
</div>
<div
class=
"el-upload__tip"
slot=
"tip"
>
<el-checkbox
v-model=
"upload.updateSupport"
/>
是否更新已经存在的数据
<el-link
type=
"primary"
style=
"font-size: 14px"
@
click=
"downloadTemplate"
>
下载模板
</el-link
>
</div>
<div
class=
"el-upload__tip"
style=
"color: red"
slot=
"tip"
>
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitFileForm"
>
确 定
</el-button>
<el-button
@
click=
"upload.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
export
default
{
props
:{
type
:
Object
,
default
:{}
},
methods
:{
submitFileForm
(){
this
.
$refs
.
upload
.
submit
();
this
.
$emit
(
'
submitFileForm
'
,
true
)
}
}
}
</
script
>
<
style
>
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/components/tabPane.vue
View file @
a182e17e
...
...
@@ -22,6 +22,9 @@ export default {
handleClick
(
key
,
keyPath
){
this
.
$emit
(
'
handleClick
'
,
key
)
}
},
mounted
(){
console
.
log
(
this
.
activeName
,
'
;ss
'
)
}
}
</
script
>
...
...
attendance-performance-manager-ui/admin/src/router.js
View file @
a182e17e
...
...
@@ -45,14 +45,12 @@ const router = new Router({
...
restBuilder
(
'
care/template
'
,
'
care/template
'
),
// 关怀问候信息
...
restBuilder
(
'
staff/black
'
,
'
staff/black
'
),
// 员工黑名单信息
...
restBuilder
(
'
job
'
,
'
job
'
),
// 职位信息
...
restBuilder
(
'
staff/adjust/log
'
,
'
staff/adjust/log
'
),
// 员工调岗信息
...
restBuilder
(
'
staff/regular
'
,
'
staff/regular
'
),
// 员工转正信息
...
restBuilder
(
'
staff/leave
'
,
'
staff/leave
'
),
// 员工离职信息
...
restBuilder
(
'
staff/contract
'
,
'
staff/contract
'
),
// 员工合同信息
...
restBuilder
(
'
attendance/record/hik
'
,
'
attendance/record/hik
'
),
// 海康考勤
...
restBuilder
(
'
attendance/record/error
'
,
'
attendance/record/error
'
),
// 考勤打卡记录异常信息
...
restBuilder
(
'
attendance/stat
'
,
'
attendance/stat
'
),
// 考勤汇总信息
...
...
attendance-performance-manager-ui/admin/src/views/Home.vue
View file @
a182e17e
...
...
@@ -119,7 +119,8 @@ export default {
this
.
$store
.
commit
(
'
setHeadBar
'
,[])
this
.
$store
.
commit
(
"
setCurrentParentName
"
,
''
)
this
.
$store
.
commit
(
'
setCurrentThirdArr
'
,[])
console
.
log
(
this
.
menu
,
'
菜单
'
)
this
.
$store
.
commit
(
'
setCurrentSecondPath
'
,
''
)
this
.
$store
.
commit
(
'
setThirdPath
'
,
''
)
},
methods
:{
tabChildren
(
name
){
...
...
@@ -128,9 +129,10 @@ export default {
this
.
$store
.
commit
(
'
setHeadBar
'
,
result
)
// 路由跳转
if
(
result
.
children
.
length
>
0
){
this
.
$router
.
push
({
path
:
result
.
children
[
0
].
path
})
this
.
$store
.
commit
(
'
CurrentSecondPath
'
,
result
.
children
[
0
].
path
)
this
.
$store
.
commit
(
'
setCurrentThirdArr
'
,
result
.
children
[
0
].
children
)
this
.
$store
.
commit
(
'
setCurrentSecondPath
'
,
result
.
children
[
0
].
path
)
this
.
$store
.
commit
(
'
setThirdPath
'
,
result
.
children
[
0
].
path
)
this
.
$router
.
push
({
path
:
result
.
children
[
0
].
path
})
}
else
{
this
.
$message
.
error
(
'
暂未完成添加
'
);
}
...
...
attendance-performance-manager-ui/admin/src/views/attendance/group/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<LayoutTable
:data=
"tableData"
notDel
:config=
"tableConfig"
></LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -72,6 +72,12 @@
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
考勤组名称
"
,
fuzzy
:
true
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -113,7 +119,7 @@
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/attendance/group/view.vue
View file @
a182e17e
<
template
>
<div
class=
"container"
>
<el-card
style=
"min-height:80vh;padding:15px"
>
<div
class=
"flex flex_end"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"$router.back()"
>
返回上一级
</el-button>
</div>
<tab-pane
:activeName=
"activeName"
:thirdList=
"thirdList"
></tab-pane>
<div
class=
"mt20"
>
<div>
考勤组名称
</div>
<el-input
placeholder=
"请输入考勤组名称"
style=
"width:220px"
class=
"mt10"
></el-input>
...
...
@@ -80,26 +82,26 @@
direction=
"rtl"
:before-close=
"handleClose"
>
<!-- 考勤人员 -->
<div>
参与考勤人员(0)
</div>
<div>
无需考勤人员(0)
</div>
<div>
<div>
参与考勤人员(0)
</div>
<el-input
@
focus=
"selectGroup()"
size=
"mini"
placeholder=
"请选择"
></el-input>
</div>
<div>
<div>
无需考勤人员(0)
</div>
<el-input
@
focus=
"selectGroup()"
size=
"mini"
placeholder=
"请选择"
></el-input>
</div>
<!-- 考勤组 -->
<div>
<span>
考勤组负责人:
</span>
<el-select>
<el-option></el-option>
</el-select>
<el-select></el-select>
</div>
<div>
<span>
主负责人:
</span>
<el-select>
<el-option></el-option>
</el-select>
<el-select></el-select>
</div>
<div>
<span>
子负责人:
</span>
<el-select>
<el-option></el-option>
</el-select>
<el-select></el-select>
</div>
<div>
<span>
子负责人权限:
</span>
...
...
@@ -138,11 +140,53 @@
<div>
<div>
特殊日期
</div>
</div>
<div
class=
"mt10"
>
<el-button>
+新增必须打卡的日期
</el-button>
</div>
<div
class=
"mt10"
>
<el-button>
+新增无需打卡的日期
</el-button>
</div>
<div>
<div>
考勤方式
</div>
<el-checkbox-group
v-model=
"type"
>
<el-checkbox
label=
"地点打卡"
></el-checkbox>
<el-checkbox
label=
"Wi-Fi打卡"
></el-checkbox>
<el-checkbox
label=
"蓝牙打卡"
></el-checkbox>
<el-checkbox
label=
"考勤机打卡"
></el-checkbox>
</el-checkbox-group>
</div>
</div>
</el-drawer>
<!-- 选择biao -->
<!-- 选择成员 -->
<el-dialog
:visible.sync=
"isshowgroup"
title=
"选择人员"
>
<div>
<div
class=
"titles"
>
选择部门
</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>
</div>
</el-dialog>
<!-- 选择班次 -->
<el-dialog
:visible.sync=
"isshowBanci"
title=
"选择班次"
>
<div>
选择班次
</div>
</el-dialog>
</div>
</template>
...
...
@@ -156,6 +200,9 @@
changeBanci
(
row
){
console
.
log
(
row
)
this
.
isshowBanci
=
true
},
selectGroup
(){
this
.
isshowgroup
=
true
}
},
data
()
{
...
...
@@ -192,22 +239,39 @@
},
drawer
:
true
,
weekList
:[],
isshowBanci
:
false
//班次展示
isshowBanci
:
false
,
//班次展示
isshowgroup
:
false
,
areaData
:[],
type
:[]
}
}
}
</
script
>
<
style
lang=
"less"
>
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
.labelClass{
width: 200px;
}
.el-descriptions__body{
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #FFF;
}
.contentClass{
width: 600px;
}
.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/attendance/record/error/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
notAdd
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
size=
"mini"
type=
"primary"
@
click=
"morehandle"
>
批量处理
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -33,28 +38,69 @@
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
morehandle
(){
console
.
log
(
this
.
selection
)
}
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
type
:
"
tex
t
"
,
label
:
"
员工姓名
"
,
name
:
"
deptId
"
,
type
:
"
selec
t
"
,
label
:
"
全部部门
"
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
text
"
,
label
:
"
所属部门
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部班次
"
,
fuzzy
:
true
},
{
name
:
"
errorStatus
"
,
type
:
"
select
"
,
label
:
"
全部异常状态
"
,
fuzzy
:
true
},
{
name
:
"
errorStatus
"
,
type
:
"
select
"
,
label
:
"
异常状态
"
,
label
:
"
全部处理状态
"
,
fuzzy
:
true
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
true
},
],
...
...
@@ -63,26 +109,21 @@
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
上下班时间
"
,
prop
:
"
goOffDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
异常状态
"
,
prop
:
"
errorStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
异常时间
"
,
prop
:
"
errorDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理结果
"
,
prop
:
"
errorDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
上下班时间
"
,
prop
:
"
goOffDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
实际打卡时间
"
,
prop
:
"
actualAttendanceDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
处理时间
"
,
prop
:
"
operDateTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
异常状态
"
,
prop
:
"
errorStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
处理状态
"
,
prop
:
"
processStatus
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
处理人
"
,
prop
:
"
processStatus
"
,
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
noEdit
noView
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
notAdd
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"handleImport"
>
导入
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<el-dialog
:title=
"upload.title"
:visible.sync=
"upload.open"
width=
"400px"
append-to-body
>
<el-upload
ref=
"upload"
:limit=
"1"
accept=
".xlsx, .xls"
:headers=
"upload.headers"
:action=
"upload.url + '?updateSupport=' + upload.updateSupport"
:disabled=
"upload.isUploading"
:on-progress=
"handleFileUploadProgress"
:on-success=
"handleFileSuccess"
:auto-upload=
"false"
drag
>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em>
</div>
<div
class=
"el-upload__tip"
slot=
"tip"
>
<el-checkbox
v-model=
"upload.updateSupport"
/>
是否更新已经存在的数据
<el-link
type=
"primary"
style=
"font-size: 14px"
@
click=
"downloadTemplate"
>
下载模板
</el-link
>
</div>
<div
class=
"el-upload__tip"
style=
"color: red"
slot=
"tip"
>
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitFileForm"
>
确 定
</el-button>
<el-button
@
click=
"upload.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 导出记录查看 -->
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 10"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"times"
>
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
</div>
</
template
>
...
...
@@ -16,8 +98,54 @@
},
mixins
:
[
table
],
created
()
{
// console.log(this.$route.query,'sssss')
},
methods
:
{
lookexportHis
(){
// 导出记录
this
.
drawerhistory
=
true
},
/** 导入 */
handleImport
()
{
this
.
upload
.
title
=
"
打卡记录导入
"
;
this
.
upload
.
open
=
true
;
},
/** 下载模板操作 */
downloadTemplate
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/record/hik/downloadTemplate
"
,
{},
{
type
:
"
excel
"
})
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 文件上传中处理 */
handleFileUploadProgress
(
event
,
file
,
fileList
)
{
this
.
upload
.
isUploading
=
true
;
},
/** 文件上传成功处理 */
handleFileSuccess
(
response
,
file
,
fileList
)
{
this
.
upload
.
open
=
false
;
this
.
upload
.
isUploading
=
false
;
this
.
$refs
.
upload
.
clearFiles
();
this
.
$alert
(
response
.
msg
,
"
导入结果
"
,
{
dangerouslyUseHTMLString
:
true
});
this
.
getData
();
},
/** 提交上传文件 */
submitFileForm
()
{
this
.
$refs
.
upload
.
submit
();
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/record/hik/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
...
...
@@ -34,6 +162,18 @@
},
data
()
{
return
{
upload
:
{
// 是否显示弹出层(员工关怀信息导入)
open
:
false
,
// 弹出层标题(员工关怀信息导入)
title
:
"
导入员工关怀信息数据
"
,
// 是否禁用上传
isUploading
:
false
,
// 是否更新已经存在的数据
updateSupport
:
0
,
// 上传的地址
url
:
"
/attendance/record/hik/importData
"
,
},
config
:
{
isshowTabPane
:
true
,
search
:
[
...
...
@@ -43,46 +183,86 @@
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
name
:
'
workName
'
,
type
:
'
text
'
,
label
:
'
工号
'
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
tex
t
"
,
type
:
"
selec
t
"
,
label
:
"
所属部门
"
,
fuzzy
:
true
},
{
name
:
"
attendanceGroupId
"
,
type
:
"
tex
t
"
,
label
:
"
所属考勤组
ID
"
,
type
:
"
selec
t
"
,
label
:
"
所属考勤组
"
,
fuzzy
:
true
},
{
name
:
"
shiftsId
"
,
type
:
"
text
"
,
label
:
"
班次ID
"
,
type
:
"
select
"
,
label
:
"
班次
"
,
fuzzy
:
true
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤日期
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
工号
"
,
prop
:
"
staffName
"
},
{
label
:
"
部门
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤组
"
,
prop
:
"
staffName
"
},
{
label
:
"
职位
"
,
prop
:
"
staffName
"
},
{
label
:
"
班次
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
考勤点名称
"
,
prop
:
"
staffName
"
},
{
label
:
"
事件源
"
,
prop
:
"
staffName
"
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
<
table
-
buttons
noAdd
noDel
noEdit
noView
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
)
}
}
]
}
},
drawerhistory
:
false
};
}
};
</
script
>
\ No newline at end of file
</
script
>
<
style
scoped
lang=
"scss"
>
.hisList
{
padding
:
15px
;
.list
{
background-color
:
rgba
(
64
,
158
,
255
,
0
.1
);
font-size
:
14px
;
border-radius
:
10px
;
padding
:
10px
;
.times
{
font-size
:
12px
;
color
:
#999
;
}
}
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
a182e17e
<
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>
<div
class=
"totalNum flex"
>
<div
class=
"item flex"
>
<div>
需要打卡人数
<span
class=
"num"
>
{{
1
}}
</span></div>
<div>
未出勤
<span
class=
"num"
>
{{
1
}}
</span></div>
<div>
出勤率
<span
class=
"num"
>
{{
1
}}
</span></div>
</div>
<div
class=
"item flex"
>
<div>
迟到
<span
class=
"num"
>
{{
1
}}
</span></div>
<div>
早退
<span
class=
"num"
>
{{
1
}}
</span></div>
<div>
缺卡
<span
class=
"num"
>
{{
1
}}
</span></div>
</div>
</div>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notDel
notAdd
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"handleImport"
>
导入
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<!-- 导出记录查看 -->
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 10"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"times"
>
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
<!-- 表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkList"
>
<el-checkbox
v-for=
"(item,index) in setcolum"
:key=
"index"
:label=
"item.label"
>
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button>
取消
</el-button>
<el-button
type=
"primary"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 上传 -->
<el-dialog
:title=
"upload.title"
:visible.sync=
"upload.open"
width=
"400px"
append-to-body
>
<el-upload
ref=
"upload"
:limit=
"1"
accept=
".xlsx, .xls"
:headers=
"upload.headers"
:action=
"upload.url + '?updateSupport=' + upload.updateSupport"
:disabled=
"upload.isUploading"
:on-progress=
"handleFileUploadProgress"
:on-success=
"handleFileSuccess"
:auto-upload=
"false"
drag
>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em>
</div>
<div
class=
"el-upload__tip"
slot=
"tip"
>
<el-checkbox
v-model=
"upload.updateSupport"
/>
是否更新已经存在的数据
<el-link
type=
"primary"
style=
"font-size: 14px"
@
click=
"downloadTemplate"
>
下载模板
</el-link
>
</div>
<div
class=
"el-upload__tip"
style=
"color: red"
slot=
"tip"
>
提示:仅允许导入“xls”或“xlsx”格式文件!
</div>
</el-upload>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitFileForm"
>
确 定
</el-button>
<el-button
@
click=
"upload.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
...
...
@@ -12,15 +127,74 @@
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
export
default
{
name
:
"
AttendanceRecordList
"
,
components
:
{
drawerShow
},
drawerShow
,
TabPane
,
},
mixins
:
[
table
],
computed
:{
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
},
created
()
{
},
methods
:
{
/** 导入 */
handleImport
()
{
this
.
upload
.
title
=
"
打卡记录导入
"
;
this
.
upload
.
open
=
true
;
},
/** 下载模板操作 */
downloadTemplate
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/record/downloadTemplate
"
,
{},
{
type
:
"
excel
"
})
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 文件上传中处理 */
handleFileUploadProgress
(
event
,
file
,
fileList
)
{
this
.
upload
.
isUploading
=
true
;
},
/** 文件上传成功处理 */
handleFileSuccess
(
response
,
file
,
fileList
)
{
this
.
upload
.
open
=
false
;
this
.
upload
.
isUploading
=
false
;
this
.
$refs
.
upload
.
clearFiles
();
this
.
$alert
(
response
.
msg
,
"
导入结果
"
,
{
dangerouslyUseHTMLString
:
true
});
this
.
getData
();
},
/** 提交上传文件 */
submitFileForm
()
{
this
.
$refs
.
upload
.
submit
();
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/record/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
setdialog
(){
this
.
isdialog
=
true
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
},
lookexportHis
(){
this
.
drawerhistory
=
true
},
renderTable
(
tableData
)
{
return
(
<
el
-
table
stripe
data
=
{
tableData
}
class
=
"
total-table
"
>
...
...
@@ -50,10 +224,28 @@
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
handleClick
(
key
){
console
.
log
(
key
)
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
}
},
data
()
{
return
{
upload
:
{
// 是否显示弹出层(员工关怀信息导入)
open
:
false
,
// 弹出层标题(员工关怀信息导入)
title
:
"
每日打卡记录
"
,
// 是否禁用上传
isUploading
:
false
,
// 是否更新已经存在的数据
updateSupport
:
0
,
// 上传的地址
url
:
"
/attendance/record/importData
"
,
},
/** 子表列元素 */
columnSet
:[
{
prop
:
"
recordId
"
,
label
:
"
考勤记录ID
"
,
width
:
100
},
...
...
@@ -73,16 +265,54 @@
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
name
:
"
phone
"
,
type
:
"
text
"
,
label
:
"
手机号
"
,
fuzzy
:
true
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
所属部门
"
,
fuzzy
:
true
},
{
name
:
"
attendanceGroupId
"
,
type
:
"
select
"
,
label
:
"
所属考勤组
"
,
fuzzy
:
true
},
{
name
:
"
shiftsId
"
,
type
:
"
select
"
,
label
:
"
班次
"
,
fuzzy
:
true
},
{
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
},
{
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
打卡日期
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤组
"
,
prop
:
"
staffName
"
},
{
label
:
"
部门
"
,
prop
:
"
staffName
"
},
{
label
:
"
职位
"
,
prop
:
"
staffName
"
},
{
label
:
"
班次
"
,
prop
:
"
staffName
"
},
{
label
:
"
考勤打卡记录详细信息
"
,
width
:
120
,
prop
:
"
subColumns
"
,
...
...
@@ -103,13 +333,55 @@
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
<
table
-
buttons
noAdd
noEdit
noView
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
},
drawerhistory
:
false
,
isdialog
:
false
,
setcolum
:[],
checkList
:[]
}
}
};
</
script
>
\ No newline at end of file
</
script
>
<
style
scoped
lang=
"less"
>
.totalNum{
background: rgba(64, 158, 255,0.2);
padding: 15px;
border-left: 4px solid rgb(20, 134, 248);
color: rgb(100, 100, 100);
.item{
padding: 0 10px;
border-right: 1px solid gray;
}
.item:last-child{
border: none;
}
.num{
color: #409EFF;
margin-left: 10px;
margin-right: 20px;
}
}
.hisList{
padding: 15px;
.list{
background-color: rgba(64, 158, 255, 0.1);
font-size: 14px;
border-radius: 10px;
padding: 10px;
.times{
font-size: 12px;
color: #999;
}
}
}
.tipsword{
margin: 20px 0;
color: #999;
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/attendance/staff/stat/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
...
...
@@ -38,6 +36,7 @@
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
...
...
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notAdd
notDel
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 表格设置 -->
<el-dialog
:visible.sync=
"isdialog"
title=
"导出表格设置"
>
<div
class=
"tipsword"
>
请选择表格展示字段,导出的表格中的内容选中的字段将保持一致。
</div>
<el-checkbox-group
v-model=
"checkList"
>
<el-checkbox
v-for=
"(item,index) in setcolum"
:key=
"index"
:label=
"item.label"
>
</el-checkbox>
</el-checkbox-group>
<div
class=
"mt20"
style=
"text-align:right"
>
<el-button>
取消
</el-button>
<el-button
type=
"primary"
>
确定
</el-button>
</div>
</el-dialog>
<!-- 导出记录查看 -->
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"item in 10"
:key=
"item"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"times"
>
导出时间:2020-08-13
</div>
</div>
</div>
</el-drawer>
</div>
</
template
>
...
...
@@ -33,192 +84,73 @@
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
setdialog
(){
this
.
isdialog
=
true
this
.
setcolum
=
this
.
config
.
columns
.
filter
(
item
=>
item
.
label
&&
item
.
prop
)
},
lookexportHis
(){
this
.
drawerhistory
=
true
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/stat/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
}
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
windowCategory
"
,
type
:
"
text
"
,
label
:
"
窗口类别
"
,
fuzzy
:
true
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
{
name
:
"
deptId
"
,
type
:
"
text
"
,
label
:
"
所属部门
"
,
fuzzy
:
true
},
{
name
:
"
backToUnit
"
,
type
:
"
text
"
,
label
:
"
回单位
"
,
fuzzy
:
true
},
{
name
:
"
onDutyLeave
"
,
type
:
"
text
"
,
label
:
"
因公请假
"
,
fuzzy
:
true
},
{
name
:
"
outOfOffice
"
,
type
:
"
text
"
,
label
:
"
外出勘验
"
,
fuzzy
:
true
},
{
name
:
"
shiftCompensation
"
,
type
:
"
text
"
,
label
:
"
值班补班
"
,
fuzzy
:
true
},
{
name
:
"
physicalExamination
"
,
type
:
"
text
"
,
label
:
"
体检
"
,
fuzzy
:
true
},
{
name
:
"
quarantine
"
,
type
:
"
text
"
,
label
:
"
隔离
"
,
fuzzy
:
true
},
{
name
:
"
businessTrip
"
,
type
:
"
text
"
,
label
:
"
因公外出
"
,
fuzzy
:
true
},
{
name
:
"
publicHoliday
"
,
type
:
"
text
"
,
label
:
"
公休
"
,
fuzzy
:
true
},
{
name
:
"
sickLeave
"
,
type
:
"
text
"
,
label
:
"
病假
"
,
fuzzy
:
true
},
{
name
:
"
funeralLeave
"
,
type
:
"
text
"
,
label
:
"
丧假
"
,
type
:
"
select
"
,
label
:
"
全部部门
"
,
fuzzy
:
true
},
{
name
:
"
marriageLeave
"
,
type
:
"
text
"
,
label
:
"
婚假
"
,
fuzzy
:
true
},
{
name
:
"
childRearingLeave
"
,
type
:
"
text
"
,
label
:
"
育儿假
"
,
fuzzy
:
true
},
{
name
:
"
maternityLeave
"
,
type
:
"
text
"
,
label
:
"
产假
"
,
fuzzy
:
true
},
{
name
:
"
transferBack
"
,
type
:
"
text
"
,
label
:
"
调回单位
"
,
fuzzy
:
true
},
{
name
:
"
homeLeave
"
,
type
:
"
text
"
,
label
:
"
探亲假
"
,
fuzzy
:
true
},
{
name
:
"
personalLeave
"
,
type
:
"
text
"
,
label
:
"
事假
"
,
fuzzy
:
true
},
{
name
:
"
absenteeismDays
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-旷工
"
,
fuzzy
:
true
},
{
name
:
"
otherDays
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-其他
"
,
fuzzy
:
true
},
{
name
:
"
attendanceRate
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-出勤率
"
,
fuzzy
:
true
},
{
name
:
"
nonCompliancePunch
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-未按规定打卡
"
,
fuzzy
:
true
},
{
name
:
"
lateTimes
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-迟到
"
,
fuzzy
:
true
},
{
name
:
"
surfingMobileTimes
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-上网耍手机
"
,
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
全部考勤组
"
,
fuzzy
:
true
},
{
name
:
"
overtimeTimes
"
,
type
:
"
tex
t
"
,
label
:
"
考勤汇总-溜班
"
,
name
:
"
deptId
"
,
type
:
"
selec
t
"
,
label
:
"
全部班次
"
,
fuzzy
:
true
},
{
name
:
"
vacancy
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-空岗
"
,
name
:
'
startTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤开始时间
"
,
fuzzy
:
true
},
{
name
:
"
nonStandardDressTimes
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-未规范着装
"
,
name
:
'
endTime
'
,
type
:
"
date
"
,
valueFormat
:
'
YYYY-dd-MM
'
,
label
:
"
考勤结束时间
"
,
fuzzy
:
true
},
{
name
:
"
unexcusedMeetingAbsenc
e
"
,
name
:
"
staffNam
e
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-无故缺席会议
"
,
label
:
"
员工姓名
"
,
fuzzy
:
true
},
{
name
:
"
earlyLeaveMeeting
"
,
name
:
"
phoneNumber
"
,
type
:
"
text
"
,
label
:
"
考勤汇总-会议早退
"
,
label
:
"
手机号
"
,
fuzzy
:
true
}
,
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -226,75 +158,101 @@
{
label
:
"
窗口类别
"
,
prop
:
"
windowCategory
"
},
{
label
:
"
部门
"
,
prop
:
"
bumentId
"
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
回单位
"
,
prop
:
"
backToUnit
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
回单位
(天)
"
,
prop
:
"
backToUnit
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公请假
"
,
prop
:
"
onDutyLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公请假
(天)
"
,
prop
:
"
onDutyLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
外出勘验
"
,
prop
:
"
outOfOffice
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
外出勘验
(天)
"
,
prop
:
"
outOfOffice
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
值班补班
"
,
prop
:
"
shiftCompensation
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
值班补班
(天)
"
,
prop
:
"
shiftCompensation
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
体检
"
,
prop
:
"
physicalExamination
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
体检
(天)
"
,
prop
:
"
physicalExamination
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
隔离
"
,
prop
:
"
quarantine
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
隔离
(天)
"
,
prop
:
"
quarantine
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公外出
"
,
prop
:
"
businessTrip
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
因公外出
(与窗口工作无关/天)
"
,
prop
:
"
businessTrip
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
公休
"
,
prop
:
"
publicHoliday
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
公休
(天)
"
,
prop
:
"
publicHoliday
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
病假
"
,
prop
:
"
sickLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
病假
(天)
"
,
prop
:
"
sickLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
丧假
"
,
prop
:
"
funeralLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
丧假
(天)
"
,
prop
:
"
funeralLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
婚假
"
,
prop
:
"
marriageLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
婚假
(天)
"
,
prop
:
"
marriageLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
育儿假
"
,
prop
:
"
childRearingLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
育儿假
(天)
"
,
prop
:
"
childRearingLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
产假
"
,
prop
:
"
maternityLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
产假
(陪护假/天)
"
,
prop
:
"
maternityLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
调回单位
"
,
prop
:
"
transferBack
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
调回单位
(或离职/天)
"
,
prop
:
"
transferBack
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
探亲假
"
,
prop
:
"
homeLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
探亲假
(天)
"
,
prop
:
"
homeLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
事假
"
,
prop
:
"
personalLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
事假
(天)
"
,
prop
:
"
personalLeave
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-旷工
"
,
prop
:
"
absenteeismDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
旷工(天)
"
,
prop
:
"
absenteeismDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-其他
"
,
prop
:
"
otherDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
其他(天)
"
,
prop
:
"
otherDays
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-出勤率
"
,
prop
:
"
attendanceRate
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
出勤率%
"
,
prop
:
"
attendanceRate
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-未按规定打卡
"
,
prop
:
"
nonCompliancePunch
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
未按规定打卡(含忘记打卡)
"
,
prop
:
"
nonCompliancePunch
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-迟到
"
,
prop
:
"
lateTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
迟到(次)
"
,
prop
:
"
lateTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤汇总-上网耍手机
"
,
prop
:
"
surfingMobileTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
上网耍手机(次)
"
,
prop
:
"
surfingMobileTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤汇总-溜班
"
,
prop
:
"
overtimeTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
溜班(次)
"
,
prop
:
"
overtimeTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤汇总-空岗
"
,
prop
:
"
vacancy
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
空岗(次)
"
,
prop
:
"
vacancy
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-未规范着装
"
,
prop
:
"
nonStandardDressTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
未规范着装(次)
"
,
prop
:
"
nonStandardDressTimes
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤汇总-无故缺席会议
"
,
prop
:
"
unexcusedMeetingAbsence
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
无故缺席会议(次)
"
,
prop
:
"
unexcusedMeetingAbsence
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
考勤汇总-
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
,
formatter
:
this
.
formatterMoney
},
{
label
:
"
会议早退
"
,
prop
:
"
earlyLeaveMeeting
"
,
formatter
:
this
.
formatterMoney
},
{
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
noEdit
noView
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
},
setcolum
:[],
isdialog
:
false
,
checkList
:[],
drawerhistory
:
false
};
}
};
</
script
>
\ No newline at end of file
</
script
>
<
style
scoped
lang=
"less"
>
.hisList{
padding: 15px;
.list{
background-color: rgba(64, 158, 255, 0.1);
font-size: 14px;
border-radius: 10px;
padding: 10px;
.times{
font-size: 12px;
color: #999;
}
}
}
.tipsword{
margin: 20px 0;
color: #999;
}
</
style
>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/views/dept/list.vue
View file @
a182e17e
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notSearch
></LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -54,9 +54,7 @@
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
// {label: "祖级列表", prop: "ancestors"},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
成员数量
"
,
prop
:
"
deptName
"
},
{
label
:
"
负责人
"
,
prop
:
"
deptName
"
},
...
...
attendance-performance-manager-ui/admin/src/views/job/list.vue
View file @
a182e17e
...
...
@@ -29,7 +29,10 @@
</el-scrollbar>
</el-col>
<el-col
:span=
"18"
:xs=
"12"
class=
"mytree"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
></LayoutTable>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
notSearch
>
<el-button
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
size=
"mini"
slot=
"table-head-left2"
>
导出
</el-button>
</LayoutTable>
</el-col>
</el-row>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
...
...
@@ -50,7 +53,7 @@
},
mixins
:
[
table
,
tree
],
created
()
{
this
.
getpositions
(
)
console
.
log
(
this
.
activeName
,
'
ssss
'
)
},
computed
:{
thirdList
(){
...
...
@@ -62,6 +65,34 @@
}
},
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
>
<
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
)
{
if
(
node
.
level
===
0
)
{
return
;
}
resolve
(
data
.
result
);
},
doExport
(){
this
.
isExport
=
true
;
this
.
$download
(
"
/job/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
...
...
@@ -91,24 +122,24 @@
return
{
config
:
{
search
:
[
{
name
:
"
groupName
"
,
type
:
"
text
"
,
label
:
"
分组名称
"
,
fuzzy
:
true
},
{
name
:
"
jobCode
"
,
type
:
"
text
"
,
label
:
"
职位编码
"
,
fuzzy
:
true
},
{
name
:
"
jobName
"
,
type
:
"
text
"
,
label
:
"
职位名称
"
,
fuzzy
:
true
},
//
{
//
name: "groupName",
//
type: "text",
//
label: "分组名称",
//
fuzzy: true
//
},
//
{
//
name: "jobCode",
//
type: "text",
//
label: "职位编码",
//
fuzzy: true
//
},
//
{
//
name: "jobName",
//
type: "text",
//
label: "职位名称",
//
fuzzy: true
//
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -134,7 +165,8 @@
}
}
]
}
},
isExport
:
false
}
}
};
...
...
attendance-performance-manager-ui/admin/src/views/staff/drawershow.vue
View file @
a182e17e
...
...
@@ -24,8 +24,12 @@
<Field
label=
"所属部门"
prop=
"deptName"
v-model=
"form.deptName"
placeholder=
"请选择所属部门"
@
focus=
"ishowBumen = true"
/>
<Field
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
:enumData=
"dict.politicalstatus"
type=
"select"
placeholder=
"请选择职位"
/>
<!--
<Field
label=
"职位"
prop=
"positionId"
v-model=
"form.positionId"
:enumData=
"dict.politicalstatus"
type=
"select"
placeholder=
"请选择职位"
/>
-->
<el-form-item
label=
"职位"
prop=
"positionId"
>
<el-select
v-model=
"form.positionId"
placeholder=
"请选择职位"
>
<el-option></el-option>
</el-select>
</el-form-item>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
placeholder=
"请输入工号"
/>
<!--
<Field
label=
"是否在政务大厅"
prop=
"positionId"
v-model=
"form.positionId"
placeholder=
"请选择"
type=
"select"
/>
-->
...
...
attendance-performance-manager-ui/admin/src/views/staff/list.vue
View file @
a182e17e
...
...
@@ -3,18 +3,20 @@
<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=
"totalNum flex"
v-if=
"tableData.staff"
>
<div
class=
"item"
>
在职员工
<span
class=
"num"
>
{{
tableData
.
staff
.
inWorkStaff
}}
</span></div>
<div
class=
"item flex"
>
<div>
全职
<span
class=
"num"
>
66
</span></div>
<div>
实习
<span
class=
"num"
>
66
</span></div>
<div>
兼职
<span
class=
"num"
>
66
</span></div>
<div>
全职
<span
class=
"num"
>
{{
tableData
.
staff
.
fullStaff
}}
</span></div>
<div>
实习
<span
class=
"num"
>
{{
tableData
.
staff
.
pricateStaff
}}
</span></div>
<!-- 兼职未对 -->
<div>
兼职
<span
class=
"num"
>
{{
tableData
.
staff
.
concurrentlyStaff
}}
</span></div>
</div>
<div
class=
"item flex"
>
<div>
试用
<span
class=
"num"
>
66
</span></div>
<div>
正式
<span
class=
"num"
>
66
</span></div>
<div>
待离职
<span
class=
"num"
>
66
</span></div>
<div>
试用
<span
class=
"num"
>
{{
tableData
.
staff
.
onTrialStaff
}}
</span></div>
<div>
正式
<span
class=
"num"
>
{{
tableData
.
staff
.
formalStaff
}}
</span></div>
<div>
待离职
<span
class=
"num"
>
{{
tableData
.
staff
.
resignationStaff
}}
</span></div>
</div>
</div>
<el-row
:gutter=
"20"
>
...
...
@@ -27,7 +29,6 @@
:data=
"areaData"
id=
"el-tree"
node-key=
"id"
indent=
"4"
:props=
"treeProps"
:load=
"loadNode"
highlight-current
...
...
@@ -131,7 +132,7 @@
methods
:
{
/** 导入 */
handleImport
()
{
this
.
upload
.
title
=
"
员工
关怀信息
导入
"
;
this
.
upload
.
title
=
"
员工导入
"
;
this
.
upload
.
open
=
true
;
},
handleClick
(
key
){
...
...
@@ -170,7 +171,7 @@
},
doExport
(){
this
.
isExport
=
true
;
this
.
$download
(
"
/staff/
list/
exportExcel
"
,
{
this
.
$download
(
"
/staff/exportExcel
"
,
{
"
idList
"
:
this
.
selection
,
'
name
'
:
this
.
$route
.
query
[
'
name
'
],
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
...
...
@@ -232,10 +233,10 @@
],
isshowTabPane
:
false
},
activeName
:
'
first
'
,
isshowHome
:
false
,
personData
:[],
isExport
:
false
isExport
:
false
,
staffInfo
:{}
}
},
computed
:{
...
...
attendance-performance-manager-ui/admin/src/views/staff/view.vue
View file @
a182e17e
...
...
@@ -6,19 +6,21 @@
<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=
"cell1 flex"
>
<el-image
style=
"width: 120px; height: 150px"
:src=
"allinfo.photoPath"
:preview-src-list=
"allinfo.photoPath"
>
</el-image>
<div
class=
"content ml20"
>
<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>
<span>
{{
info
.
workName
}}
</span>
<span
class=
"tags"
>
{{
info
.
workStatus
}}
</span>
</div>
<div
class=
"c2"
>
<span>
{{
info
.
positionName
}}
</span>
<span>
{{
allinfo
.
deptName
}}
-
{{
all
info
.
positionName
}}
</span>
<span
style=
"margin:0 10px"
>
|
</span>
<span>
1512
天
</span>
<span>
{{
info
.
workLimit
}}
天
</span>
</div>
</div>
</div>
...
...
@@ -26,11 +28,11 @@
<div
class=
"title"
>
成长记录
</div>
<div
class=
"flex"
>
<div
class=
"history"
>
<div
class=
"times"
>
{{
info
.
entryDate
}}
</div>
<div
class=
"times"
>
{{
info
.
workBeginDay
}}
</div>
<div>
入职时间
</div>
</div>
<div
class=
"history"
>
<div
class=
"times"
>
{{
info
.
regularDate
}}
</div>
<div
class=
"times"
>
{{
info
.
workFormalDay
}}
</div>
<div>
转正时间
</div>
</div>
</div>
...
...
@@ -43,31 +45,31 @@
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
实际出勤天数
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
attendanceCount
}}
天
</div>
</div>
<div
class=
"flex"
>
<div>
请假天数
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
leaveCount
}}
天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
迟到早退次数
</div>
<div
class=
"times
"
>
2020
次
</div>
<div
class=
"times
ml20"
>
{{
info
.
lateCount
}}
次
</div>
</div>
<div
class=
"flex"
>
<div>
旷工天数
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
minerCount
}}
天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
缺卡次数
</div>
<div
class=
"times
"
>
2020天
</div>
<div
class=
"times
ml20"
>
{{
info
.
lackCardCount
}}
次
</div>
</div>
<div
class=
"flex"
>
<div>
加班天数
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
workOverDay
}}
天
</div>
</div>
</div>
</div>
...
...
@@ -76,21 +78,21 @@
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
调休
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
compensatoryDay
}}
天
</div>
</div>
<div
class=
"flex"
>
<div>
婚假
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
marriageHoliday
}}
天
</div>
</div>
</div>
<div
class=
"flex flex-pack-justify"
style=
"margin-top:10px"
>
<div
class=
"flex"
>
<div>
年假
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
winterHoliday
}}
天
</div>
</div>
<div
class=
"flex"
>
<div>
陪产假
</div>
<div
class=
"times
"
>
2020
天
</div>
<div
class=
"times
ml20"
>
{{
info
.
paternityLeaveDay
}}
天
</div>
</div>
</div>
</div>
...
...
@@ -108,9 +110,10 @@
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
)
this
.
info
=
res
.
data
.
holidayLists
[
0
]
this
.
allinfo
=
res
.
data
//总
this
.
info
.
workBeginDay
=
timestampToTime
(
Number
(
this
.
info
.
workBeginDay
))
this
.
info
.
workFormalDay
=
timestampToTime
(
Number
(
this
.
info
.
workFormalDay
))
}
})
.
catch
(
err
=>
{
...
...
@@ -120,7 +123,8 @@
},
data
()
{
return
{
info
:{}
info
:{},
allinfo
:{}
}
},
created
(){
...
...
@@ -136,11 +140,11 @@
font-weight: bold;
}
.cell1{
.avator{
width: 120px;
height: 150px;
background-color: aliceblue;
}
//
.avator{
//
width: 120px;
//
height: 150px;
//
background-color: aliceblue;
//
}
.c2{
color: #999;
font-size: 12px;
...
...
attendance-performance-manager-ui/admin/src/views/system/menu/dialogshow.vue
View file @
a182e17e
...
...
@@ -13,7 +13,6 @@
/>
</el-form-item>
</el-col>
<!--
<Field
label=
"ID"
prop=
"id"
v-model=
"form.id"
v-if=
'pageInfo.type !== "add"'
disabled
/>
-->
<Field
label=
"名称"
prop=
"name"
v-model=
"form.name"
/>
<Field
label=
"权限类型"
prop=
"authType"
v-model=
"form.authType"
:enumData=
'dict.authType'
type=
'select'
/>
...
...
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