数据处理
This commit is contained in:
		
							parent
							
								
									8b38b01d19
								
							
						
					
					
						commit
						76008bc03a
					
				| 
						 | 
				
			
			@ -1,27 +1,33 @@
 | 
			
		|||
<template>
 | 
			
		||||
	<view class="searchpage">
 | 
			
		||||
		<u-navbar title="搜索" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
 | 
			
		||||
		<u-navbar title="添加学生" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
 | 
			
		||||
			height='36'></u-navbar>
 | 
			
		||||
			<u-toast ref="uToast" />
 | 
			
		||||
		<view class="serchbox">
 | 
			
		||||
			<view class="serchimg">
 | 
			
		||||
				<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
 | 
			
		||||
 | 
			
		||||
				</image>
 | 
			
		||||
			</view>
 | 
			
		||||
			<input type="text" placeholder="搜索相关内容..." class="input" placeholder-style="color:#C7CDD3 ">
 | 
			
		||||
			<input type="text"
 | 
			
		||||
				 v-model="searchKeyword"
 | 
			
		||||
				 placeholder="搜索相关内容..."
 | 
			
		||||
				 class="input"
 | 
			
		||||
				 placeholder-style="color:#C7CDD3"
 | 
			
		||||
				 @input="search()">
 | 
			
		||||
		</view>
 | 
			
		||||
		<view class="check_card">
 | 
			
		||||
			<view class="check_card_stu" v-for="(item,index ) in stulist" :key="index">
 | 
			
		||||
			<view class="check_card_stu " v-for="(item,index ) in stulist" :key="index" @click="toggleSelection(item)" :class="{ 'act1': item.isSelected }"> 
 | 
			
		||||
				<view class="check_card_stu_info_left">
 | 
			
		||||
					<view class="class_card_left">
 | 
			
		||||
						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
 | 
			
		||||
						<image :src="item.headImgUrl"></image>
 | 
			
		||||
					</view>
 | 
			
		||||
					<view class="class_card_right">
 | 
			
		||||
						<view class="class_card_right_top">
 | 
			
		||||
							李斯丹妮
 | 
			
		||||
						<view class="class_card_right_top" v-html="highlightSearch(item.nickName)">
 | 
			
		||||
							
 | 
			
		||||
						</view>
 | 
			
		||||
						<view class="class_card_right_bot">
 | 
			
		||||
							ID:3324
 | 
			
		||||
							ID:{{item.id}}
 | 
			
		||||
						</view>
 | 
			
		||||
					</view>
 | 
			
		||||
				</view>
 | 
			
		||||
| 
						 | 
				
			
			@ -30,9 +36,14 @@
 | 
			
		|||
			
 | 
			
		||||
 | 
			
		||||
		</view>
 | 
			
		||||
		<view class="zhanwei" style="width: 100%; height: 50rpx;">
 | 
			
		||||
		<view class="zhanwei" style="width: 100%; height: 230rpx;">
 | 
			
		||||
			
 | 
			
		||||
		</view>
 | 
			
		||||
		<view class="botbtn" @click="addstu()" v-show="selectedIds.length>0">
 | 
			
		||||
			<view class="btn">
 | 
			
		||||
				确定添加({{selectedIds.length}})
 | 
			
		||||
			</view>
 | 
			
		||||
		</view>
 | 
			
		||||
	</view>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,10 +52,13 @@
 | 
			
		|||
		data() {
 | 
			
		||||
			return {
 | 
			
		||||
				bgc: {
 | 
			
		||||
					backgroundColor: "#transparent",
 | 
			
		||||
					backgroundColor: "#F6F9FC",
 | 
			
		||||
				},
 | 
			
		||||
				checkindex: 1,
 | 
			
		||||
				stulist:[]
 | 
			
		||||
				stulist:[],
 | 
			
		||||
				searchKeyword:'',
 | 
			
		||||
				orgstulist:[],
 | 
			
		||||
				selectedIds: [],
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		onLoad(option) {
 | 
			
		||||
| 
						 | 
				
			
			@ -53,14 +67,81 @@
 | 
			
		|||
			this.getallstu()
 | 
			
		||||
		},
 | 
			
		||||
		methods: {
 | 
			
		||||
			addstu() {
 | 
			
		||||
			let data = {
 | 
			
		||||
				memberId: this.selectedIds[0],
 | 
			
		||||
				// memberId: '1522',
 | 
			
		||||
				roomId: this.classid
 | 
			
		||||
			};
 | 
			
		||||
			
 | 
			
		||||
			this.$u.post(`https://api.admin-v2.langsi.online/admin-api/classroom/members/add`, data).then(res => {
 | 
			
		||||
				if (res.code === 0) {
 | 
			
		||||
					this.$refs.uToast.show({
 | 
			
		||||
						title: '添加成功',
 | 
			
		||||
						type: 'success',
 | 
			
		||||
						position:'top'
 | 
			
		||||
					})
 | 
			
		||||
					this.selectedIds=[]
 | 
			
		||||
					this.fuwei()
 | 
			
		||||
				}else{
 | 
			
		||||
					this.$refs.uToast.show({
 | 
			
		||||
						title: '添加失败',
 | 
			
		||||
						type: 'error',
 | 
			
		||||
						position:'top'
 | 
			
		||||
						
 | 
			
		||||
					})
 | 
			
		||||
					this.selectedIds=[]
 | 
			
		||||
					this.fuwei()
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
			},
 | 
			
		||||
			 toggleSelection(item) {
 | 
			
		||||
			    const selectedIndex = this.selectedIds.indexOf(item.id);
 | 
			
		||||
			
 | 
			
		||||
			    if (selectedIndex === -1) {
 | 
			
		||||
			      // If not selected, add to the array and apply the 'act1' class
 | 
			
		||||
			      this.selectedIds.push(item.id);
 | 
			
		||||
			      item.isSelected = true;  // Add a property to the item to track selection
 | 
			
		||||
			    } else {
 | 
			
		||||
			      // If already selected, remove from the array and remove the 'act1' class
 | 
			
		||||
			      this.selectedIds.splice(selectedIndex, 1);
 | 
			
		||||
			      item.isSelected = false;
 | 
			
		||||
			    }
 | 
			
		||||
				console.log(this.selectedIds,'selectedIdsselectedIdsselectedIds');
 | 
			
		||||
			  },
 | 
			
		||||
			search() {
 | 
			
		||||
			    // 根据关键字过滤 this.classlist
 | 
			
		||||
			    if (this.searchKeyword !== '') {
 | 
			
		||||
			        const filteredList = JSON.parse(JSON.stringify(this.orgstulist)).filter(item => {
 | 
			
		||||
			            // 匹配 nickName 或者 id
 | 
			
		||||
			            return item.nickName.includes(this.searchKeyword) || item.id.toString().includes(this.searchKeyword);
 | 
			
		||||
			        });
 | 
			
		||||
			        // 更新 this.classlist 为过滤后的列表
 | 
			
		||||
			        this.stulist = filteredList;
 | 
			
		||||
			    } else {
 | 
			
		||||
			        this.fuwei();
 | 
			
		||||
			    }
 | 
			
		||||
			},
 | 
			
		||||
			fuwei() {
 | 
			
		||||
				
 | 
			
		||||
				this.stulist = JSON.parse(JSON.stringify(this.orgstulist));
 | 
			
		||||
			},
 | 
			
		||||
			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;
 | 
			
		||||
			  },
 | 
			
		||||
			getallstu(){
 | 
			
		||||
				this.$u.get(`https://api.admin-v2.langsi.online/admin-api/v2/ybs-user/page`).then(res => {
 | 
			
		||||
				
 | 
			
		||||
							
 | 
			
		||||
					if (res.code == 0) {
 | 
			
		||||
						this.stulist=res.data.list	
 | 
			
		||||
						// this.classlist = res.data.list
 | 
			
		||||
						// this.isloding = false
 | 
			
		||||
						this.stulist=res.data.list
 | 
			
		||||
						this.orgstulist = JSON.parse(JSON.stringify(res.data.list));
 | 
			
		||||
						
 | 
			
		||||
							
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
| 
						 | 
				
			
			@ -203,5 +284,29 @@
 | 
			
		|||
				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>
 | 
			
		||||
| 
						 | 
				
			
			@ -20,9 +20,11 @@
 | 
			
		|||
					</image>
 | 
			
		||||
				</view>
 | 
			
		||||
				<input type="text"
 | 
			
		||||
					   placeholder="搜索相关内容..."
 | 
			
		||||
					   class="input"
 | 
			
		||||
					   placeholder-style="color:#C7CDD3 ">
 | 
			
		||||
					  v-model="searchKeyword"
 | 
			
		||||
					  placeholder="搜索相关内容..."
 | 
			
		||||
					  class="input"
 | 
			
		||||
					  placeholder-style="color:#C7CDD3"
 | 
			
		||||
					  @input="search()">
 | 
			
		||||
			</view>
 | 
			
		||||
			
 | 
			
		||||
		</view>
 | 
			
		||||
| 
						 | 
				
			
			@ -32,51 +34,17 @@
 | 
			
		|||
		</view>
 | 
			
		||||
 | 
			
		||||
		<view class="check_card" v-show="checkindex==1">
 | 
			
		||||
			<view class="check_card_stu">
 | 
			
		||||
			<view class="check_card_stu" v-for="(item,index ) in stulist" :key="index">
 | 
			
		||||
				<view class="check_card_stu_info_left">
 | 
			
		||||
					<view class="class_card_left">
 | 
			
		||||
						<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
 | 
			
		||||
						<image :src="item.memberInfo.avatar"></image>
 | 
			
		||||
					</view>
 | 
			
		||||
					<view class="class_card_right">
 | 
			
		||||
						<view class="class_card_right_top">
 | 
			
		||||
							李斯丹妮
 | 
			
		||||
						<view class="class_card_right_top"  v-html="highlightSearch(item.memberInfo.name)">
 | 
			
		||||
						
 | 
			
		||||
						</view>
 | 
			
		||||
						<view class="class_card_right_bot">
 | 
			
		||||
							ID:3324
 | 
			
		||||
						</view>
 | 
			
		||||
					</view>
 | 
			
		||||
				</view>
 | 
			
		||||
				<view class="check_card_stu_info_right">
 | 
			
		||||
					<view class="class_info" >
 | 
			
		||||
							<view class="class_info_top" >
 | 
			
		||||
								平均成绩/分
 | 
			
		||||
							</view>
 | 
			
		||||
							<view class="class_info_bot" >
 | 
			
		||||
								6
 | 
			
		||||
							</view>
 | 
			
		||||
						</view>
 | 
			
		||||
					<view class="class_info" >
 | 
			
		||||
							<view class="class_info_top" >
 | 
			
		||||
								作业完成度
 | 
			
		||||
							</view>
 | 
			
		||||
							<view class="class_info_bot" >
 | 
			
		||||
								80%
 | 
			
		||||
							</view>
 | 
			
		||||
						</view>
 | 
			
		||||
						
 | 
			
		||||
				</view>
 | 
			
		||||
			</view>
 | 
			
		||||
			<view class="check_card_stu ">
 | 
			
		||||
				<view class="check_card_stu_info_left">
 | 
			
		||||
					<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">
 | 
			
		||||
							李斯丹妮
 | 
			
		||||
						</view>
 | 
			
		||||
						<view class="class_card_right_bot">
 | 
			
		||||
							ID:3324
 | 
			
		||||
							ID:{{item.memberInfo.id}}
 | 
			
		||||
						</view>
 | 
			
		||||
					</view>
 | 
			
		||||
				</view>
 | 
			
		||||
| 
						 | 
				
			
			@ -101,6 +69,7 @@
 | 
			
		|||
				</view>
 | 
			
		||||
			</view>
 | 
			
		||||
			
 | 
			
		||||
			
 | 
			
		||||
		</view>
 | 
			
		||||
		<!-- <view class="botbtn">
 | 
			
		||||
			<view class="btn">
 | 
			
		||||
| 
						 | 
				
			
			@ -119,20 +88,54 @@ export default {
 | 
			
		|||
				backgroundColor: "#F6F9FC",
 | 
			
		||||
			},
 | 
			
		||||
			checkindex: 1,
 | 
			
		||||
			stulist:[],
 | 
			
		||||
			searchKeyword:'',
 | 
			
		||||
			orgstulist:[],
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	onLoad(option) {
 | 
			
		||||
		// this.classid=option.id
 | 
			
		||||
		this.classid=15
 | 
			
		||||
		
 | 
			
		||||
	},
 | 
			
		||||
	onShow() {
 | 
			
		||||
		this.getclassteacher()
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
	
 | 
			
		||||
		search() {
 | 
			
		||||
		    // 根据关键字过滤 this.classlist
 | 
			
		||||
		    if (this.searchKeyword !== '') {
 | 
			
		||||
		        const filteredList = JSON.parse(JSON.stringify(this.orgstulist)).filter(item => {
 | 
			
		||||
		            // 匹配 nickName 或者 id
 | 
			
		||||
		            return item.memberInfo.name.includes(this.searchKeyword) || item.memberInfo.id.toString().includes(this.searchKeyword);
 | 
			
		||||
		        });
 | 
			
		||||
		        // 更新 this.classlist 为过滤后的列表
 | 
			
		||||
		        this.stulist = filteredList;
 | 
			
		||||
		    } else {
 | 
			
		||||
		        this.fuwei();
 | 
			
		||||
		    }
 | 
			
		||||
		},
 | 
			
		||||
		fuwei() {
 | 
			
		||||
			
 | 
			
		||||
			this.stulist = JSON.parse(JSON.stringify(this.orgstulist));
 | 
			
		||||
		},
 | 
			
		||||
		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;
 | 
			
		||||
		  },
 | 
			
		||||
		getclassteacher(){
 | 
			
		||||
			this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/members/list?classId=${this.classid}`).then(res => {
 | 
			
		||||
			
 | 
			
		||||
						
 | 
			
		||||
				if (res.code == 0) {
 | 
			
		||||
					this.teacherlist=res.data.list
 | 
			
		||||
					this.stulist=res.data
 | 
			
		||||
					this.orgstulist = JSON.parse(JSON.stringify(res.data));
 | 
			
		||||
					// this.classlist = res.data.list
 | 
			
		||||
					// this.isloding = false
 | 
			
		||||
						
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,8 +37,11 @@
 | 
			
		|||
						<text>班级成员</text>
 | 
			
		||||
						<u-icon name="arrow-right" color="#646D7B" size="16"></u-icon>
 | 
			
		||||
					</view>
 | 
			
		||||
					<view class="view_images">
 | 
			
		||||
						<image :src="item1.url" mode="" v-for="(item1,index) in item.image"></image>
 | 
			
		||||
					<view class="view_images"  >
 | 
			
		||||
						<image :src="item.memberInfo.avatar" mode=""  v-for="(item,index ) in classinfo.members" :key="index" v-if="index<=4"></image>
 | 
			
		||||
						<view class="shenlue" v-if="classinfo.members.length>4">
 | 
			
		||||
							{{classinfo.members.length}}
 | 
			
		||||
						</view>
 | 
			
		||||
					</view>
 | 
			
		||||
				</view>
 | 
			
		||||
			</view>
 | 
			
		||||
| 
						 | 
				
			
			@ -123,10 +126,10 @@
 | 
			
		|||
		onLoad(option) {
 | 
			
		||||
			// this.classid=option.id
 | 
			
		||||
			this.classid=15
 | 
			
		||||
			this.getclassinfo()
 | 
			
		||||
			
 | 
			
		||||
		},
 | 
			
		||||
		onShow(){
 | 
			
		||||
			
 | 
			
		||||
			this.getclassinfo()
 | 
			
		||||
		},
 | 
			
		||||
		methods:{
 | 
			
		||||
			getclassinfo() {
 | 
			
		||||
| 
						 | 
				
			
			@ -233,7 +236,7 @@
 | 
			
		|||
			display: flex;
 | 
			
		||||
			justify-content: space-evenly;
 | 
			
		||||
			height: 160rpx;
 | 
			
		||||
			background: linear-gradient(174deg, #FFF2E4 0%, #FFFFFF 100%);
 | 
			
		||||
			background: linear-gradient(174deg, #FFF2E4 10%, #FFFFFF 100%);
 | 
			
		||||
			border-radius: 20rpx 20rpx 20rpx 20rpx;
 | 
			
		||||
			// padding: 60rpx;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -258,16 +261,30 @@
 | 
			
		|||
 | 
			
		||||
		.view_images {
 | 
			
		||||
			display: flex;
 | 
			
		||||
			justify-content: space-between;
 | 
			
		||||
			// justify-content: space-between;
 | 
			
		||||
			margin-top: 20rpx;
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			image {
 | 
			
		||||
			
 | 
			
		||||
				margin-right: 16rpx;
 | 
			
		||||
				width: 36rpx;
 | 
			
		||||
				height: 36rpx;
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
			.shenlue{
 | 
			
		||||
				display: flex;
 | 
			
		||||
				justify-content: center;
 | 
			
		||||
				align-items: center;
 | 
			
		||||
				background-color: #FFF2E4;
 | 
			
		||||
				border-radius: 50%;
 | 
			
		||||
				width: 36rpx;
 | 
			
		||||
				height: 36rpx;
 | 
			
		||||
				font-size: 20rpx;
 | 
			
		||||
				font-family: PingFang SC, PingFang SC;
 | 
			
		||||
				font-weight: 800;
 | 
			
		||||
				color: #F18F21;
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		.view_operation {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user