diff --git a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt index 6dcfea7..8a90f44 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt @@ -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() { @Inject lateinit var taskApi: TaskApi + @Inject lateinit var nfcTaskManager: NfcTaskManager /** 任务 ID 列表(queryTaskIds 返回) */ private var taskList: List = emptyList() @@ -391,14 +393,11 @@ class TaskListFragment : BaseFragment() { 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() { 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() { } } + /** 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 = "完成任务"