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
66cdb552
Commit
66cdb552
authored
Apr 11, 2025
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pref:添加人员绩效汇总一张表功能
parent
ddcd918e
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
2104 additions
and
20 deletions
+2104
-20
src/components/DataTable.vue
src/components/DataTable.vue
+18
-7
src/components/FormField.vue
src/components/FormField.vue
+116
-8
src/components/SearchFormDrawer.vue
src/components/SearchFormDrawer.vue
+0
-5
src/router.js
src/router.js
+1
-0
src/views/staff/perform/summary/edit/dialogshow.vue
src/views/staff/perform/summary/edit/dialogshow.vue
+520
-0
src/views/staff/perform/summary/edit/drawershow.vue
src/views/staff/perform/summary/edit/drawershow.vue
+586
-0
src/views/staff/perform/summary/edit/list.vue
src/views/staff/perform/summary/edit/list.vue
+705
-0
src/views/staff/perform/summary/edit/view.vue
src/views/staff/perform/summary/edit/view.vue
+158
-0
No files found.
src/components/DataTable.vue
View file @
66cdb552
...
@@ -97,11 +97,11 @@ export default {
...
@@ -97,11 +97,11 @@ export default {
required
:
false
,
required
:
false
,
default
:
()
=>
{},
default
:
()
=>
{},
},
},
tableRowClassName
:
{
//
tableRowClassName: {
type
:
Function
,
//
type: Function,
required
:
false
,
//
required: false,
default
:
()
=>
{},
//
default: () => {},
},
//
},
loading
:
{
loading
:
{
type
:
Boolean
,
type
:
Boolean
,
required
:
false
,
required
:
false
,
...
@@ -143,7 +143,7 @@ export default {
...
@@ -143,7 +143,7 @@ export default {
// }
// }
},
},
toggleRowSelection
:
{
toggleRowSelection
:
{
handler
:
function
(
v
)
{
handler
:
function
(
v
)
{
v
.
forEach
((
element
)
=>
{
v
.
forEach
((
element
)
=>
{
this
.
$refs
.
eltable
.
toggleRowSelection
(
element
,
true
);
this
.
$refs
.
eltable
.
toggleRowSelection
(
element
,
true
);
});
});
...
@@ -152,7 +152,13 @@ export default {
...
@@ -152,7 +152,13 @@ export default {
immediate
:
true
,
immediate
:
true
,
},
},
},
},
methods
:
{},
methods
:
{
tableRowClassName
({
row
})
{
if
(
row
.
dataType
==
2
)
{
return
"
red
"
;
}
},
},
data
()
{
data
()
{
return
{
return
{
emptytxt
:
""
,
emptytxt
:
""
,
...
@@ -160,3 +166,8 @@ export default {
...
@@ -160,3 +166,8 @@ export default {
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.el-table .red {
background: rgba(255, 233, 233);
}
</
style
>
src/components/FormField.vue
View file @
66cdb552
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
:placeholder=
"placeholder"
:placeholder=
"placeholder"
@
change=
"emit"
@
change=
"emit"
@
input=
"emit"
@
input=
"emit"
:min=
"min"
v-if=
"type === 'num'"
v-if=
"type === 'num'"
></el-input-number>
></el-input-number>
...
@@ -50,7 +51,34 @@
...
@@ -50,7 +51,34 @@
:autosize=
"textareaSize"
:autosize=
"textareaSize"
:class=
"inputClass"
:class=
"inputClass"
></el-input>
></el-input>
<el-select
v-model=
"field"
:clearable=
"true"
@
change=
"salaChange"
v-if=
"type === 'selectSalaId'"
:placeholder=
"'请选择大厅'"
>
<el-option
:label=
"label.deptName"
:value=
"label.id"
v-for=
"(label, value) in salaArr"
:key=
"value"
></el-option>
</el-select>
<el-select
v-model=
"field"
:clearable=
"true"
@
change=
"deptChange"
v-if=
"type === 'selectDeptId'"
:placeholder=
"'请选择部门'"
>
<el-option
:label=
"label.deptName"
:value=
"label.id"
v-for=
"(label, value) in deptArr"
:key=
"value"
></el-option>
</el-select>
<!-- 一级 -->
<!-- 一级 -->
<el-select
<el-select
:disabled=
"disabled"
:disabled=
"disabled"
...
@@ -60,7 +88,7 @@
...
@@ -60,7 +88,7 @@
:filterable=
"filterable"
:filterable=
"filterable"
:clearable=
"clearable"
:clearable=
"clearable"
v-if=
"type === 'select'"
v-if=
"type === 'select'"
style=
"width: 100%
;
"
style=
"width: 100%"
>
>
<el-option
<el-option
v-for=
"($label, $value) in enumData"
v-for=
"($label, $value) in enumData"
...
@@ -103,7 +131,7 @@
...
@@ -103,7 +131,7 @@
v-for=
"($label, $value) in enumData"
v-for=
"($label, $value) in enumData"
:key=
"$value"
:key=
"$value"
:label=
"$value"
:label=
"$value"
style=
"margin-bottom: 10px
;
"
style=
"margin-bottom: 10px"
>
{{
$label
}}
</el-radio
>
{{
$label
}}
</el-radio
>
>
</el-radio-group>
</el-radio-group>
...
@@ -112,13 +140,13 @@
...
@@ -112,13 +140,13 @@
v-model=
"field"
v-model=
"field"
@
change=
"emit"
@
change=
"emit"
v-if=
"type === 'radioCol'"
v-if=
"type === 'radioCol'"
style=
"display: flex;
margin-top: 12px;
"
style=
"display: flex;
margin-top: 12px
"
>
>
<el-radio
<el-radio
v-for=
"($label, $value) in enumData"
v-for=
"($label, $value) in enumData"
:key=
"$value"
:key=
"$value"
:label=
"$value"
:label=
"$value"
style=
"margin-bottom: 15px
;
"
style=
"margin-bottom: 15px"
>
{{
$label
}}
</el-radio
>
{{
$label
}}
</el-radio
>
>
</el-radio-group>
</el-radio-group>
...
@@ -145,9 +173,35 @@
...
@@ -145,9 +173,35 @@
@
change=
"emit"
@
change=
"emit"
@
input=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
placeholder=
"选择日期"
style=
"width: 100%
;
"
style=
"width: 100%"
v-if=
"type === 'date'"
v-if=
"type === 'date'"
></el-date-picker>
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"month"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择月"
style=
"width: 100%"
v-if=
"type === 'month'"
:append-to-body=
"false"
popper-class=
"due_month"
value-format=
"M"
format=
"M月"
></el-date-picker>
<el-date-picker
:disabled=
"disabled"
type=
"year"
v-model=
"field"
@
change=
"emit"
@
input=
"emit"
placeholder=
"选择年"
value-format=
"yyyy"
format=
"yyyy年"
style=
"width: 100%"
v-if=
"type === 'year'"
></el-date-picker>
<el-date-picker
<el-date-picker
:disabled=
"disabled"
:disabled=
"disabled"
type=
"datetime"
type=
"datetime"
...
@@ -157,7 +211,7 @@
...
@@ -157,7 +211,7 @@
@
input=
"emit"
@
input=
"emit"
placeholder=
"选择日期"
placeholder=
"选择日期"
v-if=
"type === 'datetime'"
v-if=
"type === 'datetime'"
style=
"width: 100%
;
"
style=
"width: 100%"
></el-date-picker>
></el-date-picker>
</slot>
</slot>
</el-form-item>
</el-form-item>
...
@@ -242,6 +296,14 @@ export default {
...
@@ -242,6 +296,14 @@ export default {
maxLength
:
{
maxLength
:
{
type
:
Number
,
type
:
Number
,
},
},
min
:
{
type
:
Number
,
},
},
created
()
{
if
(
this
.
type
==
"
selectDeptId
"
||
this
.
type
==
"
selectSalaId
"
)
{
this
.
getArr
();
}
},
},
methods
:
{
methods
:
{
emit
()
{
emit
()
{
...
@@ -250,15 +312,53 @@ export default {
...
@@ -250,15 +312,53 @@ export default {
//this.$emit('focus', this.newVal)
//this.$emit('focus', this.newVal)
this
.
$emit
(
"
cascaderChange
"
,
this
.
newVal
);
this
.
$emit
(
"
cascaderChange
"
,
this
.
newVal
);
},
},
deptChange
()
{
this
.
page
=
1
;
},
salaChange
()
{
this
.
$get
(
"
/dept/getDeptBySalaId
"
,
{
salaId
:
this
.
form
.
salaId
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
deptArr
=
res
.
data
.
data
;
this
.
page
=
1
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
},
getArr
()
{
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
this
.
$get
(
"
/dept/getDeptBySalaId
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
deptArr
=
res
.
data
.
data
;
console
.
log
(
123
);
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
},
},
},
computed
:
{
computed
:
{
field
:
{
field
:
{
get
()
{
get
()
{
if
(
Array
.
isArray
(
this
.
value
))
{
if
(
Array
.
isArray
(
this
.
value
))
{
this
.
value
=
this
.
value
.
map
((
v
)
=>
{
this
.
value
=
this
.
value
.
map
((
v
)
=>
{
return
typeof
v
==
'
number
'
?
v
+
""
:
v
;
return
typeof
v
==
"
number
"
?
v
+
""
:
v
;
});
});
}
}
console
.
log
(
this
.
value
);
return
this
.
value
;
return
this
.
value
;
},
},
set
(
val
)
{
set
(
val
)
{
...
@@ -270,7 +370,15 @@ export default {
...
@@ -270,7 +370,15 @@ export default {
data
()
{
data
()
{
return
{
return
{
newVal
:
this
.
value
,
newVal
:
this
.
value
,
salaArr
:
[],
deptArr
:
[],
page
:
1
,
};
};
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.due_month .el-date-picker__header {
display: none;
}
</
style
>
src/components/SearchFormDrawer.vue
View file @
66cdb552
...
@@ -77,11 +77,6 @@
...
@@ -77,11 +77,6 @@
v-if=
"item.type === 'selectDeptId'"
v-if=
"item.type === 'selectDeptId'"
:placeholder=
"'请选择' + item.label"
:placeholder=
"'请选择' + item.label"
>
>
<!--
<el-option
label=
""
value=
""
v-if=
"!item.multiple && !item.notShowAll"
></el-option>
-->
<el-option
<el-option
:label=
"label.deptName"
:label=
"label.deptName"
:value=
"label.id"
:value=
"label.id"
...
...
src/router.js
View file @
66cdb552
...
@@ -151,6 +151,7 @@ const router = new Router({
...
@@ -151,6 +151,7 @@ const router = new Router({
...
restBuilder
(
"
feedback/answer/option
"
,
"
feedback/answer/option
"
),
//回答问题选项
...
restBuilder
(
"
feedback/answer/option
"
,
"
feedback/answer/option
"
),
//回答问题选项
...
restBuilder
(
"
staff/perform/summary
"
,
"
staff/perform/summary
"
),
//员工绩效统计汇总
...
restBuilder
(
"
staff/perform/summary
"
,
"
staff/perform/summary
"
),
//员工绩效统计汇总
...
restBuilder
(
"
staff/perform/summary/edit
"
,
"
staff/perform/summary/edit
"
),
//人员绩效统计汇总
...
restBuilder
(
"
window/perform/summary
"
,
"
window/perform/summary
"
),
//窗口绩效统计汇总
...
restBuilder
(
"
window/perform/summary
"
,
"
window/perform/summary
"
),
//窗口绩效统计汇总
...
restBuilder
(
"
door
"
,
"
door
"
),
//门禁设备管理
...
restBuilder
(
"
door
"
,
"
door
"
),
//门禁设备管理
...
...
src/views/staff/perform/summary/edit/dialogshow.vue
0 → 100644
View file @
66cdb552
This diff is collapsed.
Click to expand it.
src/views/staff/perform/summary/edit/drawershow.vue
0 → 100644
View file @
66cdb552
This diff is collapsed.
Click to expand it.
src/views/staff/perform/summary/edit/list.vue
0 → 100644
View file @
66cdb552
This diff is collapsed.
Click to expand it.
src/views/staff/perform/summary/edit/view.vue
0 → 100644
View file @
66cdb552
<
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