反馈联调和职位列表交互bug

This commit is contained in:
2026-05-18 18:33:46 +08:00
parent 14c7660770
commit 39bf8548df
9 changed files with 755 additions and 26 deletions
+36 -8
View File
@@ -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') {