feat: 任务列表改为单任务全屏展示+上下滑切换(方案B,和旧版一致)

核心改动:
- queryTaskIds 获取ID列表 → lookTaskDetail 获取当前任务详情
- 上滑下一个、下滑上一个任务
- 顶部显示"第X/Y个任务"
- 派单时间+任务名(带类型前缀)+地点+派单号+积分+协作人+描述
- 底部固定操作按钮(抢单/打卡/完成)
- 操作成功后刷新列表+详情
- 空状态+Loading状态

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-04-28 10:34:44 +09:30
parent aea7b349b8
commit 5e2d71c25d
2 changed files with 571 additions and 150 deletions

View File

@@ -1,103 +1,240 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 任务列表页:返回按钮 + 分段控件 + RecyclerView -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<!-- 任务列表页(单任务展示,上下滑切换)
顶部:返回 + "第X/Y个任务" + 分段控件
中间当前任务详情lookTaskDetail
底部:固定操作按钮 -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:orientation="vertical"
android:paddingStart="21dp"
android:paddingTop="27dp"
android:paddingEnd="21dp">
android:background="@color/background">
<!-- 页面头部:返回 + 标题 -->
<LinearLayout
<!-- 可滑动内容区(底部留出按钮空间) -->
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
android:layout_height="match_parent"
android:scrollbars="none"
android:paddingStart="21dp"
android:paddingTop="27dp"
android:paddingEnd="21dp"
android:paddingBottom="72dp"
android:clipToPadding="false">
<!-- 返回按钮 -->
<TextView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:gravity="center"
android:text=""
android:textColor="@color/primary"
android:textSize="27sp" />
<!-- 标题 -->
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="接单池"
android:textColor="@color/text_primary"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginEnd="32dp" />
</LinearLayout>
<!-- 分段控件:接单池 / 待打卡 / 待完成 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_seg_ctrl"
android:padding="3dp"
android:layout_marginBottom="13dp">
<TextView
android:id="@+id/segPool"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="接单池"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/segPunch"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="待打卡"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/segComplete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="待完成"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<!-- 任务列表(下拉刷新 + RecyclerView -->
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvTasks"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="27dp" />
android:layout_height="wrap_content"
android:orientation="vertical">
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<!-- 页面头部:返回 + 标题第X/Y个任务 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginBottom="8dp">
</LinearLayout>
<TextView
android:id="@+id/btnBack"
android:layout_width="32dp"
android:layout_height="32dp"
android:gravity="center"
android:text=""
android:textColor="@color/primary"
android:textSize="27sp" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/text_primary"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginEnd="32dp" />
</LinearLayout>
<!-- 分段控件:接单池 / 待打卡 / 待完成 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_seg_ctrl"
android:padding="3dp"
android:layout_marginBottom="13dp">
<TextView
android:id="@+id/segPool"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="接单池"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/segPunch"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="待打卡"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/segComplete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="8dp"
android:text="待完成"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<!-- 任务详情区域lookTaskDetail 数据) -->
<LinearLayout
android:id="@+id/taskContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<!-- 派单时间 -->
<TextView
android:id="@+id/tvSendTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/text_primary"
android:textSize="22sp"
android:layout_marginBottom="8dp" />
<!-- 任务名称(大字居中) -->
<TextView
android:id="@+id/tvTaskName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/text_primary"
android:textSize="26sp"
android:textStyle="bold"
android:layout_marginBottom="8dp" />
<!-- 地点 -->
<TextView
android:id="@+id/tvPosition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/primary"
android:textSize="20sp"
android:layout_marginBottom="16dp" />
<!-- 信息行列表 -->
<LinearLayout style="@style/ConfigRow">
<TextView style="@style/ConfigLabel" android:text="派单号" />
<TextView android:id="@+id/tvNo" style="@style/ConfigValue"
android:textColor="@color/text_secondary" />
</LinearLayout>
<LinearLayout style="@style/ConfigRow">
<TextView style="@style/ConfigLabel" android:text="积分" />
<TextView android:id="@+id/tvPoints" style="@style/ConfigValue"
android:textColor="@color/warning" />
</LinearLayout>
<LinearLayout android:id="@+id/rowWorkers" style="@style/ConfigRow"
android:visibility="gone">
<TextView style="@style/ConfigLabel" android:text="协作人" />
<TextView android:id="@+id/tvWorkers" style="@style/ConfigValue" />
</LinearLayout>
<!-- 任务描述 -->
<TextView
android:id="@+id/tvDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_secondary"
android:textSize="17sp"
android:lineSpacingMultiplier="1.5"
android:layout_marginTop="8dp"
android:visibility="gone" />
<!-- 提示条(待打卡+有场景) -->
<TextView
android:id="@+id/tvHint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="11dp"
android:text="请将手表贴近打卡信标"
android:textColor="@color/warning"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginTop="8dp"
android:visibility="gone" />
</LinearLayout>
<!-- 空状态 -->
<TextView
android:id="@+id/tvEmpty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="暂无任务"
android:textColor="@color/text_secondary"
android:textSize="20sp"
android:paddingTop="80dp"
android:visibility="gone" />
<!-- Loading -->
<LinearLayout
android:id="@+id/loadingWrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="80dp"
android:visibility="gone">
<ProgressBar
android:layout_width="32dp"
android:layout_height="32dp"
android:indeterminateTint="@color/text_secondary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加载中"
android:textColor="@color/text_secondary"
android:textSize="16sp"
android:layout_marginTop="8dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<!-- 底部固定操作按钮 -->
<TextView
android:id="@+id/btnAction"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
android:padding="19dp"
android:textColor="@color/text_primary"
android:textSize="21sp"
android:textStyle="bold"
android:letterSpacing="0.05"
android:visibility="gone" />
</FrameLayout>