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
00cc35d9
Commit
00cc35d9
authored
Jul 19, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
ba37775e
49da75a0
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
348 additions
and
328 deletions
+348
-328
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
...erformance-manager-ui/admin/src/components/SearchForm.vue
+2
-0
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
...nce-manager-ui/admin/src/views/attendance/record/list.vue
+3
-3
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
...mance-manager-ui/admin/src/views/attendance/stat/list.vue
+2
-2
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
...-manager-ui/admin/src/views/feedback/addQuestion/list.vue
+9
-1
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
...performance-manager-ui/admin/src/views/job/drawershow.vue
+161
-117
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
...min/src/views/staff/perform/stat/components/BarCharts.vue
+5
-1
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
...ce-manager-ui/admin/src/views/staff/perform/stat/list.vue
+163
-194
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
...manager-ui/admin/src/views/staff/perform/summary/list.vue
+3
-10
No files found.
attendance-performance-manager-ui/admin/src/components/SearchForm.vue
View file @
00cc35d9
...
...
@@ -344,6 +344,7 @@ export default {
let
newData
=
{
page
:
1
};
Object
.
keys
(
data
).
forEach
((
item
)
=>
{
let
val
=
data
[
item
];
console
.
log
(
item
,
this
.
search
)
this
.
search
.
forEach
((
obj
)
=>
{
if
(
obj
.
name
===
item
&&
...
...
@@ -363,6 +364,7 @@ export default {
});
newData
[
item
]
=
this
.
decodeVal
(
val
);
});
return
newData
;
},
decodeVal
(
val
)
{
...
...
attendance-performance-manager-ui/admin/src/views/attendance/record/list.vue
View file @
00cc35d9
<
template
>
<div
class=
"page"
>
<div
style=
"margin:10px 0"
>
<div
>
<tab-pane
:thirdList=
"thirdList"
:activeName=
"activeName"
...
...
@@ -66,14 +66,14 @@
@
click=
"lookexportHis"
>
导出记录
</el-button
>
<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"
/>
<!-- 导出记录查看 -->
...
...
attendance-performance-manager-ui/admin/src/views/attendance/stat/list.vue
View file @
00cc35d9
...
...
@@ -18,13 +18,13 @@
type=
"success"
@
click=
"lookexportHis"
>
导出记录
</el-button>
<el-button
<
!--
<
el-button
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"setdialog"
>
表格设置
</el-button>
>
表格设置
</el-button>
-->
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
<!-- 表格设置 -->
...
...
attendance-performance-manager-ui/admin/src/views/feedback/addQuestion/list.vue
View file @
00cc35d9
...
...
@@ -56,7 +56,7 @@
<el-form-item
label=
"问卷封面:"
label-width=
"125px"
>
<div
style=
"display: flex;align-items: center;"
>
<img
style=
"width:80px; height: 80px; margin-right: 10px;cursor: pointer;"
v-for=
"(i, j) in coverImg"
:key=
"j"
:src=
"ImgUrl + '/' + i.url"
alt=
""
v-for=
"(i, j) in coverImg"
:key=
"j"
:src=
"
show
ImgUrl + '/' + i.url"
alt=
""
:class=
"selImg == j ? 'selImg' : ''"
@
click=
"selImg = j"
>
<el-upload
v-show=
"coverImg.length < 4"
:action=
"ImgUrl + '/attendance/file/commonupload'"
accept=
"image/jpeg,image/png,image/jpg"
list-type=
"picture-card"
class=
"upload"
...
...
@@ -185,6 +185,7 @@ export default {
editStyle
:
false
,
loadingstate
:
false
,
ImgUrl
:
process
.
env
.
VUE_APP_API_BASE_URL
,
showImgUrl
:
''
,
coverImg
:
[],
weblink
:
0
,
...
...
@@ -198,6 +199,13 @@ export default {
}
}
},
created
(){
if
(
process
.
env
.
NODE_ENV
==
"
development
"
){
this
.
showImgUrl
=
process
.
env
.
VUE_APP_API_BASE_URL
}
else
{
this
.
showImgUrl
=
''
}
},
mounted
()
{
console
.
log
(
process
.
env
.
VUE_APP_API_BASE_URL
)
this
.
getDeptData
()
...
...
attendance-performance-manager-ui/admin/src/views/job/drawershow.vue
View file @
00cc35d9
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
v-if=
"from == 'job'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
:enumData=
"dict.group"
type=
"select"
placeholder=
"请选择分组"
/>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
style=
"padding:20px"
>
<el-row>
<Field
v-if=
"from == 'job'"
label=
"分组"
prop=
"groupId"
v-model=
"form.groupId"
:enumData=
"dict.group"
type=
"select"
placeholder=
"请选择分组"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"from == 'group'"
/>
<Field
label=
"分组名称"
prop=
"groupName"
v-model=
"form.groupName"
placeholder=
"请输入分组名称"
:maxLength=
"10"
v-if=
"from == 'group'"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
:maxLength=
"10"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
v-if=
"from == 'job'"
/>
<Field
label=
"职位名称"
prop=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"from == 'job'"
/>
<Field
label=
"职位编码"
prop=
"jobCode"
:maxLength=
"10"
v-model=
"form.jobCode"
placeholder=
"请输入职位编码"
v-if=
"from == 'job'"
/>
<Field
label=
"职位名称"
prop=
"jobName"
:maxLength=
"10"
v-model=
"form.jobName"
placeholder=
"请输入职位名称"
v-if=
"from == 'job'"
/>
<Field
label=
"类型"
disabled
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
noCancelBtn
/>
</el-form>
</el-drawer>
<Field
label=
"类型"
disabled
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
placeholder=
"请选择类型"
/>
<Field
label=
"备注"
prop=
"remark"
:maxLength=
"50"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
<form-buttons
@
submit=
"submitForm"
noCancelBtn
/>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
JobDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
this
.
changePath
(
"
job
"
)
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
职位信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
],
toDate
:[
],
// 表单校验
rules
:
{
},
from
:
''
};
},
methods
:
{
/** 编辑 */
edit
(
from
,
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
from
=
from
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
JobDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{
this
.
changePath
(
"
job
"
);
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
职位信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[],
toDate
:
[],
// 表单校验
rules
:
{
groupId
:
[{
required
:
true
,
message
:
"
请选择分组
"
,
trigger
:
"
change
"
}],
},
from
:
""
,
};
},
this
.
title
=
from
===
'
group
'
?
"
修改分组信息
"
:
'
修改职位信息
'
;
},
/** 新增 */
add
(
row
)
{
console
.
log
(
row
,
'
添加
'
)
this
.
from
=
row
this
.
title
=
row
===
'
group
'
?
"
新增分组信息
"
:
'
新增职位信息
'
;
this
.
reset
()
this
.
urls
.
currUrl
=
"
job/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
职位信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
methods
:
{
/** 编辑 */
edit
(
from
,
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
from
=
from
;
// 固定新增类型
if
(
this
.
from
==
'
group
'
){
this
.
form
.
type
=
'
1
'
}
else
{
this
.
form
.
type
=
'
2
'
}
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
this
.
title
=
from
===
"
group
"
?
"
修改分组信息
"
:
"
修改职位信息
"
;
},
/** 新增 */
add
(
row
)
{
console
.
log
(
row
,
"
添加
"
);
this
.
from
=
row
;
this
.
title
=
row
===
"
group
"
?
"
新增分组信息
"
:
"
新增职位信息
"
;
this
.
reset
();
this
.
urls
.
currUrl
=
"
job/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
job/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
职位信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
// 固定新增类型
if
(
this
.
from
==
"
group
"
)
{
this
.
form
.
type
=
"
1
"
;
}
else
{
this
.
form
.
type
=
"
2
"
;
}
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
groupId
:
null
,
groupName
:
""
,
jobCode
:
""
,
jobName
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
groupId
:
null
,
groupName
:
""
,
jobCode
:
""
,
jobName
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
View file @
00cc35d9
...
...
@@ -80,7 +80,7 @@ export default {
name
:
'
目标线
'
,
yAxis
:
this
.
markLine
,
label
:
{
formatter
:
'
{b}:
'
+
this
.
legendName
+
'
不高于20.0%,
'
,
formatter
:
'
{b}:
'
+
this
.
legendName
+
'
不高于20.0%,
'
,
position
:
'
insideStartTop
'
},
lineStyle
:
{
...
...
@@ -188,6 +188,10 @@ export default {
]
})
}
myChart
.
on
(
'
click
'
,
(
params
)
=>
{
this
.
$emit
(
"
click
"
,
params
)
})
},
},
};
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
View file @
00cc35d9
...
...
@@ -9,17 +9,8 @@
<el-radio-button
:label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<div
class=
"search_box"
>
<el-select
v-model=
"boardQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-select
v-model=
"boardQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-button
type=
"primary"
>
搜索
</el-button>
...
...
@@ -28,60 +19,30 @@
<div
class=
"mid"
>
<div
class=
"mid_top"
>
<div
class=
"jixiaozongfen"
>
<bar-charts
:title=
"'绩效总分排名'"
:id=
"'jixiaozongfen'"
:legendName=
"'绩效总分'"
:parameter=
"depStatObj.totalScore"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'绩效总分排名'"
:id=
"'jixiaozongfen'"
:legendName=
"'绩效总分'"
:parameter=
"depStatObj.totalScore"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"jixiaopingjunfen"
>
<line-charts
:title=
"'绩效平均分排名'"
:id=
"'jixiaopingjunfen'"
:parameter=
"depStatObj.averageScore"
:legendName=
"'绩效平均分'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<line-charts
:title=
"'绩效平均分排名'"
:id=
"'jixiaopingjunfen'"
:parameter=
"depStatObj.averageScore"
:legendName=
"'绩效平均分'"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
</div>
<div
class=
"mid_down"
>
<div
class=
"top_10 box"
>
<bar-charts
:title=
"'部门加分排名TOP10'"
:id=
"'top_10'"
:parameter=
"depStatObj.totalAddScore"
:legendName=
"'部门加分分值'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'部门加分排名TOP10'"
:id=
"'top_10'"
:parameter=
"depStatObj.totalAddScore"
:legendName=
"'部门加分分值'"
@
click=
"rowClick"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"jiafen box"
>
<pie-charts
:title=
"'部门加分整体分布'"
:id=
"'jiafen'"
:parameter=
"depStatObj.pieAddScore"
:legendName=
"'部门加分'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<pie-charts
:title=
"'部门加分整体分布'"
:id=
"'jiafen'"
:parameter=
"depStatObj.pieAddScore"
:legendName=
"'部门加分'"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"koufen_10 box"
>
<bar-charts
:title=
"'部门扣分排名TOP10'"
:id=
"'koufen_10'"
:parameter=
"depStatObj.totalSubScore"
:legendName=
"'部门分值'"
:styleObj=
"
{ width: '100%', height: '300px' }"
/>
<bar-charts
:title=
"'部门扣分排名TOP10'"
:id=
"'koufen_10'"
:parameter=
"depStatObj.totalSubScore"
:legendName=
"'部门分值'"
@
click=
"rowClickSub"
:styleObj=
"
{ width: '100%', height: '300px' }" />
</div>
<div
class=
"koufen box"
>
<pie-charts
:parameter=
"depStatObj.pieSubScore"
:title=
"'部门扣分整体分布'"
:id=
"'koufen'"
:legendName=
"'部门扣分'"
:styleObj=
"
{ onAssessmentScope2width: '100%', height: '300px' }"
/>
<pie-charts
:parameter=
"depStatObj.pieSubScore"
:title=
"'部门扣分整体分布'"
:id=
"'koufen'"
:legendName=
"'部门扣分'"
:styleObj=
"
{ onAssessmentScope2width: '100%', height: '300px' }" />
</div>
</div>
</div>
...
...
@@ -96,41 +57,20 @@
</el-radio-group>
<div
class=
"search_box"
>
<el-select
v-model=
"value"
@
change=
"deptList"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-select
@
change=
"deptList"
v-model=
"StatQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-select
@
change=
"deptList"
v-model=
"StatQuery.month"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
<el-option
v-for=
"item in optionsMonths"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<el-button
type=
"primary"
@
click=
"deptList"
>
搜索
</el-button>
</div>
</div>
<div
class=
"bar_content"
>
<bar-charts
:title=
"`$
{type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`"
:id="'bar_content'"
:legendName="alignmentName"
:option="{title:{left:'center',textStyle:{fontSize:24}}}"
:markLine="0.2"
:parameter="depStatObj.alignment"
:styleObj="{ width: '1800px', height: '650px' }"
/>
<bar-charts
:title=
"`$
{type1 == 1 ? '各部门' : '个人'}${StatQuery.month}月${alignmentName}对齐情况`" :id="'bar_content'"
:legendName="alignmentName" :option="{ title: { left: 'center', textStyle: { fontSize: 24 } } }" :markLine="0.2"
:parameter="depStatObj.alignment" :styleObj="{ width: '1800px', height: '650px' }" />
</div>
</div>
</el-tab-pane>
...
...
@@ -142,48 +82,34 @@
<el-radio-button
:label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<el-button
type=
"primary"
style=
"margin: 0 20px;"
@
click=
"addGoal"
>
+ 创建目标
</el-button
>
+ 创建目标
</el-button>
</div>
<div
class=
"mid_content"
style=
"height: auto;"
>
<div
class=
"goal_box"
v-for=
"(val, i) in dataList"
:key=
"i"
>
<div
class=
"goal_title"
>
<img
src=
"../../../../assets/images/u17641.svg"
alt=
""
/>
<span>
{{
dictString
(
'
assessmentType
'
,
val
.
assessmentType
)
}}{{
dictString
(
'
compareScope
'
,
val
.
compareScope
)
}}{{
val
.
ratio
}}
%
{{
dictString
(
'
assessmentType
'
,
val
.
assessmentType
)
}}{{
dictString
(
'
compareScope
'
,
val
.
compareScope
)
}}{{
val
.
ratio
}}
%
</span>
</div>
<p
class=
"goal_txt"
>
<span>
{{
type2
==
1
?
"
目标部门:
"
:
"
目标个人:
"
}}
</span
><span>
{{
<span>
{{
type2
==
1
?
"
目标部门:
"
:
"
目标个人:
"
}}
</span><span>
{{
type2
==
1
?
val
.
deptPerpose
:
val
.
staffPerpose
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
周期:
</span><span>
{{
val
.
year
}}
{{
dictString
(
'
periodType
'
,
val
.
periodType
)
}}
</span>
<span>
周期:
</span><span>
{{
val
.
year
}}
{{
dictString
(
'
periodType
'
,
val
.
periodType
)
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
负责人:
</span><span>
{{
val
.
leaders
}}
</span>
<span>
负责人:
</span><span>
{{
val
.
leaders
}}
</span>
</p>
<p
class=
"goal_txt"
>
<span>
最近更新:
</span><span>
{{
val
.
updateTime
}}
</span>
<span>
最近更新:
</span><span>
{{
val
.
updateTime
}}
</span>
</p>
<p
class=
"goal_txt"
><span>
更新人员:
</span><span>
{{
dictString
(
'
updateUserId
'
,
val
.
updateUserId
)
}}
</span></p>
<p
class=
"goal_txt"
><span>
更新人员:
</span><span>
{{
dictString
(
'
updateUserId
'
,
val
.
updateUserId
)
}}
</span></p>
<div
class=
"button_box"
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button
>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button>
</div>
</div>
</div>
...
...
@@ -217,10 +143,10 @@ export default {
},
methods
:
{
// 个人绩效分数统计
staffStatList
(){
staffStatList
()
{
this
.
$post
(
"
/staff/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -234,10 +160,10 @@ export default {
}
});
// 加分top10
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
}
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
}
this
.
$post
(
"
/staff/perform/stat/list
"
,
top10
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -251,10 +177,10 @@ export default {
}
});
// 减分
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/staff/perform/stat/list
"
,
top10Sub
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -269,10 +195,10 @@ export default {
});
},
// 部门绩效分数统计
statList
(){
this
.
$post
(
"
/dept/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
statList
()
{
this
.
$post
(
"
/dept/perform/stat/list
"
,
this
.
boardQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -292,10 +218,10 @@ export default {
}
});
// 加分top10
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalAddScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalAddScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/dept/perform/stat/list
"
,
top10
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -306,14 +232,14 @@ export default {
});
this
.
depStatObj
.
totalAddScore
.
x
=
x
this
.
depStatObj
.
totalAddScore
.
y
=
y
this
.
depStatObj
.
totalAddScore
.
row
=
row
}
});
// 减分
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
const
top10Sub
=
{
...
this
.
boardQuery
,
size
:
10
,
orderColList
:
[{
colName
:
'
totalSubScore
'
,
sortKind
:
'
desc
'
}]
}
this
.
$post
(
"
/dept/perform/stat/list
"
,
top10Sub
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
// this.statArr = row
const
x
=
[]
...
...
@@ -328,10 +254,10 @@ export default {
});
},
// 部门目标对齐
deptList
(){
deptList
()
{
this
.
$post
(
"
/perform/perpose/dept/stat/list
"
,
this
.
StatQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
const
x
=
[]
const
y
=
[]
...
...
@@ -345,10 +271,10 @@ export default {
});
},
// 个人对齐方式
staffList
(){
staffList
()
{
this
.
$post
(
"
/perform/perpose/staff/stat/list
"
,
this
.
StatQuery
).
then
((
res
)
=>
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
{
code
,
data
,
dict
}
=
res
if
(
code
==
1
)
{
const
row
=
data
.
data
||
[]
const
x
=
[]
const
y
=
[]
...
...
@@ -379,9 +305,9 @@ export default {
},
// 目标管理
getData
()
{
this
.
$post
(
"
/perform/perpose/list
"
,
this
.
query
).
then
((
res
)
=>
{
console
.
log
(
res
,
"
@@@@@@@@@@@@
"
);
const
{
code
,
data
,
dict
}
=
res
this
.
$post
(
"
/perform/perpose/list
"
,
this
.
query
).
then
((
res
)
=>
{
console
.
log
(
res
,
"
@@@@@@@@@@@@
"
);
const
{
code
,
data
,
dict
}
=
res
this
.
dict
=
dict
||
{}
if
(
code
==
1
)
{
this
.
dataList
=
data
.
data
;
...
...
@@ -391,39 +317,64 @@ export default {
});
},
// 字典转换
dictString
(
key
,
id
)
{
const
keyName
=
this
.
dict
[
key
]
return
keyName
?
keyName
[
id
]:
""
dictString
(
key
,
id
)
{
const
keyName
=
this
.
dict
[
key
]
return
keyName
?
keyName
[
id
]
:
""
},
// TAB个人/法人
onAssessmentScope
(
v
){
if
(
v
==
1
)
{
onAssessmentScope
(
v
)
{
if
(
v
==
1
)
{
this
.
statList
()
}
else
{
}
else
{
this
.
staffStatList
()
}
},
// 目标看齐
onAssessmentScope1
(
v
){
if
(
v
==
1
)
{
onAssessmentScope1
(
v
)
{
if
(
v
==
1
)
{
this
.
deptList
()
}
else
{
}
else
{
this
.
staffList
()
}
},
onAssessmentScope2
(
v
){
if
(
v
==
1
)
{
onAssessmentScope2
(
v
)
{
if
(
v
==
1
)
{
this
.
query
.
assessmentScope
=
1
}
else
{
}
else
{
this
.
query
.
assessmentScope
=
2
}
this
.
getData
()
},
rowClick
(
row
)
{
const
{
dataIndex
}
=
row
const
{
attendScoreAdd
,
reviewScoreAdd
,
goworkScoreAdd
,
effectScoreAdd
,
otherScoreAdd
,
complainScoreAdd
}
=
this
.
depStatObj
.
totalAddScore
.
row
[
dataIndex
]
this
.
depStatObj
.
pieAddScore
=
[
{
value
:
attendScoreAdd
,
name
:
'
考勤绩效
'
},
{
value
:
reviewScoreAdd
,
name
:
'
评价绩效
'
},
{
value
:
goworkScoreAdd
,
name
:
'
办件绩效
'
},
{
value
:
effectScoreAdd
,
name
:
'
效能绩效
'
},
{
value
:
complainScoreAdd
,
name
:
'
投诉绩效
'
},
{
value
:
otherScoreAdd
,
name
:
'
其它绩效
'
},
]
},
// 减分top10
rowClickSub
(
row
)
{
const
{
dataIndex
}
=
row
const
{
attendScoreSub
,
reviewScoreSub
,
goworkScoreSub
,
effectScoreSub
,
complainScoreSub
,
otherScoreSub
}
=
this
.
depStatObj
.
totalAddScore
.
row
[
dataIndex
]
this
.
depStatObj
.
pieSubScore
=
[
{
value
:
attendScoreSub
,
name
:
'
考勤绩效
'
},
{
value
:
reviewScoreSub
,
name
:
'
评价绩效
'
},
{
value
:
goworkScoreSub
,
name
:
'
办件绩效
'
},
{
value
:
effectScoreSub
,
name
:
'
效能绩效
'
},
{
value
:
complainScoreSub
,
name
:
'
投诉绩效
'
},
{
value
:
otherScoreSub
,
name
:
'
其它绩效
'
},
]
}
},
computed
:
{
alignmentName
:
function
()
{
const
obj
=
this
.
options
.
find
(
v
=>
v
.
value
==
this
.
value
)
alignmentName
:
function
()
{
const
obj
=
this
.
options
.
find
(
v
=>
v
.
value
==
this
.
value
)
return
obj
.
label
}
},
...
...
@@ -528,63 +479,63 @@ export default {
],
value
:
"
lateRate
"
,
//默认显示迟到类型
dataList
:
[],
depStatObj
:{
totalScore
:{
x
:[],
y
:[]
depStatObj
:
{
totalScore
:
{
x
:
[],
y
:
[]
},
//绩效总分排名
averageScore
:{
x
:[],
y
:[]
averageScore
:
{
x
:
[],
y
:
[]
},
//绩效平均排名
totalAddScore
:{
x
:[],
y
:[]
totalAddScore
:
{
x
:
[],
y
:
[]
},
//加分
totalSubScore
:{
x
:[],
y
:[]
totalSubScore
:
{
x
:
[],
y
:
[]
},
//减分
alignment
:{
x
:[],
y
:[]
alignment
:
{
x
:
[],
y
:
[]
},
//目标对齐
pieAddScore
:[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
pieAddScore
:
[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
],
//部门加分分布
pieSubScore
:[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
pieSubScore
:
[
{
value
:
0
,
name
:
'
考勤绩效
'
},
{
value
:
0
,
name
:
'
评价绩效
'
},
{
value
:
0
,
name
:
'
办件绩效
'
},
{
value
:
0
,
name
:
'
效能绩效
'
},
{
value
:
0
,
name
:
'
投诉绩效
'
},
{
value
:
0
,
name
:
'
其它绩效
'
},
]
//部门减分分布
},
//按部门
month
:
""
,
//月份
boardQuery
:{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
month
:
""
,
//月份
boardQuery
:
{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
},
//看板查询条件
query
:{
page
:
1
,
size
:
-
1
,
assessmentScope
:
1
//考核范围(1.部门,2.个人)
query
:
{
page
:
1
,
size
:
-
1
,
assessmentScope
:
1
//考核范围(1.部门,2.个人)
},
//目标管理查询条件
StatQuery
:{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
StatQuery
:
{
page
:
1
,
size
:
-
1
,
year
:
parseInt
(
moment
().
format
(
'
YYYY
'
)),
month
:
parseInt
(
moment
().
format
(
'
MM
'
)),
},
//对齐方式入参
dict
:{}
//字典
dict
:
{}
//字典
};
},
};
...
...
@@ -594,55 +545,66 @@ export default {
width: 100%;
height: 100%;
overflow: hidden;
/deep/.el-tabs__item {
width: 120px;
font-size: 14px;
text-align: center;
}
.content {
width: 100%;
height: 100%;
.search_top {
width: 100%;
height: 1000%;
display: flex;
justify-content: space-between;
}
/deep/.el-radio-button {
width: 150px;
text-align: center;
border: 1px solid #eee;
}
/deep/.el-radio-button__inner {
width: 150px;
}
/deep/.el-radio-button__orig-radio:checked + .el-radio-button__inner {
/deep/.el-radio-button__orig-radio:checked+.el-radio-button__inner {
width: 150px;
border: none;
background: #1890ff;
color: #fff;
border: 1px solid #eee;
}
.top {
width: 100%;
height: 60px;
}
.mid {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.mid_top {
width: 100%;
height: 300px;
display: flex;
justify-content: space-between;
.jixiaozongfen,
.jixiaopingjunfen {
width: 48%;
height: 100%;
}
}
.mid_down {
width: 100%;
height: 380px;
...
...
@@ -656,16 +618,19 @@ export default {
}
}
}
.mid_content,
.bar_content {
width: 100%;
height: 700px;
overflow: hidden;
}
.mid_content {
overflow-y: auto;
display: flex;
flex-wrap: wrap;
.goal_box {
width: 405px;
height: 238px;
...
...
@@ -678,14 +643,17 @@ export default {
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 10px 20px 20px 10px;
padding: 20px;
.goal_title {
width: 100%;
display: flex;
align-items: center;
img {
margin-right: 10px;
}
}
.goal_txt {
font-family: "微软雅黑", sans-serif;
font-weight: 400;
...
...
@@ -695,6 +663,7 @@ export default {
width: 100%;
margin: 10px 0;
}
.button_box {
width: 100%;
display: flex;
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
View file @
00cc35d9
<
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
slot=
"table-head-left2"
style=
"margin-left: 10px"
icon=
"el-icon-tickets"
size=
"mini"
@
click=
"doExport"
:disabled=
"isExport"
>
导出
</el-button>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
...
...
@@ -26,7 +19,7 @@ export default {
dialogShow
,
},
mixins
:
[
table
],
created
()
{},
created
()
{
},
methods
:
{
/** 导出Excel */
doExport
()
{
...
...
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