feat: 任务管理模块 - 列表+详情+抢单/打卡/完成

新增:
- TaskListFragment 分段控件+RecyclerView+下拉刷新
- TaskDetailFragment 信息展示+底部固定操作按钮(foot-btn)
- TaskListAdapter 任务卡片适配器
- TaskItem/TaskDetail 数据类
- TaskApi 新增5个接口(pageList/detail/grab/assign/complete)
- 分段控件/底部按钮/状态标签 drawable

修改:
- nav_main.xml 添加参数和action
- HomeFragment 快捷区点击→任务列表(传tableStatus)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-04-27 20:19:35 +09:30
parent 3c9d74f16c
commit 1056386af8
19 changed files with 889 additions and 43 deletions

View File

@@ -0,0 +1,33 @@
package com.xiaoqu.watch.data.task
import com.google.gson.annotations.SerializedName
/**
* 任务详情数据类
* 对应 watchTask/lookTaskDetail API 返回
*/
data class TaskDetail(
@SerializedName("id") val id: Long = 0,
/** 任务编号 */
@SerializedName("no") val no: String = "",
/** 任务名称 */
@SerializedName("taskName") val taskName: String = "",
/** 地点名称 */
@SerializedName("positionName") val positionName: String = "",
/** 积分 */
@SerializedName("point") val point: Int = 0,
/** 状态2=待抢单, 3=待打卡, 4=进行中, 1=已完成 */
@SerializedName("status") val status: Int = 0,
/** 任务类型 */
@SerializedName("taskType") val taskType: Int = 0,
/** 开始时间 */
@SerializedName("beginTime") val beginTime: String = "",
/** 结束时间 */
@SerializedName("endTime") val endTime: String = "",
/** 任务描述 */
@SerializedName("description") val description: String = "",
/** 协作人 */
@SerializedName("executorName") val executorName: String = "",
/** 是否有打卡地点(决定打卡方式:有=NFC打卡无=直接确认) */
@SerializedName("hasPosition") val hasPosition: Boolean = false
)

View File

@@ -0,0 +1,27 @@
package com.xiaoqu.watch.data.task
import com.google.gson.annotations.SerializedName
/**
* 任务列表项数据类
* 对应 watchTask/pageList API 返回
*/
data class TaskItem(
@SerializedName("id") val id: Long = 0,
/** 任务编号 */
@SerializedName("no") val no: String = "",
/** 任务名称 */
@SerializedName("taskName") val taskName: String = "",
/** 地点名称 */
@SerializedName("positionName") val positionName: String = "",
/** 积分 */
@SerializedName("point") val point: Int = 0,
/** 状态2=待抢单, 3=待打卡, 4=进行中, 1=已完成 */
@SerializedName("status") val status: Int = 0,
/** 任务类型0=计划, 1=监控, 2=指派, 3=用户上报, 4=巡检上报, 5=巡检任务 */
@SerializedName("taskType") val taskType: Int = 0,
/** 开始时间 */
@SerializedName("beginTime") val beginTime: String = "",
/** 结束时间 */
@SerializedName("endTime") val endTime: String = ""
)