From acefa6eed2a216605efa60a012166182e716ea7f Mon Sep 17 00:00:00 2001 From: weishengyou <2454197255@qq.com> Date: Tue, 24 Mar 2026 17:43:30 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(kpiFilling):=20=E5=AE=8C=E5=96=84KPI?= =?UTF-8?q?=E8=87=AA=E8=AF=84=E5=88=86=E6=95=B0=E8=AE=A1=E7=AE=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除自评分数100分上限限制,直接显示实际计算分数 - 添加Number转换和空值处理,避免NaN错误 - 根据班级类型区分毕业班和非毕业班业务工作字段计算 - 新增加分项分数计算功能 - 新增就业指导工作分数计算(仅毕业班) - 在审核列表中添加加分项和就业指导工作组件 - 修复就业指导工作组件仅在毕业班显示的条件判断 ``` --- .../kpiFilling/collegeAudit/auditList.vue | 59 +++++++++++---- src/views/teacher/kpiFilling/index.vue | 59 +++++++++++---- .../studentAffairsOfficeAudit/auditList.vue | 72 ++++++++++++++----- .../kpiFilling/teacherKpiFillingMgt/index.vue | 4 +- 4 files changed, 148 insertions(+), 46 deletions(-) diff --git a/src/views/teacher/kpiFilling/collegeAudit/auditList.vue b/src/views/teacher/kpiFilling/collegeAudit/auditList.vue index 3edd5f2..d228d77 100644 --- a/src/views/teacher/kpiFilling/collegeAudit/auditList.vue +++ b/src/views/teacher/kpiFilling/collegeAudit/auditList.vue @@ -115,7 +115,7 @@ @@ -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' diff --git a/src/views/teacher/kpiFilling/index.vue b/src/views/teacher/kpiFilling/index.vue index 9835b76..5bc2700 100644 --- a/src/views/teacher/kpiFilling/index.vue +++ b/src/views/teacher/kpiFilling/index.vue @@ -98,7 +98,7 @@ @@ -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' diff --git a/src/views/teacher/kpiFilling/studentAffairsOfficeAudit/auditList.vue b/src/views/teacher/kpiFilling/studentAffairsOfficeAudit/auditList.vue index 3f3d54d..d62ed33 100644 --- a/src/views/teacher/kpiFilling/studentAffairsOfficeAudit/auditList.vue +++ b/src/views/teacher/kpiFilling/studentAffairsOfficeAudit/auditList.vue @@ -104,7 +104,7 @@ @@ -184,8 +184,11 @@ -
- +
+ +
+
+
@@ -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' diff --git a/src/views/teacher/kpiFilling/teacherKpiFillingMgt/index.vue b/src/views/teacher/kpiFilling/teacherKpiFillingMgt/index.vue index 4ab6f51..9bd4df5 100644 --- a/src/views/teacher/kpiFilling/teacherKpiFillingMgt/index.vue +++ b/src/views/teacher/kpiFilling/teacherKpiFillingMgt/index.vue @@ -84,9 +84,9 @@