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
adcd440a
Commit
adcd440a
authored
Jul 05, 2023
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
推添加绩效系统功能
parent
9d25b0a7
Changes
22
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
2810 additions
and
806 deletions
+2810
-806
attendance-performance-manager-ui/admin/package-lock.json
attendance-performance-manager-ui/admin/package-lock.json
+4
-5
attendance-performance-manager-ui/admin/src/assets/images/u17641.svg
...performance-manager-ui/admin/src/assets/images/u17641.svg
+7
-0
attendance-performance-manager-ui/admin/src/assets/less/base.css
...nce-performance-manager-ui/admin/src/assets/less/base.css
+296
-0
attendance-performance-manager-ui/admin/src/assets/less/base.less
...ce-performance-manager-ui/admin/src/assets/less/base.less
+229
-135
attendance-performance-manager-ui/admin/src/assets/mixins/form.js
...ce-performance-manager-ui/admin/src/assets/mixins/form.js
+55
-51
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
...formance-manager-ui/admin/src/assets/mixins/formdialog.js
+65
-57
attendance-performance-manager-ui/admin/src/main.js
attendance-performance-manager-ui/admin/src/main.js
+34
-26
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
...nce-manager-ui/admin/src/views/homeCharts/record/list.vue
+463
-25
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
...src/views/perform/rules/attend/components/AttendIndex.vue
+172
-0
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/dialogshow.vue
...er-ui/admin/src/views/perform/rules/attend/dialogshow.vue
+134
-0
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/drawershow.vue
...er-ui/admin/src/views/perform/rules/attend/drawershow.vue
+171
-123
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list(原绩效规则).vue
...r-ui/admin/src/views/perform/rules/attend/list(原绩效规则).vue
+84
-0
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
...-manager-ui/admin/src/views/perform/rules/attend/list.vue
+46
-71
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/view.vue
...-manager-ui/admin/src/views/perform/rules/attend/view.vue
+117
-81
attendance-performance-manager-ui/admin/src/views/perform/rules/category/dialogshow.vue
...-ui/admin/src/views/perform/rules/category/dialogshow.vue
+126
-98
attendance-performance-manager-ui/admin/src/views/perform/rules/category/list.vue
...anager-ui/admin/src/views/perform/rules/category/list.vue
+62
-57
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
...min/src/views/staff/perform/stat/components/BarCharts.vue
+93
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/LineCharts.vue
...in/src/views/staff/perform/stat/components/LineCharts.vue
+89
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/PieCharts.vue
...min/src/views/staff/perform/stat/components/PieCharts.vue
+94
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list(原绩效目标).vue
...ger-ui/admin/src/views/staff/perform/stat/list(原绩效目标).vue
+83
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
...ce-manager-ui/admin/src/views/staff/perform/stat/list.vue
+384
-75
attendance-performance-manager-ui/admin/yarn.lock
attendance-performance-manager-ui/admin/yarn.lock
+2
-2
No files found.
attendance-performance-manager-ui/admin/package-lock.json
View file @
adcd440a
...
...
@@ -6444,9 +6444,8 @@
},
"node_modules/echarts": {
"version": "4.9.0",
"resolved": "https://registry.nlark.com/echarts/download/echarts-4.9.0.tgz",
"integrity": "sha1-qbm6oD8Doqcx5jQMVb77V6nhNH0=",
"license": "Apache-2.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz",
"integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
"dependencies": {
"zrender": "4.3.2"
}
...
...
@@ -22406,8 +22405,8 @@
},
"echarts": {
"version": "4.9.0",
"resolved": "https://registry.n
lark.com/echarts/download
/echarts-4.9.0.tgz",
"integrity": "sha
1-qbm6oD8Doqcx5jQMVb77V6nhNH0
=",
"resolved": "https://registry.n
pmjs.org/echarts/-
/echarts-4.9.0.tgz",
"integrity": "sha
512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA=
=",
"requires": {
"zrender": "4.3.2"
}
attendance-performance-manager-ui/admin/src/assets/images/u17641.svg
0 → 100644
View file @
adcd440a
<?xml version="1.0" encoding="utf-8"?>
<svg
version=
"1.1"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"18px"
height=
"18px"
xmlns=
"http://www.w3.org/2000/svg"
>
<g
transform=
"matrix(1 0 0 1 -72 -264 )"
>
<path
d=
"M 81 268.5 C 83.52 268.5 85.5 270.48 85.5 273 C 85.5 275.52 83.52 277.5 81 277.5 C 78.48 277.5 76.5 275.52 76.5 273 C 76.5 270.48 78.48 268.5 81 268.5 Z "
fill-rule=
"nonzero"
fill=
"#3377ff"
stroke=
"none"
/>
<path
d=
"M 81 266.5 C 84.64 266.5 87.5 269.36 87.5 273 C 87.5 276.64 84.64 279.5 81 279.5 C 77.36 279.5 74.5 276.64 74.5 273 C 74.5 269.36 77.36 266.5 81 266.5 Z "
stroke-width=
"5"
stroke=
"#3377ff"
fill=
"none"
stroke-opacity=
"0.247058823529412"
/>
</g>
</svg>
\ No newline at end of file
attendance-performance-manager-ui/admin/src/assets/less/base.css
0 → 100644
View file @
adcd440a
html
{
-webkit-text-size-adjust
:
100%
;
-ms-text-size-adjust
:
100%
;
box-sizing
:
border-box
;
}
html
*
{
outline
:
0
;
box-sizing
:
inherit
;
-webkit-text-size-adjust
:
none
;
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
}
html
,
body
{
height
:
100%
;
min-height
:
100%
;
font-family
:
"Microsoft Yahei"
,
"Helvetica Neue"
,
Helvetica
,
STHeiTi
,
Arial
,
sans-serif
;
}
body
{
overflow-y
:
scroll
;
}
body
,
div
,
dl
,
dt
,
dd
,
ul
,
ol
,
li
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
pre
,
code
,
form
,
fieldset
,
legend
,
input
,
textarea
,
p
,
blockquote
,
th
,
td
,
hr
,
button
,
article
,
aside
,
details
,
figcaption
,
figure
,
footer
,
header
,
hgroup
,
menu
,
nav
,
section
{
margin
:
0
;
padding
:
0
;
}
input
,
select
,
textarea
,
button
{
font-size
:
100%
;
-webkit-appearance
:
none
;
border
:
0
;
outline
:
0
;
}
table
{
border-collapse
:
collapse
;
border-spacing
:
0
;
}
fieldset
,
img
{
border
:
0
;
}
abbr
,
acronym
{
border
:
0
;
font-variant
:
normal
;
}
del
{
text-decoration
:
line-through
;
}
address
,
caption
,
cite
,
code
,
dfn
,
em
,
th
,
var
{
font-style
:
normal
;
font-weight
:
500
;
}
ol
,
ul
{
list-style
:
none
;
}
caption
,
th
{
text-align
:
left
;
}
q
:before
,
q
:after
{
content
:
""
;
}
sub
,
sup
{
font-size
:
75%
;
line-height
:
0
;
position
:
relative
;
vertical-align
:
baseline
;
}
sup
{
top
:
-0.5em
;
}
sub
{
bottom
:
-0.25em
;
}
.mt20
{
margin-top
:
20px
;
}
.mt10
{
margin-top
:
10px
;
}
.ml10
{
margin-left
:
10px
;
}
.ml20
{
margin-left
:
20px
;
}
ins
,
a
{
text-decoration
:
none
;
cursor
:
pointer
;
}
/* ============================================================
flex:定义布局为盒模型
flex-v:盒模型垂直布局
flex-1:子元素占据剩余的空间
flex-align-center:子元素垂直居中
flex-pack-center:子元素水平居中
flex-pack-justify:子元素两端对齐
兼容性:ios 4+、android 2.3+、winphone8+
============================================================ */
.flex
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
-ms-flexbox
;
display
:
flex
;
}
.flex-v
{
-webkit-box-orient
:
vertical
;
-webkit-flex-direction
:
column
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
}
.flex-1
{
-webkit-box-flex
:
1
;
-webkit-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
}
.flex-align-center
{
-webkit-box-align
:
center
;
-webkit-align-items
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
}
.flex-pack-center
{
-webkit-box-pack
:
center
;
-webkit-justify-content
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
}
.flex-pack-justify
{
-webkit-box-pack
:
justify
;
-webkit-justify-content
:
space-between
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
;
}
.flex_warp
{
flex-wrap
:
wrap
;
}
.flex_end
{
justify-content
:
flex-end
;
}
.clearfix
:after
{
content
:
""
;
display
:
table
;
clear
:
both
;
font-size
:
0
;
}
.fl
{
float
:
left
;
}
.fr
{
float
:
right
;
}
.hide
{
display
:
none
;
}
.disabled
{
pointer-events
:
none
;
}
#app
,
.pages
{
display
:
-webkit-box
;
display
:
-webkit-flex
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-orient
:
vertical
;
-webkit-flex-direction
:
column
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
height
:
100%
;
overflow
:
hidden
;
}
.ellipsis
{
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
[
v-cloak
]
{
display
:
none
;
}
[
disabled
]
{
pointer-events
:
none
;
}
.el-dialog
.el-checkbox-group
.el-checkbox
{
margin
:
5px
0
;
width
:
33.33%
;
}
.el-dialog
.el-checkbox-group
.pointBox
{
width
:
50%
;
}
.el-table
th
{
user-select
:
all
;
}
.el-progress-bar
{
padding-right
:
70px
;
margin-right
:
-70px
;
}
#operatorUserCabinCheckBox
.el-checkbox
{
white-space
:
normal
!important
;
width
:
100%
;
}
#operatorUserCabinCheckBox
.el-checkbox__label
{
display
:
inline
;
}
.page-statistics
.chart
{
margin-bottom
:
80px
;
border
:
1px
solid
#ededed
;
height
:
400px
;
}
.page-statistics
.el-table
th
.color-gray
,
.page-statistics
.el-table
tr
.color-gray
{
background-color
:
#f0f9eb
;
}
@media
screen
and
(
max-width
:
800px
)
{
.page
{
margin
:
5px
5px
;
}
.el-dialog
{
width
:
98%
!important
;
}
.el-dialog
.el-checkbox-group
.el-checkbox
{
margin
:
5px
0
;
width
:
50%
;
font-size
:
12px
;
}
.el-dialog
.el-checkbox-group
.el-checkbox
.el-checkbox__label
{
font-size
:
12px
;
}
}
.mobile-table-card
{
margin
:
10px
auto
;
padding
:
10px
;
box-shadow
:
0
0
5px
#ccc
;
}
.mobile-table-card
.mobile-table-cell
{
padding
:
5px
0
;
border-bottom
:
1px
dotted
#eee
;
}
.mobile-table-card
.mobile-table-cell
.cell-title
{
font-size
:
13px
;
color
:
#666
;
}
.mobile-table-card
.mobile-table-cell
.cell-content
{
padding-left
:
5px
;
text-align
:
right
;
word-break
:
break-word
;
}
attendance-performance-manager-ui/admin/src/assets/less/base.less
View file @
adcd440a
html {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
box-sizing: border-box;
}
html * {
outline: 0;
outline: 0;
box-sizing: inherit;
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0,0,0,0)
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
html,body {
height: 100%;
html,
body {
height: 100%;
min-height: 100%;
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif;
}
body {
overflow-y: scroll;
}
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
margin: 0;
padding: 0
overflow-y: scroll;
}
body,
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
code,
form,
fieldset,
legend,
input,
textarea,
p,
blockquote,
th,
td,
hr,
button,
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
margin: 0;
padding: 0;
}
input,select,textarea,button {
font-size: 100%;
input,
select,
textarea,
button {
font-size: 100%;
-webkit-appearance: none;
border:0;
border:
0;
outline: 0;
}
table {
border-collapse: collapse;
border-spacing: 0
border-collapse: collapse;
border-spacing: 0;
}
fieldset,img {
border: 0
fieldset,
img {
border: 0;
}
abbr,acronym {
border: 0;
font-variant: normal
abbr,
acronym {
border: 0;
font-variant: normal;
}
del {
text-decoration: line-through
text-decoration: line-through;
}
address,caption,cite,code,dfn,em,th,var {
font-style: normal;
font-weight: 500
address,
caption,
cite,
code,
dfn,
em,
th,
var {
font-style: normal;
font-weight: 500;
}
ol,ul {
list-style: none
ol,
ul {
list-style: none;
}
caption,th {
text-align: left
caption,
th {
text-align: left;
}
// h1,h2,h3,h4,h5,h6 {
...
...
@@ -67,39 +120,42 @@ caption,th {
// font-weight: 500
// }
q:before,q:after {
content: ''
q:before,
q:after {
content: "";
}
sub,sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -.5em
top: -0.5em;
}
sub {
bottom: -.25em
bottom: -0.25em;
}
.mt20{
margin-top: 20px;
.mt20
{
margin-top: 20px;
}
.mt10{
margin-top: 10px;
.mt10
{
margin-top: 10px;
}
.ml10{
.ml10
{
margin-left: 10px;
}
.ml20{
margin-left: 20px;
.ml20
{
margin-left: 20px;
}
ins,a {
text-decoration: none;
cursor: pointer;
ins,
a {
text-decoration: none;
cursor: pointer;
}
/* ============================================================
flex:定义布局为盒模型
...
...
@@ -110,39 +166,78 @@ ins,a {
flex-pack-justify:子元素两端对齐
兼容性:ios 4+、android 2.3+、winphone8+
============================================================ */
.flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}
.flex-v{-webkit-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}
.flex-1{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;}
.flex-align-center{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;}
.flex-pack-center{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}
.flex-pack-justify{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}
.flex_warp{flex-wrap: wrap;}
.flex_end{
justify-content: flex-end;
}
.clearfix{
&:after{
content: '';
.flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
.flex-v {
-webkit-box-orient: vertical;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.flex-1 {
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
.flex-align-center {
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.flex-pack-center {
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
}
.flex-pack-justify {
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
}
.flex_warp {
flex-wrap: wrap;
}
.flex_end {
justify-content: flex-end;
}
.clearfix {
&:after {
content: "";
display: table;
clear: both;
font-size: 0;
}
}
}
.fl{float: left};
.fr{float: right};
.hide{display: none;}
.disabled{
pointer-events: none;
.fl {
float: left;
}
#app,.pages{
.flex;
.flex-v;
height: 100%;
.fr {
float: right;
}
.hide {
display: none;
}
.disabled {
pointer-events: none;
}
#app,
.pages {
.flex;
.flex-v;
height: 100%;
overflow: hidden;
}
.ellipsis{
.ellipsis
{
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
...
...
@@ -151,90 +246,89 @@ ins,a {
display: none;
}
[disabled] {
pointer-events: none;
}
.el-dialog{
.el-checkbox-group
{
.el-checkbox
{
margin: 5px 0;
width: 33.33%;
}
.pointBox
{
width: 50%;
}
}
pointer-events: none;
}
.el-dialog
{
.el-checkbox-group
{
.el-checkbox
{
margin: 5px 0;
width: 33.33%;
}
.pointBox
{
width: 50%;
}
}
}
.el-table th {
user-select: all;
user-select: all;
}
.el-progress-bar{
padding-right: 70px;
margin-right: -70px;
.el-progress-bar
{
padding-right: 70px;
margin-right: -70px;
}
#operatorUserCabinCheckBox .el-checkbox{
#operatorUserCabinCheckBox .el-checkbox
{
white-space: normal !important;
width: 100%
width: 100%
;
}
#operatorUserCabinCheckBox .el-checkbox__label{
#operatorUserCabinCheckBox .el-checkbox__label
{
display: inline;
}
// 统计页面隔日期变色
.page-statistics{
.chart{
.page-statistics
{
.chart
{
margin-bottom: 80px;
border: 1px solid #ededed;
height: 400px;
}
.el-table th, .el-table tr{
&.color-gray{
.el-table th,
.el-table tr {
&.color-gray {
background-color: #f0f9eb;
}
}
}
@media screen and (max-width: 800px){
.page{
margin: 5px 5px;
}
.el-dialog{
width: 98%!important;
.el-checkbox-group{
.el-checkbox{
margin: 5px 0;
width: 50%;
font-size: 12px;
.el-checkbox__label{
font-size: 12px;
}
}
}
}
@media screen and (max-width: 800px) {
.page {
margin: 5px 5px;
}
.el-dialog {
width: 98% !important;
.el-checkbox-group {
.el-checkbox {
margin: 5px 0;
width: 50%;
font-size: 12px;
.el-checkbox__label {
font-size: 12px;
}
}
}
}
}
// .is-active{
// background-color: red;
// }
.mobile-table-card{
margin: 10px auto;
padding: 10px;
box-shadow: 0 0 5px #ccc;
.mobile-table-cell{
padding: 5px 0;
border-bottom: 1px dotted #eee;
.cell-title{
font-size: 13px;
color: #666;
}
.cell-content{
padding-left: 5px;
text-align: right;
word-break: break-word;
}
}
}
\ No newline at end of file
.mobile-table-card {
margin: 10px auto;
padding: 10px;
box-shadow: 0 0 5px #ccc;
.mobile-table-cell {
padding: 5px 0;
border-bottom: 1px dotted #eee;
.cell-title {
font-size: 13px;
color: #666;
}
.cell-content {
padding-left: 5px;
text-align: right;
word-break: break-word;
}
}
}
attendance-performance-manager-ui/admin/src/assets/mixins/form.js
View file @
adcd440a
...
...
@@ -8,15 +8,13 @@ export default {
methods
:
{
// 渲染前置处理
beforeRender
(
data
)
{
return
data
return
data
;
},
// 渲染后置处理
afterRender
(
data
)
{
},
afterRender
(
data
)
{},
// 提交表单的前置处理
beforeSubmit
(
data
)
{
return
data
return
data
;
},
// 提交表单的后置处理, 会阻断默认的回退行为
afterSubmit
(
data
)
{
...
...
@@ -39,16 +37,16 @@ export default {
// 部门格式化处理
this
.
afterRender
(
res
);
})
.
catch
(
error
=>
{
console
.
error
(
error
)
.
catch
(
(
error
)
=>
{
console
.
error
(
error
)
;
this
.
$message
.
error
(
error
.
message
);
})
.
then
(
data
=>
{
.
then
(
(
data
)
=>
{
clearTimeout
(
this
.
loadingTimer
);
this
.
loadingTimer
=
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
300
);
})
})
;
},
// 提交表单
submitForm
(
ref
)
{
...
...
@@ -56,73 +54,82 @@ export default {
el
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
;
this
.
loading
=
true
;
console
.
log
(
'
提交了
'
)
this
.
$post
(
this
.
urls
.
saveUrl
||
this
.
pageInfo
.
saveUrl
,
this
.
beforeSubmit
(
this
.
form
)
console
.
log
(
"
提交了
"
);
this
.
$post
(
this
.
urls
.
saveUrl
||
this
.
pageInfo
.
saveUrl
,
this
.
beforeSubmit
(
this
.
form
)
)
.
then
(
res
=>
{
.
then
(
(
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
afterSubmit
(
res
);
})
.
catch
(
error
=>
{
.
catch
(
(
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
})
.
then
(
data
=>
{
.
then
(
(
data
)
=>
{
clearTimeout
(
this
.
loadingTimer
);
this
.
loadingTimer
=
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
200
);
})
})
;
});
},
// 复制一个数组或对象
util_copy
(
data
)
{
return
JSON
.
parse
(
JSON
.
stringify
(
data
))
return
JSON
.
parse
(
JSON
.
stringify
(
data
))
;
},
// 工具方法,把数字转化为字符串
util_toString
(
data
,
array
)
{
//原始数据
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
array
.
forEach
(
(
item
)
=>
{
//如果相等做操作
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
''
:
dataCopy
[
item
]
+
''
;
})
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
""
:
dataCopy
[
item
]
+
""
;
});
return
dataCopy
;
},
// 工具方法,把字符串转化为数组
util_toArrays
(
data
,
array
)
{
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
[]
:
dataCopy
[
item
].
split
(
"
,
"
);
})
array
.
forEach
((
item
)
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
[]
:
dataCopy
[
item
].
split
(
"
,
"
);
});
return
dataCopy
;
},
// 工具方法,把字符串转化为格式化日期
util_toDateStr
(
data
,
array
)
{
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
''
:
this
.
util_formatterDate
(
dataCopy
[
item
]);
})
array
.
forEach
((
item
)
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
""
:
this
.
util_formatterDate
(
dataCopy
[
item
]);
});
return
dataCopy
;
},
util_formatterDate
(
time
)
{
let
date
=
new
Date
(
Number
(
time
));
let
Y
=
date
.
getFullYear
()
+
'
-
'
;
let
M
=
(
date
.
getMonth
()
+
1
<
10
?
'
0
'
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
'
-
'
;
let
D
=
this
.
panLeft
(
date
.
getDate
())
+
'
'
;
let
h
=
this
.
panLeft
(
date
.
getHours
())
+
'
:
'
;
let
m
=
this
.
panLeft
(
date
.
getMinutes
())
+
'
:
'
;
let
Y
=
date
.
getFullYear
()
+
"
-
"
;
let
M
=
(
date
.
getMonth
()
+
1
<
10
?
"
0
"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"
-
"
;
let
D
=
this
.
panLeft
(
date
.
getDate
())
+
"
"
;
let
h
=
this
.
panLeft
(
date
.
getHours
())
+
"
:
"
;
let
m
=
this
.
panLeft
(
date
.
getMinutes
())
+
"
:
"
;
let
s
=
this
.
panLeft
(
date
.
getSeconds
());
return
Y
+
M
+
D
+
h
+
m
+
s
;
return
Y
+
M
+
D
+
h
+
m
+
s
;
},
panLeft
(
num
){
return
num
<
10
?
'
0
'
+
num
:
num
;
panLeft
(
num
)
{
return
num
<
10
?
"
0
"
+
num
:
num
;
},
// 从dict字段暴力取值,取不到则返回原值
util_formatter
(
key
,
val
)
{
try
{
return
this
.
dict
[
key
][
val
]
return
this
.
dict
[
key
][
val
]
;
}
catch
(
error
)
{
return
val
;
}
...
...
@@ -135,24 +142,24 @@ export default {
}
});
},
0
);
}
}
,
},
computed
:
{
pageInfo
()
{
let
currUrl
=
this
.
$route
.
path
;
let
urlArray
=
currUrl
.
split
(
'
/
'
);
let
urlArray
=
currUrl
.
split
(
"
/
"
);
let
type
=
urlArray
.
pop
();
urlArray
.
push
(
'
save
'
);
let
saveUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
save
"
);
let
saveUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
edit
'
);
let
editUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
edit
"
);
let
editUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
add
'
);
let
addUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
add
"
);
let
addUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
view
'
);
let
viewUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
view
"
);
let
viewUrl
=
urlArray
.
join
(
"
/
"
);
return
{
type
,
currUrl
,
...
...
@@ -176,9 +183,6 @@ export default {
toString
:
[],
// 需要把number转化为string的表单字段name数组
toArrays
:
[],
// 需要把number转化为arrays的表单字段name数组
toDate
:
[],
// 需要把number转化为date的表单字段name数组
}
}
}
};
},
};
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
View file @
adcd440a
export
default
{
created
()
{
// this.getData();
// this.getData();
},
beforeDestroy
()
{
clearTimeout
(
this
.
loadingTimer
);
...
...
@@ -8,29 +8,27 @@ export default {
methods
:
{
// 渲染前置处理
beforeRender
(
data
)
{
return
data
return
data
;
},
// 渲染后置处理
afterRender
(
data
)
{
},
afterRender
(
data
)
{},
// 提交表单的前置处理
beforeSubmit
(
data
)
{
return
data
return
data
;
},
// 提交表单的后置处理, 会阻断默认的回退行为
afterSubmit
(
data
)
{
this
.
$router
.
go
(
-
1
);
},
// 开启、关闭
changePath
(
path
)
{
this
.
pageInfo
.
list
=
path
+
"
/list
"
;
this
.
pageInfo
.
del
=
path
+
"
/delete
"
;
this
.
pageInfo
.
add
=
path
+
"
/add
"
;
this
.
pageInfo
.
edit
=
path
+
"
/edit
"
;
this
.
pageInfo
.
view
=
path
+
"
/view
"
;
},
// 开启、关闭
changePath
(
path
)
{
this
.
pageInfo
.
list
=
path
+
"
/list
"
;
this
.
pageInfo
.
del
=
path
+
"
/delete
"
;
this
.
pageInfo
.
add
=
path
+
"
/add
"
;
this
.
pageInfo
.
edit
=
path
+
"
/edit
"
;
this
.
pageInfo
.
view
=
path
+
"
/view
"
;
},
// 默认拉取数据
getData
()
{
...
...
@@ -48,87 +46,100 @@ export default {
this
.
dict
=
Object
.
assign
({},
this
.
dict
,
res
.
dict
);
this
.
afterRender
(
res
);
})
.
catch
(
error
=>
{
this
.
$message
.
error
(
error
.
message
)
throw
error
.
catch
(
(
error
)
=>
{
this
.
$message
.
error
(
error
.
message
)
;
throw
error
;
})
.
then
(
data
=>
{
.
then
(
(
data
)
=>
{
clearTimeout
(
this
.
loadingTimer
);
this
.
loadingTimer
=
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
300
);
})
})
;
},
// 提交表单
submitForm
(
ref
)
{
console
.
log
(
123
);
return
;
const
el
=
this
.
$refs
.
form
;
el
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
;
this
.
loading
=
true
;
this
.
$post
(
this
.
urls
.
saveUrl
||
this
.
pageInfo
.
saveUrl
,
this
.
beforeSubmit
(
this
.
form
))
.
then
(
res
=>
{
this
.
$post
(
this
.
urls
.
saveUrl
||
this
.
pageInfo
.
saveUrl
,
this
.
beforeSubmit
(
this
.
form
)
)
.
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
afterSubmit
(
res
);
})
.
catch
(
error
=>
{
.
catch
(
(
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
})
.
then
(
data
=>
{
.
then
(
(
data
)
=>
{
clearTimeout
(
this
.
loadingTimer
);
this
.
loadingTimer
=
setTimeout
(()
=>
{
this
.
loading
=
false
;
},
200
);
})
})
;
});
},
// 复制一个数组或对象
util_copy
(
data
)
{
return
JSON
.
parse
(
JSON
.
stringify
(
data
))
return
JSON
.
parse
(
JSON
.
stringify
(
data
))
;
},
// 工具方法,把数字转化为字符串
util_toString
(
data
,
array
)
{
//原始数据
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
array
.
forEach
(
(
item
)
=>
{
//如果相等做操作
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
''
:
dataCopy
[
item
]
+
''
;
})
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
""
:
dataCopy
[
item
]
+
""
;
});
return
dataCopy
;
},
// 工具方法,把字符串转化为数组
util_toArrays
(
data
,
array
)
{
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
[]
:
dataCopy
[
item
].
split
(
"
,
"
);
})
array
.
forEach
((
item
)
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
[]
:
dataCopy
[
item
].
split
(
"
,
"
);
});
return
dataCopy
;
},
// 工具方法,把字符串转化为格式化日期
util_toDateStr
(
data
,
array
)
{
const
dataCopy
=
Object
.
assign
({},
data
);
array
.
forEach
(
item
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
''
:
this
.
util_formatterDate
(
dataCopy
[
item
]);
})
array
.
forEach
((
item
)
=>
{
dataCopy
[
item
]
=
dataCopy
[
item
]
===
undefined
?
""
:
this
.
util_formatterDate
(
dataCopy
[
item
]);
});
return
dataCopy
;
},
util_formatterDate
(
time
)
{
let
date
=
new
Date
(
Number
(
time
));
let
Y
=
date
.
getFullYear
()
+
'
-
'
;
let
M
=
(
date
.
getMonth
()
+
1
<
10
?
'
0
'
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
'
-
'
;
let
D
=
this
.
panLeft
(
date
.
getDate
())
+
'
'
;
let
h
=
this
.
panLeft
(
date
.
getHours
())
+
'
:
'
;
let
m
=
this
.
panLeft
(
date
.
getMinutes
())
+
'
:
'
;
let
Y
=
date
.
getFullYear
()
+
"
-
"
;
let
M
=
(
date
.
getMonth
()
+
1
<
10
?
"
0
"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"
-
"
;
let
D
=
this
.
panLeft
(
date
.
getDate
())
+
"
"
;
let
h
=
this
.
panLeft
(
date
.
getHours
())
+
"
:
"
;
let
m
=
this
.
panLeft
(
date
.
getMinutes
())
+
"
:
"
;
let
s
=
this
.
panLeft
(
date
.
getSeconds
());
return
Y
+
M
+
D
+
h
+
m
+
s
;
},
panLeft
(
num
)
{
return
num
<
10
?
'
0
'
+
num
:
num
;
return
num
<
10
?
"
0
"
+
num
:
num
;
},
// 从dict字段暴力取值,取不到则返回原值
util_formatter
(
key
,
val
)
{
try
{
return
this
.
dict
[
key
][
val
]
return
this
.
dict
[
key
][
val
]
;
}
catch
(
error
)
{
return
val
;
}
...
...
@@ -141,24 +152,24 @@ export default {
}
});
},
0
);
}
}
,
},
computed
:
{
pageInfo
()
{
let
currUrl
=
this
.
$route
.
path
;
let
urlArray
=
currUrl
.
split
(
'
/
'
);
let
urlArray
=
currUrl
.
split
(
"
/
"
);
let
type
=
urlArray
.
pop
();
urlArray
.
push
(
'
save
'
);
let
saveUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
save
"
);
let
saveUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
edit
'
);
let
editUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
edit
"
);
let
editUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
add
'
);
let
addUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
add
"
);
let
addUrl
=
urlArray
.
join
(
"
/
"
);
urlArray
.
pop
();
urlArray
.
push
(
'
view
'
);
let
viewUrl
=
urlArray
.
join
(
'
/
'
);
urlArray
.
push
(
"
view
"
);
let
viewUrl
=
urlArray
.
join
(
"
/
"
);
return
{
type
,
currUrl
,
...
...
@@ -182,9 +193,6 @@ export default {
toString
:
[],
// 需要把number转化为string的表单字段name数组
toArrays
:
[],
// 需要把number转化为arrays的表单字段name数组
toDate
:
[],
// 需要把number转化为date的表单字段name数组
}
}
}
};
},
};
attendance-performance-manager-ui/admin/src/main.js
View file @
adcd440a
import
Vue
from
'
vue
'
import
ElementUI
from
'
element-ui
'
import
'
element-ui/lib/theme-chalk/index.css
'
import
'
./assets/less/base.less
'
import
App
from
'
./App.vue
'
import
router
from
'
./router
'
import
store
from
'
./store
'
import
Prototype
from
'
./assets/utils/prototype
'
import
Filter
from
'
./assets/utils/filter.js
'
import
GlobalComponents
from
'
./assets/utils/globalComponents.js
'
import
Global
from
'
./assets/utils/global.js
'
import
VueClipboard
from
'
vue-clipboard2
'
import
VueAMap
from
'
vue-amap
'
;
import
*
as
echarts
from
'
echarts
'
import
Vue
from
"
vue
"
;
import
ElementUI
from
"
element-ui
"
;
import
"
element-ui/lib/theme-chalk/index.css
"
;
import
"
./assets/less/base.less
"
;
import
App
from
"
./App.vue
"
;
import
router
from
"
./router
"
;
import
store
from
"
./store
"
;
import
Prototype
from
"
./assets/utils/prototype
"
;
import
Filter
from
"
./assets/utils/filter.js
"
;
import
GlobalComponents
from
"
./assets/utils/globalComponents.js
"
;
import
Global
from
"
./assets/utils/global.js
"
;
import
VueClipboard
from
"
vue-clipboard2
"
;
import
VueAMap
from
"
vue-amap
"
;
import
*
as
echarts
from
"
echarts
"
;
// 将自动注册所有组件为全局组件
import
dataV
from
'
@jiaminghi/data-view
'
import
dataV
from
"
@jiaminghi/data-view
"
;
Vue
.
use
(
dataV
)
Vue
.
use
(
dataV
)
;
Vue
.
prototype
.
$echarts
=
echarts
;
Vue
.
config
.
productionTip
=
false
Vue
.
config
.
productionTip
=
false
;
Vue
.
use
(
ElementUI
);
Vue
.
use
(
Prototype
);
Vue
.
use
(
Filter
);
Vue
.
use
(
GlobalComponents
);
// 全局组件
Vue
.
use
(
VueClipboard
)
Vue
.
use
(
VueAMap
)
Vue
.
use
(
VueClipboard
)
;
Vue
.
use
(
VueAMap
)
;
VueAMap
.
initAMapApiLoader
({
key
:
'
f45cca59553214543a5a77e50a7e04df
'
,
plugin
:
[
'
AMap.Scale
'
,
'
AMap.OverView
'
,
'
AMap.ToolBar
'
,
'
AMap.MapType
'
,
'
AMap.PlaceSearch
'
,
'
AMap.Geolocation
'
,
'
AMap.Geocoder
'
],
v
:
'
1.4.4
'
,
uiVersion
:
'
1.0
'
,
})
key
:
"
f45cca59553214543a5a77e50a7e04df
"
,
plugin
:
[
"
AMap.Scale
"
,
"
AMap.OverView
"
,
"
AMap.ToolBar
"
,
"
AMap.MapType
"
,
"
AMap.PlaceSearch
"
,
"
AMap.Geolocation
"
,
"
AMap.Geocoder
"
,
],
v
:
"
1.4.4
"
,
uiVersion
:
"
1.0
"
,
});
Vue
.
prototype
.
Global
=
Global
;
new
Vue
({
router
,
store
,
render
:
h
=>
h
(
App
)
}).
$mount
(
'
#app
'
)
render
:
(
h
)
=>
h
(
App
),
}).
$mount
(
"
#app
"
);
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
View file @
adcd440a
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
0 → 100644
View file @
adcd440a
<
template
>
<div
class=
"attend_page"
>
<div
class=
"left_box"
>
<h3>
分类管理
</h3>
<el-button
type=
"primary"
style=
"margin:20px 0"
@
click=
"addCate"
>
+ 新增分类
</el-button
>
<div
class=
"left_content"
>
<div
:class=
"index == i ? 'category_box check' : 'category_box'"
v-for=
"(val, i) in dataArr"
:key=
"i"
@
click=
"handleClick(val, i)"
>
<span>
{{
val
.
name
}}
</span>
<div>
<i
class=
"el-icon-edit-outline"
></i>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</div>
</div>
<div
class=
"right_box"
>
<h3>
规则管理
</h3>
<div
class=
"search_box"
>
<el-button
type=
"primary"
style=
"margin:20px 0"
@
click=
"addRules"
>
+ 新增规则
</el-button
>
<div
class=
"search"
>
<el-input
placeholder=
"请输入考核内容关键字搜索"
style=
"width: 300px;margin-right: 10px;"
></el-input>
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"table_box"
></div>
</div>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
import
drawerShow
from
"
../drawershow
"
;
import
dialogShow
from
"
../dialogshow
"
;
export
default
{
name
:
"
AdminAttendIndex
"
,
components
:
{
drawerShow
,
dialogShow
,
},
data
()
{
return
{
index
:
-
1
,
dataArr
:
[
{
name
:
"
工作纪律
"
,
},
],
};
},
mounted
()
{},
methods
:
{
handleClick
(
val
,
i
)
{
this
.
index
=
i
;
},
addRules
()
{
this
.
$refs
.
drawerform
.
add
();
},
addCate
()
{
this
.
$refs
.
dialogform
.
add
();
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.attend_page {
width: 100%;
height: 100%;
display: flex;
h3 {
border-width: 0px;
display: flex;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", "微软雅黑", sans-serif;
font-weight: 700;
font-style: normal;
}
.left_box {
width: 344px;
height: 735px;
background-color: rgba(242, 247, 249, 0.447058823529412);
border: none;
border-radius: 8px;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
padding: 20px;
.left_content {
width: 100%;
height: 600px;
overflow-y: auto;
.category_box {
display: flex;
justify-content: space-between;
align-items: center;
border-width: 0px;
width: 304px;
height: 48px;
background: inherit;
background: #ffffff;
border: none;
border-radius: 4px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #000;
text-align: left;
padding: 0 10px;
border: 1px solid #ddd;
&:hover {
background-color: rgba(22, 202, 122, 1);
color: #ffffff;
border: none;
}
i {
font-style: normal;
font-size: 18px;
margin: 0 5px;
cursor: pointer;
}
}
.check {
background-color: rgba(22, 202, 122, 1);
color: #ffffff;
border: none;
}
}
}
.right_box {
flex: 1;
padding: 20px;
.search_box {
width: 100%;
height: 60px;
display: flex;
justify-content: space-between;
align-items: center;
}
.table_box {
width: 100%;
height: 100%;
}
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/dialogshow.vue
0 → 100644
View file @
adcd440a
<
template
>
<!-- 弹出框表单 -->
<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=
"ruleId"
v-model=
"form.ruleId"
placeholder=
"请输入绩效规则id"
/>
<Field
label=
"规则简称"
prop=
"ruleBrief"
v-model=
"form.ruleBrief"
placeholder=
"请输入规则简称"
/>
<Field
label=
"分类名称"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入分类名称"
/>
<Field
label=
"规则类型"
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
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
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
绩效规则分类信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:
[
"
type
"
],
// 表单校验
rules
:
{},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改绩效规则分类信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/rules/category/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增绩效规则分类信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
绩效规则分类信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
ruleId
:
null
,
ruleBrief
:
""
,
name
:
""
,
type
:
1
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/drawershow.vue
View file @
adcd440a
<
template
>
<!-- 弹出框表单 -->
<el-drawer
:title=
"title"
:visible.sync=
"open"
:direction=
"direction"
size=
"50%"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-row>
<Field
:span=
"20"
label=
"分类"
prop=
"categoryId"
v-model=
"form.categoryId"
:enumData=
"dict.categoryId"
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"
>
<el-row>
<Field
:span=
"20"
label=
"分类"
prop=
"categoryId"
v-model=
"form.categoryId"
:enumData=
"dict.categoryId"
type=
"select"
placeholder=
"请选择分类"
/>
<Field
:span=
"20"
label=
"考核内容简称"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入考核内容简称"
/>
<Field
:span=
"20"
label=
"评分标准"
prop=
"content"
v-model=
"form.content"
type=
"textarea"
placeholder=
"请输入评分标准"
/>
<Field
:span=
"20"
label=
"增减类型"
prop=
"subAddType"
v-model=
"form.subAddType"
type=
"select"
:enumData=
"dict.subAddType"
placeholder=
"请选择增减类型"
/>
<Field
:span=
"20"
label=
"扣分"
prop=
"score"
v-model=
"form.score"
placeholder=
"请输入扣分或增加分值"
/>
<Field
:span=
"20"
label=
"关联负责人"
prop=
"assoOwner"
v-model=
"form.assoOwner"
type=
"radio"
:enumData=
"dict.assoOwner"
placeholder=
"请选择是否关联负责人"
/>
<Field
:span=
"20"
v-if=
"form.assoOwner==1"
label=
"负责人扣分"
prop=
"ownerScore"
v-model=
"form.ownerScore"
placeholder=
"请输入负责人扣分或增加分值"
/>
<Field
:span=
"20"
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
<Field
:span=
"20"
label=
"考核内容简称"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入考核内容简称"
/>
<Field
:span=
"20"
label=
"评分标准"
prop=
"content"
v-model=
"form.content"
type=
"textarea"
placeholder=
"请输入评分标准"
/>
<Field
:span=
"20"
label=
"增减类型"
prop=
"subAddType"
v-model=
"form.subAddType"
type=
"select"
:enumData=
"dict.subAddType"
placeholder=
"请选择增减类型"
/>
<Field
:span=
"20"
label=
"扣分"
prop=
"score"
v-model=
"form.score"
placeholder=
"请输入扣分或增加分值"
/>
<Field
:span=
"20"
label=
"关联负责人"
prop=
"assoOwner"
v-model=
"form.assoOwner"
type=
"radio"
:enumData=
"dict.assoOwner"
placeholder=
"请选择是否关联负责人"
/>
<Field
:span=
"20"
v-if=
"form.assoOwner == 1"
label=
"负责人扣分"
prop=
"ownerScore"
v-model=
"form.ownerScore"
placeholder=
"请输入负责人扣分或增加分值"
/>
<Field
:span=
"20"
label=
"备注"
prop=
"remark"
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入备注"
/>
</el-row>
</el-row>
<form-buttons
v-if=
"pageInfo.type!='view'"
@
submit=
'submitForm'
noCancelBtn
/>
</el-form
>
</el-drawer>
<form-buttons
v-if=
"pageInfo.type != 'view'"
@
submit=
"submitForm"
noCancelBtn
/
>
</el-form>
</el-drawer>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
PerformRulesDetail
"
,
mixins
:
[
form
],
components
:
{
},
created
()
{
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
绩效规则信息
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:[
"
subAddType
"
,
"
assoOwner
"
,
"
type
"
,
"
categoryId
"
],
toDate
:[
],
// 表单校验
rules
:
{
},
urls
:
{
currUrl
:
"
/perform/rules/list
"
,
editUrl
:
"
/perform/rules/edit
"
,
saveUrl
:
"
/perform/rules/save
"
,
},
};
},
import
form
from
"
@/assets/mixins/formdialog
"
;
export
default
{
name
:
"
PerformRulesDetail
"
,
mixins
:
[
form
],
components
:
{},
created
()
{},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
规则
"
,
// 是否显示弹出层
open
:
false
,
direction
:
"
rtl
"
,
toString
:
[
"
subAddType
"
,
"
assoOwner
"
,
"
type
"
,
"
categoryId
"
],
toDate
:
[],
// 表单校验
rules
:
{},
urls
:
{
currUrl
:
"
/perform/rules/list
"
,
editUrl
:
"
/perform/rules/edit
"
,
saveUrl
:
"
/perform/rules/save
"
,
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改绩效规则信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
perform/rules/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增绩效规则信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
绩效
规则信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
form
.
type
=
1
this
.
open
=
true
;
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改规则
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/rules/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增规则
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
规则信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
form
.
type
=
1
;
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
categoryId
:
null
,
categoryName
:
""
,
name
:
""
,
content
:
""
,
subAddType
:
1
,
score
:
0.0
0
,
assoOwner
:
0
,
ownerScore
:
0.0
0
,
remark
:
""
,
type
:
1
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
categoryId
:
null
,
categoryName
:
""
,
name
:
""
,
content
:
""
,
subAddType
:
1
,
score
:
0.
0
,
assoOwner
:
0
,
ownerScore
:
0.
0
,
remark
:
""
,
type
:
1
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list(原绩效规则).vue
0 → 100644
View file @
adcd440a
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformRulesList
"
,
components
:
{
drawerShow
,
},
mixins
:
[
table
],
created
()
{
console
.
log
(
"
route
"
,
this
.
$route
);
this
.
changePath
(
"
/perform/rules
"
);
this
.
query
=
Object
.
assign
({},
this
.
query
,
{
type
:
1
});
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
分类
"
,
prop
:
"
categoryId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考核名称
"
,
prop
:
"
name
"
},
{
label
:
"
评分标准
"
,
prop
:
"
content
"
},
{
label
:
"
增减类型
"
,
prop
:
"
subAddType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
分值
"
,
prop
:
"
score
"
},
{
label
:
"
负责人分值
"
,
prop
:
"
ownerScore
"
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
View file @
adcd440a
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
<div
class=
"page"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"考勤绩效指标"
name=
"1"
>
<attend-index
/>
</el-tab-pane>
<el-tab-pane
label=
"评价绩效指标"
name=
"2"
>
<attend-index
/>
</el-tab-pane>
<el-tab-pane
label=
"办件绩效指标"
name=
"3"
>
<attend-index
/>
</el-tab-pane>
<el-tab-pane
label=
"效能绩效指标"
name=
"4"
>
<attend-index
/>
</el-tab-pane>
<el-tab-pane
label=
"其他绩效指标"
name=
"5"
>
<attend-index
/>
</el-tab-pane>
</el-tabs>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformRulesList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
created
()
{
console
.
log
(
"
route
"
,
this
.
$route
)
this
.
changePath
(
"
/perform/rules
"
)
this
.
query
=
Object
.
assign
({},
this
.
query
,
{
type
:
1
});
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
分类
"
,
prop
:
"
categoryId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考核名称
"
,
prop
:
"
name
"
},
{
label
:
"
评分标准
"
,
prop
:
"
content
"
},
{
label
:
"
增减类型
"
,
prop
:
"
subAddType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
分值
"
,
prop
:
"
score
"
},
{
label
:
"
负责人分值
"
,
prop
:
"
ownerScore
"
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
import
AttendIndex
from
"
./components/AttendIndex.vue
"
;
export
default
{
name
:
"
PerformRulesList
"
,
components
:
{
AttendIndex
},
created
()
{},
methods
:
{
handleClick
(
tab
,
event
)
{
console
.
log
(
tab
,
event
);
},
},
data
()
{
return
{
activeName
:
"
1
"
,
};
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.page {
width: 100%;
height: 100%;
overflow: hidden;
/deep/.el-tabs__item {
width: 180px;
font-size: 18px;
text-align: center;
}
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/view.vue
View file @
adcd440a
<
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.categoryId}}
</el-descriptions-item>
<el-descriptions-item
label=
"分类名称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.categoryName}}
</el-descriptions-item>
<el-descriptions-item
label=
"考核内容简称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.name}}
</el-descriptions-item>
<el-descriptions-item
label=
"评分标准"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.content}}
</el-descriptions-item>
<el-descriptions-item
label=
"增减类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("subAddType", form.subAddType) }}
</el-descriptions-item>
<el-descriptions-item
label=
"扣分或增加分值"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.score}}
</el-descriptions-item>
<el-descriptions-item
label=
"是否关联负责人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("assoOwner", form.assoOwner) }}
</el-descriptions-item>
<el-descriptions-item
label=
"负责人扣分或增加分值"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{form.ownerScore}}
</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"
>
{{ util_formatters("type", form.type) }}
</el-descriptions-item>
</el-descriptions>
</layout-view>
<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.categoryId }}
</el-descriptions-item>
<el-descriptions-item
label=
"分类名称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.categoryName }}
</el-descriptions-item>
<el-descriptions-item
label=
"考核内容简称"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.name }}
</el-descriptions-item>
<el-descriptions-item
label=
"评分标准"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.content }}
</el-descriptions-item>
<el-descriptions-item
label=
"增减类型"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("subAddType", form.subAddType) }}
</el-descriptions-item>
<el-descriptions-item
label=
"扣分或增加分值"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.score }}
</el-descriptions-item>
<el-descriptions-item
label=
"是否关联负责人"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ util_formatters("assoOwner", form.assoOwner) }}
</el-descriptions-item>
<el-descriptions-item
label=
"负责人扣分或增加分值"
label-class-name=
"labelClass"
content-class-name=
"contentClass"
>
{{ form.ownerScore }}
</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"
>
{{ util_formatters("type", form.type) }}
</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
:[
"
subAddType
"
,
"
assoOwner
"
,
"
type
"
,
],
toArrays
:
[
],
toDate
:
[
]
}
}
}
import
view
from
"
@/assets/mixins/view
"
;
export
default
{
mixins
:
[
view
],
components
:
{},
methods
:
{},
data
()
{
return
{
size
:
"
small
"
,
column
:
2
,
toString
:
[
"
subAddType
"
,
"
assoOwner
"
,
"
type
"
],
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
>
\ No newline at end of file
.labelClass {
width: 200px;
}
.el-descriptions__body {
margin-left: 5px;
margin-right: 5px;
color: #606266;
background-color: #fff;
}
.contentClass {
width: 600px;
}
</
style
>
attendance-performance-manager-ui/admin/src/views/perform/rules/category/dialogshow.vue
View file @
adcd440a
<
template
>
<!-- 弹出框表单 -->
<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=
"ruleId"
v-model=
"form.ruleId"
placeholder=
"请输入绩效规则id"
/>
<Field
label=
"规则简称"
prop=
"ruleBrief"
v-model=
"form.ruleBrief"
placeholder=
"请输入规则简称"
/>
<Field
label=
"分类名称"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入分类名称"
/>
<Field
label=
"规则类型"
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
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
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 弹出框表单 -->
<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=
"ruleId"
v-model=
"form.ruleId"
placeholder=
"请输入绩效规则id"
/>
<Field
label=
"规则简称"
prop=
"ruleBrief"
v-model=
"form.ruleBrief"
placeholder=
"请输入规则简称"
/>
<Field
label=
"分类名称"
prop=
"name"
v-model=
"form.name"
placeholder=
"请输入分类名称"
/>
<Field
label=
"规则类型"
prop=
"type"
v-model=
"form.type"
type=
"select"
:enumData=
"dict.type"
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
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
绩效规则分类信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:[
"
type
"
,
],
// 表单校验
rules
:
{
}
};
},
import
form
from
"
@/assets/mixins/formdialog
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
mixins
:
[
form
],
components
:
{
dialogShow
,
},
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 弹出层标题
title
:
"
绩效规则分类信息
"
,
// 是否显示弹出层
open
:
false
,
toString
:
[
"
type
"
],
// 表单校验
rules
:
{},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
this
.
title
=
"
修改绩效规则分类信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
()
this
.
urls
.
currUrl
=
"
perform/rules/category/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
this
.
title
=
"
新增绩效规则分类信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
()
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
this
.
title
=
"
绩效规则分类信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改绩效规则分类信息
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/rules/category/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增绩效规则分类信息
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/rules/category/view
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
view
"
;
this
.
title
=
"
绩效规则分类信息详细
"
;
},
/**取消按钮 */
cancel
()
{
this
.
open
=
false
;
},
/**获取数据后弹框 */
afterRender
(
data
)
{
this
.
open
=
true
;
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
afterSubmit
(
data
)
{
this
.
open
=
false
;
this
.
$emit
(
"
ok
"
);
},
// 表单重置
reset
()
{
this
.
form
=
{
ruleId
:
null
,
ruleBrief
:
""
,
name
:
""
,
type
:
1
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
// 表单重置
reset
()
{
this
.
form
=
{
ruleId
:
null
,
ruleBrief
:
""
,
name
:
""
,
type
:
1
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/perform/rules/category/list.vue
View file @
adcd440a
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformRulesCategoryList
"
,
components
:
{
dialogShow
},
mixins
:
[
table
],
created
()
{
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
分类名称
"
,
prop
:
"
name
"
},
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformRulesCategoryList
"
,
components
:
{
dialogShow
,
},
mixins
:
[
table
],
created
()
{},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
dialogform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
dialogform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
分类名称
"
,
prop
:
"
name
"
},
{
label
:
"
规则类型
"
,
prop
:
"
type
"
,
formatter
:
this
.
formatter
},
{
label
:
"
规则类型
"
,
prop
:
"
type
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
{
label
:
"
创建用户
"
,
prop
:
"
createUserId
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
0 → 100644
View file @
adcd440a
<
template
>
<div>
<div
:id=
"id"
:style=
"styleObj"
></div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
title
:
{
type
:
String
,
default
:
""
,
},
id
:
{
type
:
String
,
default
:
""
,
},
legendName
:
{
type
:
String
,
default
:
""
,
},
styleObj
:
{
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{};
},
watch
:
{
title
(
val
)
{
console
.
log
(
val
);
},
},
mounted
()
{
this
.
drawLine
();
},
methods
:
{
drawLine
()
{
// 基于dom,初始化echarts实例
let
myChart
=
this
.
$echarts
.
init
(
document
.
getElementById
(
this
.
id
));
// 绘制图表
myChart
.
setOption
({
title
:
{
text
:
this
.
title
,
left
:
this
.
legendName
==
"
旷工率
"
?
"
center
"
:
"
left
"
,
textStyle
:
{
fontSize
:
this
.
legendName
==
"
旷工率
"
?
24
:
18
,
},
},
// legend: {
// orient: "horizontal",
// right: "10px",
// top: "0",
// itemWidth: 20,
// itemHeight: 10,
// icon: "roundRect",
// textStyle: {
// fontSize: "14px",
// color: "#000",
// },
// },
tooltip
:
{},
xAxis
:
{
data
:
[
"
部门1
"
,
"
部门2
"
,
"
部门3
"
,
"
部门4
"
,
"
部门5
"
,
"
部门6
"
],
},
grid
:
{
left
:
"
5%
"
,
right
:
"
4%
"
,
bottom
:
"
2%
"
,
containLabel
:
true
,
},
yAxis
:
{},
series
:
[
{
name
:
this
.
legendName
,
type
:
"
bar
"
,
data
:
[
5
,
20
,
36
,
10
,
10
,
20
],
itemStyle
:
{
lineStyle
:
{
type
:
"
dotted
"
,
//'dotted'虚线 'solid'实线
},
},
},
],
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/LineCharts.vue
0 → 100644
View file @
adcd440a
<
template
>
<div>
<div
:id=
"id"
:style=
"styleObj"
></div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
title
:
{
type
:
String
,
default
:
""
,
},
id
:
{
type
:
String
,
default
:
""
,
},
legendName
:
{
type
:
String
,
default
:
""
,
},
styleObj
:
{
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{};
},
watch
:
{
title
(
val
)
{
console
.
log
(
val
);
},
},
mounted
()
{
this
.
drawLine
();
},
methods
:
{
drawLine
()
{
// 基于dom,初始化echarts实例
let
myChart
=
this
.
$echarts
.
init
(
document
.
getElementById
(
this
.
id
));
// 绘制图表
myChart
.
setOption
({
title
:
{
text
:
this
.
title
},
legend
:
{
orient
:
"
horizontal
"
,
left
:
"
center
"
,
top
:
"
0
"
,
itemWidth
:
20
,
itemHeight
:
10
,
icon
:
"
roundRect
"
,
textStyle
:
{
fontSize
:
"
14px
"
,
color
:
"
#000
"
,
},
},
tooltip
:
{},
xAxis
:
{
type
:
"
category
"
,
data
:
[
"
部门1
"
,
"
部门2
"
,
"
部门3
"
,
"
部门4
"
,
"
部门5
"
,
"
部门6
"
],
},
grid
:
{
left
:
"
3%
"
,
right
:
"
4%
"
,
bottom
:
"
2%
"
,
containLabel
:
true
,
},
yAxis
:
{},
series
:
[
{
name
:
this
.
legendName
,
type
:
"
line
"
,
data
:
[
10
,
20
,
30
,
90
,
100
,
100
,
120
],
smooth
:
true
,
// itemStyle: {
// lineStyle: {
// type: "dotted", //'dotted'虚线 'solid'实线
// },
// },
},
],
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/PieCharts.vue
0 → 100644
View file @
adcd440a
<
template
>
<div>
<div
:id=
"id"
:style=
"styleObj"
></div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
title
:
{
type
:
String
,
default
:
""
,
},
id
:
{
type
:
String
,
default
:
""
,
},
legendName
:
{
type
:
String
,
default
:
""
,
},
styleObj
:
{
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{};
},
watch
:
{
title
(
val
)
{
console
.
log
(
val
);
},
},
mounted
()
{
this
.
drawLine
();
},
methods
:
{
drawLine
()
{
// 基于dom,初始化echarts实例
let
myChart
=
this
.
$echarts
.
init
(
document
.
getElementById
(
this
.
id
));
// 绘制图表
myChart
.
setOption
({
title
:
{
text
:
this
.
title
},
legend
:
{
orient
:
"
vertical
"
,
left
:
"
right
"
,
bottom
:
"
0
"
,
itemWidth
:
20
,
itemHeight
:
10
,
icon
:
"
roundRect
"
,
textStyle
:
{
fontSize
:
"
14px
"
,
color
:
"
#000
"
,
},
},
tooltip
:
{
trigger
:
"
item
"
,
},
grid
:
{
left
:
"
3%
"
,
right
:
"
4%
"
,
containLabel
:
true
,
},
series
:
[
{
name
:
this
.
legendName
,
type
:
"
pie
"
,
radius
:
"
65%
"
,
data
:
[
{
value
:
1048
,
name
:
"
部门1
"
},
{
value
:
735
,
name
:
"
部门2
"
},
{
value
:
580
,
name
:
"
部门3
"
},
{
value
:
484
,
name
:
"
部门4
"
},
{
value
:
300
,
name
:
"
部门5
"
},
],
emphasis
:
{
itemStyle
:
{
shadowBlur
:
10
,
shadowOffsetX
:
0
,
shadowColor
:
"
rgba(0, 0, 0, 0.5)
"
,
},
},
},
],
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list(原绩效目标).vue
0 → 100644
View file @
adcd440a
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
:config=
"tableConfig"
>
</LayoutTable>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
</div>
</
template
>
<
script
>
/** 表单弹出框模式需引入 */
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
StaffPerformStatList
"
,
components
:
{
drawerShow
},
mixins
:
[
table
],
created
()
{
},
methods
:
{
/** 重写新增方法 */
toAdd
(
row
)
{
this
.
$refs
.
drawerform
.
add
(
row
);
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
/** 重写查看方法 */
toView
(
row
)
{
this
.
$refs
.
drawerform
.
view
(
row
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
部门名称
"
,
prop
:
"
deptName
"
},
{
label
:
"
考勤绩效指标增加分数
"
,
prop
:
"
attendScoreAdd
"
,
formatter
:
this
.
formatter
},
{
label
:
"
考勤绩效指标扣减分数
"
,
prop
:
"
attendScoreSub
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效指标增加分数
"
,
prop
:
"
assessScoreAdd
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效指标扣减分数
"
,
prop
:
"
assessScoreSub
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效指标增加分数
"
,
prop
:
"
workScoreAdd
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效指标扣减分数
"
,
prop
:
"
workScoreSub
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效指标增加分数
"
,
prop
:
"
effectScoreAdd
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效指标扣减分数
"
,
prop
:
"
effectScoreSub
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效指标增加分数
"
,
prop
:
"
otherScoreAdd
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效指标扣减分数
"
,
prop
:
"
otherScoreSub
"
,
formatter
:
this
.
formatter
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
};
</
script
>
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
View file @
adcd440a
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/yarn.lock
View file @
adcd440a
...
...
@@ -3665,8 +3665,8 @@
"version" "1.1.3"
"echarts@^4.8.0", "echarts@^4.9.0", "echarts@>3.0.0":
"integrity" "sha
1-qbm6oD8Doqcx5jQMVb77V6nhNH0
="
"resolved" "https://registry.n
lark.com/echarts/download
/echarts-4.9.0.tgz"
"integrity" "sha
512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA=
="
"resolved" "https://registry.n
pmjs.org/echarts/-
/echarts-4.9.0.tgz"
"version" "4.9.0"
dependencies:
"zrender" "4.3.2"
...
...
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