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
dc4bc638
Commit
dc4bc638
authored
1 year ago
by
姬鋆屾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tui
parent
1d0db3ee
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
971 additions
and
459 deletions
+971
-459
attendance-performance-manager-ui/admin/.env.production
attendance-performance-manager-ui/admin/.env.production
+1
-1
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
...formance-manager-ui/admin/src/assets/mixins/formdialog.js
+7
-6
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
...e-performance-manager-ui/admin/src/assets/mixins/table.js
+291
-205
attendance-performance-manager-ui/admin/src/components/Table.vue
...nce-performance-manager-ui/admin/src/components/Table.vue
+85
-67
attendance-performance-manager-ui/admin/src/views/perform/perpose/list.vue
...mance-manager-ui/admin/src/views/perform/perpose/list.vue
+67
-58
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
...src/views/perform/rules/attend/components/AttendIndex.vue
+110
-11
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
...-manager-ui/admin/src/views/perform/rules/attend/list.vue
+7
-6
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
...min/src/views/staff/perform/stat/components/BarCharts.vue
+1
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
...ager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
+239
-0
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
...ce-manager-ui/admin/src/views/staff/perform/stat/list.vue
+58
-12
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
...manager-ui/admin/src/views/staff/perform/summary/list.vue
+103
-91
attendance-performance-manager-ui/admin/vue.config.js
attendance-performance-manager-ui/admin/vue.config.js
+2
-2
No files found.
attendance-performance-manager-ui/admin/.env.production
View file @
dc4bc638
...
...
@@ -2,7 +2,7 @@
NODE_ENV = production
# 地址
VUE_APP_
BASE_API =
VUE_APP_
API_BASE_URL =http://112.19.80.237:11039
# websocket地址
VUE_APP_WEBSOCKET_API =
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/assets/mixins/formdialog.js
View file @
dc4bc638
...
...
@@ -59,16 +59,17 @@ export default {
},
// 提交表单
submitForm
(
ref
)
{
console
.
log
(
123
);
return
;
let
url
=
this
.
urls
.
saveUrl
||
this
.
pageInfo
.
saveUrl
;
if
(
url
==
"
/staff/perform/stat/save
"
)
{
url
=
"
/perform/perpose/save
"
;
}
else
if
(
url
==
"
/perform/rules/attend/save
"
)
{
url
=
"
/perform/rules/category/save
"
;
}
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
)
)
this
.
$post
(
url
,
this
.
beforeSubmit
(
this
.
form
))
.
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
afterSubmit
(
res
);
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/assets/mixins/table.js
View file @
dc4bc638
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/components/Table.vue
View file @
dc4bc638
...
...
@@ -2,7 +2,12 @@
<
template
>
<div
class=
"layout-table"
:loading=
"data.loading"
>
<TabPane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
v-if=
"config.isshowTabPane"
></TabPane>
<TabPane
:thirdList=
"thirdList"
:activeName=
"activeName"
@
handleClick=
"handleClick"
v-if=
"config.isshowTabPane"
></TabPane>
<div
class=
"table-head flex flex-pack-justify"
>
<div
class=
"table-head-left flex flex-align-center"
>
<!--
<slot
name=
"breadcrumb"
>
...
...
@@ -10,28 +15,29 @@
</slot>
-->
<div
class=
"buttons"
>
<el-row>
<slot
name=
"table-head-left"
></slot>
<slot
name=
"table-head-center"
>
<el-button
v-if=
"isShowButton('notAdd')"
type=
"primary"
icon=
"el-icon-plus"
plain
size=
"mini"
@
click=
"config.methods.add"
title=
"新增"
>
新增
</el-button
>
<el-button
v-if=
"isShowBtn('import')"
size=
"mini"
plain
@
click=
"config.methods.importView"
class=
"el-icon-upload2"
title=
"导入"
>
导入
</el-button>
<slot
name=
"table-head-left"
></slot>
<slot
name=
"table-head-center"
>
<el-button
v-if=
"isShowButton('notAdd')"
type=
"primary"
icon=
"el-icon-plus"
plain
size=
"mini"
@
click=
"config.methods.add"
title=
"新增"
>
新增
</el-button
>
<el-button
v-if=
"isShowBtn('import')"
size=
"mini"
plain
@
click=
"config.methods.importView"
class=
"el-icon-upload2"
title=
"导入"
>
导入
</el-button
>
<!--
<el-button
<!--
<el-button
v-if=
"isShowButton('notDel')"
icon=
"el-icon-delete"
type=
"danger"
...
...
@@ -41,36 +47,47 @@
title=
"批量删除"
>
删除
</el-button
>
-->
<Confirm
v-if=
'isShowButton("notDel")'
@
confirm=
'config.methods.del'
message=
'确定要删除选中的多条记录吗?'
>
<el-button
icon=
"el-icon-delete"
type=
"danger"
size=
'mini'
plain
title=
"批量删除"
>
批量删除
</el-button>
</Confirm>
<el-button
@
click=
"item.method"
size=
"mini"
:key=
"item.label"
:icon=
"item.icon"
:type=
"item.type"
:loading=
"item.loading"
v-if=
"item.isShow"
v-for=
"item in config.buttons"
circle
:title=
"item.label"
></el-button>
<el-button
v-if=
"isShowBtn('back')"
@
click=
"config.methods.back"
size=
"mini"
icon=
"el-icon-back"
circle
title=
"返回"
></el-button>
</slot>
<slot
name=
"table-head-left2"
></slot>
<Confirm
v-if=
"isShowButton('notDel')"
@
confirm=
"config.methods.del"
message=
"确定要删除选中的多条记录吗?"
>
<el-button
icon=
"el-icon-delete"
type=
"danger"
size=
"mini"
plain
title=
"批量删除"
>
批量删除
</el-button
>
</Confirm>
<el-button
@
click=
"item.method"
size=
"mini"
:key=
"item.label"
:icon=
"item.icon"
:type=
"item.type"
:loading=
"item.loading"
v-if=
"item.isShow"
v-for=
"item in config.buttons"
circle
:title=
"item.label"
></el-button>
<el-button
v-if=
"isShowBtn('back')"
@
click=
"config.methods.back"
size=
"mini"
icon=
"el-icon-back"
circle
title=
"返回"
></el-button>
</slot>
<slot
name=
"table-head-left2"
></slot>
</el-row>
<el-row>
<slot
name=
"table-head-row2-left"
></slot>
</el-row>
<el-row>
<slot
name=
"table-head-row2-left"
></slot>
</el-row>
</div>
</div>
...
...
@@ -126,7 +143,6 @@
:downloadUrl=
"config.downloadUrl"
:areaSelect=
"config.areaSelect"
/>
</div>
</div>
</div>
...
...
@@ -220,7 +236,7 @@ import DataTable from "@/components/DataTable.vue";
import
DataTableMobile
from
"
./DataTableMobile.js
"
;
import
DataTableFlow
from
"
./DataTableFlow.vue
"
;
import
DataTreeTable
from
"
@/components/DataTreeTable.vue
"
;
import
TabPane
from
"
@/components/tabPane.vue
"
import
TabPane
from
"
@/components/tabPane.vue
"
;
export
default
{
props
:
{
data
:
{
...
...
@@ -242,7 +258,9 @@ export default {
DataTableMobile
,
DataTableFlow
,
DataTreeTable
,
TabPane
TabPane
,
},
mounted
()
{
},
methods
:
{
// 根据url的query参数判断是否展示查询条件
...
...
@@ -268,12 +286,12 @@ export default {
isShowBtn
(
name
)
{
return
this
.
canShow
.
indexOf
(
name
)
!==
-
1
;
},
handleClick
(
key
){
this
.
$store
.
commit
(
'
setThirdPath
'
,
key
)
this
.
$router
.
push
({
path
:
key
})
}
handleClick
(
key
)
{
this
.
$store
.
commit
(
"
setThirdPath
"
,
key
);
this
.
$router
.
push
({
path
:
key
,
});
}
,
},
watch
:
{
$route
(
route
)
{
...
...
@@ -288,21 +306,21 @@ export default {
this
.
showType
=
this
.
config
.
showType
?
this
.
config
.
showType
:
"
table
"
;
return
Object
.
keys
(
this
.
$attrs
)
||
[];
},
thirdList
(){
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[]
return
this
.
$store
.
state
.
CurrentThirdArr
thirdList
()
{
if
(
!
this
.
$store
.
state
.
CurrentThirdArr
)
return
[];
return
this
.
$store
.
state
.
CurrentThirdArr
;
},
activeName
()
{
return
this
.
$store
.
state
.
ThirdPath
;
},
activeName
(){
return
this
.
$store
.
state
.
ThirdPath
}
},
data
()
{
return
{
loading
:
this
.
config
.
loading
,
showSearch
:
this
.
isShowSearch
(
this
.
$route
.
query
),
showType
:
"
table
"
,
}
}
}
;
}
,
};
</
script
>
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/perform/perpose/list.vue
View file @
dc4bc638
<
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
:
"
PerformPerposeList
"
,
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
},
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
PerformPerposeList
"
,
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
:
"
ownerName
"
},
{
label
:
"
负责人名称
"
,
prop
:
"
ownerName
"
},
{
label
:
"
请假类型
"
,
prop
:
"
assessmentType
"
,
formatter
:
this
.
formatter
},
{
label
:
"
请假类型
"
,
prop
:
"
assessmentType
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
比例
"
,
prop
:
"
ratio
"
,
formatter
:
this
.
formatter
},
{
label
:
"
比例
"
,
prop
:
"
ratio
"
,
formatter
:
this
.
formatter
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
formatter
:
this
.
formatterDate
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
],
},
};
},
};
</
script
>
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/components/AttendIndex.vue
View file @
dc4bc638
...
...
@@ -14,8 +14,8 @@
>
<span>
{{
val
.
name
}}
</span>
<div>
<i
class=
"el-icon-edit-outline"
></i>
<i
class=
"el-icon-delete"
></i>
<i
class=
"el-icon-edit-outline"
@
click=
"toEdit(val)"
></i>
<i
class=
"el-icon-delete"
@
click=
"toDel(val)"
></i>
</div>
</div>
</div>
...
...
@@ -34,7 +34,16 @@
<el-button
type=
"primary"
>
搜索
</el-button>
</div>
</div>
<div
class=
"table_box"
></div>
<div
class=
"table_box"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
notSearch
:config=
"tableConfig"
>
</LayoutTable>
</div>
</div>
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
...
...
@@ -44,25 +53,71 @@
<
script
>
import
drawerShow
from
"
../drawershow
"
;
import
dialogShow
from
"
../dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
AdminAttendIndex
"
,
components
:
{
drawerShow
,
dialogShow
,
},
mixins
:
[
table
],
props
:
{
activeName
:
{
type
:
String
,
default
:
()
=>
""
,
},
},
data
()
{
return
{
index
:
-
1
,
dataArr
:
[
{
name
:
"
工作纪律
"
,
},
],
dataArr
:
[],
config
:
{
isshowTabPane
:
false
,
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
noView
row
=
{
row
}
onEdit
=
{
this
.
eddRules
}
onDel
=
{
this
.
toDelRules
}
/
>
);
},
},
],
},
};
},
mounted
()
{},
created
()
{
// this.getData();
},
methods
:
{
handleClick
(
val
,
i
)
{
...
...
@@ -71,9 +126,53 @@ export default {
addRules
()
{
this
.
$refs
.
drawerform
.
add
();
},
eddRules
(
row
)
{
this
.
$refs
.
drawerform
.
edit
(
row
);
},
addCate
()
{
this
.
$refs
.
dialogform
.
add
();
},
toDelRules
(
val
)
{
console
.
log
(
val
);
this
.
$get
(
"
/perform/rules/delete
"
,
{
id
:
val
}).
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
getKaoQin
();
});
},
/** 重写编辑方法 */
toEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
toDel
(
val
)
{
this
.
$get
(
"
/perform/rules/category/delete
"
,
{
id
:
val
.
id
}).
then
(
(
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
getData
();
}
);
},
async
getData
()
{
await
this
.
$post
(
"
/perform/rules/category/list
"
).
then
((
res
)
=>
{
this
.
getKaoQin
();
if
(
res
.
code
==
1
)
{
this
.
dataArr
=
res
.
data
.
data
;
}
else
{
this
.
dataArr
=
[];
}
});
},
async
getKaoQin
()
{
await
this
.
$post
(
"
/perform/rules/list
"
,
{
type
:
this
.
activeName
}).
then
(
(
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
tableData
=
res
.
data
;
this
.
$forceUpdate
(
this
.
tableData
);
}
else
{
this
.
tableData
=
{};
}
}
);
},
},
};
</
script
>
...
...
@@ -133,7 +232,7 @@ export default {
text-align: left;
padding: 0 10px;
border: 1px solid #ddd;
margin-bottom: 20px;
&:hover {
background-color: rgba(22, 202, 122, 1);
color: #ffffff;
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/perform/rules/attend/list.vue
View file @
dc4bc638
...
...
@@ -2,19 +2,19 @@
<div
class=
"page"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"考勤绩效指标"
name=
"1"
>
<attend-index
/>
<attend-index
v-if=
"activeName == 1"
:activeName=
"activeName"
/>
</el-tab-pane>
<el-tab-pane
label=
"评价绩效指标"
name=
"2"
>
<attend-index
/>
<attend-index
v-if=
"activeName == 2"
:activeName=
"activeName"
/>
</el-tab-pane>
<el-tab-pane
label=
"办件绩效指标"
name=
"3"
>
<attend-index
/>
<attend-index
v-if=
"activeName == 3"
:activeName=
"activeName"
/>
</el-tab-pane>
<el-tab-pane
label=
"效能绩效指标"
name=
"4"
>
<attend-index
/>
<attend-index
v-if=
"activeName == 4"
:activeName=
"activeName"
/>
</el-tab-pane>
<el-tab-pane
label=
"其他绩效指标"
name=
"5"
>
<attend-index
/>
<attend-index
v-if=
"activeName == 5"
:activeName=
"activeName"
/>
</el-tab-pane>
</el-tabs>
</div>
...
...
@@ -28,7 +28,8 @@ export default {
created
()
{},
methods
:
{
handleClick
(
tab
,
event
)
{
console
.
log
(
tab
,
event
);
// this.$forceUpdate(this.activeName);
},
},
data
()
{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/components/BarCharts.vue
View file @
dc4bc638
...
...
@@ -30,6 +30,7 @@ export default {
watch
:
{
title
(
val
)
{
console
.
log
(
val
);
this
.
drawLine
();
},
},
mounted
()
{
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/dialogshow.vue
0 → 100644
View file @
dc4bc638
<
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=
"ownerId"
v-model=
"form.ownerId"
placeholder=
"请输入负责人id号"
/>
<Field
label=
"负责人名称"
prop=
"ownerName"
v-model=
"form.ownerName"
placeholder=
"请输入负责人名称"
/>
<Field
label=
"窗口工作人员id号"
prop=
"staffId"
v-model=
"form.staffId"
placeholder=
"请输入窗口工作人员id号"
/>
<Field
label=
"请假类型"
prop=
"assessmentType"
v-model=
"form.assessmentType"
type=
"select"
:enumData=
"dict.assessmentType"
placeholder=
"请选择请假类型"
/>
<Field
label=
"考核范围"
prop=
"assessmentScope"
v-model=
"form.assessmentScope"
type=
"select"
:enumData=
"dict.assessmentScope"
placeholder=
"请选择考核范围"
/>
<Field
label=
"考比较类型"
prop=
"compareScope"
v-model=
"form.compareScope"
type=
"select"
:enumData=
"dict.compareScope"
placeholder=
"请选择考比较类型"
/>
<Field
label=
"比例"
prop=
"ratio"
v-model=
"form.ratio"
placeholder=
"请输入比例"
/>
<Field
label=
"周期类型"
prop=
"periodType"
v-model=
"form.periodType"
type=
"select"
:enumData=
"dict.periodType"
placeholder=
"请选择周期类型"
/>
<Field
label=
"年"
prop=
"year"
v-model=
"form.year"
placeholder=
"请输入年"
/>
<Field
label=
"月"
prop=
"month"
v-model=
"form.month"
type=
"select"
:enumData=
"dict.month"
placeholder=
"请选择月"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"半年类型"
prop=
"halfYear"
v-model=
"form.halfYear"
type=
"select"
:enumData=
"dict.halfYear"
placeholder=
"请选择半年类型"
/>
<Field
label=
"季度类型"
prop=
"quarter"
v-model=
"form.quarter"
type=
"select"
:enumData=
"dict.quarter"
placeholder=
"请选择季度类型"
/>
<Field
label=
"负责人,多个逗号分割"
prop=
"leaders"
v-model=
"form.leaders"
type=
"textarea"
placeholder=
"请输入负责人,多个逗号分割"
/>
<Field
label=
"负责人电话,多个逗号分割"
prop=
"leaderMobiles"
v-model=
"form.leaderMobiles"
type=
"textarea"
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
:
[
"
assessmentType
"
,
"
assessmentScope
"
,
"
compareScope
"
,
"
periodType
"
,
"
month
"
,
"
halfYear
"
,
"
halfYear
"
,
"
quarter
"
,
],
// 表单校验
rules
:
{
year
:
[{
required
:
true
,
message
:
"
请输入年
"
,
trigger
:
"
blur
"
}],
month
:
[{
required
:
true
,
message
:
"
请输入月
"
,
trigger
:
"
blur
"
}],
},
};
},
methods
:
{
/** 编辑 */
edit
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/perpose/edit
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
edit
"
;
this
.
title
=
"
修改考核目标
"
;
},
/** 新增 */
add
(
row
)
{
this
.
reset
();
this
.
urls
.
currUrl
=
"
perform/perpose/add
"
;
this
.
getData
();
this
.
pageInfo
.
type
=
"
add
"
;
this
.
title
=
"
新增考核目标
"
;
},
/** 查看*/
view
(
row
)
{
this
.
reset
();
this
.
query
=
{
id
:
row
.
id
};
this
.
urls
.
currUrl
=
"
perform/perpose/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
=
{
ownerId
:
null
,
ownerName
:
""
,
staffId
:
null
,
assessmentType
:
null
,
assessmentScope
:
1
,
compareScope
:
1
,
ratio
:
0.0
,
periodType
:
1
,
year
:
null
,
month
:
null
,
halfYear
:
1
,
halfYear
:
1
,
quarter
:
1
,
leaders
:
""
,
leaderMobiles
:
""
,
remark
:
""
,
};
this
.
resetForm
(
"
form
"
);
},
resetForm
(
refName
)
{
if
(
this
.
$refs
[
refName
])
{
this
.
$refs
[
refName
].
resetFields
();
}
},
},
};
</
script
>
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/perform/stat/list.vue
View file @
dc4bc638
...
...
@@ -83,7 +83,7 @@
</el-option>
</el-select>
<el-select
v-model=
"
v
alue"
v-model=
"
dateV
alue"
placeholder=
"请选择"
style=
"margin: 0 10px;"
>
...
...
@@ -100,7 +100,9 @@
</div>
<div
class=
"bar_content"
>
<bar-charts
:title=
"'各部门1月旷工率对齐情况'"
:title=
"
`$
{type == 1 ? '各部门' : '个人'}${dateValue}月旷工率对齐情况`
"
:id="'bar_content'"
:legendName="'旷工率'"
:styleObj="{ width: '1800px', height: '650px' }"
...
...
@@ -115,12 +117,12 @@
<el-radio-button
label=
"1"
>
按部门
</el-radio-button>
<el-radio-button
label=
"2"
>
按个人
</el-radio-button>
</el-radio-group>
<el-button
type=
"primary"
style=
"margin: 0 20px;"
>
<el-button
type=
"primary"
style=
"margin: 0 20px;"
@
click=
"addGoal"
>
+ 创建目标
</el-button
>
</div>
<div
class=
"mid_content"
>
<div
class=
"goal_box"
>
<div
class=
"goal_box"
v-for=
"(val, i) in dataList"
:key=
"i"
>
<div
class=
"goal_title"
>
<img
src=
"../../../../assets/images/u17641.svg"
alt=
""
/>
<span>
...
...
@@ -128,21 +130,34 @@
</span>
</div>
<p
class=
"goal_txt"
>
<span>
目标部门:
</span><span>
全部部门
</span>
<span>
{{
type
==
1
?
"
目标部门:
"
:
"
目标个人:
"
}}
</span
><span>
{{
type
==
1
?
"
全部部门
"
:
"
张三、李四、王武、陈真
"
}}
</span>
</p>
<p
class=
"goal_txt"
><span>
周期:
</span><span>
全部部门
</span></p>
<p
class=
"goal_txt"
><span>
负责人:
</span><span>
全部部门
</span></p>
<p
class=
"goal_txt"
>
<span>
最近更新:
</span><span>
全部部门
</span>
<span>
周期:
</span><span>
2023年/全年
</span>
</p>
<p
class=
"goal_txt"
>
<span>
更新人员:
</span><span>
全部部门
</span>
<span>
负责人:
</span><span>
张三、李四、王武
</span>
</p>
<p
class=
"goal_txt"
>
<span>
最近更新:
</span><span>
2023-05-11 10:00:00
</span>
</p>
<p
class=
"goal_txt"
><span>
更新人员:
</span><span>
言若海
</span></p>
<div
class=
"button_box"
>
<el-button
type=
"primary"
style=
"width: 150px;"
plain
<el-button
type=
"primary"
style=
"width: 150px;"
plain
@
click=
"hanleEdit(val)"
>
编辑
</el-button
>
<el-button
type=
"danger"
style=
"width: 150px;"
plain
<el-button
type=
"danger"
style=
"width: 150px;"
plain
@
click=
"hanleDel(val)"
>
删除
</el-button
>
</div>
...
...
@@ -151,6 +166,7 @@
</div>
</el-tab-pane>
</el-tabs>
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
</div>
</
template
>
...
...
@@ -158,24 +174,53 @@
import
BarCharts
from
"
./components/BarCharts.vue
"
;
import
LineCharts
from
"
./components/LineCharts.vue
"
;
import
PieCharts
from
"
./components/PieCharts.vue
"
;
import
dialogShow
from
"
./dialogshow
"
;
export
default
{
components
:
{
BarCharts
,
PieCharts
,
LineCharts
,
dialogShow
,
},
name
:
"
StaffPerformStatList
"
,
created
()
{},
created
()
{
this
.
getData
();
},
methods
:
{
handleClick
(
tab
,
event
)
{
console
.
log
(
tab
,
event
);
},
addGoal
()
{
this
.
$refs
.
dialogform
.
add
();
},
/** 编辑方法 */
hanleEdit
(
row
)
{
this
.
$refs
.
dialogform
.
edit
(
row
);
},
hanleDel
(
val
)
{
this
.
$get
(
"
/perform/perpose/delete
"
,
{
id
:
val
.
id
}).
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
msg
);
this
.
getData
();
});
},
getData
()
{
this
.
$post
(
"
/perform/perpose/list
"
).
then
((
res
)
=>
{
console
.
log
(
res
);
if
(
res
.
code
==
1
)
{
this
.
dataList
=
res
.
data
.
data
;
}
else
{
this
.
dataList
=
[];
}
});
},
},
data
()
{
return
{
activeName
:
"
1
"
,
type
:
"
1
"
,
dateValue
:
"
1
"
,
options
:
[
{
value
:
"
1
"
,
...
...
@@ -269,6 +314,7 @@ export default {
},
],
value
:
""
,
dataList
:
[],
};
},
};
...
...
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
View file @
dc4bc638
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
:config=
"tableConfig"
>
</LayoutTable>
<div
class=
"page"
>
<LayoutTable
:data=
"tableData"
notAdd
notDel
: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
:
"
StaffPerformSummaryList
"
,
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
);
/** 表单弹出框模式需引入 */
import
dialogShow
from
"
./dialogshow
"
;
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
name
:
"
StaffPerformSummaryList
"
,
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
:
[
{
name
:
"
createTimeStart
"
,
type
:
"
date
"
,
label
:
"
月份
"
,
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
所属部门
"
,
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
,
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
考勤绩效
"
,
prop
:
"
attendScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效
"
,
prop
:
"
assessScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效
"
,
prop
:
"
workScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效
"
,
prop
:
"
effectScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效
"
,
prop
:
"
otherScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
累计异常分数
"
,
prop
:
"
errorScore
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
本月得分数
"
,
prop
:
"
totalScore
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
(
row
)
=>
{
return
(
<
table
-
buttons
noAdd
noEdit
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
},
},
data
()
{
return
{
config
:
{
isshowTabPane
:
true
,
search
:
[
{
name
:
"
createTimeStart
"
,
type
:
"
date
"
,
label
:
"
月份
"
},
{
name
:
"
deptId
"
,
type
:
"
select
"
,
label
:
"
所属部门
"
},
{
name
:
"
staffName
"
,
type
:
"
text
"
,
label
:
"
员工姓名
"
},
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
50
},
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
},
{
label
:
"
考勤绩效
"
,
prop
:
"
attendScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
评价绩效
"
,
prop
:
"
assessScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
办件绩效
"
,
prop
:
"
workScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
效能绩效
"
,
prop
:
"
effectScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
其它绩效
"
,
prop
:
"
otherScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
累计异常分数
"
,
prop
:
"
errorScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
本月得分数
"
,
prop
:
"
totalScore
"
,
formatter
:
this
.
formatter
},
{
label
:
"
操作
"
,
width
:
240
,
formatter
:
row
=>
{
return
(
<
table
-
buttons
noAdd
noEdit
noDel
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
onView
=
{
this
.
toView
}
onDel
=
{
this
.
toDel
}
/
>
);
}
}
]
}
};
}
},
],
},
};
},
};
</
script
>
This diff is collapsed.
Click to expand it.
attendance-performance-manager-ui/admin/vue.config.js
View file @
dc4bc638
...
...
@@ -17,8 +17,8 @@ module.exports = {
hot
:
true
,
//自动保存
proxy
:
{
'
/attendance
'
:
{
//
target: 'http://192.168.0.98:11039',
target
:
'
http://localhost:17500
'
,
target
:
'
http://192.168.0.98:11039
'
,
//
target: 'http://localhost:17500',
changeOrigin
:
true
,
secure
:
false
,
cookieDomainRewrite
:
'
localhost
'
,
...
...
This diff is collapsed.
Click to expand it.
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