smartmeter-app/pages/Mystudent/addclassforwork.vue

305 lines
7.2 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="pages">
<u-navbar title="添加班级"
:border-bottom="false"
:background="bgc"
title-color='#2E4975'
title-size='36'
height='36'></u-navbar>
<view class="serchbox">
<view class="serchimg">
<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
</image>
</view>
<input type="text"
v-model="searchKeyword"
placeholder="搜索相关内容..."
class="input"
placeholder-style="color:#C7CDD3"
@input="search()">
</view>
<view class="teacher_card_box" >
<view class="teacher_card" v-for="(item, index) in classlist" v-if="isloding == false" :key="index" @click="toggleSelection(item)" :class="{ 'act1': item.isSelected }">
<view class="class_card_left">
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
</view>
<view class="class_card_right">
<view class="class_card_right_top" v-html="highlightSearch(item.name)">
</view>
<view class="class_card_right_bot">
共{{item.totalMembers}}人
</view>
</view>
</view>
</view>
<view class="zhanwei" style="width: 100%; height: 230rpx;">
</view>
<view class="botbtn" v-if="selectclass.length>0">
<view class="btn" @click="addclassinfo()">
确定添加({{selectclass.length}}
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#transparent",
},
showpage:1,
classlist:{},
changeclasslist:{},
isloding:true,
selectclass: [],
searchKeyword:''
}
},
onLoad(option) {
this.selectclass=JSON.parse(decodeURIComponent(option.classinfo))
},
onShow() {
this.getclassList()
},
methods: {
addclassinfo(){
uni.setStorageSync('selectedClassInfo', this.selectclass);
// Navigate back to the previous page
uni.navigateBack({
delta: 1, // Number of pages to go back
success(res) {
console.log(res);
},
fail(err) {
console.error(err);
}
});
},
toggleSelection(item) {
const selectedIndex = this.selectclass.findIndex(selectedItem => selectedItem.id === item.id);
if (selectedIndex === -1) {
// If not selected, add to the array and apply the 'act1' class
this.selectclass.push({ name: item.name, avatar: item.avatar, id: item.id });
item.isSelected = true;
} else {
item.isSelected = false;
// If already selected, remove from the array and remove the 'act1' class
this.selectclass.splice(selectedIndex, 1);
}
console.log(this.selectclass, 'this.selectclass');
},
isSelectedClass(item) {
return this.selectclass.some(selectedItem => selectedItem.id === item.id);
},
search() {
// 根据关键字过滤 this.classlist
if(this.searchKeyword!=''){
const filteredList = JSON.parse(JSON.stringify(this.changeclasslist)).filter(item => item.name.includes(this.searchKeyword));
// 更新 this.classlist 为过滤后的列表
this.classlist = filteredList;
}else{
this.fuwei()
}
},
highlightSearch(name) {
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
if (this.searchKeyword) {
const regex = new RegExp(this.searchKeyword, 'gi');
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
}
return name;
},
fuwei() {
this.classlist = JSON.parse(JSON.stringify(this.changeclasslist));
},
getclassList() {
this.$u.get("https://api.admin-v2.langsi.online/admin-api/classroom/page").then(res => {
if (res.code === 0) {
this.classlist = res.data.list;
this.changeclasslist = JSON.parse(JSON.stringify(this.classlist));
this.isloding = false;
this.selectclass.forEach(selectedItem => {
const index = this.classlist.findIndex(item => item.id === selectedItem.id);
if (index !== -1) {
this.$set(this.classlist, index, { ...this.classlist[index], isSelected: true });
}
});
}
});
},
}
}
</script>
<style lang="scss">
page {
background: linear-gradient(183deg, #F0F6FF 0%, #FAFAFA 100%);
}
.pages {
padding: 0 32rpx;
.serchbox {
padding: 0 32rpx;
display: flex;
flex-wrap: nowrap;
margin-top: 30rpx;
align-items: center;
width: 686rpx;
height: 88rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
.serchimg {
width: 30.51rpx;
height: 32rpx;
margin-right: 24rpx;
}
.input {
margin: 0 auto;
width: 568rpx;
height: 88rpx;
border-radius: 30rpx;
// background-color: #f5f8fc;
// display: flex;
// justify-content: center;
// align-items: center;
// text-align: center;
font-size: 28rpx;
font-family: Source Han Sans CN, Source Han Sans CN-Light;
font-weight: 300;
text-align: left;
color: #a7b9cd;
letter-spacing: 1.2rpx;
line-height: 36rpx;
// padding: 0 100rpx;
// padding-right: 135rpx;
box-sizing: border-box;
}
}
.teacher_card_box{
margin-top: 20rpx;
.teacher_card{
margin-bottom: 20rpx;
padding: 24rpx;
display: flex;
flex-wrap: nowrap;
width: 686rpx;
height: 148rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #FFFFFF;
.class_card_left {
width: 84rpx;
height: 84rpx;
}
.class_card_right {
margin-left: 20rpx;
display: flex;
flex-wrap: wrap;
.class_card_right_top {
width: 100%;
font-size: 28rpx;
font-family:'PingFang','PingFang';
font-weight: bold;
color: #072F5A;
}
.class_card_right_bot {
margin-top: 8rpx;
background: #EBF3FF;
border-radius: 4rpx 4rpx 4rpx 4rpx;
padding: 10rpx 20rpx;
font-size: 20rpx;
font-family:'PingFang','PingFang';
font-weight: 500;
color: #2D7CE6;
}
}
}
.student_card{
margin-bottom: 20rpx;
padding: 24rpx;
display: flex;
flex-wrap: nowrap;
width: 686rpx;
height: 124rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #FFFFFF;
.class_card_left {
width: 76rpx;
height: 76rpx;
}
.class_card_right {
margin-left: 20rpx;
display: flex;
flex-wrap: wrap;
.class_card_right_top {
width: 100%;
font-size: 28rpx;
font-family:'PingFang','PingFang';
font-weight: bold;
color: #072F5A;
}
.class_card_right_bot {
margin-top: 4rpx;
font-size: 20rpx;
font-family:'PingFang','PingFang';
font-weight: 500;
color: rgba(7,47,90,0.6);
}
}
}
.act1{
border: 2rpx solid #2D7CE6;
}
}
.botbtn{
padding: 32rpx 32rpx 0 32rpx;
margin-left: -32rpx;
position: fixed;
bottom: 0;
width: 750rpx;
height: 200rpx;
background: #FFFFFF;
box-shadow: 0rpx -10rpx 16rpx 0rpx rgba(202,202,202,0.25);
border-radius: 40rpx 40rpx 0rpx 0rpx;
.btn{
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
font-family:'PingFang','PingFang';
font-weight: 800;
color: #FFFFFF;
width: 686rpx;
height: 80rpx;
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
border-radius: 104rpx 104rpx 104rpx 104rpx;
}
}
}
</style>