|
@@ -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">
|