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
202450cf
Commit
202450cf
authored
Aug 03, 2023
by
廖旭伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
585a838a
0f12e5c8
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
845 additions
and
715 deletions
+845
-715
attendance-performance-manager-ui/admin/src/views/Home.vue
attendance-performance-manager-ui/admin/src/views/Home.vue
+288
-266
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/dialogshow.vue
...r-ui/admin/src/views/attendance/record/hik/dialogshow.vue
+200
-124
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
...manager-ui/admin/src/views/attendance/record/hik/list.vue
+357
-325
No files found.
attendance-performance-manager-ui/admin/src/views/Home.vue
View file @
202450cf
...
...
@@ -8,43 +8,47 @@
<div
class=
"title"
style=
"margin-bottom:40px"
>
今日数据洞察
</div>
<div
class=
"cell1"
>
<div
class=
"title"
>
人事数据
</div>
<div
class=
"datas flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"datas flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"item"
>
<div>
总人数
</div>
<div>
{{
homeStat
.
totalPersonNum
}}
</div>
<div>
{{
homeStat
.
totalPersonNum
}}
</div>
</div>
<div
class=
"item"
>
<div>
部门人数
</div>
<div>
{{
homeStat
.
totalDeptNum
}}
</div>
<div>
{{
homeStat
.
totalDeptNum
}}
</div>
</div>
</div>
</div>
<div
class=
"cell1"
>
<div
class=
"title"
>
考勤数据
</div>
<div
class=
"datas flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"datas flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"item"
>
<div>
打卡人数
</div>
<div>
{{
homeStat
.
attendPersonNum
}}
</div>
<div>
{{
homeStat
.
attendPersonNum
}}
</div>
</div>
<div
class=
"item"
>
<div>
出勤率
</div>
<div>
{{
homeStat
.
attendRadio
}}
%
</div>
<div>
{{
homeStat
.
attendRadio
}}
%
</div>
</div>
<div
class=
"item"
>
<div>
请假人数
</div>
<div>
{{
homeStat
.
levealPersonNum
}}
</div>
<div>
{{
homeStat
.
levealPersonNum
}}
</div>
</div>
<div
class=
"item"
>
<div>
迟到人数
</div>
<div>
{{
homeStat
.
latePersonNum
}}
</div>
<div>
{{
homeStat
.
latePersonNum
}}
</div>
</div>
<div
class=
"item"
>
<div>
早退人数
</div>
<div>
{{
homeStat
.
leftEarlyPersonNum
}}
</div>
<div>
{{
homeStat
.
leftEarlyPersonNum
}}
</div>
</div>
<div
class=
"item"
>
<div>
缺卡人数
</div>
<div>
{{
homeStat
.
missCardPersonNum
}}
</div>
<div>
{{
homeStat
.
missCardPersonNum
}}
</div>
</div>
</div>
</div>
...
...
@@ -56,14 +60,20 @@
<div
class=
"data_right"
>
<div
class=
"title"
>
科学化、精细化、以人为本知行合一的管理理念
</div>
<div
class=
"textWord"
>
坚持政治性与人民性的根本遵循、制度化与规范化的根本依托、考人与考事的相互结合
<br
>
坚持政治性与人民性的根本遵循、制度化与规范化的根本依托、考人与考事的相互结合
<br
/
>
创新性与技术性的重要支撑以及效能性与发展性的不懈追求
</div>
<div
class=
"selectBars flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"Bar_item"
v-for=
"(item, index) in barList"
:key=
"index"
@
click=
"tabChildren(item.barName)"
>
<div
class=
"selectBars flex flex-align-center flex-pack-justify flex_warp"
>
<div
class=
"Bar_item"
v-for=
"(item, index) in barList"
:key=
"index"
@
click=
"tabChildren(item.barName)"
>
<div
class=
"icon"
>
<img
:src=
"item.icon"
>
<img
:src=
"item.icon"
/
>
</div>
<div
class=
"barnam"
>
{{
item
.
barName
}}
</div>
<div
class=
"des"
v-html=
"item.desc"
></div>
...
...
@@ -83,40 +93,43 @@ export default {
return
this
.
$store
.
state
.
userData
;
},
menu
()
{
return
this
.
mapMenu
(
this
.
userData
.
barList
)
}
return
this
.
mapMenu
(
this
.
userData
.
barList
);
},
},
data
()
{
return
{
// 数据洞察
homeStat
:
{
totalPersonNum
:
0
,
//总人数
totalDeptNum
:
0
,
//部门数
attendPersonNum
:
0
,
//考勤人数
attendRadio
:
0
,
//出勤率
levealPersonNum
:
0
,
//请假人数
latePersonNum
:
0
,
//迟到人数
leftEarlyPersonNum
:
0
,
//早退人数
missCardPersonNum
:
0
,
//缺卡人数
homeStat
:
{
totalPersonNum
:
0
,
//总人数
totalDeptNum
:
0
,
//部门数
attendPersonNum
:
0
,
//考勤人数
attendRadio
:
0
,
//出勤率
levealPersonNum
:
0
,
//请假人数
latePersonNum
:
0
,
//迟到人数
leftEarlyPersonNum
:
0
,
//早退人数
missCardPersonNum
:
0
,
//缺卡人数
},
barList
:
[
{
icon
:
require
(
'
@/assets/images/u148.png
'
),
barName
:
'
智能人事
'
,
desc
:
'
提供包括组织管理、职位管理、人事管理、人事<br>统计报表等相关功能
'
,
navList
:
[]
icon
:
require
(
"
@/assets/images/u148.png
"
),
barName
:
"
智能人事
"
,
desc
:
"
提供包括组织管理、职位管理、人事管理、人事<br>统计报表等相关功能
"
,
navList
:
[],
},
{
icon
:
require
(
'
@/assets/images/u153.png
'
),
barName
:
'
考勤打卡
'
,
desc
:
'
提供包括组织管理、职位管理、人事管理、人事<br>统计报表等相关功能
'
,
navList
:
[]
icon
:
require
(
"
@/assets/images/u153.png
"
),
barName
:
"
考勤打卡
"
,
desc
:
"
提供包括组织管理、职位管理、人事管理、人事<br>统计报表等相关功能
"
,
navList
:
[],
},
{
icon
:
require
(
'
@/assets/images/u158.png
'
),
barName
:
'
绩效管理
'
,
desc
:
'
根据部门/个人承担的目标和任务完成情况以及工作<br>评价结果、加减分纪实现考核结果自动生成。
'
,
navList
:
[]
icon
:
require
(
"
@/assets/images/u158.png
"
),
barName
:
"
绩效管理
"
,
desc
:
"
根据部门/个人承担的目标和任务完成情况以及工作<br>评价结果、加减分纪实现考核结果自动生成。
"
,
navList
:
[],
},
// {
// icon: require('@/assets/images/u167.png'),
...
...
@@ -131,45 +144,48 @@ export default {
// navList: []
// },
{
icon: require(
'
@
/assets/im
ages
/
u177
.
png
'
),
barName:
'
系统设置
'
,
desc:
'
提供包括
RBAC
用户
-
角色
-
权限管理、版本管理、
<
br
>
操作及登录日志管理等功能
'
,
navList: []
}
]
}
icon: require("@/assets/images/u177.png"),
barName: "系统设置",
desc:
"提供包括RBAC用户-角色-权限管理、版本管理、<br>操作及登录日志管理等功能",
navList: [],
},
],
};
},
created() {
this.$store.commit(
'
setHeadBar
'
, [])
this.$store.commit("setCurrentParentName",
''
)
this.$store.commit(
'
setCurrentThirdArr
'
, [])
this.$store.commit(
'
setCurrentSecondPath
'
,
''
)
this.$store.commit(
'
setThirdPath
'
,
''
)
this.homeNum()
this.$store.commit("setHeadBar", []);
this.$store.commit("setCurrentParentName", "");
this.$store.commit("setCurrentThirdArr", []);
this.$store.commit("setCurrentSecondPath", "");
this.$store.commit("setThirdPath", "");
this.homeNum();
},
methods: {
tabChildren(name) {
console.log("name:" + name)
this.$store.commit("setCurrentParentName", name)
//存储选择路由
let result = this.menu.find(item => item.name === name)
this.$store.commit(
'
setHeadBar
'
, result)
console.log("name:" + name);
this.$store.commit("setCurrentParentName", name);
//存储选择路由
let result = this.menu.find((item) => item.name === name);
this.$store.commit("setHeadBar", result);
console.log("result:", result)
console.log("result:", result);
if (result) {
// 路由跳转
if (result.children.length > 0) {
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 })
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(
'
暂未完成添加
'
);
this.$message.error("暂未完成添加");
}
} else {
this.$message.error("暂无权限");
}
},
mapMenu(arr) {
if (arr.length === 0) return []
let result = arr.map(item
=> {
if (arr.length === 0) return [];
let result = arr.map((item)
=> {
const url = item.url
? item.url
: item.childList[0]
...
...
@@ -180,23 +196,24 @@ export default {
path: url,
id: item.id,
icon: item.imgPath,
children: item.childList.length === 0 ? [] : this.mapMenu(item.childList)
}
})
return result
children:
item.childList.length === 0 ? [] : this.mapMenu(item.childList),
};
});
return result;
},
// 查询统计数据
homeNum() {
this.$post("/login/index").then((res) => {
const { code, data } = res
const { code, data } = res;
if (code == 1) {
this.homeStat = Object.assign({},this.homeStat,data.homeStat)
console.log(data,"####")
this.homeStat = Object.assign({}, this.homeStat, data.homeStat);
console.log(data, "####");
}
});
}
}
}
},
},
}
;
</
script
>
<
style
scoped
lang=
"less"
>
.page-home {
...
...
@@ -214,7 +231,7 @@ export default {
font-size: 16px;
.title {
color: #409EFF
;
color: #409eff
;
margin-bottom: 20px;
}
...
...
@@ -234,20 +251,20 @@ export default {
}
.cell1:last-child {
border: none
border: none;
}
}
// 数据标题
.data_left>
.title,
.data_right>
.title {
.data_left >
.title,
.data_right >
.title {
text-align: center;
font-size: 22px;
font-weight: bold;
}
.right_card {
background-image: url('~@/assets/images/u162.svg'
);
background-image: url("~@/assets/images/u162.svg"
);
background-repeat: no-repeat;
background-size: 100% auto;
background-position: bottom;
...
...
@@ -274,7 +291,11 @@ export default {
border-radius: 10px;
padding: 20px 0;
text-align: center;
background: linear-gradient(90deg, rgba(187, 193, 255, 0.3), rgb(235, 235, 235));
background: linear-gradient(
90deg,
rgba(187, 193, 255, 0.3),
rgb(235, 235, 235)
);
cursor: pointer;
.icon img {
...
...
@@ -302,4 +323,5 @@ export default {
::v-deep .el-card {
height: 100%;
}
</
style
>
}
</
style
>
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/dialogshow.vue
View file @
202450cf
...
...
@@ -3,39 +3,118 @@
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"90%"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
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=
"所属考勤组ID"
prop=
"attendanceGroupId"
v-model=
"form.attendanceGroupId"
placeholder=
"请输入所属考勤组ID"
/>
<Field
label=
"所属考勤组名称"
prop=
"attendanceGroupName"
v-model=
"form.attendanceGroupName"
placeholder=
"请输入所属考勤组名称"
/>
<Field
label=
"班次ID"
prop=
"shiftsId"
v-model=
"form.shiftsId"
placeholder=
"请输入班次ID"
/>
<Field
label=
"班次名称"
prop=
"shiftsName"
v-model=
"form.shiftsName"
placeholder=
"请输入班次名称"
/>
<Field
label=
"考勤日期"
prop=
"attendanceDate"
v-model=
"form.attendanceDate"
type=
"date"
/>
<Field
label=
"考勤点名称"
prop=
"attendanceAddress"
v-model=
"form.attendanceAddress"
placeholder=
"请输入考勤点名称"
/>
<Field
label=
"事件源"
prop=
"eventSource"
v-model=
"form.eventSource"
placeholder=
"请输入事件源"
/>
<Field
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
label=
"员工ID"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入员工ID"
/>
<Field
label=
"员工姓名"
prop=
"staffName"
v-model=
"form.staffName"
placeholder=
"请输入员工姓名"
/>
<Field
label=
"工号"
prop=
"workNum"
v-model=
"form.workNum"
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=
"所属考勤组ID"
prop=
"attendanceGroupId"
v-model=
"form.attendanceGroupId"
placeholder=
"请输入所属考勤组ID"
/>
<Field
label=
"所属考勤组名称"
prop=
"attendanceGroupName"
v-model=
"form.attendanceGroupName"
placeholder=
"请输入所属考勤组名称"
/>
<Field
label=
"班次ID"
prop=
"shiftsId"
v-model=
"form.shiftsId"
placeholder=
"请输入班次ID"
/>
<Field
label=
"班次名称"
prop=
"shiftsName"
v-model=
"form.shiftsName"
placeholder=
"请输入班次名称"
/>
<Field
label=
"考勤日期"
prop=
"attendanceDate"
v-model=
"form.attendanceDate"
type=
"date"
/>
<Field
label=
"考勤点名称"
prop=
"attendanceAddress"
v-model=
"form.attendanceAddress"
placeholder=
"请输入考勤点名称"
/>
<Field
label=
"事件源"
prop=
"eventSource"
v-model=
"form.eventSource"
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>
<el-button
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
@
click=
"submitForm"
>
确 定
</el-button
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
dialogShow
,
},
data
()
{
return
{
...
...
@@ -45,46 +124,43 @@
title
:
"
海康考勤打卡记录汇总信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:[
],
toString
:
[],
// 表单校验
rules
:
{
staffName
:
[
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
,},
],
createTime
:
[
{
required
:
true
,
message
:
"
请选择创建时间
"
},
{
required
:
true
,
message
:
"
请输入员工姓名
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
}
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/record/hik/edit
"
;
this
.
urls
.
currUrl
=
"
attendance/record/hik/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改海康考勤打卡记录汇总信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
urls
.
currUrl
=
"
attendance/record/hik/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增海康考勤打卡记录汇总信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
attendance/record/hik/view
"
;
this
.
urls
.
currUrl
=
"
attendance/record/hik/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
海康考勤打卡记录汇总信息详细
"
;
},
/**取消按钮 */
...
...
@@ -104,21 +180,21 @@
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
null
,
staffName
:
""
,
workNum
:
""
,
deptId
:
null
,
deptName
:
""
,
positionId
:
null
,
positionName
:
""
,
attendanceGroupId
:
null
,
attendanceGroupName
:
""
,
shiftsId
:
null
,
shiftsName
:
""
,
attendanceDate
:
null
,
attendanceAddress
:
""
,
eventSource
:
""
,
remark
:
""
,
staffId
:
null
,
staffName
:
""
,
workNum
:
""
,
deptId
:
null
,
deptName
:
""
,
positionId
:
null
,
positionName
:
""
,
attendanceGroupId
:
null
,
attendanceGroupName
:
""
,
shiftsId
:
null
,
shiftsName
:
""
,
attendanceDate
:
null
,
attendanceAddress
:
""
,
eventSource
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -128,5 +204,5 @@
}
},
},
};
};
</
script
>
attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue
View file @
202450cf
...
...
@@ -7,7 +7,8 @@
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"handleImport"
>
导入
</el-button>
>
导入
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -16,7 +17,8 @@
type=
"primary"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
>
导出
</el-button
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
...
...
@@ -24,9 +26,16 @@
size=
"mini"
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
<el-button
type=
"primary"
size=
"mini"
slot=
"table-head-left2"
style=
"margin-left: 10px"
@
click=
"formatData"
>
生成打卡记录
</el-button>
>
导出记录
</el-button
>
<!--
<el-button
type=
"primary"
size=
"mini"
slot=
"table-head-left2"
style=
"margin-left: 10px"
@
click=
"formatData"
>
生成打卡记录
</el-button
>
-->
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<el-dialog
...
...
@@ -53,10 +62,11 @@
<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-checkbox
v-model=
"upload.updateSupport"
/>
是否更新已经存在的数据
<el-link
type=
"primary"
style=
"font-size: 14px"
@
click=
"downloadTemplate"
>
下载模板
</el-link
>
</div>
...
...
@@ -73,34 +83,40 @@
<el-drawer
title=
"导出记录"
:visible.sync=
"drawerhistory"
:direction=
"direction"
>
:direction=
"direction"
>
<div
class=
"hisList"
>
<div
class=
"list mt10"
v-for=
"(item,index) in exportList"
:key=
"index"
@
click=
"changeStatus(item)"
>
<div
class=
"list mt10"
v-for=
"(item, index) in exportList"
:key=
"index"
@
click=
"changeStatus(item)"
>
<div
class=
"flex flex-align-center flex-pack-justify"
>
<div>
打卡记录汇总
</div>
<el-button
type=
"text"
>
导出成功
</el-button>
</div>
<div
class=
"details"
v-if=
"item.islook"
>
<div
class=
"mt10"
v-if=
"item.recordIdList"
>
选择列表id:
{{
item
.
recordIdList
}}
选择列表id:
{{
item
.
recordIdList
}}
</div>
<div
class=
"mt10"
v-if=
"item.deptName"
>
选择部门:
{{
item
.
deptName
}}
选择部门:
{{
item
.
deptName
}}
</div>
<div
class=
"mt10"
v-if=
"item.groupName"
>
选择考勤组:
{{
item
.
groupName
}}
选择考勤组:
{{
item
.
groupName
}}
</div>
<div
class=
"mt10"
v-if=
"item.className"
>
选择班次:
{{
item
.
className
}}
选择班次:
{{
item
.
className
}}
</div>
<div
class=
"mt10"
>
<el-link
:href=
"item.filePath"
target=
"_blank"
type=
"primary"
>
重新下载
</el-link>
</div>
<el-link
:href=
"item.filePath"
target=
"_blank"
type=
"primary"
>
重新下载
</el-link
>
</div>
<div
class=
"times mt10"
>
导出时间:
{{
item
.
createTime
}}
</div>
<div
class=
"times mt10"
>
导出时间:
{{
item
.
createTime
}}
</div>
</div>
</div>
</el-drawer>
...
...
@@ -108,58 +124,59 @@
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
timestampToTime
}
from
'
@/assets/utils/dateFormat
'
export
default
{
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
timestampToTime
}
from
"
@/assets/utils/dateFormat
"
;
export
default
{
name
:
"
AttendanceRecordHikList
"
,
components
:
{
dialogShow
},
mixins
:
[
table
],
created
()
{
dialogShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
// 生成打卡记录
formatData
()
{
let
params
=
{}
for
(
let
value
of
this
.
config
.
search
)
{
if
(
this
.
query
[
value
.
name
])
{
params
[
value
.
name
]
=
this
.
query
[
value
.
name
]
formatData
()
{
let
params
=
{};
for
(
let
value
of
this
.
config
.
search
)
{
if
(
this
.
query
[
value
.
name
])
{
params
[
value
.
name
]
=
this
.
query
[
value
.
name
];
}
}
if
(
this
.
selection
.
length
>
0
)
{
params
[
'
idList
'
]
=
this
.
selection
if
(
this
.
selection
.
length
>
0
)
{
params
[
"
idList
"
]
=
this
.
selection
;
}
this
.
$post
(
'
/attendance/record/hik/addAttendanceRecord
'
,{...
params
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
this
.
$message
.
success
(
"
生成打卡记录成功!
"
)
this
.
$post
(
"
/attendance/record/hik/addAttendanceRecord
"
,
{
...
params
,
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
.
success
(
"
生成打卡记录成功!
"
);
}
})
});
},
// 更改状态
changeStatus
(
item
){
this
.
$set
(
item
,
'
islook
'
,
!
item
.
islook
)
changeStatus
(
item
)
{
this
.
$set
(
item
,
"
islook
"
,
!
item
.
islook
);
},
// 导出记录
lookexportHis
(){
this
.
$post
(
'
/attendance/export/record/list
'
,{
type
:
1
,
page
:
1
,
size
:
-
1
}).
then
(
res
=>
{
if
(
res
.
code
==
1
){
let
arr
=
res
.
data
.
data
this
.
exportList
=
arr
.
map
(
item
=>
{
item
.
createTime
=
timestampToTime
(
item
.
createTime
,
6
)
item
.
islook
=
false
return
item
})
lookexportHis
()
{
this
.
$post
(
"
/attendance/export/record/list
"
,
{
type
:
1
,
page
:
1
,
size
:
-
1
,
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
let
arr
=
res
.
data
.
data
;
this
.
exportList
=
arr
.
map
((
item
)
=>
{
item
.
createTime
=
timestampToTime
(
item
.
createTime
,
6
);
item
.
islook
=
false
;
return
item
;
});
}
})
});
// 导出记录
this
.
drawerhistory
=
true
this
.
drawerhistory
=
true
;
},
/** 导入 */
handleImport
()
{
...
...
@@ -169,12 +186,16 @@
/** 下载模板操作 */
downloadTemplate
()
{
this
.
isExport
=
true
;
this
.
$download
(
"
/attendance/record/hik/downloadTemplate
"
,
{},
{
type
:
"
excel
"
})
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
)
{
...
...
@@ -195,23 +216,29 @@
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
let
params
=
{}
for
(
let
value
of
this
.
config
.
search
)
{
if
(
this
.
query
[
value
.
name
])
{
params
[
value
.
name
]
=
this
.
query
[
value
.
name
]
let
params
=
{};
for
(
let
value
of
this
.
config
.
search
)
{
if
(
this
.
query
[
value
.
name
])
{
params
[
value
.
name
]
=
this
.
query
[
value
.
name
];
}
}
if
(
this
.
selection
.
length
>
0
)
{
params
[
'
idList
'
]
=
this
.
selection
if
(
this
.
selection
.
length
>
0
)
{
params
[
"
idList
"
]
=
this
.
selection
;
}
this
.
$download
(
"
/attendance/record/hik/exportExcel
"
,
{
this
.
$download
(
"
/attendance/record/hik/exportExcel
"
,
{
...
params
,
},
{
type
:
"
excel
"
}).
then
(()
=>
this
.
isExport
=
false
).
catch
(
error
=>
{
},
{
type
:
"
excel
"
}
)
.
then
(()
=>
(
this
.
isExport
=
false
))
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
$message
.
error
(
error
.
message
);
})
});
},
/** 重写新增方法 */
toAdd
(
row
)
{
...
...
@@ -226,14 +253,14 @@
this
.
$refs
.
dialogform
.
view
(
row
);
},
afterRender
(
data
)
{
console
.
log
(
this
.
tableData
.
data
)
console
.
log
(
this
.
tableData
.
data
);
},
},
data
()
{
return
{
upload
:
{
headers
:
{
Authorization
:
window
.
sessionStorage
.
getItem
(
'
token
'
)
||
''
headers
:
{
Authorization
:
window
.
sessionStorage
.
getItem
(
"
token
"
)
||
""
,
},
// 是否显示弹出层(员工关怀信息导入)
open
:
false
,
...
...
@@ -244,22 +271,24 @@
// 是否更新已经存在的数据
updateSupport
:
0
,
// 上传的地址
url
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/attendance/attendance/record/hik/importData
"
,
url
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/attendance/attendance/record/hik/importData
"
,
},
config
:
{
isshowTabPane
:
true
,
isshowTabPane
:
true
,
search
:
[
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
fuzzy
:
false
fuzzy
:
false
,
},
{
name
:
'
workNum
'
,
type
:
'
text
'
,
label
:
'
工号
'
,
fuzzy
:
false
name
:
"
workNum
"
,
type
:
"
text
"
,
label
:
"
工号
"
,
fuzzy
:
false
,
},
// {
// name: "deptId",
...
...
@@ -280,30 +309,34 @@
// fuzzy: false
// },
{
name
:
'
attendanceDateStart
'
,
name
:
"
attendanceDateStart
"
,
type
:
"
date
"
,
label
:
"
考勤开始时间
"
,
fuzzy
:
false
fuzzy
:
false
,
},
{
name
:
'
attendanceDateEnd
'
,
name
:
"
attendanceDateEnd
"
,
type
:
"
date
"
,
label
:
"
考勤结束时间
"
,
fuzzy
:
false
}
fuzzy
:
false
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
员工姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
部门
"
,
prop
:
"
deptName
"
},
// {label: "考勤组", prop: "attendanceGroupName"},
// {label: "职位", prop: "positionName"},
// {label: "班次", prop: "shiftsName"},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
考勤点名称
"
,
prop
:
"
attendanceAddress
"
},
{
label
:
"
事件源
"
,
prop
:
"
eventSource
"
},
{
label
:
"
考勤时间
"
,
prop
:
"
attendanceDate
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
考勤点名称
"
,
prop
:
"
attendanceAddress
"
},
{
label
:
"
事件源
"
,
prop
:
"
eventSource
"
},
// {
// label: "操作",
// width: 240,
...
...
@@ -314,32 +347,31 @@
// )
// }
// }
]
],
},
drawerhistory
:
false
,
exportList
:[],
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
}
}
drawerhistory
:
false
,
exportList
:
[],
baseUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
,
};
},
};
</
script
>
<
style
scoped
lang=
"scss"
>
.hisList
{
.hisList
{
padding
:
15px
;
.list
{
.list
{
background-color
:
rgba
(
64
,
158
,
255
,
0
.1
);
font-size
:
14px
;
border-radius
:
10px
;
padding
:
10px
;
.times
{
.times
{
font-size
:
12px
;
color
:
#999
;
}
cursor
:
pointer
;
}
}
.details
{
.details
{
cursor
:
pointer
;
}
</
style
>
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