feat(ui): 添加用料明细预览功能和清空数据确认对话框

- 在 SubmitFoodActivity 中添加右侧图标显示并实现点击打开用料明细预览弹窗
- 新增 GoodsPreviewDialog 用于展示底部弹出的用料明细列表
- 创建 GoodsPreviewAdapter 和相关布局文件实现用料列表展示
- 添加 ic_list_view 图标用于右上角按钮
- 在 VectorCollectionFragment 中为清空数据按钮添加确认对话框
- 优化 WeightUtil 工具类添加可用性检查避免异常调用
This commit is contained in:
2026-05-19 11:15:33 +08:00
parent aa539d87d0
commit 292fdade81
8 changed files with 354 additions and 3 deletions
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M3,5 h18 v2 h-18 Z
M3,11 h18 v2 h-18 Z
M3,17 h18 v2 h-18 Z" />
</vector>
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_rounded_top"
android:orientation="vertical">
<!-- 顶部拖拽指示条 -->
<View
android:layout_width="90dp"
android:layout_height="10dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:background="@drawable/shape_gray_dc_5" />
<!-- 标题 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:text="用料明细"
android:textColor="@color/black333"
android:textSize="36sp"
android:textStyle="bold" />
<!-- 菜品ID -->
<TextView
android:id="@+id/tvFoodId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="20dp"
android:textColor="@color/black666"
android:textSize="26sp" />
<!-- 表头 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_f6"
android:orientation="horizontal"
android:paddingStart="40dp"
android:paddingEnd="40dp"
android:paddingTop="20dp"
android:paddingBottom="20dp">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="物品ID"
android:textColor="@color/black999"
android:textSize="24sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="物品名称"
android:textColor="@color/black999"
android:textSize="24sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="物料编码"
android:textColor="@color/black999"
android:textSize="24sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:text="物料类型"
android:textColor="@color/black999"
android:textSize="24sp" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="end"
android:text="用量(g)"
android:textColor="@color/black999"
android:textSize="24sp" />
</LinearLayout>
<!-- 列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvGoodsList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:maxHeight="700dp"
android:nestedScrollingEnabled="true"
android:overScrollMode="never" />
<!-- 空布局 -->
<TextView
android:id="@+id/tvEmpty"
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="center"
android:text="暂无用料数据"
android:textColor="@color/gray_c8"
android:textSize="28sp"
android:visibility="gone" />
</LinearLayout>
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_bottom_line"
android:orientation="horizontal"
android:paddingStart="40dp"
android:paddingEnd="40dp"
android:paddingTop="24dp"
android:paddingBottom="24dp">
<!-- goodsId -->
<TextView
android:id="@+id/tvGoodsId"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black666"
android:textSize="26sp" />
<!-- goodsName -->
<TextView
android:id="@+id/tvGoodsName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black333"
android:textSize="26sp"
android:textStyle="bold" />
<!-- goodsCode -->
<TextView
android:id="@+id/tvGoodsCode"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/black333"
android:textSize="26sp"
android:textStyle="bold" />
<!-- materialType -->
<TextView
android:id="@+id/tvMaterialType"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:maxLines="1"
android:textColor="@color/dish_green"
android:textSize="26sp" />
<!-- useWeight -->
<TextView
android:id="@+id/tvUseWeight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="end"
android:maxLines="1"
android:textColor="@color/black333"
android:textSize="26sp" />
</LinearLayout>