移动端V1.0
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
<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 按要求参加辅导员各项会议、培训(10分)</label>
|
||||
<view class="bottom">
|
||||
<input type="number" @blur="onLimitInput($event,'conferenceScoring',10)"
|
||||
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"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
dutyWorkScoring: "",
|
||||
conferenceScoring: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
kpiFillingAMgtDetail(this.queryDetailParams).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>
|
@@ -0,0 +1,206 @@
|
||||
<template>
|
||||
<view class="form-container">
|
||||
<view class="form-item">
|
||||
<label>01 违反高校教师职业道德与行为规范的</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="moralityAndBehavior">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.moralityAndBehavior === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.moralityAndBehavior === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 在学生中散布影响安定团结或违背国家相关法律法规言论</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="speech">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.speech === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.speech === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 学生评价极差,书记、校长信箱投诉频繁</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="complaint">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.complaint === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.complaint === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>04 认定为因疏于教育、管理导致学生发生违纪违法现象,造成恶劣影响</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="offense">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.offense === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.offense === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>05 学生发生突发事件,在正常情况下未能及时到场处理,引起较大影响</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="emergency">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.emergency === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.emergency === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>06 受到党纪、政纪处分及治安拘留或刑事处罚</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="punishment">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.punishment === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.punishment === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>07 在开展评优评奖等工作中弄虚作假</label>
|
||||
<view class="bottom">
|
||||
<radio-group @change="handleRadioChange" data-group-name="practiceFraud">
|
||||
<label>
|
||||
<radio value="1" :checked="formData.practiceFraud === 1" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />是
|
||||
</label>
|
||||
<label>
|
||||
<radio value="0" :checked="formData.practiceFraud === 0" active-background-color="#2a8f08"
|
||||
style="transform:scale(0.7)" />否
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
kpiFillingNegativeListDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
moralityAndBehavior: "",
|
||||
speech: "",
|
||||
complaint: "",
|
||||
offense: "",
|
||||
emergency: "",
|
||||
punishment: "",
|
||||
practiceFraud: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
kpiFillingNegativeListDetail(this.queryDetailParams).then(res => {
|
||||
console.log(res);
|
||||
if (res.rows.length > 0) {
|
||||
// this.formData = res.rows[0];
|
||||
const {
|
||||
moralityAndBehavior,
|
||||
speech,
|
||||
complaint,
|
||||
offense,
|
||||
emergency,
|
||||
punishment,
|
||||
practiceFraud,
|
||||
id
|
||||
} = res.rows[0];
|
||||
this.formData = {
|
||||
...this.formData, // 保留 this.formData 中已有的其他属性
|
||||
moralityAndBehavior,
|
||||
speech,
|
||||
complaint,
|
||||
offense,
|
||||
emergency,
|
||||
punishment,
|
||||
practiceFraud,
|
||||
id
|
||||
};
|
||||
|
||||
} else {
|
||||
console.log("第一次");
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleRadioChange(e) {
|
||||
const groupName = e.target.dataset.groupName; // 获取data-group-name的值
|
||||
this.formData[groupName] = e.detail.value; // 更新formData中对应的属性
|
||||
// 可以在这里加入其他逻辑,比如数据校验、表单提交等
|
||||
},
|
||||
getFormData() {
|
||||
return this.formData;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.form-container {
|
||||
.form-item {
|
||||
padding: 30rpx 40rpx 30rpx 40rpx;
|
||||
background-color: white;
|
||||
margin-bottom: 40rpx;
|
||||
border-radius: 16rpx;
|
||||
|
||||
&>label {
|
||||
margin-bottom: 30rpx;
|
||||
display: inline-block;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
radio-group {
|
||||
label {
|
||||
margin-top: 20rpx;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 50rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@@ -0,0 +1,139 @@
|
||||
<template>
|
||||
<view class="form-container">
|
||||
<view class="form-item">
|
||||
<label>01 严格执行学生请销假登记制度(5分)</label>
|
||||
<view class="bottom">
|
||||
<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>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuFillingMaterialsScoring',10)" v-model="formData.stuFillingMaterialsScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 按时按质完成学生基础数据上报工作(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuBasicDataScoring',10)" v-model="formData.stuBasicDataScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>04 按规定完成学生违纪处分材料(5分)</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>05 按程序要求处理突发事件(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'handleEventsScoring',10)" v-model="formData.handleEventsScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
limitInput
|
||||
} from "@/utils/limitInput.js"
|
||||
import {
|
||||
kpiFillingBusinessWorkDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
export default {
|
||||
props: ["queryDetailParams"],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
stuLeaveMaterialsScoring: "",
|
||||
stuFillingMaterialsScoring: "",
|
||||
stuBasicDataScoring: "",
|
||||
stuDisciplinaryViolationScoring: "",
|
||||
handleEventsScoring: "",
|
||||
id: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
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;
|
||||
},
|
||||
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>
|
@@ -0,0 +1,223 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="tip">
|
||||
<label>本月已提交{{total}}份</label>
|
||||
<!-- <uni-icons type="right" size="16" color="#202020"></uni-icons> -->
|
||||
</view>
|
||||
<scroll-view @scrolltolower="scrolltolower" scroll-y="true" style="height:calc(100vh - 150rpx);">
|
||||
<uni-swipe-action>
|
||||
<view class="list">
|
||||
<view class="row" v-for="item in list" :key="item.id" @tap="toDetail(item.id)">
|
||||
<uni-swipe-action-item :right-options="actionOptions" @tap="onDel(item.id)">
|
||||
<view class="top">
|
||||
<label>{{item.dutyDescription}}</label>
|
||||
<uni-icons type="right" size="16" color="#202020"></uni-icons>
|
||||
</view>
|
||||
<view class="bottom">
|
||||
时间:{{item.dutyTime}}
|
||||
</view>
|
||||
</uni-swipe-action-item>
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action>
|
||||
|
||||
<view class="empty" v-if="list.length==0">
|
||||
<image src="@/static/empty.png" mode="widthFix"></image>
|
||||
暂时没有数据
|
||||
</view>
|
||||
<view class="loading-more" v-if="loading">
|
||||
<uni-load-more status="loading" />
|
||||
</view>
|
||||
<view class="no-more" v-if="!loading&&list.length!=0">
|
||||
到底啦~~
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="add" @tap="addEvidence" v-if="commitStatus!=1">
|
||||
+
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
listkpiFillingRewardsKpi,
|
||||
delkpiFillingRewards
|
||||
} from "@/api/instructor/overwork-materials.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus"],
|
||||
data() {
|
||||
return {
|
||||
actionOptions: [{
|
||||
text: '删除',
|
||||
style: {
|
||||
width: "200px",
|
||||
backgroundColor: '#df0000'
|
||||
}
|
||||
}],
|
||||
formData: {
|
||||
id: ""
|
||||
},
|
||||
query: {},
|
||||
list: [],
|
||||
totalPage: 0,
|
||||
total: 0,
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.query = {
|
||||
...this.queryDetailParams,
|
||||
fdyName: uni.getStorageSync("stuName"),
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
}
|
||||
uni.$on('refreshRewardsKpiList', this.getlistkpiFillingRewardsKpi);
|
||||
this.getlistkpiFillingRewardsKpi();
|
||||
},
|
||||
beforeDestroy() {
|
||||
uni.$off('refreshRewardsKpiList', this.getlistkpiFillingRewardsKpi);
|
||||
},
|
||||
methods: {
|
||||
toDetail(id) {
|
||||
uni.navigateTo({
|
||||
url: `../performance-evaluation/overwork-materials/detail?id=${id}&commitStatus=${this.commitStatus}`
|
||||
})
|
||||
},
|
||||
scrolltolower() {
|
||||
console.log('下');
|
||||
if (this.query.pageNum < this.totalPages) {
|
||||
this.query.pageNum++;
|
||||
this.loading = true;
|
||||
setTimeout(() => {
|
||||
this.getlistkpiFillingRewardsKpi()
|
||||
}, 1000)
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
async getlistkpiFillingRewardsKpi() {
|
||||
let res = await listkpiFillingRewardsKpi(this.query);
|
||||
if (res.code == 200) {
|
||||
this.loading = false;
|
||||
if (this.query.pageNum == 1) {
|
||||
this.list = res.rows; // 如果是第一页,直接显示新数据
|
||||
this.total = res.total; // 如果是第一页,直接显示新数据
|
||||
console.log(res);
|
||||
} else {
|
||||
this.list = this.list.concat(res.rows); // 否则追加新数据到列表中
|
||||
}
|
||||
this.totalPages = Math.ceil(res.total / this.query.pageSize);
|
||||
}
|
||||
},
|
||||
addEvidence() {
|
||||
uni.navigateTo({
|
||||
url: `../performance-evaluation/overwork-materials/add?year=${this.query.fillingYear}&month=${this.query.fillingMonth}`
|
||||
})
|
||||
},
|
||||
getFormData() {
|
||||
return this.formData;
|
||||
},
|
||||
onDel(id) {
|
||||
console.log(id);
|
||||
uni.showModal({
|
||||
title: "确定删除吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
delkpiFillingRewards(id).then(res => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: "删除成功"
|
||||
})
|
||||
this.getlistkpiFillingRewardsKpi();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
.add {
|
||||
background-color: #1890FF;
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
border-radius: 50%;
|
||||
color: white;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 60rpx;
|
||||
position: fixed;
|
||||
bottom: 80px;
|
||||
right: 25px;
|
||||
}
|
||||
|
||||
.tip {
|
||||
padding: 22rpx 40rpx 22rpx 40rpx;
|
||||
background-color: white;
|
||||
margin-bottom: 30rpx;
|
||||
border-radius: 16rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: fixed;
|
||||
left: 40rpx;
|
||||
right: 40rpx;
|
||||
z-index: 2;
|
||||
box-shadow: 0 0 2px 0px #dadada;
|
||||
}
|
||||
|
||||
.no-more {
|
||||
text-align: center;
|
||||
color: gray;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding-top: 120rpx;
|
||||
}
|
||||
|
||||
.empty {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 200rpx;
|
||||
color: #9E9E9E;
|
||||
font-size: 36rpx;
|
||||
|
||||
image {
|
||||
width: 250rpx;
|
||||
margin-bottom: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.row {
|
||||
padding: 22rpx 40rpx 22rpx 40rpx;
|
||||
background-color: white;
|
||||
margin-bottom: 30rpx;
|
||||
border-radius: 16rpx;
|
||||
|
||||
.uni-icons {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #F5F5F7;
|
||||
padding-bottom: 22rpx;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
color: #9C9C9C;
|
||||
padding-top: 22rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="tip">
|
||||
<label>本月已提交{{total}}份</label>
|
||||
<!-- <uni-icons type="right" size="16" color="#202020"></uni-icons> -->
|
||||
</view>
|
||||
<scroll-view @scrolltolower="scrolltolower" scroll-y="true" style="height:calc(100vh - 150rpx);">
|
||||
<uni-swipe-action>
|
||||
<view class="list">
|
||||
<view class="row" v-for="item in list" :key="item.id" @tap="toDetail(item.id)">
|
||||
<uni-swipe-action-item :right-options="actionOptions" @tap="onDel(item.id)">
|
||||
<view class="top">
|
||||
<label>{{item.eventLevel==0?'一般事件':'重大事件'}}</label>
|
||||
<uni-icons type="right" size="16" color="#202020"></uni-icons>
|
||||
</view>
|
||||
<view class="bottom">
|
||||
<view class="desc">
|
||||
{{item.eventDescription}}
|
||||
</view>
|
||||
<view>
|
||||
起止时间:{{item.startTime}}~{{item.endTime}}
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action-item>
|
||||
</view>
|
||||
</view>
|
||||
</uni-swipe-action>
|
||||
<view class="empty" v-if="list.length==0">
|
||||
<image src="@/static/empty.png" mode="widthFix"></image>
|
||||
暂时没有数据
|
||||
</view>
|
||||
<view class="loading-more" v-if="loading">
|
||||
<uni-load-more status="loading" />
|
||||
</view>
|
||||
<view class="no-more" v-if="!loading&&list.length!=0">
|
||||
到底啦~~
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="add" @tap="addEvidence" v-if="commitStatus!=1">
|
||||
+
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
listkpiFillingStuEmergency,
|
||||
delkpiFillingStuEmergency
|
||||
} from "@/api/instructor/studentEmergencies.js"
|
||||
export default {
|
||||
props: ["queryDetailParams", "commitStatus"],
|
||||
data() {
|
||||
return {
|
||||
actionOptions: [{
|
||||
text: '删除',
|
||||
style: {
|
||||
width: "200px",
|
||||
backgroundColor: '#df0000'
|
||||
}
|
||||
}],
|
||||
formData: {
|
||||
id: ""
|
||||
},
|
||||
query: {},
|
||||
list: [],
|
||||
totalPage: 0,
|
||||
total: 0,
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.query = {
|
||||
...this.queryDetailParams,
|
||||
fdyName: uni.getStorageSync("stuName"),
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
}
|
||||
uni.$on('refreshStuEmergencyList', this.getlistkpiFillingStuEmergency);
|
||||
this.getlistkpiFillingStuEmergency();
|
||||
},
|
||||
beforeDestroy() {
|
||||
uni.$off('refreshStuEmergencyList', this.getlistkpiFillingStuEmergency);
|
||||
},
|
||||
methods: {
|
||||
toDetail(id) {
|
||||
uni.navigateTo({
|
||||
url: `../performance-evaluation/student-emergencies-materials/detail?id=${id}&commitStatus=${this.commitStatus}`
|
||||
})
|
||||
},
|
||||
scrolltolower() {
|
||||
console.log('下');
|
||||
if (this.query.pageNum < this.totalPages) {
|
||||
this.query.pageNum++;
|
||||
this.loading = true;
|
||||
setTimeout(() => {
|
||||
this.getlistkpiFillingStuEmergency()
|
||||
}, 1000)
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
async getlistkpiFillingStuEmergency() {
|
||||
let res = await listkpiFillingStuEmergency(this.query);
|
||||
if (res.code == 200) {
|
||||
this.loading = false;
|
||||
if (this.query.pageNum == 1) {
|
||||
this.list = res.rows; // 如果是第一页,直接显示新数据
|
||||
this.total = res.total; // 如果是第一页,直接显示新数据
|
||||
console.log(res);
|
||||
} else {
|
||||
this.list = this.list.concat(res.rows); // 否则追加新数据到列表中
|
||||
}
|
||||
this.totalPages = Math.ceil(res.total / this.query.pageSize);
|
||||
}
|
||||
},
|
||||
addEvidence() {
|
||||
uni.navigateTo({
|
||||
url: `../performance-evaluation/student-emergencies-materials/add?year=${this.query.fillingYear}&month=${this.query.fillingMonth}`
|
||||
})
|
||||
},
|
||||
getFormData() {
|
||||
return this.formData;
|
||||
},
|
||||
onDel(id) {
|
||||
console.log(id);
|
||||
uni.showModal({
|
||||
title: "确定删除吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
delkpiFillingStuEmergency(id).then(res => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: "删除成功"
|
||||
})
|
||||
this.getlistkpiFillingStuEmergency();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
.add {
|
||||
background-color: #1890FF;
|
||||
width: 90rpx;
|
||||
height: 90rpx;
|
||||
border-radius: 50%;
|
||||
color: white;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 60rpx;
|
||||
position: fixed;
|
||||
bottom: 80px;
|
||||
right: 25px;
|
||||
}
|
||||
|
||||
.tip {
|
||||
padding: 22rpx 40rpx 22rpx 40rpx;
|
||||
background-color: white;
|
||||
margin-bottom: 30rpx;
|
||||
border-radius: 16rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: fixed;
|
||||
left: 40rpx;
|
||||
right: 40rpx;
|
||||
z-index: 2;
|
||||
box-shadow: 0 0 2px 0px #dadada;
|
||||
}
|
||||
|
||||
.no-more {
|
||||
text-align: center;
|
||||
color: gray;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.empty {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 200rpx;
|
||||
color: #9E9E9E;
|
||||
font-size: 36rpx;
|
||||
|
||||
image {
|
||||
width: 250rpx;
|
||||
margin-bottom: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
padding-top: 120rpx;
|
||||
}
|
||||
|
||||
.row {
|
||||
padding: 22rpx 40rpx 22rpx 40rpx;
|
||||
background-color: white;
|
||||
margin-bottom: 30rpx;
|
||||
border-radius: 16rpx;
|
||||
|
||||
.uni-icons {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #F5F5F7;
|
||||
padding-bottom: 22rpx;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
color: #9C9C9C;
|
||||
padding-top: 22rpx;
|
||||
|
||||
.desc {
|
||||
color: #404040;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@@ -0,0 +1,178 @@
|
||||
<template>
|
||||
<view class="student-management">
|
||||
<view class="form-item">
|
||||
<label>01 每周按时开展班会(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'classScoring',10)" v-model="classScoring" type="number"
|
||||
placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadClassMeetingMaterial">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>02 每周深入学生宿舍至少2次(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'visitDormitoryScoring',10)" v-model="visitDormitoryScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadSleepCheckMaterial">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>03 每月与带班学生谈心谈话,覆盖率不低于8%(10分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuTalkScoring',10)" v-model="stuTalkScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadInterviewMaterial">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>04 每月开展班团干部会议至少2次(5分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'cadreScoring',5)" v-model="cadreScoring" type="number" placeholder="请输入分值" placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadLeagueMeetingMaterial">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item">
|
||||
<label>05 每月深入学生社区面向学生开展活动1次 (5分)</label>
|
||||
<view class="bottom">
|
||||
<input @blur="onLimitInput($event,'stuActivityScoring',5)" v-model="stuActivityScoring" type="number" placeholder="请输入分值"
|
||||
placeholder-class="input-placeholder" />
|
||||
<text @tap="uploadStuActivityMaterials">
|
||||
{{commitStatus==1?"查看材料":"上传材料"}}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
teacherKpiFillingMgtDetail
|
||||
} from "@/api/instructor/superintendent.js"
|
||||
import {
|
||||
limitInput
|
||||
} from "@/utils/limitInput.js"
|
||||
export default {
|
||||
props: ["queryDetailParams","commitStatus"],
|
||||
data() {
|
||||
return {
|
||||
classScoring: "", //班会材料分数
|
||||
visitDormitoryScoring: "", //每周深入学生宿舍材料分数
|
||||
stuTalkScoring: "", // 学生谈话分数
|
||||
cadreScoring: "", //班团干部会议材料分数
|
||||
stuActivityScoring: "", //学生开展活动材料分数
|
||||
id: "", //学生开展活动材料分数
|
||||
queryParams:null
|
||||
}
|
||||
},
|
||||
created() {
|
||||
teacherKpiFillingMgtDetail(this.queryDetailParams).then(res => {
|
||||
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;
|
||||
}
|
||||
})
|
||||
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;
|
||||
},
|
||||
uploadClassMeetingMaterial() {
|
||||
|
||||
uni.navigateTo({
|
||||
url: `/pages/instructor/performance-appraisal/performance-evaluation/class-meeting-evidence/list?${this.queryParams.toString()}`
|
||||
})
|
||||
},
|
||||
uploadSleepCheckMaterial() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/instructor/performance-appraisal/performance-evaluation/sleep-check-evidence/list?${this.queryParams.toString()}`
|
||||
})
|
||||
},
|
||||
uploadInterviewMaterial() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/instructor/performance-appraisal/performance-evaluation/interview/list?${this.queryParams.toString()}`
|
||||
})
|
||||
},
|
||||
uploadLeagueMeetingMaterial() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/instructor/performance-appraisal/performance-evaluation/league-meeting/list?${this.queryParams.toString()}`
|
||||
})
|
||||
},
|
||||
uploadStuActivityMaterials() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/instructor/performance-appraisal/performance-evaluation/student-activity/list?${this.queryParams.toString()}`
|
||||
})
|
||||
},
|
||||
getFormData() {
|
||||
return {
|
||||
classScoring: this.classScoring,
|
||||
visitDormitoryScoring: this.visitDormitoryScoring,
|
||||
stuTalkScoring: this.stuTalkScoring,
|
||||
cadreScoring: this.cadreScoring,
|
||||
stuActivityScoring: this.stuActivityScoring,
|
||||
id: this.id
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.student-management {
|
||||
.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>
|
Reference in New Issue
Block a user