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
aecb238c
Commit
aecb238c
authored
Apr 08, 2022
by
liudong1993
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
3d581899
86ff8ab8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1082 additions
and
29 deletions
+1082
-29
App.vue
src/App.vue
+1
-1
index.js
src/api/teacher/index.js
+77
-0
assess-form.vue
src/components/teacher/assess-form.vue
+189
-0
appraisalList.vue
src/pages/teacher/appraisalList.vue
+167
-0
assessmentType.vue
src/pages/teacher/assessmentType.vue
+103
-8
dayStatic.vue
src/pages/teacher/dayStatic.vue
+51
-20
jobEvaluation.vue
src/pages/teacher/jobEvaluation.vue
+113
-0
teacherMonth.vue
src/pages/teacher/teacherMonth.vue
+366
-0
routes.js
src/router/routes.js
+15
-0
No files found.
src/App.vue
View file @
aecb238c
...
...
@@ -25,7 +25,7 @@ export default {
</
script
>
<
style
>
@import
url("//at.alicdn.com/t/font_2077629_
leh9uxv84r
.css")
;
@import
url("//at.alicdn.com/t/font_2077629_
9ty53q1g2bo
.css")
;
@font-face
{
font-family
:
"din"
;
src
:
url("./assets/font/DIN-Bold.otf")
format
(
"opentype"
);
...
...
src/api/teacher/index.js
View file @
aecb238c
...
...
@@ -398,6 +398,19 @@ export function GetTeacherDay(data) {
})
}
/**
* 教师月度汇总
* @param {*} data
*/
export
function
GetTeacherMonthStatic
(
data
)
{
return
request
({
url
:
'/TeacherStatic/GetTeacherMonthStatic'
,
method
:
'post'
,
data
})
}
/**
* 获取教师端每月统计
* @param {*} data
...
...
@@ -458,6 +471,70 @@ export function queryAssessmentTypeList(data) {
})
}
/**
* 获取配置数据
* @param {*} data
*/
export
function
GetAssessmentType
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/GetAssessmentType'
,
method
:
'post'
,
data
})
}
/**
* 保存配置数据
* @param {*} data
*/
export
function
SetAssessmentType
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/SetAssessmentType'
,
method
:
'post'
,
data
})
}
/**
* 删除列表数据
* @param {*} data
*/
export
function
RemoveAssessmentType
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/RemoveAssessmentType'
,
method
:
'post'
,
data
})
}
/**
* 删除子类数据
* @param {*} data
*/
export
function
RemoveAssessmentSubtype
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/RemoveAssessmentSubtype'
,
method
:
'post'
,
data
})
}
/**
* 获取列表数据
* @param {*} data
*/
export
function
GetAssessmentTypeList
(
data
)
{
return
request
({
url
:
'/TeacherAssessment/GetAssessmentTypeList'
,
method
:
'post'
,
data
})
}
src/components/teacher/assess-form.vue
0 → 100644
View file @
aecb238c
<
style
scoped
>
.wenjuan_Shuru
{
position
:
relative
;
}
.SurverDel
{
position
:
absolute
;
right
:
-5px
;
top
:
-5px
;
}
.childConfig
{
border
:
1px
dashed
#d1d1d1
;
padding
:
20px
;
margin-bottom
:
20px
;
position
:
relative
;
}
.SubChild
{
position
:
absolute
;
right
:
0
;
top
:
0
;
}
</
style
>
<
template
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 600px;max-width:600px;"
>
<q-card-section>
<div
class=
"text-h6"
>
{{
addMsg
.
Id
==
0
?
'新增配置'
:
'修改配置'
}}
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"row wrap"
>
<div
class=
"col-12 q-pb-lg"
>
<q-input
filled
v-model=
"addMsg.TypeName"
ref=
"TypeName"
label=
"标题"
></q-input>
</div>
<div
class=
"q-pb-lg"
>
<q-btn
size=
"10px"
@
click=
"addChild()"
round
color=
"primary"
icon=
"iconfont icon-img_haha"
/>
</div>
</div>
<div
v-for=
"(item,index) in addMsg.SubtypeList"
class=
"row wrap childConfig"
>
<q-btn
size=
"10px"
@
click=
"delChild(item,index)"
class=
"SubChild"
round
color=
"red"
icon=
"iconfont icon-guanbi1"
/>
<div
class=
"col-12 q-pr-lg q-pb-lg"
>
<q-input
filled
v-model=
"item.SubTypeName"
ref=
"SubTypeName"
label=
"标题"
></q-input>
</div>
<div
class=
"q-pb-lg"
>
<q-btn
size=
"10px"
@
click=
"addSun(index)"
round
color=
"primary"
icon=
"iconfont icon-img_haha"
/>
</div>
<div
class=
"row wrap"
style=
"position:relative;"
v-for=
"(subItem,subIndex) in item.OptionList"
>
<div
class=
"col-4 q-pr-lg q-pb-lg"
>
<q-input
filled
v-model=
"subItem.LevelTitle"
dense
ref=
"SubTypeName"
label=
"标题"
></q-input>
</div>
<div
class=
"col-4 q-pr-lg q-pb-lg"
>
<q-input
filled
v-model=
"subItem.LevelDesc"
dense
ref=
"LevelDesc"
label=
"描述"
></q-input>
</div>
<div
class=
"col-4 q-pr-lg q-pb-lg"
>
<q-input
filled
v-model=
"subItem.LevelScore"
dense
ref=
"LevelScore"
label=
"分数"
></q-input>
</div>
<q-btn
size=
"5px"
@
click=
"delSun(index,subIndex)"
class=
"SubChild"
round
color=
"red"
icon=
"iconfont icon-guanbi1"
/>
</div>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"立即提交"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
:loading=
"saveLoading"
@
click=
"saveConfig"
/>
</q-card-actions>
</q-card>
</q-dialog>
</
template
>
<
script
>
import
{
SetAssessmentType
,
GetAssessmentType
,
RemoveAssessmentSubtype
}
from
'../../api/teacher/index'
;
export
default
{
props
:
{
saveObj
:
{
type
:
Object
,
default
:
null
}
},
data
()
{
return
{
persistent
:
true
,
addMsg
:
{
Id
:
0
,
TypeName
:
"基本素质"
,
SubtypeList
:
[]
},
saveLoading
:
false
,
}
},
mounted
()
{
this
.
initObj
()
},
methods
:
{
//初始化表单
initObj
()
{
if
(
this
.
saveObj
&&
this
.
saveObj
.
Id
>
0
)
{
let
obj
=
{
Id
:
this
.
saveObj
.
Id
}
GetAssessmentType
(
obj
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
addMsg
=
res
.
Data
;
}
})
}
else
{
this
.
addMsg
.
Id
=
0
;
this
.
addMsg
.
TypeName
=
''
;
this
.
addMsg
.
SubtypeList
=
[];
}
},
//关闭弹窗
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
//新增子类
addChild
()
{
let
obj
=
{
Id
:
0
,
SubTypeName
:
""
,
OptionList
:
[]
};
this
.
addMsg
.
SubtypeList
.
push
(
obj
);
},
//新增孙类
addSun
(
index
)
{
let
obj
=
{
LevelTitle
:
""
,
LevelDesc
:
""
,
LevelScore
:
''
};
this
.
addMsg
.
SubtypeList
[
index
].
OptionList
.
push
(
obj
);
},
//保存数据
saveConfig
()
{
this
.
saveLoading
=
true
;
SetAssessmentType
(
this
.
addMsg
).
then
(
res
=>
{
this
.
saveLoading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
this
.
$emit
(
'success'
);
this
.
$emit
(
'close'
);
}
})
},
//删除子类
delChild
(
obj
,
index
)
{
console
.
log
(
obj
,
'obj'
);
if
(
obj
.
Id
>
0
)
{
let
msg
=
{
Id
:
obj
.
Id
}
RemoveAssessmentSubtype
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据删除成功!'
,
position
:
'top'
})
this
.
addMsg
.
SubtypeList
.
splice
(
index
,
1
);
}
})
}
},
//删除孙类
delSun
(
index1
,
index2
)
{
this
.
addMsg
.
SubtypeList
[
index1
].
OptionList
.
splice
(
index2
,
1
);
}
}
}
</
script
>
src/pages/teacher/appraisalList.vue
0 → 100644
View file @
aecb238c
<
style
>
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top
>
<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()"
/>
</div>
</
template
>
<
template
v-slot:body=
"props"
>
<q-tr
:props=
"props"
>
<template
v-for=
"(col,cIndex) in props.cols"
>
<q-td
v-if=
"col.name == 'TypeName'"
:key=
"cIndex"
>
{{
col
.
value
}}
</q-td>
<q-td
v-else-if=
"col.name == 'SubtypeList'"
:key=
"cIndex"
>
<div
v-for=
"(item,sIndex) in col.value"
:key=
"sIndex"
>
<div
class=
"border-bottom"
>
{{
item
.
SubTypeName
}}
</div>
</div>
</q-td>
<q-td
style=
"width:100px;"
v-else-if=
"col.name == 'Id'"
:key=
"cIndex"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"AddMsg(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"delete"
color=
"negative"
class=
"q-mr-xs"
label=
"删除"
@
click=
"delConsult(props.row.Id)"
/>
</q-td>
</
template
>
</q-tr>
</template>
<
template
v-slot:bottom
></
template
>
</q-table>
</div>
<assess-form
v-if=
"isShowAssess"
:save-obj=
"objOption"
@
close=
"getClose()"
@
success=
"getRefresh"
></assess-form>
</div>
</template>
<
script
>
import
{
queryAssessmentTypeList
,
RemoveAssessmentType
}
from
'../../api/teacher/index'
;
import
assessForm
from
'../../components/teacher/assess-form'
export
default
{
meta
:
{
title
:
"教师考评配置"
},
components
:
{
assessForm
},
data
()
{
return
{
loading
:
false
,
msg
:
{
rowsPerPage
:
1000
,
},
columns
:
[{
name
:
"TypeName"
,
label
:
"类别"
,
field
:
"TypeName"
,
align
:
"left"
},
{
name
:
"SubtypeList"
,
label
:
"内容"
,
field
:
"SubtypeList"
,
align
:
"left"
},
{
name
:
'Id'
,
label
:
'操作'
,
field
:
row
=>
row
.
Id
}
],
dataList
:
[],
objOption
:
null
,
isShowAssess
:
false
}
},
created
()
{
},
mounted
()
{
this
.
getAssessmentTypeList
()
},
methods
:
{
getAssessmentTypeList
()
{
this
.
loading
=
true
;
queryAssessmentTypeList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
console
.
log
(
"res"
,
res
);
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
},
//新增修改
AddMsg
(
obj
)
{
if
(
obj
)
{
this
.
objOption
=
obj
}
else
{
this
.
objOption
=
null
}
this
.
isShowAssess
=
true
;
},
getClose
()
{
this
.
isShowAssess
=
false
;
},
getRefresh
()
{
this
.
getAssessmentTypeList
();
},
//删除数据
delConsult
(
Id
)
{
let
that
=
this
;
this
.
$q
.
dialog
({
title
:
"提示"
,
message
:
'是否删除该配置?'
,
cancel
:
{
label
:
"取消"
,
flat
:
true
},
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
}
}).
onOk
(()
=>
{
let
msg
=
{
Id
:
Id
}
RemoveAssessmentType
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
that
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据删除成功!'
,
position
:
'top'
})
that
.
getAssessmentTypeList
();
}
})
});
},
//跳转考核表
goAssessTable
(){
this
.
OpenNewUrl
(
'/teacher/jobEvaluation'
,
{
});
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/teacher/assessmentType.vue
View file @
aecb238c
<
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
>
<
template
>
...
...
@@ -8,7 +22,7 @@
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
<
!--
<
q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
"name"
>
<template
v-slot:top
>
...
...
@@ -29,7 +43,7 @@
</div>
</div>
</q-td>
<q-td
v-else-if=
"col.name == 'Id'"
:key=
"cIndex"
>
<q-td
style=
"width:100px;"
v-else-if=
"col.name == 'Id'"
:key=
"cIndex"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"AddMsg(props.row)"
/>
<q-btn
flat
size=
"xs"
icon=
"delete"
color=
"negative"
class=
"q-mr-xs"
label=
"删除"
...
...
@@ -38,23 +52,52 @@
</
template
>
</q-tr>
</template>
<
template
v-slot:bottom
></
template
>
</q-table>
</q-table>
-->
<table
class=
"jobTable"
style=
"border-collapse:collapse;"
>
<tbody
v-for=
"(item,index) in dataList"
:key=
"index"
>
<tr>
<th
width=
"150"
>
类别
</th>
<th
width=
"150"
>
内容
</th>
<th
v-for=
"(T,tindex) in item.SubtypeList[0].OptionList"
>
<div>
{{T.LevelTitle}}
</div>
<div>
{{T.LevelScore}}
</div>
</th>
<th
width=
"200"
>
操作
</th>
</tr>
<tr>
<td
:rowspan=
"item.SubtypeList.length+1"
>
{{item.TypeName}}
</td>
</tr>
<tr
v-for=
"(sItem,sIndex) in item.SubtypeList"
>
<td>
{{sItem.SubTypeName}}
</td>
<td
v-for=
"(cItem,cIndex) in sItem.OptionList"
style=
"text-align:left;padding:10px;"
>
{{cItem.LevelDesc}}
</td>
<td
v-if=
"sIndex==0"
:rowspan=
"item.SubtypeList.length"
>
<q-btn
flat
size=
"xs"
icon=
"edit"
color=
"accent"
style=
"font-weight:400"
label=
"编辑"
@
click=
"AddMsg(item)"
/>
<q-btn
flat
size=
"xs"
icon=
"delete"
color=
"negative"
class=
"q-mr-xs"
label=
"删除"
@
click=
"delConsult(item.Id)"
/>
</td>
</tr>
</tbody>
</table>
</div>
<assess-form
v-if=
"isShowAssess"
:save-obj=
"objOption"
@
close=
"getClose()"
@
success=
"getRefresh"
></assess-form>
</div>
</template>
<
script
>
import
{
queryAssessmentTypeList
,
RemoveAssessmentType
}
from
'../../api/teacher/index'
;
import
assessForm
from
'../../components/teacher/assess-form'
export
default
{
meta
:
{
title
:
"教师考评配置"
},
components
:
{
assessForm
},
data
()
{
return
{
...
...
@@ -81,6 +124,8 @@
}
],
dataList
:
[],
objOption
:
null
,
isShowAssess
:
false
}
},
created
()
{
...
...
@@ -99,10 +144,60 @@
this
.
dataList
=
res
.
Data
;
}
})
},
//新增修改
AddMsg
(
obj
)
{
if
(
obj
)
{
this
.
objOption
=
obj
}
else
{
this
.
objOption
=
null
}
this
.
isShowAssess
=
true
;
},
getClose
()
{
this
.
isShowAssess
=
false
;
},
getRefresh
()
{
this
.
getAssessmentTypeList
();
},
//删除数据
delConsult
(
Id
)
{
let
that
=
this
;
this
.
$q
.
dialog
({
title
:
"提示"
,
message
:
'是否删除该配置?'
,
cancel
:
{
label
:
"取消"
,
flat
:
true
},
ok
:
{
label
:
"确认"
,
flat
:
true
,
focus
:
true
}
}).
onOk
(()
=>
{
let
msg
=
{
Id
:
Id
}
RemoveAssessmentType
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
that
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据删除成功!'
,
position
:
'top'
})
that
.
getAssessmentTypeList
();
}
})
});
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
</
style
>
src/pages/teacher/dayStatic.vue
View file @
aecb238c
...
...
@@ -27,9 +27,14 @@
</q-field>
</div>
<div
class=
"col-2"
>
<q-select
filled
dense
stack-label
@
input=
"getList"
option-value=
"TId"
@
filter=
"filterTeacherFn"
use-input
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"教师"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
<q-select
filled
dense
stack-label
@
input=
"GetTeacherList(),getList()"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.DeptId"
ref=
"Teacher_Id"
:options=
"deptList"
label=
"语种"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
</div>
<div
class=
"col-2"
>
<q-select
filled
dense
stack-label
@
input=
"getList"
option-value=
"TId"
@
filter=
"filterTeacherFn"
use-input
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
ref=
"Teacher_Id"
:options=
"TeacherList"
label=
"教师"
clearable
class=
"col-6 q-pr-lg q-pb-lg"
emit-value
map-options
/>
</div>
</div>
<div
style=
"float:right;"
>
...
...
@@ -64,42 +69,50 @@
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='老师迟到早退'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#FF66CC;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#FF66CC;color:#000;"
>
老师
<br
/>
迟到早退
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N5课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N5
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N4课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N4
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N3课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#E2EFDA;color:#000;"
>
N3
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N2课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N2
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='N1课程时数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:60px;text-align:center;background-color:#B4C6E7;color:#000;"
>
N1
<br
/>
课程时数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题次数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题次数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='学生小程序刷题时间'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:75px;text-align:center;background-color:#B4C6E7;color:#000;"
>
学生小程序
<br
/>
刷题时间
</q-th>
</
template
>
...
...
@@ -109,17 +122,20 @@
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='所有老师平均分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
所有老师
<br
/>
平均分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='总分数'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
总分数
</q-th>
</
template
>
<
template
v-else-if=
"col.label=='分数差距'"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
<q-th
:key=
"col.name"
:props=
"props"
style=
"max-width:70px;text-align:center;background-color:#FFC000;color:#000;"
>
分数差距
</q-th>
</
template
>
...
...
@@ -302,12 +318,22 @@
msg
:
{
YearStr
:
''
,
MonthStr
:
''
,
TeacherId
:
''
,
rowsPerPage
:
0
TeacherId
:
''
,
rowsPerPage
:
0
,
DeptId
:
8
,
},
teacher
:
0
,
AllTeacherList
:[],
TeacherList
:[]
//教师数据
deptList
:
[{
Id
:
8
,
Name
:
"日语"
},
{
Id
:
14
,
Name
:
"韩语"
},
],
teacher
:
0
,
AllTeacherList
:
[],
TeacherList
:
[]
//教师数据
}
},
created
()
{
...
...
@@ -326,7 +352,12 @@
methods
:
{
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
this
.
msg
.
TeacherId
=
""
;
var
qMsg
=
{
NotQueryTIds
:
"5,10,15,20"
,
Dept_Id
:
this
.
msg
.
DeptId
,
}
getTeacherDropDownList
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
this
.
AllTeacherList
=
res
.
Data
;
...
...
src/pages/teacher/jobEvaluation.vue
0 → 100644
View file @
aecb238c
<
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>
</div>
</div>
<div
class=
"page-content"
>
<table
class=
"jobTable"
style=
"border-collapse:collapse;"
>
<tbody
v-for=
"(item,index) in dataList"
:key=
"index"
>
<tr>
<th
width=
"150"
>
类别
</th>
<th
width=
"150"
>
内容
</th>
<th
v-for=
"(T,tindex) in item.SubtypeList[0].OptionList"
>
<div>
{{
T
.
LevelTitle
}}
</div>
<div>
{{
T
.
LevelScore
}}
</div>
</th>
<th
width=
"200"
>
考核
</th>
</tr>
<tr>
<td
:rowspan=
"item.SubtypeList.length+1"
>
{{
item
.
TypeName
}}
</td>
</tr>
<tr
v-for=
"(sItem,sIndex) in item.SubtypeList"
>
<td>
{{
sItem
.
SubTypeName
}}
</td>
<td
v-for=
"(cItem,cIndex) in sItem.OptionList"
style=
"position:relative;"
>
<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=
"selection"
val=
"teal"
color=
"green"
/>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
</
template
>
<
script
>
import
{
getTeacherDropDownList
}
from
"../../api/school/index"
;
import
{
GetAssessmentTypeList
}
from
"../../api/teacher/index"
;
export
default
{
meta
:
{
title
:
"中教每月工作考核表"
},
components
:
{},
data
()
{
return
{
dataList
:
[],
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
},
chooseTeacher
:
''
,
TeacherList
:
[],
//关联教师下拉数据
selection
:
''
}
},
created
()
{},
mounted
()
{
this
.
GetTeacherList
();
this
.
getList
();
},
methods
:
{
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
TeacherList
=
res
.
Data
;
}
});
},
getList
()
{
GetAssessmentTypeList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/teacher/teacherMonth.vue
0 → 100644
View file @
aecb238c
This diff is collapsed.
Click to expand it.
src/router/routes.js
View file @
aecb238c
...
...
@@ -1421,6 +1421,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/teacher/dayStatic"
)
},
{
path
:
"/teacher/teacherMonth"
,
//教师月度统计排名
component
:
()
=>
import
(
"pages/teacher/teacherMonth"
)
},
{
path
:
"/teacher/monthStatic"
,
//教师月度统计
component
:
()
=>
...
...
@@ -1436,6 +1441,16 @@ const routes = [{
component
:
()
=>
import
(
"pages/teacher/assessmentType"
)
},
{
path
:
"/teacher/appraisalList"
,
//考评列表
component
:
()
=>
import
(
"pages/teacher/appraisalList"
)
},
{
path
:
"/teacher/jobEvaluation"
,
//每月工作考评表
component
:
()
=>
import
(
"pages/teacher/jobEvaluation"
)
},
{
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