反馈联调和职位列表交互bug
This commit is contained in:
+36
-8
@@ -236,7 +236,7 @@
|
||||
<div v-if="!loading && jobList.length === 0" class="jobs-page__empty">暂无数据</div>
|
||||
<!-- 加载更多提示 -->
|
||||
<div v-if="loadingMore" class="jobs-page__loading-more">加载中...</div>
|
||||
<div v-else-if="noMore && jobList.length > 0" class="jobs-page__loading-more">没有更多了</div>
|
||||
<div v-else-if="noMore && jobList.length > 0" class="jobs-page__loading-more">没有更多符合的职位了</div>
|
||||
</div>
|
||||
</div>
|
||||
<AiChat :job-id="currentAskJobId" />
|
||||
@@ -363,6 +363,9 @@ const applyStatusTabs = computed(() => [
|
||||
function switchApplyStatus(status: number) {
|
||||
applyStatusFilter.value = applyStatusFilter.value === status ? null : status
|
||||
pageNum.value = 1
|
||||
hasNoMoreData.value = false
|
||||
jobList.value = []
|
||||
total.value = 0
|
||||
loadApplyList()
|
||||
}
|
||||
|
||||
@@ -579,8 +582,11 @@ const loading = ref(false)
|
||||
/** 是否正在加载下一页 */
|
||||
const loadingMore = ref(false)
|
||||
|
||||
/** 接口返回空列表时标记为无更多数据 */
|
||||
const hasNoMoreData = ref(false)
|
||||
|
||||
/** 是否已加载全部数据 */
|
||||
const noMore = computed(() => jobList.value.length >= total.value && total.value > 0)
|
||||
const noMore = computed(() => hasNoMoreData.value || (jobList.value.length >= total.value && total.value > 0))
|
||||
|
||||
/** 职位列表数据 */
|
||||
const jobList = ref<JobItem[]>([])
|
||||
@@ -661,8 +667,14 @@ async function loadNextPage() {
|
||||
applied: false,
|
||||
showMenu: false,
|
||||
}))
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
// 返回空列表时标记无更多数据,停止滚动加载
|
||||
if (newItems.length === 0) {
|
||||
hasNoMoreData.value = true
|
||||
pageNum.value--
|
||||
} else {
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
// 加载失败时回退页码
|
||||
@@ -693,6 +705,9 @@ function onListScroll() {
|
||||
/** 筛选条件变化时重置到第一页并重新加载 */
|
||||
function reloadFirstPage() {
|
||||
pageNum.value = 1
|
||||
hasNoMoreData.value = false
|
||||
jobList.value = []
|
||||
total.value = 0
|
||||
// 筛选条件变化时清除缓存
|
||||
store.commit('SET_JOB_LIST_CACHE', null)
|
||||
loadCurrentTab()
|
||||
@@ -752,8 +767,14 @@ async function loadFavoriteNextPage() {
|
||||
applied: false,
|
||||
showMenu: false,
|
||||
}))
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
// 返回空列表时标记无更多数据,停止滚动加载
|
||||
if (newItems.length === 0) {
|
||||
hasNoMoreData.value = true
|
||||
pageNum.value--
|
||||
} else {
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
pageNum.value--
|
||||
@@ -812,8 +833,14 @@ async function loadApplyNextPage() {
|
||||
applied: true,
|
||||
showMenu: false,
|
||||
}))
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
// 返回空列表时标记无更多数据,停止滚动加载
|
||||
if (newItems.length === 0) {
|
||||
hasNoMoreData.value = true
|
||||
pageNum.value--
|
||||
} else {
|
||||
jobList.value.push(...newItems)
|
||||
total.value = Number(res.data.total)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
pageNum.value--
|
||||
@@ -850,6 +877,7 @@ watch(activeTab, (newTab, oldTab) => {
|
||||
keyword.value = ''
|
||||
pageNum.value = 1
|
||||
total.value = 0
|
||||
hasNoMoreData.value = false
|
||||
loadCurrentTab()
|
||||
// 切换到收藏 Tab 时刷新统计
|
||||
if (newTab === 'collected') {
|
||||
|
||||
Reference in New Issue
Block a user