|
@@ -3,20 +3,21 @@
|
|
|
<div style="background-color: #fff; position: sticky;">
|
|
|
<buttons :current="0"></buttons>
|
|
|
</div>
|
|
|
- <Empty v-if="!items.length" message="暂无职位推荐,请前往职位查看其他职位~" class="mt-3 py-15"></Empty>
|
|
|
+ <Empty v-if="!items.length" :message="loadingType === 1 ? loadingText[loadingType] : '暂无职位推荐,请前往职位查看其他职位~'" class="mt-3 py-15"></Empty>
|
|
|
<template v-else>
|
|
|
<div class="d-flex">
|
|
|
<div class="mt-3">
|
|
|
- <PositionList v-if="items.length" :items="items" @selectChange="selectChange"></PositionList>
|
|
|
+ <positionList :items="items" @selectChange="selectChange"></positionList>
|
|
|
+ <div :class="['loading', {'defaultLink-i': !loadingType}]" @click="handleChangePage">{{ loadingText[loadingType] }}</div>
|
|
|
</div>
|
|
|
<div class="position-details ml-1" style="flex: 1; overflow: hidden;">
|
|
|
<div class="position-content">
|
|
|
- <recommendDetails
|
|
|
+ <positionItemDetail
|
|
|
v-if="showRecommendDetails && jobId"
|
|
|
:defaultWidth="false"
|
|
|
:showContentRight="false"
|
|
|
:propJobId="jobId"
|
|
|
- ></recommendDetails>
|
|
|
+ ></positionItemDetail>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -31,8 +32,8 @@ import { ref, reactive, nextTick } from 'vue'
|
|
|
// import { getJobAdvertisedSearch } from '@/api/position'
|
|
|
import { getPromotedPosition } from '@/api/position'
|
|
|
import { dealDictArrayData } from '@/utils/position'
|
|
|
-import PositionList from './components/item'
|
|
|
-import recommendDetails from '@/views/recruit/personal/position/components/details.vue'
|
|
|
+import positionList from './components/positionList'
|
|
|
+import positionItemDetail from '@/views/recruit/personal/position/components/details.vue'
|
|
|
|
|
|
const jobId = ref('')
|
|
|
const showRecommendDetails = ref(false)
|
|
@@ -46,43 +47,32 @@ const query = reactive({
|
|
|
pageNum: 1,
|
|
|
pageSize: 10
|
|
|
})
|
|
|
+
|
|
|
const items = ref([])
|
|
|
+const loadingText = ['加载更多', '加载中...', '没有更多数据了']
|
|
|
+const loadingType = ref(0)
|
|
|
|
|
|
const getList = async () => {
|
|
|
+ loadingType.value = 1
|
|
|
const { list } = await getPromotedPosition(query)
|
|
|
- if (!list.length) return items.value = []
|
|
|
- items.value = list.map(e=> {
|
|
|
- const id = e?.id || ''
|
|
|
- if (!id) return ''
|
|
|
- jobId.value = id
|
|
|
- })
|
|
|
- // 处理数据
|
|
|
- items.value = dealDictArrayData([], list)
|
|
|
- if (items.value?.length) showRecommendDetails.value = true
|
|
|
- else {
|
|
|
- // if (query.pageNum> 3) return
|
|
|
- // query.pageNum++
|
|
|
- // getList()
|
|
|
+ if (list.length) {
|
|
|
+ let data = dealDictArrayData([], list) // 处理数据
|
|
|
+ items.value = items.value.concat(data)
|
|
|
+ if (query.pageNum === 1) jobId.value = items.value[0].id
|
|
|
+ if (jobId.value) showRecommendDetails.value = true
|
|
|
+ loadingType.value = list.length === query.pageSize ? 0 : 2
|
|
|
+ } else {
|
|
|
+ loadingType.value = 2
|
|
|
}
|
|
|
}
|
|
|
getList()
|
|
|
|
|
|
-// const getData = async () => {
|
|
|
-// const { list } = await getJobAdvertisedSearch(query)
|
|
|
-// if (!list.length) return
|
|
|
-// items.value = list.map((e, index) => {
|
|
|
-// const id = e?.job?.id || ''
|
|
|
-// if (!id) return ''
|
|
|
-// jobId.value = id
|
|
|
-// showRecommendDetails.value = true
|
|
|
-// e.job = { ...e.job, ...dealDictObjData({}, e.job) }
|
|
|
-// e.enterprise = { ...e.enterprise, ...dealDictObjData({}, e.enterprise) }
|
|
|
-// e.active = index ? false : true
|
|
|
-// return e
|
|
|
-// }).filter(Boolean)
|
|
|
-// console.log('personalPositionRecommend-data', items.value)
|
|
|
-// }
|
|
|
-// getData()
|
|
|
+const handleChangePage = () => {
|
|
|
+ if (loadingType.value) return
|
|
|
+ // 加载更多
|
|
|
+ query.pageNum++
|
|
|
+ getList()
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
|
|
|
@@ -103,6 +93,12 @@ getList()
|
|
|
overflow-y: auto;
|
|
|
}
|
|
|
}
|
|
|
+.loading {
|
|
|
+ margin-top: 8px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 13px;
|
|
|
+ color: gray;
|
|
|
+}
|
|
|
::-webkit-scrollbar {
|
|
|
width: 4px;
|
|
|
height: 10px;
|