Files
zhxg_app/pages/instructor/performance-appraisal/components/attendance-management.vue
Stickman ecc0d00a4f 辅导员管理-添加业绩考核个人填报详情和加分项、就业指导工作API
- 新增kpiFillingDetail函数用于获取业绩考核个人填报详情
- 新增加分项相关API:kpiFillingBonusPointsAdd、kpiFillingBonusPointsUpdate、
  kpiFillingBonusPointsDetail
- 新增就业指导工作相关API:kpiFillingGraduationGuidanceAdd、
  kpiFillingGraduationGuidanceUpdate、kpiFillingGraduationGuidanceDetail
- 添加TODO注释标记待后端API完成的功能

fix(pages): 解决部门名称存储问题

- 启用被注释掉的部门名称存储功能
- 确保deptName正确存入本地缓存

feat(performance): 支持毕业班和非毕业班不同考核标准

- 为考勤管理组件添加classType参数支持
- 为负面清单组件添加classType参数支持
- 为专业工作组件重构标签显示逻辑,支持根据classType动态显示
- 为奖励绩效加班组件添加classType参数支持
- 为学生突发事件组件添加classType参数支持
- 为学生管理组件添加毕业班/非毕业班差异化显示逻辑

refactor(performance): 优化业绩评估页面结构

- 添加班级类型选择按钮(毕业班/非毕业班)
- 在填报时间弹窗中集成班级类型选择功能
- 更新数据加载逻辑以支持classType参数
- 修正各种评分计算中的数值类型转换问题
```
2026-03-13 15:14:29 +08:00

127 lines
2.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="form-container">
<view class="form-item">
<label>01 按时上下班并做好值班工作10</label>
<view class="bottom">
<input @blur="onLimitInput($event,'dutyWorkScoring',10)" type="number"
v-model="formData.dutyWorkScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
</view>
</view>
<view class="form-item">
<label>02 按要求参加辅导员各项会议培训5</label>
<view class="bottom">
<input type="number" @blur="onLimitInput($event,'conferenceScoring',5)"
v-model="formData.conferenceScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
<text @tap="uploadMaterials">
{{commitStatus==1?"查看材料":"上传材料"}}
</text>
</view>
</view>
</view>
</template>
<script>
import {
limitInput
} from "@/utils/limitInput.js"
import {
kpiFillingAMgtDetail
} from "@/api/instructor/superintendent.js"
export default {
props: ["queryDetailParams", "commitStatus", "classType"],
data() {
return {
formData: {
dutyWorkScoring: "",
conferenceScoring: "",
id: ""
}
}
},
created() {
const params = {
...this.queryDetailParams,
classType: this.classType
};
kpiFillingAMgtDetail(params).then(res => {
console.log(res);
if (res.rows.length > 0) {
const {
dutyWorkScoring,
conferenceScoring,
id
} = res.rows[0];
this.formData = {
...this.formData, // 保留 this.formData 中已有的其他属性
dutyWorkScoring,
conferenceScoring,
id
};
} else {
console.log("第一次");
}
})
},
methods: {
onLimitInput(event, name, max) {
let result = limitInput(event.detail.value, max);
this.formData[name] = result;
},
uploadMaterials() {
const queryParams = new URLSearchParams({
year: this.queryDetailParams.fillingYear,
month: this.queryDetailParams.fillingMonth,
commitStatus: this.commitStatus
});
uni.navigateTo({
url: `/pages/instructor/performance-appraisal/performance-evaluation/instructor-attendance-material/list?${queryParams.toString()}`
})
},
getFormData() {
return this.formData;
}
}
}
</script>
<style scoped lang="scss">
.form-container {
.form-item {
padding: 22rpx 40rpx 40rpx 40rpx;
background-color: white;
margin-bottom: 40rpx;
border-radius: 16rpx;
label {
margin-bottom: 20rpx;
display: inline-block;
font-size: 26rpx;
}
.bottom {
display: flex;
align-items: center;
input {
flex: 1;
border: 1px solid #E1E1E1;
border-radius: 10rpx;
height: 60rpx;
padding-left: 30rpx;
.input-placeholder {
color: #b6b6b6;
}
}
text {
color: #1890FF;
border-bottom: 2px solid #1890FF;
margin-left: 40rpx;
font-weight: bold;
font-size: 26rpx;
}
}
}
}
</style>