```
feat(kpiFilling): 完善KPI自评分数计算逻辑并新增功能模块 - 移除自评分数100分上限限制,直接显示实际计算分数 - 添加Number转换和空值处理,避免NaN错误 - 根据班级类型区分毕业班和非毕业班业务工作字段计算 - 新增加分项分数计算功能 - 新增就业指导工作分数计算(仅毕业班) - 在审核列表中添加加分项和就业指导工作组件 - 修复就业指导工作组件仅在毕业班显示的条件判断 ```
This commit is contained in:
@@ -115,7 +115,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="自评分数" align="center" prop="selfScoring">
|
||||
<template slot-scope="scope">
|
||||
{{ handleSelfScoring(scope.row) > 100 ? 100 : handleSelfScoring(scope.row) }}
|
||||
{{ handleSelfScoring(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="最终评级" align="center" prop="finalRating">
|
||||
@@ -485,33 +485,64 @@ export default {
|
||||
},
|
||||
handleSelfScoring(row, text) {
|
||||
let scoring = 0
|
||||
const isGraduate = row.classType === 'graduate'
|
||||
// 学生管理分数
|
||||
row.kpiFillingStuMgtList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.cadreScoring
|
||||
scoring += element.classScoring
|
||||
scoring += element.stuActivityScoring
|
||||
scoring += element.stuTalkScoring
|
||||
scoring += element.visitDormitoryScoring
|
||||
scoring += Number(element.cadreScoring) || 0
|
||||
scoring += Number(element.classScoring) || 0
|
||||
scoring += Number(element.stuActivityScoring) || 0
|
||||
scoring += Number(element.stuTalkScoring) || 0
|
||||
scoring += Number(element.visitDormitoryScoring) || 0
|
||||
scoring += Number(element.noticeScoring) || 0
|
||||
scoring += Number(element.edgScoring) || 0
|
||||
}
|
||||
})
|
||||
// 业务工作分数
|
||||
// 业务工作分数 - 非毕业班和毕业班字段名不同
|
||||
row.kpiFillingBusinessWorksList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.stuLeaveMaterialsScoring
|
||||
scoring += element.stuFillingMaterialsScoring
|
||||
scoring += element.stuBasicDataScoring
|
||||
scoring += element.stuDisciplinaryViolationScoring
|
||||
scoring += element.handleEventsScoring
|
||||
if (isGraduate) {
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
scoring += Number(element.otherTaskScoring) || 0
|
||||
} else {
|
||||
scoring += Number(element.stuLeaveRequestScoring) || 0
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
}
|
||||
}
|
||||
})
|
||||
// 考勤管理分数
|
||||
row.kpiFillingAMgtList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.dutyWorkScoring
|
||||
scoring += element.conferenceScoring
|
||||
scoring += Number(element.dutyWorkScoring) || 0
|
||||
scoring += Number(element.conferenceScoring) || 0
|
||||
}
|
||||
})
|
||||
// 加分项分数
|
||||
if (row.kpiFillingBonusPointsList) {
|
||||
row.kpiFillingBonusPointsList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.bonusScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
// 就业指导工作分数 - 仅毕业班(graduate)计算
|
||||
if (isGraduate && row.kpiFillingGraduationGuidanceList) {
|
||||
row.kpiFillingGraduationGuidanceList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.gradFormAuditScoring) || 0
|
||||
scoring += Number(element.stuCareerConsultScoring) || 0
|
||||
scoring += Number(element.gradFormGuidanceScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
if (text === '最终评级') {
|
||||
if (scoring >= 80) {
|
||||
return 'A'
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="自评分数" align="center" prop="selfScoring">
|
||||
<template slot-scope="scope">
|
||||
{{ handleSelfScoring(scope.row) > 100 ? 100 : handleSelfScoring(scope.row) }}
|
||||
{{ handleSelfScoring(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="最终评级" align="center" prop="finalRating">
|
||||
@@ -364,33 +364,64 @@ export default {
|
||||
},
|
||||
handleSelfScoring(row, text) {
|
||||
let scoring = 0
|
||||
const isGraduate = row.classType === 'graduate'
|
||||
// 学生管理分数
|
||||
row.kpiFillingStuMgtList.forEach(element => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.cadreScoring
|
||||
scoring += element.classScoring
|
||||
scoring += element.stuActivityScoring
|
||||
scoring += element.stuTalkScoring
|
||||
scoring += element.visitDormitoryScoring
|
||||
scoring += Number(element.cadreScoring) || 0
|
||||
scoring += Number(element.classScoring) || 0
|
||||
scoring += Number(element.stuActivityScoring) || 0
|
||||
scoring += Number(element.stuTalkScoring) || 0
|
||||
scoring += Number(element.visitDormitoryScoring) || 0
|
||||
scoring += Number(element.noticeScoring) || 0
|
||||
scoring += Number(element.edgScoring) || 0
|
||||
}
|
||||
})
|
||||
// 业务工作分数
|
||||
// 业务工作分数 - 非毕业班和毕业班字段名不同
|
||||
row.kpiFillingBusinessWorksList.forEach(element => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.stuLeaveMaterialsScoring
|
||||
scoring += element.stuFillingMaterialsScoring
|
||||
scoring += element.stuBasicDataScoring
|
||||
scoring += element.stuDisciplinaryViolationScoring
|
||||
scoring += element.handleEventsScoring
|
||||
if (isGraduate) {
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
scoring += Number(element.otherTaskScoring) || 0
|
||||
} else {
|
||||
scoring += Number(element.stuLeaveRequestScoring) || 0
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
}
|
||||
}
|
||||
})
|
||||
// 考勤管理分数
|
||||
row.kpiFillingAMgtList.forEach(element => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.dutyWorkScoring
|
||||
scoring += element.conferenceScoring
|
||||
scoring += Number(element.dutyWorkScoring) || 0
|
||||
scoring += Number(element.conferenceScoring) || 0
|
||||
}
|
||||
})
|
||||
// 加分项分数
|
||||
if (row.kpiFillingBonusPointsList) {
|
||||
row.kpiFillingBonusPointsList.forEach(element => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.bonusScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
// 就业指导工作分数 - 仅毕业班(graduate)计算
|
||||
if (isGraduate && row.kpiFillingGraduationGuidanceList) {
|
||||
row.kpiFillingGraduationGuidanceList.forEach(element => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.gradFormAuditScoring) || 0
|
||||
scoring += Number(element.stuCareerConsultScoring) || 0
|
||||
scoring += Number(element.gradFormGuidanceScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
if (text === '最终评级') {
|
||||
if (scoring >= 80) {
|
||||
return 'A'
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="自评分数" align="center" prop="selfScoring">
|
||||
<template slot-scope="scope">
|
||||
{{ handleSelfScoring(scope.row) > 100 ? 100 : handleSelfScoring(scope.row) }}
|
||||
{{ handleSelfScoring(scope.row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="最终评级" align="center" prop="finalRating">
|
||||
@@ -184,8 +184,11 @@
|
||||
<!-- 选项卡 -->
|
||||
<el-tabs type="border-card" style="margin-top: 20px;">
|
||||
<el-tab-pane v-for="item in componentList" :key="item.name" :label="item.name">
|
||||
<div class="componentList">
|
||||
<component :is="item.value" :form="form" style="padding: 10px" />
|
||||
<div v-if="item.value === 'graduationGuidance' && form.classType === 'graduate'" class="componentList">
|
||||
<component :is="item.value" :form="form" :roleGroup="roleGroup" :audit="isExamineFdy(form)" style="padding: 10px" />
|
||||
</div>
|
||||
<div v-else-if="item.value !== 'graduationGuidance'" class="componentList">
|
||||
<component :is="item.value" :form="form" :roleGroup="roleGroup" :audit="isExamineFdy(form)" style="padding: 10px" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
@@ -250,6 +253,8 @@ import attendanceManagement from '../components/attendanceManagement.vue'
|
||||
import negativeList from '../components/negativeList.vue'
|
||||
// 超工作量奖励绩效
|
||||
import rewardsKpi from '../components/rewardsKpi.vue'
|
||||
import bonusPoints from '../components/bonusPoints.vue'
|
||||
import graduationGuidance from '../components/graduationGuidance.vue'
|
||||
// 处理学生突发事件
|
||||
import stuEmergency from '../components/stuEmergency.vue'
|
||||
// 进度条
|
||||
@@ -272,6 +277,8 @@ export default {
|
||||
attendanceManagement,
|
||||
negativeList,
|
||||
rewardsKpi,
|
||||
bonusPoints,
|
||||
graduationGuidance,
|
||||
stuEmergency,
|
||||
auditSteps,
|
||||
},
|
||||
@@ -281,7 +288,9 @@ export default {
|
||||
{ name: '学生管理', value: 'studentManagement' },
|
||||
{ name: '业务工作', value: 'businessWord' },
|
||||
{ name: '考勤管理', value: 'attendanceManagement' },
|
||||
{ name: '加分项', value: 'bonusPoints' },
|
||||
{ name: '负面清单', value: 'negativeList' },
|
||||
{ name: '就业指导工作', value: 'graduationGuidance' },
|
||||
{ name: '超工作量奖励绩效', value: 'rewardsKpi' },
|
||||
{ name: '处理学生突发事件', value: 'stuEmergency' },
|
||||
],
|
||||
@@ -447,33 +456,64 @@ export default {
|
||||
},
|
||||
handleSelfScoring(row, text) {
|
||||
let scoring = 0
|
||||
const isGraduate = row.classType === 'graduate'
|
||||
// 学生管理分数
|
||||
row.kpiFillingStuMgtList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.cadreScoring
|
||||
scoring += element.classScoring
|
||||
scoring += element.stuActivityScoring
|
||||
scoring += element.stuTalkScoring
|
||||
scoring += element.visitDormitoryScoring
|
||||
scoring += Number(element.cadreScoring) || 0
|
||||
scoring += Number(element.classScoring) || 0
|
||||
scoring += Number(element.stuActivityScoring) || 0
|
||||
scoring += Number(element.stuTalkScoring) || 0
|
||||
scoring += Number(element.visitDormitoryScoring) || 0
|
||||
scoring += Number(element.noticeScoring) || 0
|
||||
scoring += Number(element.edgScoring) || 0
|
||||
}
|
||||
})
|
||||
// 业务工作分数
|
||||
// 业务工作分数 - 非毕业班和毕业班字段名不同
|
||||
row.kpiFillingBusinessWorksList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.stuLeaveMaterialsScoring
|
||||
scoring += element.stuFillingMaterialsScoring
|
||||
scoring += element.stuBasicDataScoring
|
||||
scoring += element.stuDisciplinaryViolationScoring
|
||||
scoring += element.handleEventsScoring
|
||||
if (isGraduate) {
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
scoring += Number(element.otherTaskScoring) || 0
|
||||
} else {
|
||||
scoring += Number(element.stuLeaveRequestScoring) || 0
|
||||
scoring += Number(element.stuLeaveMaterialsScoring) || 0
|
||||
scoring += Number(element.stuFillingMaterialsScoring) || 0
|
||||
scoring += Number(element.stuBasicDataScoring) || 0
|
||||
scoring += Number(element.stuDisciplinaryViolationScoring) || 0
|
||||
scoring += Number(element.handleEventsScoring) || 0
|
||||
}
|
||||
}
|
||||
})
|
||||
// 考勤管理分数
|
||||
row.kpiFillingAMgtList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += element.dutyWorkScoring
|
||||
scoring += element.conferenceScoring
|
||||
scoring += Number(element.dutyWorkScoring) || 0
|
||||
scoring += Number(element.conferenceScoring) || 0
|
||||
}
|
||||
})
|
||||
// 加分项分数
|
||||
if (row.kpiFillingBonusPointsList) {
|
||||
row.kpiFillingBonusPointsList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.bonusScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
// 就业指导工作分数 - 仅毕业班(graduate)计算
|
||||
if (isGraduate && row.kpiFillingGraduationGuidanceList) {
|
||||
row.kpiFillingGraduationGuidanceList.forEach((element) => {
|
||||
if (element.hasOwnProperty('id')) {
|
||||
scoring += Number(element.gradFormAuditScoring) || 0
|
||||
scoring += Number(element.stuCareerConsultScoring) || 0
|
||||
scoring += Number(element.gradFormGuidanceScoring) || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
if (text === '最终评级') {
|
||||
if (scoring >= 80) {
|
||||
return 'A'
|
||||
|
||||
@@ -84,9 +84,9 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<!-- <el-button v-hasPermi="['teacher:teacherKpiFillingMgt:edit']" size="mini" type="text" icon="el-icon-edit"
|
||||
<el-button v-hasPermi="['teacher:teacherKpiFillingMgt:edit']" size="mini" type="text" icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>修改</el-button> -->
|
||||
>修改</el-button>
|
||||
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="examineFdy(scope.row)"
|
||||
v-hasPermi="['teacher:teacherKpiFillingMgt:edit']">查看辅导员自评</el-button> -->
|
||||
<el-button v-hasPermi="['teacher:teacherKpiFillingMgt:remove']" size="mini" type="text" icon="el-icon-delete"
|
||||
|
||||
Reference in New Issue
Block a user