fix: TaskListFragment NFC 打卡 TODO 填充

TaskListFragment 有两处"开启打卡"按钮留的 TODO(普通任务+巡检任务),
补充为调用 nfcTaskManager.startTaskPunch()。
打卡成功后刷新当前任务详情。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-05-06 12:57:20 +09:30
parent 8009987920
commit f2fcbd7c6a

View File

@@ -17,6 +17,7 @@ import com.xiaoqu.watch.databinding.FragmentTaskListBinding
import com.xiaoqu.watch.network.ApiResult
import com.xiaoqu.watch.network.api.TaskApi
import com.xiaoqu.watch.network.safeApiCall
import com.xiaoqu.watch.service.manager.NfcTaskManager
import com.xiaoqu.watch.ui.common.BaseFragment
import com.xiaoqu.watch.ui.widget.QuTipDialog
import dagger.hilt.android.AndroidEntryPoint
@@ -38,6 +39,7 @@ import kotlin.math.abs
class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
@Inject lateinit var taskApi: TaskApi
@Inject lateinit var nfcTaskManager: NfcTaskManager
/** 任务 ID 列表queryTaskIds 返回) */
private var taskList: List<TaskItem> = emptyList()
@@ -391,14 +393,11 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
5 -> {
when (detail.status) {
4 -> {
// 巡检进行中 → NFC 打卡(不是确认完成)
// 巡检进行中 → NFC 打卡
btn.text = "开启打卡"
btn.setBackgroundResource(R.drawable.bg_foot_btn_orange)
btn.setTextColor(requireContext().getColor(R.color.background))
btn.setOnClickListener {
// TODO: NFC 打卡流程
Timber.d("巡检 NFC 打卡(后续实现)")
}
btn.setOnClickListener { startNfcPunch(detail.id, btn) }
}
else -> showBackButton(btn)
}
@@ -435,10 +434,7 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
btn.text = "开启打卡"
btn.setBackgroundResource(R.drawable.bg_foot_btn_orange)
btn.setTextColor(requireContext().getColor(R.color.background))
btn.setOnClickListener {
// TODO: NFC 打卡流程
Timber.d("NFC 打卡(后续实现)")
}
btn.setOnClickListener { startNfcPunch(detail.id, btn) }
} else {
// 无场景 → 绿色「确认打卡」→ 直接确认
btn.text = "确认打卡"
@@ -447,6 +443,39 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
}
}
/** NFC 任务打卡(有场景打卡 / 巡检打卡) */
private fun startNfcPunch(taskId: Long, btn: android.widget.TextView) {
// 切换到扫描状态
btn.text = "贴近信标..."
btn.isEnabled = false
btn.setBackgroundResource(R.drawable.bg_foot_btn_grey)
nfcTaskManager.startTaskPunch(taskId) { success, message ->
if (success) {
tipDialog.show(
status = QuTipDialog.Status.SUCCESS,
title = "打卡成功",
back = false, step = 1, countdown = 2
)
// 刷新当前任务详情
fetchCurrentDetail()
} else {
if (message != "超时") {
tipDialog.show(
status = QuTipDialog.Status.ERROR,
title = "打卡失败",
desc = message,
back = false, step = 0, countdown = 3
)
}
// 恢复按钮
btn.text = "开启打卡"
btn.isEnabled = true
btn.setBackgroundResource(R.drawable.bg_foot_btn_orange)
}
}
}
/** 设置完成任务按钮状态4 */
private fun setupCompleteButton(btn: android.widget.TextView, detail: TaskDetail) {
btn.text = "完成任务"