| 
					
				 | 
			
			
				@@ -1,67 +1,67 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa" @update:modelValue="handleChangeTab"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <v-tab v-for="(k, index) in tabList" :key="index" :value="k.value">{{ k.label }}</v-tab> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </v-tabs> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<ItemPage v-if="data[tabList[tab].key]?.length" :tab="tab" class="mt-3" :items="data[tabList[tab].key]" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<div v-if="items?.length"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<ItemPage class="mt-3" :items="items" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<CtPagination 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      v-if="total > 0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :total="total" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :page="query.pageNo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :limit="query.pageSize" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @handleChange="handleChangePage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ></CtPagination> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	<Empty v-else :elevation="false" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 实习企业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 defineOptions({ name: 'PersonalCenterStudentInternshipCompany'}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { ref } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { practiceProcess } from '@/api/recruit/personal/personalCenter/student.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, onMounted } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getInternshipPage } from '@/api/recruit/personal/student.js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ItemPage from './item.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getDict } from '@/hooks/web/useDictionaries' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { dealDictObjData } from '@/utils/position' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const tab = ref(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const tabList = ref([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	{ label: '等待中', value: 0, key: 'waitProcess' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	{ label: '进行中', value: 1, key: 'process' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	{ label: '已结束', value: 2, key: 'endProcess' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const studentInfo = ref(localStorage.getItem('studentInfo') ? JSON.parse(localStorage.getItem('studentInfo')) : {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const data = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	waitProcess: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			job: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				name: '前端开发', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				payFrom: 10000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				payTo: 20000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				payUnit: '月', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				area: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					"str": "呼和浩特市-和林格尔县" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				id: '1864521193404727297', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				areaId: 150123, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				eduType: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				expType: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				status: '0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				updateTime: 1740972578585 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			enterprise: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				id: '1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				anotherName: '门墩儿', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				name: '门墩儿科技有限公司', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				logoUrl: 'https://minio.citupro.com/dev/menduner/company-avatar.png', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				industryName: '互联网', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				scaleName: '10000-50000人', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			entity: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				jobJoinDate: 1740972578585, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				internshipEndDate: 1740972578585, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				percentage: '50', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	process: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	endProcess: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const tabList = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const items = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const total = ref(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const query = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pageNo: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pageSize: 10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	status: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const getList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	data = await practiceProcess({ studentId: studentInfo.value.userId }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	// console.log(data, 'list') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	query.value.status = tabList.value[tab.value]?.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const result = await getInternshipPage(query.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	items.value = result?.list.map(e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e.enterprise = dealDictObjData({}, e.enterprise) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		e.job = dealDictObjData({}, e.job) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	total.value = result?.total || 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+onMounted(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const { data } = await getDict('student_practice_status') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tabList.value = data || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	await getList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleChangeTab = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	query.value.pageNo = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleChangePage = (page) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  query.value.pageNo = page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	getList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// getList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style scoped lang="scss"> 
			 |