From f789951d234f99edf14ef3fa4fe3fd6f52ad7e15 Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Sun, 15 Jun 2025 16:13:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/new-purchase/accept/index.vue | 84 ++++++++++++++++++------- src/pages/work/index.vue | 1 + 2 files changed, 64 insertions(+), 21 deletions(-) diff --git a/src/pages/new-purchase/accept/index.vue b/src/pages/new-purchase/accept/index.vue index 1f25f3d..308d647 100644 --- a/src/pages/new-purchase/accept/index.vue +++ b/src/pages/new-purchase/accept/index.vue @@ -109,33 +109,63 @@ const queryParams = ref({ pageSize: 5, }) // 获列表数据 +// const getTableList = async (isTap = false) => { +// console.log(queryParams.value) +// try { +// const { data: res } = await getPurchaseList(queryParams.value) +// console.log('res列表数据', res) +// // 更新总数 +// total.value = res.total +// // 处理数据 +// if (isTap) { +// // 点击搜索时,直接替换数据 +// tableList.value = res.rows || [] +// // 重置页码 +// queryParams.value.pageNum = 1 +// } else { +// // 下拉加载时,追加数据 +// if (res.rows && res.rows.length > 0) { +// tableList.value = [...tableList.value, ...res.rows] +// } +// } +// } catch (error) { +// console.error('获取列表数据失败:', error) +// // 发生错误时重置数据 +// if (isTap) { +// tableList.value = [] +// } +// } +// } const getTableList = async (isTap = false) => { - console.log(queryParams.value) try { const { data: res } = await getPurchaseList(queryParams.value) - console.log('res列表数据', res) - // 更新总数 total.value = res.total - // 处理数据 + if (isTap) { - // 点击搜索时,直接替换数据 tableList.value = res.rows || [] - // 重置页码 queryParams.value.pageNum = 1 } else { - // 下拉加载时,追加数据 - if (res.rows && res.rows.length > 0) { + if (res.rows?.length) { tableList.value = [...tableList.value, ...res.rows] } } + return res // 返回数据,供后续使用 } catch (error) { console.error('获取列表数据失败:', error) - // 发生错误时重置数据 - if (isTap) { - tableList.value = [] - } + if (isTap) tableList.value = [] + throw error // 抛出错误,让外层捕获 } } + +// 滚动到指定位置 +const scrollToPosition = (position) => { + const savedScrollTop = uni.getStorageSync('scrollTop') || 0 + console.log('🚀 ~ scrollToPosition ~ savedScrollTop:', savedScrollTop) + scrollTop.value = 0 + setTimeout(() => { + scrollTop.value = savedScrollTop + }, 1000) +} // 滚动触底事件 const onScrollTolower = debounce(() => { console.log('触底事件') @@ -193,24 +223,36 @@ const handleItem = (item) => { }) return } - uni.navigateTo({ + uni.redirectTo({ url: `/pages/new-purchase/accept/acceptDetails?id=${item.id}&taskId=${item.taskId}&isFinished=${isFinished}`, }) } const scrollTop = ref(0) -onShow((options) => { - getTableList(true) - const savedScrollTop = uni.getStorageSync('scrollTop') || 0 - scrollTop.value = 0 - setTimeout(() => { - scrollTop.value = savedScrollTop - }, 500) + +// 页面加载完毕时触发 +onShow(async (options) => { + const currentPage = uni.getStorageSync('currentPage') + if (currentPage && currentPage > 1) { + const promises = [] + for (let i = 1; i <= currentPage; i++) { + queryParams.value.pageNum = i + promises.push(getTableList(true)) // 静默加载(isTap=true 替换数据) + } + Promise.all(promises).then(() => { + scrollToPosition() + }) + } else { + getTableList(true) + scrollToPosition() + } }) // scroll容器滚动时事件 const onScrollChange = (e) => { + console.log('🚀 ~ onScrollChange ~ e:', e) uni.setStorageSync('scrollTop', e.detail.scrollTop) + uni.setStorageSync('currentPage', queryParams.value.pageNum) } @@ -369,7 +411,7 @@ const onScrollChange = (e) => { .scroll-container { padding: 0 2rpx; - + // height: 60vh; .table-list-item { margin: 24rpx 0; padding: 32rpx; diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue index bfef163..88eaaf2 100644 --- a/src/pages/work/index.vue +++ b/src/pages/work/index.vue @@ -307,6 +307,7 @@ const boxList = ref([ const onNavigateTo = (url) => { uni.setStorageSync('scrollTop', null) + uni.setStorageSync('currentPage', 1) uni.navigateTo({ url }) }