- 筛选由XPopup全屏抽屉改为内嵌滑动面板,不再遮挡标题栏 - 有筛选条件时筛选按钮显示红点(hasFilter) - 航班号锁定大写字母数字、目的港锁定大写字母 - 运单类型走字典接口(type=IO 国际出港),修正原错误的"10" - 修复PadDataLayoutNew重置后Spinner UI未清空(国际进港同组件一并修复) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
238 lines
11 KiB
XML
238 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||
xmlns:tools="http://schemas.android.com/tools">
|
||
|
||
<data>
|
||
<import type="android.view.View" />
|
||
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType" />
|
||
|
||
<variable
|
||
name="viewModel"
|
||
type="com.lukouguoji.gjc.viewModel.GjcQueryViewModel" />
|
||
</data>
|
||
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:background="@color/color_f2"
|
||
android:orientation="vertical">
|
||
|
||
<!-- 标题栏(始终在最上层,不被遮挡) -->
|
||
<include layout="@layout/title_tool_bar" />
|
||
|
||
<!-- 内容区域(FrameLayout 包裹,筛选面板和遮罩只在此区域内) -->
|
||
<FrameLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="0dp"
|
||
android:layout_weight="1">
|
||
|
||
<!-- 原有内容 -->
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:orientation="vertical">
|
||
|
||
<!-- 搜索区域 -->
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginHorizontal="10dp"
|
||
android:layout_marginTop="10dp"
|
||
android:gravity="center_vertical"
|
||
android:orientation="horizontal">
|
||
|
||
<!-- 航班日期起 -->
|
||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
hint='@{"请选择开始日期"}'
|
||
icon="@{@drawable/img_date}"
|
||
type="@{SearchLayoutType.DATE}"
|
||
value="@={viewModel.flightDateStart}" />
|
||
|
||
<!-- 航班日期止 -->
|
||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
hint='@{"请选择结束日期"}'
|
||
icon="@{@drawable/img_date}"
|
||
type="@{SearchLayoutType.DATE}"
|
||
value="@={viewModel.flightDateEnd}" />
|
||
|
||
<!-- 代理人 -->
|
||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
hint='@{"请选择代理"}'
|
||
list="@{viewModel.agentList}"
|
||
type="@{SearchLayoutType.SPINNER}"
|
||
value="@={viewModel.agentId}" />
|
||
|
||
<!-- 出库状态 -->
|
||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
hint='@{"请选择出库状态"}'
|
||
list="@{viewModel.outStatusList}"
|
||
type="@{SearchLayoutType.SPINNER}"
|
||
value="@={viewModel.outStatus}" />
|
||
|
||
<!-- 运单号 -->
|
||
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
hint='@{"请输入运单号"}'
|
||
icon="@{@drawable/img_scan}"
|
||
setOnIconClickListener="@{()-> viewModel.waybillScanClick()}"
|
||
type="@{SearchLayoutType.INPUT}"
|
||
value="@={viewModel.waybillNo}"
|
||
autoQueryEnabled="@{true}"
|
||
autoQueryUrl="@{`/IntExpSearch/queryWbNoList`}"
|
||
autoQueryParamKey="@{`wbNo`}"
|
||
autoQueryMinLength="@{4}"
|
||
autoQueryMaxLength="@{8}"
|
||
autoQueryTitle="@{`选择运单号`}" />
|
||
|
||
<!-- 搜索和筛选按钮 -->
|
||
<LinearLayout
|
||
android:layout_width="0dp"
|
||
android:layout_height="wrap_content"
|
||
android:layout_weight="1"
|
||
android:gravity="center_vertical|start"
|
||
android:orientation="horizontal"
|
||
android:paddingHorizontal="24dp">
|
||
|
||
<!-- 搜索按钮 -->
|
||
<ImageView
|
||
android:layout_width="36dp"
|
||
android:layout_height="36dp"
|
||
android:onClick="@{()-> viewModel.searchClick()}"
|
||
android:padding="2dp"
|
||
android:src="@drawable/img_search" />
|
||
|
||
<!-- 筛选按钮(含红点) -->
|
||
<FrameLayout
|
||
android:layout_width="36dp"
|
||
android:layout_height="36dp"
|
||
android:layout_marginLeft="16dp">
|
||
|
||
<ImageView
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:onClick="@{()-> viewModel.filterClick()}"
|
||
android:padding="5dp"
|
||
android:src="@drawable/img_filter" />
|
||
|
||
<View
|
||
android:layout_width="8dp"
|
||
android:layout_height="8dp"
|
||
android:layout_gravity="top|end"
|
||
android:background="@drawable/bg_red_dot"
|
||
android:visibility="@{viewModel.hasFilter ? View.VISIBLE : View.GONE}" />
|
||
|
||
</FrameLayout>
|
||
|
||
</LinearLayout>
|
||
|
||
</LinearLayout>
|
||
|
||
<!-- 列表区域 -->
|
||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||
android:id="@+id/srl"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="0dp"
|
||
android:layout_weight="1">
|
||
|
||
<androidx.recyclerview.widget.RecyclerView
|
||
android:id="@+id/rv"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
itemLayoutId="@{viewModel.itemLayoutId}"
|
||
viewHolder="@{viewModel.itemViewHolder}"
|
||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||
tools:listitem="@layout/item_gjc_query" />
|
||
|
||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||
|
||
<!-- 底部统计信息 -->
|
||
<LinearLayout
|
||
android:layout_width="match_parent"
|
||
android:layout_height="50dp"
|
||
android:background="@color/white"
|
||
android:gravity="center_vertical"
|
||
android:paddingHorizontal="15dp">
|
||
|
||
<!-- 统计信息 -->
|
||
<LinearLayout
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:gravity="center_vertical"
|
||
android:orientation="horizontal">
|
||
|
||
<TextView
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:text='@{`合计:` + viewModel.totalCount + `票`}'
|
||
android:textColor="@color/bottom_tool_tips_text_color"
|
||
android:textSize="16sp"
|
||
android:textStyle="bold"
|
||
tools:text="合计:3票" />
|
||
|
||
<TextView
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginLeft="20dp"
|
||
android:text='@{`总件数:` + viewModel.totalPc}'
|
||
android:textColor="@color/bottom_tool_tips_text_color"
|
||
android:textSize="16sp"
|
||
android:textStyle="bold"
|
||
tools:text="总件数:100" />
|
||
|
||
<TextView
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="wrap_content"
|
||
android:layout_marginLeft="20dp"
|
||
android:text='@{`总重量:` + viewModel.totalWeight}'
|
||
android:textColor="@color/bottom_tool_tips_text_color"
|
||
android:textSize="16sp"
|
||
android:textStyle="bold"
|
||
tools:text="总重量:100" />
|
||
|
||
</LinearLayout>
|
||
|
||
</LinearLayout>
|
||
|
||
</LinearLayout>
|
||
|
||
<!-- 遮罩层(只覆盖内容区域) -->
|
||
<View
|
||
android:id="@+id/filter_overlay"
|
||
android:layout_width="match_parent"
|
||
android:layout_height="match_parent"
|
||
android:background="#80000000"
|
||
android:clickable="true"
|
||
android:focusable="true"
|
||
android:onClick="@{()-> viewModel.closeFilter()}"
|
||
android:visibility="gone" />
|
||
|
||
<!-- 筛选面板(从右侧滑入,只在内容区域内) -->
|
||
<include
|
||
android:id="@+id/filter_panel"
|
||
layout="@layout/layout_gjc_query_filter"
|
||
android:layout_width="wrap_content"
|
||
android:layout_height="match_parent"
|
||
android:layout_gravity="end"
|
||
android:visibility="gone"
|
||
app:viewModel="@{viewModel}" />
|
||
|
||
</FrameLayout>
|
||
|
||
</LinearLayout>
|
||
</layout>
|