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 fdb4d7c..9def0a5 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 @@ -197,7 +197,10 @@ class TaskListFragment : BaseFragment() { // ===== UI 显示 ===== - /** 显示任务详情(使用服务端实际返回的字段) */ + /** + * 显示任务详情(居中布局,老年人大字优化) + * 重点突出:状态 → 任务名 → 地点 → 时间/积分 + */ private fun displayDetail(detail: TaskDetail) { binding.taskContent.visibility = View.VISIBLE binding.tvEmpty.visibility = View.GONE @@ -206,18 +209,34 @@ class TaskListFragment : BaseFragment() { // 标题:第X/Y个任务 binding.tvTitle.text = "第${taskIndex + 1}/${taskList.size}个任务" - // 派单时间(sendTime: "04.28 09:10") - if (detail.sendTime.isNotEmpty()) { - binding.tvSendTime.text = "${detail.sendTime}派单" - binding.tvSendTime.visibility = View.VISIBLE - } else { - binding.tvSendTime.visibility = View.GONE + // 状态标签(最顶部,带背景色) + when (detail.status) { + 2 -> { + binding.tvStatus.text = "待抢单" + binding.tvStatus.setTextColor(requireContext().getColor(R.color.primary)) + binding.tvStatus.setBackgroundResource(R.drawable.bg_pill_blue) + } + 3 -> { + binding.tvStatus.text = "待打卡" + binding.tvStatus.setTextColor(requireContext().getColor(R.color.warning)) + binding.tvStatus.setBackgroundResource(R.drawable.bg_pill_orange) + } + 4 -> { + binding.tvStatus.text = "进行中" + binding.tvStatus.setTextColor(requireContext().getColor(R.color.success)) + binding.tvStatus.setBackgroundResource(R.drawable.bg_pill_green) + } + else -> { + binding.tvStatus.text = "已完成" + binding.tvStatus.setTextColor(requireContext().getColor(R.color.text_secondary)) + binding.tvStatus.background = null + } } - // 任务名(带类型前缀) + // 任务名(最大最醒目) binding.tvTaskName.text = detail.displayName - // 地点(taskPositions 数组拼接) + // 地点 if (detail.hasPosition) { binding.tvPosition.text = detail.positionText binding.tvPosition.visibility = View.VISIBLE @@ -225,47 +244,42 @@ class TaskListFragment : BaseFragment() { binding.tvPosition.visibility = View.GONE } - // 派单号 - binding.tvNo.text = detail.no - - // 积分 - binding.tvPoints.text = detail.pointText - - // 状态标签 - when (detail.status) { - 2 -> { binding.tvStatus.text = "待抢单"; binding.tvStatus.setTextColor(requireContext().getColor(R.color.error)) } - 3 -> { binding.tvStatus.text = "待打卡"; binding.tvStatus.setTextColor(requireContext().getColor(R.color.warning)) } - 4 -> { binding.tvStatus.text = "进行中"; binding.tvStatus.setTextColor(requireContext().getColor(R.color.warning)) } - 5, 6 -> { binding.tvStatus.text = "已完成"; binding.tvStatus.setTextColor(requireContext().getColor(R.color.success)) } - else -> { binding.tvStatus.text = "已结束"; binding.tvStatus.setTextColor(requireContext().getColor(R.color.text_secondary)) } - } - - // 截止时间 + // 时间信息(派单时间 + 截止时间合并显示) + val timeInfo = StringBuilder() + if (detail.sendTime.isNotEmpty()) timeInfo.append("${detail.sendTime} 派单") if (!detail.expireTime.isNullOrEmpty()) { - binding.tvExpireTime.text = detail.expireTime - binding.rowExpire.visibility = View.VISIBLE + if (timeInfo.isNotEmpty()) timeInfo.append("\n") + timeInfo.append("截止 ${detail.expireTime}") + } + if (!detail.preFinishTime.isNullOrEmpty()) { + if (timeInfo.isNotEmpty()) timeInfo.append("\n") + timeInfo.append("要求 ${detail.preFinishTime} 完成") + } + if (timeInfo.isNotEmpty()) { + binding.tvTimeInfo.text = timeInfo + binding.tvTimeInfo.visibility = View.VISIBLE } else { - binding.rowExpire.visibility = View.GONE + binding.tvTimeInfo.visibility = View.GONE } - // 预计完成时间(指派任务 type=2) - if (!detail.preFinishTime.isNullOrEmpty()) { - binding.tvPreFinishTime.text = detail.preFinishTime - binding.rowPreFinish.visibility = View.VISIBLE + // 积分(大于0才显示) + if (detail.point > 0) { + binding.tvPoints.text = "积分 ${detail.pointText}" + binding.tvPoints.visibility = View.VISIBLE } else { - binding.rowPreFinish.visibility = View.GONE + binding.tvPoints.visibility = View.GONE + } + + // 上报人(type 3/4) + if (detail.createName.isNotEmpty() && detail.taskType in listOf(3, 4)) { + binding.tvCreatorName.text = "上报人:${detail.createName}" + binding.tvCreatorName.visibility = View.VISIBLE + } else { + binding.tvCreatorName.visibility = View.GONE } // 协作人 - binding.rowWorkers.visibility = View.GONE // TODO: workTogether 结构待确认 - - // 上报人(用户上报 type=3/4 时显示) - if (detail.createName.isNotEmpty() && detail.taskType in listOf(3, 4)) { - binding.tvCreatorName.text = detail.createName - binding.rowCreator.visibility = View.VISIBLE - } else { - binding.rowCreator.visibility = View.GONE - } + binding.tvWorkers.visibility = View.GONE // TODO: workTogether 结构待确认 // 描述 if (detail.content.isNotEmpty()) { @@ -275,12 +289,11 @@ class TaskListFragment : BaseFragment() { binding.tvDescription.visibility = View.GONE } - // 任务要求(黄色提示) + // 提示条(任务要求 或 打卡提示) if (!detail.taskRequire.isNullOrEmpty()) { binding.tvHint.text = detail.taskRequire binding.tvHint.visibility = View.VISIBLE } else if (detail.status == 3 && detail.hasPosition) { - // 待打卡+有场景 → 默认提示 binding.tvHint.text = "请将手表贴近打卡信标" binding.tvHint.visibility = View.VISIBLE } else { diff --git a/app/src/main/res/layout/fragment_task_list.xml b/app/src/main/res/layout/fragment_task_list.xml index 30d7357..d24b0c4 100644 --- a/app/src/main/res/layout/fragment_task_list.xml +++ b/app/src/main/res/layout/fragment_task_list.xml @@ -1,45 +1,44 @@ + 老年人用户:重点信息大而突出,次要信息精简 + 布局:标题栏 → 任务名(最大) → 地点 → 关键信息 → 操作按钮 --> - + + android:orientation="vertical" + android:paddingStart="21dp" + android:paddingTop="27dp" + android:paddingEnd="21dp"> - + + android:layout_marginBottom="12dp"> + android:textSize="32sp" /> + android:textColor="@color/text_secondary" + android:textSize="18sp" + android:layout_marginEnd="40dp" /> - + - + + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:paddingTop="5dp" + android:paddingBottom="5dp" + android:textSize="18sp" + android:textStyle="bold" + android:layout_marginBottom="10dp" /> - + - + - - - - - + + - - - - + + - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + - + @@ -175,7 +174,7 @@ android:gravity="center" android:text="暂无任务" android:textColor="@color/text_secondary" - android:textSize="20sp" + android:textSize="24sp" android:paddingTop="80dp" android:visibility="gone" /> @@ -190,8 +189,8 @@ android:visibility="gone"> @@ -208,18 +207,18 @@ - +