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-manager-ui
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-manager-ui
Commits
629c6a1c
Commit
629c6a1c
authored
Mar 10, 2025
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feated:添加窗口绩效考核一张表
parent
19116c2b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1124 additions
and
0 deletions
+1124
-0
src/router.js
src/router.js
+1
-0
src/views/window/perform/summary/dialogshow.vue
src/views/window/perform/summary/dialogshow.vue
+520
-0
src/views/window/perform/summary/list.vue
src/views/window/perform/summary/list.vue
+445
-0
src/views/window/perform/summary/view.vue
src/views/window/perform/summary/view.vue
+158
-0
No files found.
src/router.js
View file @
629c6a1c
...
...
@@ -151,6 +151,7 @@ const router = new Router({
...
restBuilder
(
"
feedback/answer/option
"
,
"
feedback/answer/option
"
),
//回答问题选项
...
restBuilder
(
"
staff/perform/summary
"
,
"
staff/perform/summary
"
),
//员工绩效统计汇总
...
restBuilder
(
"
window/perform/summary
"
,
"
window/perform/summary
"
),
//窗口绩效统计汇总
...
restBuilder
(
"
door
"
,
"
door
"
),
//门禁设备管理
...
...
src/views/window/perform/summary/dialogshow.vue
0 → 100644
View file @
629c6a1c
<
template
>
<!-- 弹出框表单 -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"50%"
height=
"300px"
append-to-body
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
<div
class=
"userName"
>
<div
class=
"user-left"
>
<div
class=
"user-name"
>
{{
form
.
staffName
}}
</div>
<div
class=
"user-info"
>
<span
class=
"user-i"
>
工号:
{{
form
.
workNum
}}
</span>
<span
class=
"user-i"
>
所属部门:
{{
form
.
deptName
}}
</span>
</div>
</div>
<div
class=
"user-right"
>
<!--
<div
class=
"n"
>
{{
form
.
otherScore
}}
</div>
<div
class=
"m"
>
{{
form
.
month
}}
月自评绩效得分
</div>
-->
<div
class=
"n"
style=
"margin-top: 10px; color: #409eff"
>
{{
form
.
totalScore
}}
</div>
<div
class=
"m"
>
{{
form
.
month
}}
月绩效得分
</div>
<div
class=
"m"
style=
"color: #aaa"
>
绩效分数更新时间:
{{
momentVal
(
form
.
updateTime
)
}}
</div>
</div>
</div>
<div
class=
"dialog_box"
v-if=
"pageInfo.type == 'view'"
>
<div
class=
"userName user-t-item"
:class=
"
{ t2: item.subAddType == 1, t1: item.subAddType == 2 }"
v-for="item in list"
:key="item.id"
>
<div
class=
"user-left"
>
<div
class=
"user-name"
>
{{
dictVal
(
"
checkType
"
,
item
.
checkType
)
}}
</div>
<div
class=
"user-info"
>
<span
class=
"user-i"
>
绩效规则:
{{
item
.
ruleName
}}
</span>
</div>
<div
class=
"user-info"
>
<span
class=
"user-i"
>
{{
item
.
subAddType
==
1
?
"
加分方式:
"
:
item
.
subAddType
==
2
?
"
扣分方式:
"
:
"
方式:
"
}}{{
util_formatter
(
"
subMethod
"
,
item
.
subMethod
)
}}
</span
>
</div>
<div
class=
"user-info"
v-if=
"item.performType == 'attend'"
>
<span
class=
"user-i"
>
异常时间:
{{
momentVal
(
item
.
remark
)
}}
</span>
</div>
<div
class=
"user-info"
>
<span
class=
"user-i"
>
核查时间:
{{
momentVal
(
item
.
checkTime
)
}}
</span
>
</div>
<div
class=
"user-info"
v-if=
"item.auditStatus == 2"
>
<span
class=
"user-i"
>
核查结果:
{{
item
.
subAddType
==
1
?
"
+
"
:
"
-
"
}}{{
item
.
score
}}
(
{{
item
.
checkResult
}}
)
</span
>
</div>
</div>
<div
class=
"user-right"
>
<div
class=
"n"
>
{{
item
.
subAddType
==
1
?
"
+
"
:
"
-
"
}}{{
item
.
auditStatus
==
2
?
0
:
item
.
score
}}
</div>
</div>
</div>
</div>
<div
class=
"dialog_box"
v-else
style=
"margin-top: 20px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row
v-if=
"form.label == '备注1'"
>
<el-col
:span=
"2"
style=
"width: 5.3333%"
>
<div>
备注:
</div></el-col>
<el-col
:span=
"22"
>
<span>
<el-input
type=
"textarea"
v-model=
"form.remark"
:autosize=
"
{ minRows: 2, maxRows: 8 }"
placeholder="请输入备注内容"
style="
font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica,
STHeiTi, Arial, sans-serif;
"
>
</el-input>
</span>
</el-col>
</el-row>
<el-row
v-if=
"form.label == '备注2'"
>
<el-col
:span=
"2"
style=
"width: 5.3333%"
>
<div>
备注:
</div></el-col>
<el-col
:span=
"22"
>
<template
v-if=
"typeof form.remarkAdd != 'string'"
>
<div
class=
"attend_box"
v-for=
"(val, i) in form.remarkAdd"
:key=
"i"
>
<div
class=
"text_box"
style=
"width: 50%"
>
<el-autocomplete
class=
"inline-input"
v-model=
"val.name"
:fetch-suggestions=
"querySearch"
placeholder=
"请输入内容"
@
select=
"handleSelect"
style=
"width: 100%"
clearable
@
clear=
"handleClear(val)"
@
blur=
"handleBlur"
></el-autocomplete>
</div>
<div
class=
"score_box"
>
<el-input-number
v-model=
"val.score"
@
blur=
"handleBlur"
@
change=
"handleBlur"
controls-position=
"right"
></el-input-number>
</div>
<div
class=
"icon_box"
>
<i
class=
"el-icon-circle-plus-outline"
style=
"
width: 100%;
height: 100%;
font-size: 30px;
color: #409eff;
margin-right: 10px;
"
@
click=
"handlePlus"
v-if=
"i + 1 == form.remarkAdd.length"
></i>
<i
class=
"el-icon-remove-outline"
@
click=
"handleRemove(i)"
style=
"
width: 100%;
height: 100%;
font-size: 30px;
color: #f56c6c;
"
></i>
</div>
</div>
</
template
>
</el-col>
</el-row>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"display: flex; align-items: center"
>
<el-col
:span=
"20"
>
<el-col
:span=
"4"
style=
"width: 15.7%"
v-if=
"form.label == '备注2'"
>
<div>
当前累计加分:
</div></el-col
>
<el-col
:span=
"1"
v-if=
"form.label == '备注2'"
style=
"text-align: left"
>
<span
style=
"color: #f56c6c; font-weight: 600"
>
{{ form.addTotalScore ? form.addTotalScore : 0 }}
</span>
</el-col>
</el-col>
<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
"
;
import
moment
from
"
moment
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
员工绩效统计
"
,
// 是否显示弹出层
open
:
false
,
toString
:
[
"
month
"
],
// 表单校验
rules
:
{},
list
:
[],
dict
:
{},
rulesList
:
[],
};
},
methods
:
{
handleBlur
()
{
this
.
form
.
addTotalScore
=
0
;
this
.
form
.
remarkAdd
&&
this
.
form
.
remarkAdd
.
length
>
0
?
this
.
form
.
remarkAdd
.
forEach
((
v
)
=>
{
if
(
v
.
name
&&
v
.
name
!=
""
)
{
v
.
score
?
v
.
score
:
(
v
.
score
=
0
);
this
.
form
.
addTotalScore
+=
v
.
score
;
}
})
:
""
;
this
.
form
.
addTotalScore
=
this
.
form
.
addTotalScore
.
toFixed
(
2
);
this
.
$forceUpdate
();
},
handlePlus
()
{
this
.
form
.
remarkAdd
.
push
({
name
:
""
,
score
:
0
,
});
},
handleRemove
(
i
)
{
if
(
i
==
0
&&
this
.
form
.
remarkAdd
.
length
==
1
)
{
this
.
form
.
remarkAdd
=
[
{
name
:
""
,
score
:
0
,
},
];
}
else
{
this
.
form
.
remarkAdd
=
this
.
form
.
remarkAdd
.
filter
(
(
v
,
index
)
=>
index
!=
i
);
}
this
.
handleBlur
();
},
handleClear
(
val
)
{
val
.
name
=
""
;
val
.
score
=
0
;
},
handleSelect
(
item
)
{
this
.
form
.
remarkAdd
.
forEach
((
val
)
=>
{
this
.
rulesList
.
forEach
((
v
)
=>
{
if
(
val
.
name
==
v
.
value
)
{
v
.
subAddType
==
2
?
(
val
.
score
=
Number
(
"
-
"
+
v
.
score
))
:
(
val
.
score
=
Number
(
"
+
"
+
v
.
score
));
}
});
});
this
.
handleBlur
();
},
querySearch
(
queryString
,
cb
)
{
let
rulesList
=
this
.
rulesList
;
let
results
=
queryString
?
rulesList
.
filter
(
this
.
createFilter
(
queryString
))
:
rulesList
;
// 调用 callback 返回建议列表的数据
cb
(
results
);
},
createFilter
(
queryString
)
{
return
(
rule
)
=>
{
return
(
rule
.
value
.
toLowerCase
().
indexOf
(
queryString
.
toLowerCase
())
===
0
);
};
},
// 日期
momentVal
(
v
)
{
return
moment
(
v
).
format
(
"
YYYY-MM-DD HH:SS
"
);
},
// 字典转换
dictVal
(
key
,
val
)
{
return
this
.
dict
[
key
][
val
];
},
/** 查看汇总 */
checkAll
(
id
)
{
this
.
$post
(
"
/check/all/record/list
"
,
{
checkStatus
:
2
,
staffId
:
id
,
checkTimeStart
:
this
.
$route
.
query
.
yearmonth
?
this
.
$route
.
query
.
yearmonth
+
"
-01
"
:
""
,
checkTimeEnd
:
this
.
$route
.
query
.
yearmonth
?
this
.
$route
.
query
.
yearmonth
+
"
-31
"
:
""
,
}).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
;
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[];
//deductTime申诉时间 checkTime 核查时间 ruleName规则checkType字典 subAddType:1增加2减score
this
.
list
=
row
;
this
.
dict
=
dict
;
this
.
open
=
true
;
}
});
},
/** 编辑 */
async
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/perform/summary/edit
"
;
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
员工绩效统计
"
;
await
this
.
getData
();
row
.
label
&&
row
.
label
!=
""
?
(
this
.
form
.
label
=
row
.
label
)
:
""
;
this
.
$nextTick
(
async
()
=>
{
if
(
row
.
label
==
"
备注2
"
)
{
await
this
.
$post
(
"
/perform/rules/list
"
,
{
size
:
-
1
}).
then
(
async
(
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
rulesList
=
res
.
data
.
data
;
this
.
rulesList
&&
this
.
rulesList
.
length
>
0
?
this
.
rulesList
.
forEach
((
v
)
=>
{
v
.
value
=
v
.
name
+
"
--
"
+
v
.
content
;
})
:
""
;
if
(
this
.
form
.
remarkAdd
===
"
[]
"
||
this
.
form
.
remarkAdd
==
undefined
||
this
.
form
.
remarkAdd
==
null
||
this
.
form
.
remarkAdd
.
length
==
0
||
this
.
form
.
remarkAdd
==
""
)
{
this
.
form
.
remarkAdd
=
[
{
name
:
""
,
score
:
0
,
},
];
console
.
log
(
this
.
form
.
remarkAdd
);
this
.
handleBlur
();
this
.
$forceUpdate
();
}
else
{
this
.
handleBlur
();
this
.
$forceUpdate
();
}
}
}
);
}
});
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
staff/perform/summary/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增员工绩效统计
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
,
};
this
.
urls
.
currUrl
=
"
staff/perform/summary/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
员工绩效统计详细
"
;
this
.
checkAll
(
row
.
staffId
);
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
();
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
pageInfo
.
type
!=
"
view
"
?
(
this
.
open
=
true
)
:
""
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
staffId
:
0
,
workNum
:
""
,
staffName
:
""
,
deptId
:
0
,
deptName
:
""
,
attendScore
:
null
,
assessScore
:
null
,
workScore
:
null
,
effectScore
:
null
,
otherScore
:
null
,
errorScore
:
null
,
totalScore
:
null
,
remark
:
""
,
year
:
null
,
month
:
null
,
remarkAdd
:
"
[]
"
,
addTotalScore
:
0
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.userName {
background: rgba(242, 246, 252, 1);
display: flex;
align-items: center;
padding: 15px;
.user-left {
flex: 1;
}
.user-name {
font-size: 18px;
font-weight: bold;
}
.user-info {
margin-top: 10px;
.user-i {
margin-right: 40px;
}
}
.user-right {
text-align: center;
.n {
font-size: 16px;
font-weight: bold;
}
.m {
font-size: 12px;
}
}
}
.user-t-item {
margin-top: 20px;
border-left: 4px solid #ff4242;
}
.t1 {
border-color: #ff4242;
background: rgba(255, 66, 66, 0.07);
.user-name,
.n {
color: #ff4242;
}
}
.t2 {
border-color: rgba(27, 198, 167, 1);
background: rgba(27, 198, 167, 0.07);
.user-name,
.n {
color: rgba(27, 198, 167, 1);
}
}
/deep/.el-dialog__body {
height: 650px;
.dialog_box {
height: 85%;
overflow-y: auto;
.attend_box {
display: flex;
align-items: center;
margin-bottom: 20px;
.score_box {
margin: 0 15px;
}
.icon_box {
display: flex;
}
/deep/.el-input__inner {
width: 100%;
}
}
/deep/.el-autocomplete {
width: 100% !important;
}
}
/deep/.el-textarea input::-moz-input-placeholder {
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif !important;
}
/deep/.el-textarea input::-webkit-input-placeholder {
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif !important;
}
}
</
style
>
src/views/window/perform/summary/list.vue
0 → 100644
View file @
629c6a1c
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
:config=
"tableConfig"
>
<el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button
>
<!--
<el-button
type=
"primary"
size=
"mini"
slot=
"table-head-left2"
v-if=
"showBtn"
style=
"margin-left: 10px"
@
click=
"handleRefresh"
:loading=
"btnFreshLoading"
>
手动更新
</el-button
>
-->
<span
class=
"freshTime"
slot=
"table-head-left2"
>
<span>
当前为
<span
style=
"color: #1c75dd"
>
{{
this
.
query
.
yearmonth
?
this
.
query
.
yearmonth
:
"
--
"
}}
</span>
入驻部门窗口绩效考核明细
</span
>
</span>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<div
class=
"mask"
v-if=
"progress"
>
<el-progress
:stroke-width=
"26"
:percentage=
"percent"
></el-progress>
</div>
<el-dialog
title=
"系统提示"
:visible.sync=
"dialogOpen"
width=
"500px"
append-to-body
@
close=
"cancleFresh"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
:show-close=
"false"
>
<div
class=
"fresh_box"
v-if=
"showContent"
>
<div
class=
"title_box"
style=
"margin-bottom: 20px"
>
仅支持手动更新月度绩效数据,请选择需要更新的月份:
</div>
<el-date-picker
v-model=
"freshDate"
type=
"month"
format=
"yyyy 年 MM 月"
value-format=
"yyyy-MM"
placeholder=
"请选择月"
>
</el-date-picker>
</div>
<div
class=
"fresh_box"
v-else
>
<div
class=
"title_box"
style=
"margin-bottom: 20px; line-height: 30px"
v-if=
"showTip"
>
请确认是否开始进行
{{
freshDate
}}
的绩效数据重新汇总;此过程预计需要
<span
style=
"color: #ff0000"
>
15
</span>
分钟,请勿关闭或刷新页面
</div>
<div
class=
"title_box"
style=
"margin-bottom: 20px; line-height: 30px"
v-else
>
正在进行
{{
freshDate
}}
的绩效数据重新汇总;此过程预计还需要
<span
style=
"color: #ff0000"
>
{{
restTime
}}
</span>
分钟,请勿关闭或刷新页面
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
v-if=
"showTip"
>
<el-button
type=
"primary"
@
click=
"() => (showContent = false)"
v-if=
"showContent"
>
确 定
</el-button
>
<el-button
type=
"primary"
@
click=
"submitFresh"
v-else
:loading=
"submitLoad"
>
确 定
</el-button
>
<el-button
@
click=
"cancleFresh"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
{
timestampToTime
}
from
"
@/assets/utils/dateFormat.js
"
;
export
default
{
name
:
"
StaffPerformSummaryList
"
,
components
:
{
dialogShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
countDown
()
{
if
(
this
.
percent
==
95
)
{
if
(
this
.
selection
.
length
>
0
)
{
this
.
query
[
"
idList
"
]
=
this
.
selection
;
}
this
.
$download
(
"
/window/perform/summary/exportExcel
"
,
{
...
this
.
query
,
page
:
1
,
size
:
-
1
,
},
{
type
:
"
excel
"
,
name
:
"
窗口绩效汇总
"
}
)
.
then
(()
=>
{
this
.
percent
=
100
;
this
.
progress
=
false
;
this
.
isExport
=
false
;
})
.
catch
((
error
)
=>
{
this
.
isExport
=
false
;
this
.
progress
=
false
;
this
.
$message
.
error
(
error
.
message
);
});
return
;
}
else
{
this
.
percent
=
this
.
percent
+
1
;
let
that
=
this
;
setTimeout
(
function
()
{
that
.
countDown
();
},
200
);
}
},
/** 导出Excel */
doExport
()
{
this
.
isExport
=
true
;
this
.
progress
=
true
;
this
.
percent
=
0
;
this
.
countDown
();
},
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
afterRender
(
data
)
{
this
.
query
.
yearmonth
?
this
.
query
.
yearmonth
:
(
this
.
query
.
yearmonth
=
timestampToTime
(
Date
.
parse
(
new
Date
()),
2
));
return
data
;
},
handleRefresh
()
{
this
.
dialogOpen
=
true
;
this
.
btnFreshLoading
=
true
;
},
submitFresh
()
{
if
(
this
.
freshDate
)
{
this
.
submitLoad
=
true
;
this
.
$post
(
"
/window/perform/summary/summary
"
,
{
checkTimeStart
:
this
.
freshDate
+
"
-01
"
,
checkTimeEnd
:
this
.
freshDate
+
"
-31
"
,
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
// this.$message.success(res.msg);
this
.
showTip
=
false
;
this
.
btnFreshLoading
=
false
;
this
.
submitLoad
=
false
;
this
.
endTime
=
Date
.
parse
(
new
Date
())
+
15
*
60
*
1000
;
this
.
countdown
();
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
res
.
msg
);
this
.
submitLoad
=
false
;
this
.
dialogOpen
=
false
;
this
.
btnFreshLoading
=
false
;
this
.
showContent
=
true
;
this
.
showTip
=
true
;
this
.
freshDate
=
""
;
});
}
else
{
this
.
$message
.
error
(
"
请选择需要更新的月份!
"
);
}
},
cancleFresh
()
{
this
.
dialogOpen
=
false
;
this
.
btnFreshLoading
=
false
;
this
.
showContent
=
true
;
this
.
showTip
=
true
;
this
.
freshDate
=
""
;
},
//倒计时
countdown
()
{
let
now
=
Date
.
parse
(
new
Date
());
let
msec
=
this
.
endTime
-
now
;
if
(
msec
<
0
)
return
;
// let day = parseInt(msec / 1000 / 60 / 60 / 24);
let
hr
=
parseInt
((
msec
/
1000
/
60
/
60
)
%
24
);
let
min
=
parseInt
((
msec
/
1000
/
60
)
%
60
);
let
sec
=
parseInt
((
msec
/
1000
)
%
60
);
min
=
min
>
9
?
min
:
"
0
"
+
min
;
sec
=
sec
>
9
?
sec
:
"
0
"
+
sec
;
this
.
restTime
=
min
+
"
分
"
+
sec
+
"
秒
"
;
const
that
=
this
;
if
(
min
>=
0
&&
sec
>=
0
)
{
if
(
min
==
0
&&
sec
==
0
)
{
this
.
submitLoad
=
false
;
this
.
dialogOpen
=
false
;
this
.
btnFreshLoading
=
false
;
this
.
showContent
=
true
;
this
.
showTip
=
true
;
this
.
freshDate
=
""
;
this
.
getData
();
return
;
}
setTimeout
(
function
()
{
that
.
countdown
();
},
1000
);
}
},
handleCellClick
(
row
,
column
,
event
,
cell
)
{
if
(
column
.
label
==
"
备注1
"
||
column
.
label
==
"
备注2
"
)
{
row
.
label
=
column
.
label
;
this
.
toEdit
(
row
);
}
},
// 表格内下拉选框得触发事件
async
handleChange
(
v
,
row
)
{
let
obj
=
{
...
row
};
await
this
.
$post
(
"
/window/perform/summary/save
"
,
obj
).
then
((
res
)
=>
{
const
{
code
,
msg
}
=
res
;
code
==
1
?
this
.
$message
.
success
(
msg
)
:
this
.
$message
.
error
(
msg
);
this
.
getData
();
});
},
},
data
()
{
return
{
toString
:
[
"
suggestion
"
],
endTime
:
""
,
restTime
:
"
15
"
,
freshDate
:
""
,
btnFreshLoading
:
false
,
sortList
:
""
,
dialogOpen
:
false
,
isExport
:
false
,
showBtn
:
true
,
showTip
:
true
,
showContent
:
true
,
submitLoad
:
false
,
progress
:
false
,
percent
:
0
,
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
yearmonth
"
,
type
:
"
month
"
,
label
:
"
请选择月份
"
,
fuzzy
:
false
,
},
{
name
:
"
suggestion
"
,
type
:
"
select
"
,
label
:
"
评选建议
"
,
fuzzy
:
false
,
},
{
name
:
"
deptName
"
,
type
:
"
text
"
,
label
:
"
进驻部门名称关键字搜索
"
,
fuzzy
:
true
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
},
{
label
:
"
入驻部门(单位名称)
"
,
prop
:
"
deptName
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
width
:
300
,
},
{
label
:
"
窗口建设得分
"
,
prop
:
"
ckjsdf
"
,
sortable
:
true
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
input
-
number
v
-
model
=
{
row
.
ckjsdf
}
placeholder
=
"
请输入得分
"
clearable
controls
=
{
false
}
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
><
/el-input-number
>
);
},
},
{
label
:
"
重点任务推进得分
"
,
prop
:
"
zdrwdf
"
,
sortable
:
true
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
input
-
number
v
-
model
=
{
row
.
zdrwdf
}
placeholder
=
"
请输入得分
"
controls
=
{
false
}
clearable
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
><
/el-input-number
>
);
},
},
{
label
:
"
加分
"
,
prop
:
"
addTotalScore
"
,
sortable
:
true
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
input
-
number
v
-
model
=
{
row
.
addTotalScore
}
placeholder
=
"
请输入加分
"
controls
=
{
false
}
clearable
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
><
/el-input-number
>
);
},
},
{
label
:
"
合计得分
"
,
prop
:
"
sumScore
"
,
sortable
:
true
,
},
{
label
:
"
评选建议
"
,
prop
:
"
suggestion
"
,
formatter
:
(
row
)
=>
{
const
options
=
[
{
label
:
"
无
"
,
value
:
0
,
},
{
label
:
"
红旗窗口
"
,
value
:
1
,
},
];
return
(
<
el
-
select
v
-
model
=
{
row
.
suggestion
}
placeholder
=
"
请选择
"
clearable
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
>
{
options
.
map
((
item
)
=>
(
<
el
-
option
key
=
{
item
.
value
}
value
=
{
item
.
value
}
label
=
{
item
.
label
}
/
>
))}
<
/el-select
>
);
},
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
,
width
:
380
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
input
v
-
model
=
{
row
.
remark
}
placeholder
=
"
请输入备注
"
clearable
onChange
=
{(
v
)
=>
this
.
handleChange
(
v
,
row
)}
><
/el-input
>
);
},
},
],
},
};
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.mask {
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 99;
padding: 0 30%;
padding-top: 20%;
background: rgba(0, 0, 0, 0.6);
}
::v-deep .el-progress__text {
color: #409eff;
font-weight: 600;
}
::v-deep.el-dialog__wrapper {
overflow: hidden;
top: -50px;
}
.freshTime {
color: #999;
font-size: 14px;
}
</
style
>
src/views/window/perform/summary/view.vue
0 → 100644
View file @
629c6a1c
<
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=
"人员id"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.staffId }}
</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"
>
{{ form.staffName }}
</el-descriptions-item>
<el-descriptions-item
label=
"部门id号"
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=
"考勤绩效指标分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.attendScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"评价绩效指标分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.assessScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"办件绩效分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.workScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"效能绩效分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.effectScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"自评绩效分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.otherScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"累计异常分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.errorScore }}
</el-descriptions-item>
<el-descriptions-item
label=
"当月得分数"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.totalScore }}
</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.year }}
</el-descriptions-item>
<el-descriptions-item
label=
"月"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.month }}
</el-descriptions-item>
</el-descriptions>
</layout-view>
</template>
<
script
>
import
view
from
"
@/assets/mixins/view
"
;
export
default
{
mixins
:
[
view
],
components
:
{},
methods
:
{},
data
()
{
return
{
size
:
"
small
"
,
column
:
2
,
toString
:
[
"
month
"
],
toArrays
:
[],
toDate
:
[],
};
},
};
</
script
>
<
style
lang=
"less"
>
.labelClass {
width: 200px;
}
.el-descriptions__body {
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #fff;
}
.contentClass {
width: 600px;
}
</
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