辅导员管理-添加业绩考核个人填报详情和加分项、就业指导工作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参数 - 修正各种评分计算中的数值类型转换问题 ```
This commit is contained in:
@@ -8,9 +8,9 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 按要求参加辅导员各项会议、培训(10分)</label>
|
||||
<label>02 按要求参加辅导员各项会议、培训(5分)</label>
|
||||
<view class="bottom">
|
||||
<input type="number" @blur="onLimitInput($event,'conferenceScoring',10)"
|
||||
<input type="number" @blur="onLimitInput($event,'conferenceScoring',5)"
|
||||
v-model="formData.conferenceScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadMaterials">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
@@ -28,7 +28,7 @@
|
||||
kpiFillingAMgtDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus"],
|
||||
props: ["queryDetailParams", "commitStatus", "classType"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
@@ -39,7 +39,11 @@
|
||||
}
|
||||
},
|
||||
created() {
|
||||
kpiFillingAMgtDetail(this.queryDetailParams).then(res => {
|
||||
const params = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
kpiFillingAMgtDetail(params).then(res => {
|
||||
console.log(res);
|
||||
if (res.rows.length > 0) {
|
||||
const {
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
<template>
|
||||
<view class="form-container">
|
||||
<view class="form-item">
|
||||
<label>加分项(三选一,不选则不加分)</label>
|
||||
<view class="options">
|
||||
<radio-group @change="onOptionChange">
|
||||
<label class="option-item" v-for="(item, index) in options" :key="index">
|
||||
<radio :value="item.value" :checked="formData.bonusType === item.value" />
|
||||
<text>{{ item.label }} (+{{ item.score }}分)</text>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
kpiFillingBonusPointsDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus", "classType"],
|
||||
data() {
|
||||
return {
|
||||
options: [
|
||||
{ label: "1.获得上级部门或学校表扬,妥善处置学生事件并形成典型案例,积极建言献策且建议被采纳,发挥模范带头作用。", value: "option1", score: 10 },
|
||||
{ label: "2.在学校、学院阶段性重要任务推进过程中,主动担当作为,切实发挥作用。", value: "option2", score: 10 },
|
||||
{ label: "3.协助学校开展辅导员培训、会议和学生活动,在活动中担任工作人员。", value: "option3", score: 10 }
|
||||
],
|
||||
formData: {
|
||||
bonusType: "",
|
||||
bonusScoring: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const params = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
kpiFillingBonusPointsDetail(params).then(res => {
|
||||
console.log(res);
|
||||
if (res && res.rows && res.rows.length > 0) {
|
||||
const {
|
||||
bonusType,
|
||||
bonusScoring,
|
||||
id
|
||||
} = res.rows[0];
|
||||
this.formData = {
|
||||
...this.formData,
|
||||
bonusType,
|
||||
bonusScoring,
|
||||
id
|
||||
};
|
||||
} else {
|
||||
console.log("第一次");
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log("API调用失败", err);
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onOptionChange(e) {
|
||||
const value = e.detail.value;
|
||||
this.formData.bonusType = value;
|
||||
const selected = this.options.find(item => item.value === value);
|
||||
this.formData.bonusScoring = selected ? selected.score : 0;
|
||||
},
|
||||
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;
|
||||
}
|
||||
|
||||
.options {
|
||||
radio-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.option-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
radio {
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
text {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,116 @@
|
||||
<template>
|
||||
<view class="form-container">
|
||||
<view class="form-item">
|
||||
<label>01 指导审核毕业生登记表等就业核心材料(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'gradFormAuditScoring',10)" type="number"
|
||||
v-model="formData.gradFormAuditScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 开展学生就业咨询服务及团体辅导工作,助力学生解决就业困惑、提升就业竞争力。(5分)</label>
|
||||
<view class="bottom">
|
||||
<input type="number" @blur="onLimitInput($event,'stuCareerConsultScoring',5)"
|
||||
v-model="formData.stuCareerConsultScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 审核毕业生源信息、就业系统信息等数据及就业证明材料(含真实性、完整性、规范性)(10分)</label>
|
||||
<view class="bottom">
|
||||
<input type="number" @blur="onLimitInput($event,'gradFormGuidanceScoring',10)"
|
||||
v-model="formData.gradFormGuidanceScoring" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
limitInput
|
||||
} from "@/utils/limitInput.js"
|
||||
import {
|
||||
kpiFillingGraduationGuidanceDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus", "classType"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
gradFormAuditScoring: "",
|
||||
stuCareerConsultScoring: "",
|
||||
gradFormGuidanceScoring: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const params = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
kpiFillingGraduationGuidanceDetail(params).then(res => {
|
||||
console.log(res);
|
||||
if (res.rows && res.rows.length > 0) {
|
||||
const {
|
||||
gradFormAuditScoring,
|
||||
stuCareerConsultScoring,
|
||||
gradFormGuidanceScoring,
|
||||
id
|
||||
} = res.rows[0];
|
||||
this.formData = {
|
||||
...this.formData,
|
||||
gradFormAuditScoring,
|
||||
stuCareerConsultScoring,
|
||||
gradFormGuidanceScoring,
|
||||
id
|
||||
};
|
||||
} else {
|
||||
console.log("第一次");
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onLimitInput(event, name, max) {
|
||||
let result = limitInput(event.detail.value, max);
|
||||
this.formData[name] = result;
|
||||
},
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -113,7 +113,7 @@
|
||||
kpiFillingNegativeListDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams"],
|
||||
props: ["queryDetailParams", "classType"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
@@ -129,7 +129,11 @@
|
||||
}
|
||||
},
|
||||
created() {
|
||||
kpiFillingNegativeListDetail(this.queryDetailParams).then(res => {
|
||||
const params = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
kpiFillingNegativeListDetail(params).then(res => {
|
||||
console.log(res);
|
||||
if (res.rows.length > 0) {
|
||||
// this.formData = res.rows[0];
|
||||
@@ -164,9 +168,10 @@
|
||||
handleRadioChange(e) {
|
||||
const groupName = e.target.dataset.groupName; // 获取data-group-name的值
|
||||
this.formData[groupName] = e.detail.value; // 更新formData中对应的属性
|
||||
// 可以在这里加入其他逻辑,比如数据校验、表单提交等
|
||||
console.log('negative-list formData:', this.formData);
|
||||
},
|
||||
getFormData() {
|
||||
console.log('getFormData called, returning:', this.formData);
|
||||
return this.formData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,38 +1,48 @@
|
||||
<template>
|
||||
<view class="form-container">
|
||||
<view class="form-item">
|
||||
<label>01 严格执行学生请销假登记制度(5分)</label>
|
||||
<label>{{label01}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuLeaveMaterialsScoring',5)" v-model="formData.stuLeaveMaterialsScoring" type="number" placeholder="请输入分值"
|
||||
<input @blur="onLimitInput($event,'stuLeaveMaterialsScoring',5)"
|
||||
v-model="formData.stuLeaveMaterialsScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 认真指导学生完成各项材料填报工作 (10分)</label>
|
||||
<label>{{label02}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuFillingMaterialsScoring',10)" v-model="formData.stuFillingMaterialsScoring" type="number" placeholder="请输入分值"
|
||||
<input @blur="onLimitInput($event,'stuFillingMaterialsScoring',maxStuDisciplinaryViolation)"
|
||||
v-model="formData.stuFillingMaterialsScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 按时按质完成学生基础数据上报工作(10分)</label>
|
||||
<label>{{label03}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuBasicDataScoring',10)" v-model="formData.stuBasicDataScoring" type="number" placeholder="请输入分值"
|
||||
<input @blur="onLimitInput($event,'stuBasicDataScoring',maxHandleEvents)" v-model="formData.stuBasicDataScoring"
|
||||
type="number" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>{{label04}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuDisciplinaryViolationScoring',5)"
|
||||
v-model="formData.stuDisciplinaryViolationScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>04 按规定完成学生违纪处分材料(5分)</label>
|
||||
<label>{{label05}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuDisciplinaryViolationScoring',5)" v-model="formData.stuDisciplinaryViolationScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
<input @blur="onLimitInput($event,'handleEventsScoring',maxStuDisciplinaryViolation)" v-model="formData.handleEventsScoring"
|
||||
type="number" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>05 按程序要求处理突发事件(10分)</label>
|
||||
<label>{{label06}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'handleEventsScoring',10)" v-model="formData.handleEventsScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
<input @blur="onLimitInput($event,'otherTaskScoring',5)" v-model="formData.otherTaskScoring"
|
||||
type="number" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -46,54 +56,108 @@
|
||||
kpiFillingBusinessWorkDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
stuLeaveMaterialsScoring: "",
|
||||
stuFillingMaterialsScoring: "",
|
||||
stuBasicDataScoring: "",
|
||||
stuDisciplinaryViolationScoring: "",
|
||||
handleEventsScoring: "",
|
||||
id: ""
|
||||
}
|
||||
props: {
|
||||
queryDetailParams: Object,
|
||||
commitStatus: [String, Number],
|
||||
classType: {
|
||||
type: String,
|
||||
default: 'ungraduate'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
kpiFillingBusinessWorkDetail(this.queryDetailParams).then(res => {
|
||||
if (res.rows.length > 0) {
|
||||
const {
|
||||
stuLeaveMaterialsScoring,
|
||||
stuFillingMaterialsScoring,
|
||||
stuBasicDataScoring,
|
||||
stuDisciplinaryViolationScoring,
|
||||
handleEventsScoring,
|
||||
id
|
||||
} = res.rows[0];
|
||||
this.formData = {
|
||||
...this.formData, // 保留 this.formData 中已有的其他属性
|
||||
stuLeaveMaterialsScoring,
|
||||
stuFillingMaterialsScoring,
|
||||
stuBasicDataScoring,
|
||||
stuDisciplinaryViolationScoring,
|
||||
handleEventsScoring,
|
||||
id
|
||||
};
|
||||
} else {
|
||||
console.log("第一次");
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onLimitInput(event,name,max) {
|
||||
let result = limitInput(event.detail.value,max);
|
||||
this.formData[name] = result;
|
||||
computed: {
|
||||
isGraduate() {
|
||||
return this.classType === 'graduate';
|
||||
},
|
||||
getFormData() {
|
||||
return this.formData;
|
||||
label01() {
|
||||
return this.isGraduate
|
||||
? "01 按规定完成学生学籍异动、违纪处分与解除等材料(5分)"
|
||||
: "01 严格执行学生请销假登记制度(5分)";
|
||||
},
|
||||
label02() {
|
||||
return this.isGraduate
|
||||
? "02 认真完成评优评先、资助评定工作 (10分)"
|
||||
: "02 按规定完成学生学籍异动、违纪处分与解除等材料(5分)";
|
||||
},
|
||||
label03() {
|
||||
return this.isGraduate
|
||||
? "03 按时、准确填报学生各项基础数据 (5分)"
|
||||
: "03 认真完成评优评先、资助评定工作(10分)";
|
||||
},
|
||||
label04() {
|
||||
return this.isGraduate
|
||||
? "04 认真指导学生完成各项材料填报工作 (5分)"
|
||||
: "04 按时、准确填报学生各项基础数据(5分)";
|
||||
},
|
||||
label05() {
|
||||
return this.isGraduate
|
||||
? "05 按程序要求处理突发事件 (10分)"
|
||||
: "05 认真指导学生完成各项材料填报工作(5分)";
|
||||
},
|
||||
label06() {
|
||||
return this.isGraduate
|
||||
? "06 按时按质完成学工、学院发布的各项学生工作通知、任务 (5分)"
|
||||
: "06 按程序要求处理突发事件(5分)";
|
||||
},
|
||||
maxStuDisciplinaryViolation() {
|
||||
return this.isGraduate ? 10 : 5;
|
||||
},
|
||||
maxHandleEvents() {
|
||||
return this.isGraduate ? 5 : 10;
|
||||
}
|
||||
},data() {
|
||||
return {
|
||||
formData: {
|
||||
stuLeaveMaterialsScoring: "",
|
||||
stuFillingMaterialsScoring: "",
|
||||
stuBasicDataScoring: "",
|
||||
stuDisciplinaryViolationScoring: "",
|
||||
handleEventsScoring: "",
|
||||
otherTaskScoring: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const params = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
kpiFillingBusinessWorkDetail(params).then(res => {
|
||||
if (res.rows.length > 0) {
|
||||
const {
|
||||
stuLeaveMaterialsScoring,
|
||||
stuFillingMaterialsScoring,
|
||||
stuBasicDataScoring,
|
||||
stuDisciplinaryViolationScoring,
|
||||
handleEventsScoring,
|
||||
otherTaskScoring,
|
||||
id
|
||||
} = res.rows[0];
|
||||
this.formData = {
|
||||
...this.formData, // 保留 this.formData 中已有的其他属性
|
||||
stuLeaveMaterialsScoring,
|
||||
stuFillingMaterialsScoring,
|
||||
stuBasicDataScoring,
|
||||
stuDisciplinaryViolationScoring,
|
||||
handleEventsScoring,
|
||||
otherTaskScoring,
|
||||
id
|
||||
};
|
||||
} else {
|
||||
console.log("第一次");
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
onLimitInput(event, name, max) {
|
||||
let result = limitInput(event.detail.value, max);
|
||||
this.formData[name] = result;
|
||||
},
|
||||
getFormData() {
|
||||
return this.formData;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
delkpiFillingRewards
|
||||
} from "@/api/instructor/overwork-materials.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus"],
|
||||
props: ["queryDetailParams", "commitStatus", "classType"],
|
||||
data() {
|
||||
return {
|
||||
actionOptions: [{
|
||||
@@ -67,6 +67,7 @@
|
||||
created() {
|
||||
this.query = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType,
|
||||
fdyName: uni.getStorageSync("stuName"),
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
delkpiFillingStuEmergency
|
||||
} from "@/api/instructor/studentEmergencies.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus"],
|
||||
props: ["queryDetailParams", "commitStatus", "classType"],
|
||||
data() {
|
||||
return {
|
||||
actionOptions: [{
|
||||
@@ -71,6 +71,7 @@
|
||||
mounted() {
|
||||
this.query = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType,
|
||||
fdyName: uni.getStorageSync("stuName"),
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view class="student-management">
|
||||
<view class="form-item">
|
||||
<label>01 每周按时开展班会(10分)</label>
|
||||
<label>{{label01}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'classScoring',10)" v-model="classScoring" type="number"
|
||||
placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
@@ -10,8 +10,8 @@
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 每周深入学生宿舍至少2次(10分)</label>
|
||||
<view class="form-item" v-if="!isGraduate">
|
||||
<label>{{label02}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'visitDormitoryScoring',10)" v-model="visitDormitoryScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
@@ -21,7 +21,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 每月与带班学生谈心谈话,覆盖率不低于8%(10分)</label>
|
||||
<label>{{label03}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuTalkScoring',10)" v-model="stuTalkScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
@@ -30,8 +30,8 @@
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>04 每月开展班团干部会议至少2次(5分)</label>
|
||||
<view class="form-item" v-if="!isGraduate">
|
||||
<label>{{label04}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'cadreScoring',5)" v-model="cadreScoring" type="number" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadLeagueMeetingMaterial">
|
||||
@@ -39,8 +39,8 @@
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>05 每月深入学生社区面向学生开展活动1次 (5分)</label>
|
||||
<view class="form-item" v-if="!isGraduate">
|
||||
<label>{{label05}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuActivityScoring',5)" v-model="stuActivityScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
@@ -49,6 +49,20 @@
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item" v-if="!isGraduate">
|
||||
<label>{{label06}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'edgScoring',5)" v-model="edgScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item" v-if="!isGraduate">
|
||||
<label>{{label07}}</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'noticeScoring',5)" v-model="noticeScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -60,7 +74,49 @@
|
||||
limitInput
|
||||
} from "@/utils/limitInput.js"
|
||||
export default {
|
||||
props: ["queryDetailParams","commitStatus"],
|
||||
props: {
|
||||
queryDetailParams: Object,
|
||||
commitStatus: [String, Number],
|
||||
classType: {
|
||||
type: String,
|
||||
default: 'ungraduate'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isGraduate() {
|
||||
return this.classType === 'graduate';
|
||||
},
|
||||
label01() {
|
||||
return this.isGraduate
|
||||
? "01 每月通过线上线下方式定期召开班会开展教育(10分)"
|
||||
: "01 每周日及节假日收假当天组织开展班会(10分)";
|
||||
},
|
||||
label02() {
|
||||
if (this.isGraduate) return "";
|
||||
return "02 每周深入学生宿舍至少2次(10分)";
|
||||
},
|
||||
label03() {
|
||||
return this.classType === 'graduate'
|
||||
? "03 月度谈心谈话总量≥10人次,覆盖重点关注学生(困难救助、就业预警、心理危机、违纪待处理等)(10分)"
|
||||
: "03 月度谈心谈话总量≥10人次,覆盖重点关注学生(困难救助、学业指导、心理危机、违纪待处理等)(10分)";
|
||||
},
|
||||
label04() {
|
||||
if (this.isGraduate) return "";
|
||||
return "04 每月开展班团干部培训、专题工作会议,频次均不少于1次(5分)";
|
||||
},
|
||||
label05() {
|
||||
if (this.isGraduate) return "";
|
||||
return "05 每月组织或参与学生社区育人活动、思政教育活动及文化艺术体育活动,频次不少于2次(5分)";
|
||||
},
|
||||
label06() {
|
||||
if (this.isGraduate) return "";
|
||||
return "06 根据学校就业育人工作部署,第一学期需指导并组织所带班级学生参与职业测评,整体完成率需≥90%;第二学期每月需开展1次就业育人相关活动。(5分)";
|
||||
},
|
||||
label07() {
|
||||
if (this.isGraduate) return "";
|
||||
return "07 按时按质完成学校及相关职能部门发布的与学生相关的各项工作通知、任务(5分)";
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
classScoring: "", //班会材料分数
|
||||
@@ -68,29 +124,74 @@
|
||||
stuTalkScoring: "", // 学生谈话分数
|
||||
cadreScoring: "", //班团干部会议材料分数
|
||||
stuActivityScoring: "", //学生开展活动材料分数
|
||||
edgScoring: "", //职业测评分数
|
||||
noticeScoring: "", //其他任务分数
|
||||
id: "", //学生开展活动材料分数
|
||||
queryParams:null
|
||||
}
|
||||
},
|
||||
created() {
|
||||
teacherKpiFillingMgtDetail(this.queryDetailParams).then(res => {
|
||||
console.log('===== student-management created =====');
|
||||
console.log('queryDetailParams:', this.queryDetailParams);
|
||||
console.log('classType:', this.classType);
|
||||
},
|
||||
mounted() {
|
||||
// 初始化查询参数
|
||||
this.initQueryParams();
|
||||
// 等待 classType 准备好后再查询
|
||||
if (this.classType) {
|
||||
this.loadData();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
loadData() {
|
||||
// 查询时带上 classType
|
||||
const queryParams = {
|
||||
...this.queryDetailParams,
|
||||
classType: this.classType
|
||||
};
|
||||
console.log('最终查询参数:', queryParams);
|
||||
|
||||
teacherKpiFillingMgtDetail(queryParams).then(res => {
|
||||
console.log('===== API 返回数据 =====');
|
||||
console.log(res);
|
||||
if (res.data) {
|
||||
this.classScoring = res.data.classScoring;
|
||||
this.visitDormitoryScoring = res.data.visitDormitoryScoring;
|
||||
this.stuTalkScoring = res.data.stuTalkScoring;
|
||||
this.cadreScoring = res.data.cadreScoring;
|
||||
this.stuActivityScoring = res.data.stuActivityScoring;
|
||||
this.id = res.data.id;
|
||||
// 毕业班只填充需要的字段
|
||||
if (this.isGraduate) {
|
||||
this.classScoring = res.data.classScoring;
|
||||
this.stuTalkScoring = res.data.stuTalkScoring;
|
||||
this.id = res.data.id;
|
||||
} else {
|
||||
this.classScoring = res.data.classScoring;
|
||||
this.visitDormitoryScoring = res.data.visitDormitoryScoring;
|
||||
this.stuTalkScoring = res.data.stuTalkScoring;
|
||||
this.cadreScoring = res.data.cadreScoring;
|
||||
this.stuActivityScoring = res.data.stuActivityScoring;
|
||||
this.edgScoring = res.data.edgScoring;
|
||||
this.noticeScoring = res.data.noticeScoring;
|
||||
this.id = res.data.id;
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
initQueryParams() {
|
||||
this.queryParams = new URLSearchParams({
|
||||
year: this.queryDetailParams.fillingYear,
|
||||
month: this.queryDetailParams.fillingMonth,
|
||||
commitStatus:this.commitStatus
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
onLimitInput(event,name,max) {
|
||||
let result = limitInput(event.detail.value,max);
|
||||
this[name] = result;
|
||||
},
|
||||
initQueryParams() {
|
||||
this.queryParams = new URLSearchParams({
|
||||
year: this.queryDetailParams.fillingYear,
|
||||
month: this.queryDetailParams.fillingMonth,
|
||||
commitStatus:this.commitStatus
|
||||
});
|
||||
},
|
||||
onLimitInput(event,name,max) {
|
||||
let result = limitInput(event.detail.value,max);
|
||||
this[name] = result;
|
||||
@@ -122,14 +223,20 @@
|
||||
})
|
||||
},
|
||||
getFormData() {
|
||||
return {
|
||||
const data = {
|
||||
classScoring: this.classScoring,
|
||||
visitDormitoryScoring: this.visitDormitoryScoring,
|
||||
stuTalkScoring: this.stuTalkScoring,
|
||||
cadreScoring: this.cadreScoring,
|
||||
stuActivityScoring: this.stuActivityScoring,
|
||||
id: this.id
|
||||
};
|
||||
// 非毕业班才包含这些字段
|
||||
if (!this.isGraduate) {
|
||||
data.visitDormitoryScoring = this.visitDormitoryScoring;
|
||||
data.cadreScoring = this.cadreScoring;
|
||||
data.stuActivityScoring = this.stuActivityScoring;
|
||||
data.edgScoring = this.edgScoring;
|
||||
data.noticeScoring = this.noticeScoring;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user