微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,123 @@
import { mockTasks, mockPerformance } from '../../utils/mock-data'
import type { Task } from '../../utils/mock-data'
import { getTaskTypeColor } from '../../utils/task'
/** 任务类型 → 详情页路由映射 */
const DETAIL_ROUTE_MAP: Record<string, string> = {
callback: '/pages/task-detail-callback/task-detail-callback',
priority_recall: '/pages/task-detail-priority/task-detail-priority',
relationship: '/pages/task-detail-relationship/task-detail-relationship',
}
/** 为任务附加颜色信息 */
function enrichTask(task: Task) {
return {
...task,
typeColor: getTaskTypeColor(task.taskType),
}
}
Page({
data: {
/** 页面状态loading / empty / normal */
pageState: 'loading' as 'loading' | 'empty' | 'normal',
/** 任务列表(附带颜色) */
tasks: [] as ReturnType<typeof enrichTask>[],
/** 任务总数 */
taskCount: 0,
/** Banner 指标 */
bannerMetrics: [] as Array<{ label: string; value: string }>,
/** Banner 标题 */
bannerTitle: '',
/** 是否还有更多数据(模拟分页) */
hasMore: true,
},
onLoad() {
this.loadData()
},
onShow() {
// TabBar 页面每次显示时可刷新
},
/** 下拉刷新 */
onPullDownRefresh() {
this.loadData(() => {
wx.stopPullDownRefresh()
})
},
/** 触底加载更多 */
onReachBottom() {
if (!this.data.hasMore) return
// Mock无更多数据
this.setData({ hasMore: false })
wx.showToast({ title: '没有更多了', icon: 'none' })
},
/** 加载数据 */
loadData(cb?: () => void) {
this.setData({ pageState: 'loading' })
// 模拟网络延迟
setTimeout(() => {
const pending = mockTasks.filter((t) => t.status === 'pending')
const enriched = pending.map(enrichTask)
const perf = mockPerformance
const bannerTitle = `${perf.currentTier}`
const bannerMetrics = [
{ label: '本月收入', value: `¥${perf.monthlyIncome.toLocaleString()}` },
{ label: '今日服务', value: `${perf.todayServiceCount}` },
{ label: '距下一档', value: `¥${perf.nextTierGap.toLocaleString()}` },
]
this.setData({
pageState: enriched.length > 0 ? 'normal' : 'empty',
tasks: enriched,
taskCount: enriched.length,
bannerTitle,
bannerMetrics,
hasMore: true,
})
cb?.()
}, 600)
},
/** 点击任务卡片 → 跳转详情 */
onTaskTap(e: WechatMiniprogram.TouchEvent) {
const { id, tasktype } = e.currentTarget.dataset
const route = DETAIL_ROUTE_MAP[tasktype] || '/pages/task-detail/task-detail'
wx.navigateTo({
url: `${route}?id=${id}`,
fail: () => wx.showToast({ title: '页面跳转失败', icon: 'none' }),
})
},
/** 长按任务卡片 → 操作菜单 */
onTaskLongPress(e: WechatMiniprogram.TouchEvent) {
const { id, name } = e.currentTarget.dataset
wx.showActionSheet({
itemList: ['查看详情', '标记完成', '添加备注'],
success: (res) => {
switch (res.tapIndex) {
case 0: {
// 查看详情 — 复用点击逻辑
const { tasktype } = e.currentTarget.dataset
const route = DETAIL_ROUTE_MAP[tasktype] || '/pages/task-detail/task-detail'
wx.navigateTo({ url: `${route}?id=${id}` })
break
}
case 1:
wx.showToast({ title: `已标记「${name}」完成`, icon: 'success' })
break
case 2:
wx.showToast({ title: `为「${name}」添加备注`, icon: 'none' })
break
}
},
})
},
})