| 
					
				 | 
			
			
				@@ -5,7 +5,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       :style="{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         flexWrap: isTowLine ? 'wrap' : 'nowrap', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         flex: isTowLine ? 1 : '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'justify-content': isTowLine ? 'center' : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'justify-content': isTowLine || gList.length > 1 ? 'center' : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,7 +25,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <span class="group-enter" @click="$emit('enterGroup', group_id)">进入</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="student-list" :style="{ height: isTowLine ? 'calc(100vh - 890px)' : 'calc(100vh - 454px)' }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="student-list" :style="{ height: isTowLine ? 'calc((100vh - 552px) / 2)' : 'calc(100vh - 454px)' }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             v-for="{ student_image_url, student_id, student_name } in student_list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             :key="student_id" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,7 +36,30 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <span>{{ student_name }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <div class="student-item-right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <svg-icon icon-class="live-mobile-grouping" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-popover 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :disabled="showAdjustGroup" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                popper-class="student-item-operation" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                trigger="click" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                title="移动到..." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                placement="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @hide="handlePopperHide" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="adjust-group"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <el-select v-model="adjustGroup"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      v-for="{ group_id: gId, group_name } in adjustGroupList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :key="gId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :label="group_name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      :value="gId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class="operation-button"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-button class="button-cancel" @click="adjustGroupCancel">取消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-button class="button-confirm">确定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <svg-icon slot="reference" icon-class="live-mobile-grouping" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-popover> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,7 +85,7 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { ref, computed, watch } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, computed, watch, nextTick } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const props = defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   groupList: { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,7 +118,7 @@ let isTowLine = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let gList = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const col = Math.floor((window.innerHeight - 192 - 204 - 68 - 4) / 44); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const col_2 = Math.floor((window.innerHeight - 192 - 204 - 68 - 8 - 100) / 44); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const col_2 = Math.floor((window.innerHeight - 192 - 204 - 112 - 24 - 8) / 44); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const row = Math.floor((window.innerWidth - 116) / 342); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   let groupNum = props.groupList.length; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -121,13 +144,27 @@ let gList = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 watch(gList, (newVal) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (curPage.value > newVal.length) curPage.value = newVal.length - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let adjustGroup = ref(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let adjustGroupList = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return props.groupList.map(({ group_id }, i) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { group_id, group_name: `分组${i + 1}` }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let showAdjustGroup = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function adjustGroupCancel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // showAdjustGroup.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function handlePopperHide() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // showAdjustGroup.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .group-list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  flex: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   padding: 102px 58px 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -220,7 +257,6 @@ watch(gList, (newVal) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     column-gap: 4px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     justify-content: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding-bottom: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     .circle-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       width: 8px; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -236,3 +272,36 @@ watch(gList, (newVal) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.student-item-operation { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .adjust-group { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    flex-direction: column; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    row-gap: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .operation-button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      justify-content: flex-end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .button-cancel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        background-color: #f5f5f5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border-color: #f5f5f5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      .button-confirm { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        background-color: #3fa1fb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border-color: #3fa1fb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-popover__title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #333; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |