Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
confucius
Commits
fe10e3db
Commit
fe10e3db
authored
Apr 15, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增页面
parent
253b230d
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
386 additions
and
45 deletions
+386
-45
index.js
src/api/teacher/index.js
+12
-0
appraisalList.vue
src/pages/teacher/appraisalList.vue
+10
-3
assessmentType.vue
src/pages/teacher/assessmentType.vue
+7
-6
jobEvaluation.vue
src/pages/teacher/jobEvaluation.vue
+93
-36
teacherAssessment.vue
src/pages/teacher/teacherAssessment.vue
+259
-0
routes.js
src/router/routes.js
+5
-0
No files found.
src/api/teacher/index.js
View file @
fe10e3db
...
...
@@ -567,4 +567,16 @@ export function setTeacherAssessmentInfo(data) {
method
:
'post'
,
data
})
}
/**
* 根据编号获取老师考核数据信息
* @param {*} data
*/
export
function
getTeacherAssessmentById
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/GetTeacherAssessmentDetail'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/pages/teacher/appraisalList.vue
View file @
fe10e3db
...
...
@@ -26,12 +26,12 @@
<div
class=
"col-2 q-table__title"
>
教师月度考核列表
</div>
<q-space
/>
<div
class=
"page-option"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"
新增
"
@
click=
"goAssessTable()"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
icon=
"add"
label=
"
考核
"
@
click=
"goAssessTable()"
/>
</div>
</
template
>
<
template
v-slot:body-cell-OptionId=
"props"
>
<q-td
:props=
"props"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"详情"
/>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
@
click=
"gotoDetail(props.row)"
label=
"详情"
/>
</q-td>
</
template
>
<
template
v-slot:bottom
>
...
...
@@ -150,9 +150,16 @@
}
this
.
getTeacherAssessmentPage
();
},
//跳转考核
表
//跳转考核
新增修改页面
goAssessTable
()
{
this
.
OpenNewUrl
(
'/teacher/jobEvaluation'
,
{});
},
//跳转到考核详情页面
gotoDetail
(
item
)
{
console
.
log
(
"item"
,
item
);
this
.
OpenNewUrl
(
'/teacher/teacherAssessment'
,
{
Id
:
item
.
Id
});
}
}
}
...
...
src/pages/teacher/assessmentType.vue
View file @
fe10e3db
...
...
@@ -9,7 +9,7 @@
<div
class=
"page-body"
>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
"
name
"
class=
"sticky-header-column-table"
>
:columns=
"columns"
row-key=
"
index
"
class=
"sticky-header-column-table"
>
<template
v-slot:top
>
<div
class=
"col-2 q-table__title"
>
考评项配置列表
</div>
<q-space
/>
...
...
@@ -29,16 +29,16 @@
<
template
v-slot:body=
"props"
>
<template
:props=
"props"
v-for=
"(col,cIndex) in props.row.SubtypeList"
>
<template
v-if=
"cIndex==0"
>
<q-tr
:key=
"cIndex
"
>
<q-tr
:key=
"cIndex+(props.rowIndex*10000)
"
>
<q-td
key=
"TypeName"
:props=
"props"
:rowspan=
"props.row.SubtypeList.length"
class=
"assessmentType_td"
>
{{
props
.
row
.
TypeName
}}
{{
props
.
row
.
TypeName
}}
</q-td>
<q-td
class=
"assessmentType_td"
>
{{
props
.
row
.
SubtypeList
[
cIndex
].
SubTypeName
}}
</q-td>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<q-td
:key=
"subIndex"
class=
"assessmentType_td"
>
<q-td
:key=
"subIndex
+200000
"
class=
"assessmentType_td"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
>
{{
subItem
.
LevelScore
}}
分
</q-badge>
...
...
@@ -55,12 +55,12 @@
</q-tr>
</template>
<
template
v-else
>
<q-tr
:key=
"cIndex"
>
<q-tr
:key=
"cIndex
+(props.rowIndex*1000000)
"
>
<q-td
class=
"assessmentType_td"
>
{{
props
.
row
.
SubtypeList
[
cIndex
].
SubTypeName
}}
</q-td>
<template
v-for=
"(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"
>
<q-td
:key=
"subIndex"
class=
"assessmentType_td"
>
<q-td
:key=
"subIndex
+400000
"
class=
"assessmentType_td"
>
<div
style=
"width:150px;white-space:normal; "
>
{{
subItem
.
LevelDesc
}}
<q-badge
color=
"green"
>
{{
subItem
.
LevelScore
}}
分
</q-badge>
...
...
@@ -111,6 +111,7 @@
methods
:
{
getAssessmentTypeList
()
{
this
.
loading
=
true
;
this
.
columns
=
[];
queryAssessmentTypeList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
...
...
src/pages/teacher/jobEvaluation.vue
View file @
fe10e3db
<
style
scoped
>
.jobTable
{
width
:
100%
;
text-align
:
center
;
}
.jobTable
tr
td
{
height
:
40px
;
color
:
#000
;
border
:
1px
solid
#d1d1d1
;
}
.jobTable
tr
th
{
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"TId"
option-label=
"TeacherName"
v-model=
"chooseTeacher"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"老师"
dense
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
<div
class=
"col-3 jobEvaluationDate q-mr-lg"
>
<q-field
filled
stack-label
dense
label=
"考核月份"
>
<template
v-slot:control
>
<el-date-picker
v-model=
"teacherDate"
value-format=
"yyyy-MM"
size=
"mini"
type=
"month"
placeholder=
"选择年月"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div
class=
"col-3"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:7px;"
@
click=
"saveTeacherAssessment"
label=
"保存"
/>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"saveObj.TeacherAccountId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"老师"
dense
class=
"col-3 q-pr-lg q-pb-lg"
emit-value
map-options
@
input=
"getInfo"
/>
</div>
<div
class=
"col-3"
v-if=
"teacherDate&&saveObj.TeacherAccountId!=''&&saveObj.TeacherAccountId>0"
>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"saveTeacherAssessment"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<div
class=
"page-content"
v-if=
"teacherDate&&saveObj.TeacherAccountId!=''&&saveObj.TeacherAccountId>0"
>
<table
class=
"jobTable"
style=
"border-collapse:collapse;"
>
<tbody
v-for=
"(item,index) in saveObj.DetailsList"
:key=
"index"
>
<tr>
...
...
@@ -62,8 +53,8 @@
</template>
<
script
>
import
{
getTeacherDropDownList
}
from
"../../api/
school/index
"
;
queryEmployee
}
from
"../../api/
users/user
"
;
import
{
queryTeacherAssessmentInfo
,
setTeacherAssessmentInfo
,
...
...
@@ -75,25 +66,32 @@
components
:
{},
data
()
{
return
{
chooseTeacher
:
''
,
TeacherList
:
[],
//关联教师下拉数据
teacherDate
:
""
,
//考核月份
saveObj
:
{
Id
:
0
,
//主键编号
YearStr
:
0
,
//年份
MonthStr
:
0
,
//月份
TeacherAccountId
:
0
,
//教师账号表编号
TeacherAccountId
:
""
,
//教师账号表编号
TeacherScore
:
0
,
//教学主管打分
JiaoWuScore
:
0
,
//教务主管打分
TotalScore
:
0
,
//总分
DetailsList
:
[],
}
CheckType
:
0
,
//1-教学主管,2-教务主管
},
isAuth
:
false
,
//是否有权限
saveLoading
:
false
,
}
},
created
()
{
let
today
=
new
Date
();
var
yearStr
=
today
.
getFullYear
().
toString
();
var
monthStr
=
(
today
.
getMonth
()
+
1
).
toString
();
this
.
teacherDate
=
yearStr
+
'-'
+
monthStr
;
this
.
GetTeacherList
();
},
mounted
()
{
this
.
getInfo
();
},
methods
:
{
changeStatus
(
subItem
,
optionItem
)
{
...
...
@@ -111,31 +109,67 @@
},
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
var
qMsg
=
{
IsLeave
:
1
,
AccountTypeStr
:
2
,
QDeptIds
:
"8,14"
};
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
}
});
},
//获取教师考核数据
getInfo
()
{
if
(
this
.
teacherDate
)
{
this
.
saveObj
.
YearStr
=
this
.
teacherDate
.
split
(
'-'
)[
0
];
this
.
saveObj
.
MonthStr
=
this
.
teacherDate
.
split
(
'-'
)[
1
];
}
var
qMsg
=
{
TeacherAccountId
:
this
.
saveObj
.
TeacherAccountId
TeacherAccountId
:
this
.
saveObj
.
TeacherAccountId
,
YearStr
:
this
.
saveObj
.
YearStr
,
MonthStr
:
this
.
saveObj
.
MonthStr
,
};
queryTeacherAssessmentInfo
(
qMsg
).
then
(
res
=>
{
console
.
log
(
"info"
,
res
)
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
this
.
saveObj
.
DetailsList
=
tempData
.
DetailsList
console
.
log
(
"tempData"
,
tempData
);
if
(
tempData
.
CheckType
>
0
)
{
this
.
isAuth
=
true
;
}
this
.
saveObj
.
Id
=
tempData
.
Id
;
this
.
saveObj
.
YearStr
=
tempData
.
YearStr
;
this
.
saveObj
.
MonthStr
=
tempData
.
MonthStr
;
this
.
saveObj
.
TeacherAccountId
=
tempData
.
TeacherAccountId
;
this
.
saveObj
.
TeacherScore
=
tempData
.
TeacherScore
;
this
.
saveObj
.
JiaoWuScore
=
tempData
.
JiaoWuScore
;
this
.
saveObj
.
TotalScore
=
tempData
.
TotalScore
;
this
.
saveObj
.
CheckType
=
tempData
.
CheckType
;
this
.
saveObj
.
DetailsList
=
tempData
.
DetailsList
;
}
})
},
//保存老师考核信息
saveTeacherAssessment
()
{
if
(
this
.
teacherDate
)
{
this
.
saveObj
.
YearStr
=
this
.
teacherDate
.
split
(
'-'
)[
0
];
this
.
saveObj
.
MonthStr
=
this
.
teacherDate
.
split
(
'-'
)[
1
];
}
this
.
saveLoading
=
true
;
setTeacherAssessmentInfo
(
this
.
saveObj
).
then
(
res
=>
{
console
.
log
(
"res"
,
res
);
this
.
saveLoading
=
false
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
}
}).
catch
(()
=>
{
this
.
saveLoading
=
false
})
}
}
...
...
@@ -143,4 +177,27 @@
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
<
style
scoped
>
.jobTable
{
width
:
100%
;
text-align
:
center
;
}
.jobTable
tr
td
{
height
:
40px
;
color
:
#000
;
border
:
1px
solid
#d1d1d1
;
}
.jobTable
tr
th
{
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
}
.jobEvaluationDate
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
height
:
28px
!important
;
}
</
style
>
\ No newline at end of file
src/pages/teacher/teacherAssessment.vue
0 → 100644
View file @
fe10e3db
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
filled
stack-label
dense
v-model=
"teacherDate"
label=
"月份"
disable
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"EmployeeName"
disable
v-model=
"saveObj.TeacherAccountId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"老师"
dense
class=
"col-3 q-pr-lg q-pb-lg"
emit-value
map-options
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<table
class=
"jobTable"
style=
"border-collapse:collapse;"
>
<tbody
v-for=
"(item,index) in saveObj.DetailsList"
:key=
"index"
>
<tr>
<th
width=
"150"
>
类别
</th>
<th
width=
"150"
>
内容
</th>
<th
v-for=
"(sItem,tindex) in item.SubtypeList[0].OptionList"
:key=
"tindex"
>
<div>
{{
sItem
.
LevelTitle
}}
</div>
<div>
{{
sItem
.
LevelScore
}}
分
</div>
</th>
<th
width=
"100"
>
教学主管考核
</th>
<th
width=
"100"
>
教务主管考核
</th>
</tr>
<tr>
<td
:rowspan=
"item.SubtypeList.length+1"
>
{{
item
.
TypeName
}}
</td>
</tr>
<tr
v-for=
"(sItem,sIndex) in item.SubtypeList"
:key=
"sIndex"
>
<td>
{{
sItem
.
SubTypeName
}}
</td>
<td
v-for=
"(cItem,cIndex) in sItem.OptionList"
style=
"position:relative;"
:key=
"cIndex"
>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"cItem.LevelDesc"
placement=
"top-start"
>
<i
style=
"position:absolute;left:3px;top:3px;"
class=
"iconfont icon-bangzhu"
></i>
</el-tooltip>
<q-checkbox
v-model=
"cItem.IsCheck"
disable
val=
"teal"
color=
"green"
/>
</td>
<td>
{{
sItem
.
S_TeacherScore
}}
</td>
<td>
{{
sItem
.
S_JiaoWuScore
}}
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td
colspan=
"2"
>
教学主管考核得分
</td>
<td
colspan=
"2"
>
{{
saveObj
.
TeacherScore
}}
</td>
<td
colspan=
"2"
>
教务主管考核得分
</td>
<td
colspan=
"3"
>
{{
saveObj
.
JiaoWuScore
}}
</td>
</tr>
<tr>
<td
colspan=
"2"
>
最终考核得分总计
<br
/>
得分=(教学主管考核*30%+教务主管考核*70%)
</td>
<td>
{{
saveObj
.
TotalScore
}}
</td>
<td>
教学负责人:
</td>
<td>
{{
saveObj
.
S_JiaoXue_CreateByName
}}
</td>
<td>
{{
saveObj
.
S_JiaoXue_Time
}}
</td>
<td>
教务负责人:
</td>
<td>
{{
saveObj
.
S_JiaoWu_CreateByName
}}
</td>
<td>
{{
saveObj
.
S_JiaoWu_Time
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
注:以下由部门考核者填写
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
1、该员工的综合工作表现如何?
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
{{
saveObj
.
Behavior
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
2、主要缺点:
{{
saveObj
.
Advantage
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
主要优点:
{{
saveObj
.
ShortComing
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
3、该员工发展潜力如何?
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
{{
saveObj
.
Potential
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
人力资源部审核:
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
校长审批:
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:center;padding-left:5px;"
>
绩效考核结果沟通
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
注:以下由被考核者填写
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
1、您的上级怎样帮助你,将使你未来的工作绩效更高?
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
{{
saveObj
.
Help
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
2、对公司的发展有什么建议?
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
{{
saveObj
.
Suggest
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
3、其他意见:
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
{{
saveObj
.
Other
}}
</td>
</tr>
<tr>
<td
colspan=
"9"
style=
"text-align:left;padding-left:5px;"
>
签字/日期:
{{
saveObj
.
TeacherSignDate
}}
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</
template
>
<
script
>
import
{
queryEmployee
}
from
"../../api/users/user"
;
import
{
getTeacherAssessmentById
,
setTeacherAssessmentInfo
,
}
from
"../../api/teacher/index"
;
export
default
{
meta
:
{
title
:
"中教每月工作考核详情"
},
components
:
{},
data
()
{
return
{
TeacherList
:
[],
//关联教师下拉数据
teacherDate
:
""
,
//考核月份
saveObj
:
{},
msg
:
{
Id
:
0
},
isAuth
:
false
,
//是否有权限
saveLoading
:
false
,
}
},
created
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Id
)
{
this
.
msg
.
Id
=
this
.
$route
.
query
.
Id
}
this
.
GetTeacherList
();
},
mounted
()
{
this
.
getInfo
();
},
methods
:
{
//获取教师下拉
GetTeacherList
()
{
var
qMsg
=
{
IsLeave
:
1
,
AccountTypeStr
:
2
,
QDeptIds
:
"8,14"
};
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
}
});
},
//获取教师考核数据
getInfo
()
{
getTeacherAssessmentById
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
this
.
saveObj
=
tempData
;
}
})
},
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
<
style
scoped
>
.jobTable
{
width
:
100%
;
text-align
:
center
;
}
.jobTable
tr
td
{
height
:
40px
;
color
:
#000
;
border
:
1px
solid
#d1d1d1
;
}
.jobTable
tr
th
{
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
}
</
style
>
\ No newline at end of file
src/router/routes.js
View file @
fe10e3db
...
...
@@ -1451,6 +1451,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/teacher/jobEvaluation"
)
},
{
path
:
"/teacher/teacherAssessment"
,
//教师考核详情
component
:
()
=>
import
(
"pages/teacher/teacherAssessment"
)
},
{
path
:
"/exam/examPaper"
,
//试卷管理
component
:
()
=>
...
...
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