From b29e68e87fed7797f4def149cec337fb6fd6f9be Mon Sep 17 00:00:00 2001 From: dongliang Date: Tue, 28 Apr 2026 11:00:50 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=93=8D=E4=BD=9C=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=8C=89taskType+status=E7=BB=84=E5=90=88?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - type 2(指派): 无抢单步骤,直接从status3开始 - type 5(巡检): status4是NFC打卡(非确认完成),无抢单无完成 - type 0/1/3/4: 完整流程(抢单→打卡→完成) - 抽取 setupPunchButton/setupCompleteButton/showBackButton 方法 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/task/TaskListFragment.kt | 113 ++++++++++++------ 1 file changed, 77 insertions(+), 36 deletions(-) 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 4cd6dfa..da79c89 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 @@ -250,55 +250,96 @@ class TaskListFragment : BaseFragment() { } } - /** 根据状态设置底部操作按钮 */ + /** + * 根据 taskType + status 设置底部操作按钮 + * + * 规则(和旧版一致): + * - type 0/1(计划/监控): status2=抢单, status3=打卡, status4=完成 + * - type 2(指派): 无抢单步骤, status3=打卡, status4=完成 + * - type 3/4(上报): status2=抢单, status3=打卡, status4=完成 + * - type 5(巡检): 无抢单, status4=NFC打卡(非完成), 无确认完成 + */ private fun setupActionButton(detail: TaskDetail) { val btn = binding.btnAction btn.visibility = View.VISIBLE + // 重置文字颜色(橙色按钮需要黑色文字,其他白色) + btn.setTextColor(requireContext().getColor(R.color.text_primary)) - when (detail.status) { - // 待抢单 → 蓝色「抢 单」 - 2 -> { - btn.text = "抢 单" - btn.setBackgroundResource(R.drawable.bg_foot_btn_blue) - btn.setTextColor(requireContext().getColor(R.color.text_primary)) - btn.setOnClickListener { doAction("grab", detail.id) } - } - // 待打卡 - 3 -> { - if (detail.hasPosition) { - // 有场景 → 橙色「开启打卡」 - btn.text = "开启打卡" - btn.setBackgroundResource(R.drawable.bg_foot_btn_orange) - btn.setTextColor(requireContext().getColor(R.color.background)) - btn.setOnClickListener { - // TODO: NFC 打卡流程 - Timber.d("NFC 打卡(后续实现)") + when (detail.taskType) { + // ===== 巡检任务(type 5):特殊流程 ===== + 5 -> { + when (detail.status) { + 4 -> { + // 巡检进行中 → 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 打卡(后续实现)") + } } - } else { - // 无场景 → 绿色「确认打卡」 - btn.text = "确认打卡" - btn.setBackgroundResource(R.drawable.bg_foot_btn_green) - btn.setTextColor(requireContext().getColor(R.color.text_primary)) - btn.setOnClickListener { doAction("assign", detail.id) } + else -> showBackButton(btn) } } - // 进行中 → 绿色「确认完成」 - 4 -> { - btn.text = "确认完成" - btn.setBackgroundResource(R.drawable.bg_foot_btn_green) - btn.setTextColor(requireContext().getColor(R.color.text_primary)) - btn.setOnClickListener { doAction("complete", detail.id) } + // ===== 指派任务(type 2):无抢单步骤 ===== + 2 -> { + when (detail.status) { + 3 -> setupPunchButton(btn, detail) + 4 -> setupCompleteButton(btn, detail) + else -> showBackButton(btn) + } } - // 其他 → 灰色「返回」 + // ===== 计划/监控/上报(type 0/1/3/4):完整流程 ===== else -> { - btn.text = "返 回" - btn.setBackgroundResource(R.drawable.bg_foot_btn_blue) - btn.setTextColor(requireContext().getColor(R.color.text_primary)) - btn.setOnClickListener { findNavController().popBackStack() } + when (detail.status) { + 2 -> { + // 抢单 + btn.text = "抢 单" + btn.setBackgroundResource(R.drawable.bg_foot_btn_blue) + btn.setOnClickListener { doAction("grab", detail.id) } + } + 3 -> setupPunchButton(btn, detail) + 4 -> setupCompleteButton(btn, detail) + else -> showBackButton(btn) + } } } } + /** 设置打卡按钮(状态3:根据有无场景决定打卡方式) */ + private fun setupPunchButton(btn: android.widget.TextView, detail: TaskDetail) { + if (detail.hasPosition) { + // 有场景 → 橙色「开启打卡」→ 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 打卡(后续实现)") + } + } else { + // 无场景 → 绿色「确认打卡」→ 直接确认 + btn.text = "确认打卡" + btn.setBackgroundResource(R.drawable.bg_foot_btn_green) + btn.setOnClickListener { doAction("assign", detail.id) } + } + } + + /** 设置确认完成按钮(状态4) */ + private fun setupCompleteButton(btn: android.widget.TextView, detail: TaskDetail) { + btn.text = "确认完成" + btn.setBackgroundResource(R.drawable.bg_foot_btn_green) + btn.setOnClickListener { doAction("complete", detail.id) } + } + + /** 显示返回按钮(已完成/其他状态) */ + private fun showBackButton(btn: android.widget.TextView) { + btn.text = "返 回" + btn.setBackgroundResource(R.drawable.bg_foot_btn_blue) + btn.setOnClickListener { findNavController().popBackStack() } + } + // ===== 操作 ===== /** 执行任务操作(抢单/打卡/完成) */