Commit fe10e3db authored by 黄奎's avatar 黄奎

新增页面

parent 253b230d
......@@ -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
......@@ -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
});
}
}
}
......
......@@ -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) {
......
<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
<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;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主要优点:{{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
......@@ -1451,6 +1451,11 @@ const routes = [{
component: () =>
import("pages/teacher/jobEvaluation")
},
{
path: "/teacher/teacherAssessment", //教师考核详情
component: () =>
import("pages/teacher/teacherAssessment")
},
{
path: "/exam/examPaper", //试卷管理
component: () =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment