hookehuyr

feat(plan): 优化计划书删除用户体验

- 删除后保持在当前页,不再跳回第1页
- 本地立即移除删除的项(用户马上看到效果)
- 如果当前页被删空,自动回到上一页
- 静默刷新当前页数据(后台同步,用户无感知)

影响文件:
- src/pages/plan/index.vue

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
...@@ -5,6 +5,23 @@ ...@@ -5,6 +5,23 @@
5 5
6 --- 6 ---
7 7
8 +## [2026-02-11] - 优化计划书删除用户体验
9 +
10 +### 优化
11 +- **删除后保持在当前页**
12 + - 删除计划书后,不再跳回第1页,而是停留在当前页
13 + - 本地立即移除删除的项(用户马上看到效果)
14 + - 如果当前页被删空,自动回到上一页(而不是第1页)
15 + - 静默刷新当前页数据(后台同步,用户无感知)
16 +
17 +**详细信息**
18 +- **影响文件**: src/pages/plan/index.vue
19 +- **技术栈**: Taro 4, Vue 3, Composition API
20 +- **测试状态**: 已通过 ESLint 检查
21 +- **备注**: 提升用户体验,删除后无需重新翻页
22 +
23 +---
24 +
8 ## [2026-02-11] - 统一分页起始页码从0开始 25 ## [2026-02-11] - 统一分页起始页码从0开始
9 26
10 ### 修复 27 ### 修复
......
...@@ -519,6 +519,11 @@ const onView = async (item) => { ...@@ -519,6 +519,11 @@ const onView = async (item) => {
519 /** 519 /**
520 * 删除计划书 520 * 删除计划书
521 * @description 调用删除API删除计划书 521 * @description 调用删除API删除计划书
522 + *
523 + * **用户体验优化**:删除后保持在当前页,避免跳回第1页
524 + * - 本地立即移除删除的项(用户马上看到效果)
525 + * - 如果当前页删空了,自动回到上一页
526 + * - 否则静默刷新当前页(后台同步数据,用户无感知)
522 */ 527 */
523 const onDelete = async (item) => { 528 const onDelete = async (item) => {
524 Taro.showModal({ 529 Taro.showModal({
...@@ -537,10 +542,28 @@ const onDelete = async (item) => { ...@@ -537,10 +542,28 @@ const onDelete = async (item) => {
537 duration: 1500 542 duration: 1500
538 }) 543 })
539 544
540 - // 重新加载列表 545 + // ✅ 改进:从本地列表中立即移除(用户马上看到效果)
541 - currentPage.value = 0 546 + const index = currentList.value.findIndex(i => i.id === item.id)
542 - hasMore.value = true 547 + if (index !== -1) {
543 - await fetchPlanList(0, pageSize, false) 548 + currentList.value.splice(index, 1)
549 + }
550 +
551 + // ✅ 处理边界:如果当前页删空了,回到上一页
552 + if (currentList.value.length === 0 && currentPage.value > 0) {
553 + currentPage.value--
554 + await fetchPlanList(currentPage.value, pageSize, false)
555 + } else {
556 + // ✅ 否则静默刷新当前页(后台同步数据,用户无感知)
557 + fetchPlanList(currentPage.value, pageSize, false)
558 + .then(() => {
559 + // 刷新成功,数据已同步
560 + })
561 + .catch((err) => {
562 + // 即使刷新失败也没关系,本地已经移除了
563 + // 下次用户翻页或刷新时会自动同步
564 + console.warn('静默刷新失败:', err)
565 + })
566 + }
544 } else { 567 } else {
545 Taro.showToast({ 568 Taro.showToast({
546 title: deleteRes.msg || '删除失败', 569 title: deleteRes.msg || '删除失败',
......