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
958ccc1b
Commit
958ccc1b
authored
Jul 23, 2024
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
ac50b413
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
232 additions
and
18 deletions
+232
-18
src/assets/mixins/formdialog.js
src/assets/mixins/formdialog.js
+6
-0
src/views/staff/perform/summary/dialogshow.vue
src/views/staff/perform/summary/dialogshow.vue
+167
-6
src/views/staff/perform/summary/list.vue
src/views/staff/perform/summary/list.vue
+59
-12
No files found.
src/assets/mixins/formdialog.js
View file @
958ccc1b
...
@@ -25,6 +25,9 @@ export default {
...
@@ -25,6 +25,9 @@ export default {
:
(
data
.
entity
.
remark
=
:
(
data
.
entity
.
remark
=
"
迟到:0 次,
\n
早退:0 次,
\n
缺卡:0 次,
\n
请假:0 次
"
)
"
迟到:0 次,
\n
早退:0 次,
\n
缺卡:0 次,
\n
请假:0 次
"
)
:
""
;
:
""
;
data
.
entity
.
remarkAdd
&&
data
.
entity
.
remarkAdd
!=
""
?
(
data
.
entity
.
remarkAdd
=
JSON
.
parse
(
data
.
entity
.
remarkAdd
))
:
""
;
return
data
;
return
data
;
},
},
// 渲染后置处理
// 渲染后置处理
...
@@ -73,6 +76,9 @@ export default {
...
@@ -73,6 +76,9 @@ export default {
this
.
urls
.
currUrl
.
indexOf
(
"
attendance/leave/record
"
)
==
0
this
.
urls
.
currUrl
.
indexOf
(
"
attendance/leave/record
"
)
==
0
?
(
data
.
processStatus
=
2
)
?
(
data
.
processStatus
=
2
)
:
""
;
:
""
;
if
(
data
.
remarkAdd
&&
data
.
remarkAdd
.
length
>
0
)
{
data
.
remarkAdd
=
JSON
.
stringify
(
data
.
remarkAdd
);
}
return
data
;
return
data
;
},
},
// 提交表单的后置处理, 会阻断默认的回退行为
// 提交表单的后置处理, 会阻断默认的回退行为
...
...
src/views/staff/perform/summary/dialogshow.vue
View file @
958ccc1b
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
</div>
</div>
<div
class=
"user-info"
>
<div
class=
"user-info"
>
<span
class=
"user-i"
<span
class=
"user-i"
>
核查时间:
{{
momentVal
(
item
.
update
Time
)
}}
</span
>
核查时间:
{{
momentVal
(
item
.
check
Time
)
}}
</span
>
>
</div>
</div>
<div
class=
"user-info"
v-if=
"item.auditStatus == 2"
>
<div
class=
"user-info"
v-if=
"item.auditStatus == 2"
>
...
@@ -79,7 +79,7 @@
...
@@ -79,7 +79,7 @@
</div>
</div>
<div
class=
"dialog_box"
v-else
style=
"margin-top: 20px;"
>
<div
class=
"dialog_box"
v-else
style=
"margin-top: 20px;"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<el-row
v-if=
"form.label == '备注1'"
>
<el-col
:span=
"2"
>
<el-col
:span=
"2"
>
<div
style=
"text-align: right;"
>
备注:
</div></el-col
<div
style=
"text-align: right;"
>
备注:
</div></el-col
>
>
...
@@ -95,9 +95,74 @@
...
@@ -95,9 +95,74 @@
</span>
</span>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row
v-if=
"form.label == '备注2'"
>
<el-col
:span=
"2"
>
<div
style=
"text-align: right;"
>
备注:
</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)"
v-if=
"form.remarkAdd.length > 1 && i != 0"
style=
"width: 100%;height: 100%;font-size: 30px;color: #F56C6C;"
></i>
</div>
</div>
</
template
>
</el-col>
</el-row>
</el-form>
</el-form>
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"display: flex;align-items: center;"
>
<el-col
:span=
"20"
>
<el-col
:span=
"6"
v-if=
"form.label == '备注2'"
>
<div
style=
"text-align: right;"
>
当前累计加分:
</div></el-col
>
<el-col
:span=
"1"
v-if=
"form.label == '备注2'"
>
<span
style=
"color:#F56C6C;font-weight: 600;"
>
{{ form.addTotalScore ? form.addTotalScore : 0 }}
</span>
</el-col>
</el-col>
<el-button
<el-button
type=
"primary"
type=
"primary"
v-if=
"pageInfo.type !== 'view'"
v-if=
"pageInfo.type !== 'view'"
...
@@ -131,10 +196,62 @@ export default {
...
@@ -131,10 +196,62 @@ export default {
rules
:
{},
rules
:
{},
list
:
[],
list
:
[],
dict
:
{},
dict
:
{},
rulesList
:
[],
};
};
},
},
methods
:
{
methods
:
{
handleBlur
()
{
this
.
form
.
addTotalScore
=
0
;
this
.
form
.
remarkAdd
&&
this
.
form
.
remarkAdd
.
length
>
0
?
this
.
form
.
remarkAdd
.
forEach
((
v
)
=>
{
this
.
form
.
addTotalScore
+=
v
.
score
;
})
:
""
;
},
handlePlus
()
{
this
.
form
.
remarkAdd
.
push
({
name
:
""
,
score
:
0
,
});
},
handleRemove
(
i
)
{
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
)
{
momentVal
(
v
)
{
return
moment
(
v
).
format
(
"
YYYY-MM-DD HH:SS
"
);
return
moment
(
v
).
format
(
"
YYYY-MM-DD HH:SS
"
);
...
@@ -165,14 +282,37 @@ export default {
...
@@ -165,14 +282,37 @@ export default {
});
});
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
async
edit
(
row
)
{
this
.
reset
();
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
staff/perform/summary/edit
"
;
this
.
urls
.
currUrl
=
"
staff/perform/summary/edit
"
;
this
.
getData
();
await
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
员工绩效统计
"
;
this
.
title
=
"
员工绩效统计
"
;
console
.
log
(
this
.
form
);
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
((
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
.
length
==
0
)
{
this
.
form
.
remarkAdd
=
[];
this
.
form
.
remarkAdd
.
push
({
name
:
""
,
score
:
0
,
});
}
this
.
$forceUpdate
();
}
});
}
});
},
},
/** 新增 */
/** 新增 */
add
(
row
)
{
add
(
row
)
{
...
@@ -226,6 +366,8 @@ export default {
...
@@ -226,6 +366,8 @@ export default {
remark
:
""
,
remark
:
""
,
year
:
null
,
year
:
null
,
month
:
null
,
month
:
null
,
remarkAdd
:
[],
addTotalScore
:
0
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
@@ -304,7 +446,26 @@ export default {
...
@@ -304,7 +446,26 @@ export default {
.dialog_box {
.dialog_box {
height: 85%;
height: 85%;
overflow-y: auto;
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 {
/deep/.el-textarea input::-moz-input-placeholder {
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif !important;
sans-serif !important;
...
...
src/views/staff/perform/summary/list.vue
View file @
958ccc1b
...
@@ -166,7 +166,6 @@ export default {
...
@@ -166,7 +166,6 @@ export default {
2
:
"
正序
"
,
2
:
"
正序
"
,
1
:
"
倒序
"
,
1
:
"
倒序
"
,
};
};
console
.
log
(
data
);
this
.
config
.
columns
.
forEach
((
v
)
=>
{
this
.
config
.
columns
.
forEach
((
v
)
=>
{
v
.
label
==
"
服务规范
"
v
.
label
==
"
服务规范
"
?
(
v
.
label
=
(
?
(
v
.
label
=
(
...
@@ -211,10 +210,10 @@ export default {
...
@@ -211,10 +210,10 @@ export default {
<
p
>
{
"
(自评绩效 *
"
+
data
.
dict
.
weightPdu
.
selfWeight
+
"
%)
"
}
<
/p
>
<
p
>
{
"
(自评绩效 *
"
+
data
.
dict
.
weightPdu
.
selfWeight
+
"
%)
"
}
<
/p
>
<
/p
>
<
/p
>
))
))
:
v
.
label
==
"
加分
"
:
v
.
label
==
"
其他绩效
"
?
(
v
.
label
=
(
?
(
v
.
label
=
(
<
p
>
<
p
>
<
span
>
加分
<
/span
>
<
span
>
其他绩效
<
/span
>
<
p
>
{
"
(其他绩效)
"
}
<
/p
>
<
p
>
{
"
(其他绩效)
"
}
<
/p
>
<
/p
>
<
/p
>
))
))
...
@@ -296,6 +295,12 @@ export default {
...
@@ -296,6 +295,12 @@ export default {
},
1000
);
},
1000
);
}
}
},
},
handleCellClick
(
row
,
column
,
event
,
cell
)
{
if
(
column
.
label
==
"
备注1
"
||
column
.
label
==
"
备注2
"
)
{
row
.
label
=
column
.
label
;
this
.
toEdit
(
row
);
}
},
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -349,8 +354,8 @@ export default {
...
@@ -349,8 +354,8 @@ export default {
},
},
],
],
columns
:
[
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
selection
"
,
width
:
60
,
fixed
:
"
left
"
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
,
fixed
:
"
left
"
},
{
{
label
:
"
姓名
"
,
label
:
"
姓名
"
,
...
@@ -366,7 +371,18 @@ export default {
...
@@ -366,7 +371,18 @@ export default {
width
:
80
,
width
:
80
,
fixed
:
"
left
"
,
fixed
:
"
left
"
,
},
},
{
label
:
"
年
"
,
prop
:
"
year
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
},
{
label
:
"
月
"
,
prop
:
"
month
"
,
formatter
:
this
.
formatter
,
fixed
:
"
left
"
,
},
{
{
label
:
"
手机号
"
,
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
prop
:
"
phoneNumber
"
,
...
@@ -583,7 +599,7 @@ export default {
...
@@ -583,7 +599,7 @@ export default {
},
},
{
{
label
:
`
加分
`
,
label
:
`
其他绩效
`
,
prop
:
"
otherScore
"
,
prop
:
"
otherScore
"
,
width
:
150
,
width
:
150
,
formatter
:
this
.
formatter
,
formatter
:
this
.
formatter
,
...
@@ -595,27 +611,58 @@ export default {
...
@@ -595,27 +611,58 @@ export default {
// },
// },
{
{
label
:
"
本月得分
"
,
label
:
"
绩效分数
"
,
prop
:
"
totalScore
"
,
prop
:
"
totalScore
"
,
sortable
:
true
,
sortable
:
true
,
width
:
120
,
width
:
120
,
},
},
{
label
:
"
年
"
,
prop
:
"
year
"
,
formatter
:
this
.
formatter
},
{
label
:
"
月
"
,
prop
:
"
month
"
,
formatter
:
this
.
formatter
},
{
{
label
:
"
备注
"
,
label
:
"
备注
1
"
,
prop
:
"
remark
"
,
prop
:
"
remark
"
,
formatter
:
this
.
formatter
,
formatter
:
(
row
)
=>
{
return
row
.
remark
&&
row
.
remark
!=
""
?
(
row
.
remark
)
:
(
<
span
style
=
"
color:#409eff
"
>
添加备注
1
<
/span
>
);
},
width
:
240
,
},
{
label
:
"
备注2
"
,
prop
:
"
remarkAddDesc
"
,
formatter
:
(
row
)
=>
{
return
row
.
remarkAddDesc
&&
row
.
remarkAddDesc
!=
""
?
(
row
.
remarkAddDesc
)
:
(
<
span
style
=
"
color:#409eff
"
>
添加备注
2
<
/span
>
);
},
width
:
240
,
width
:
240
,
},
},
{
label
:
"
加分
"
,
prop
:
"
addTotalScore
"
,
width
:
120
,
},
{
label
:
"
本月得分
"
,
prop
:
"
sumScore
"
,
sortable
:
true
,
width
:
120
,
fixed
:
"
right
"
,
},
{
{
label
:
"
操作
"
,
label
:
"
操作
"
,
width
:
120
,
width
:
120
,
fixed
:
"
right
"
,
formatter
:
(
row
)
=>
{
formatter
:
(
row
)
=>
{
return
(
return
(
<
table
-
buttons
<
table
-
buttons
noAdd
noAdd
noDel
noDel
noEdit
row
=
{
row
}
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onView
=
{
this
.
toView
}
...
...
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