diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d1a9bbc..2db77ce 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -104,6 +104,12 @@
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:screenOrientation="userLandscape" />
+
+
? = null, // 分单列表
+ var storageUseList: List? = null, // 库位使用列表
+ var attachList: List? = null // 附件列表
+)
+
+/**
+ * 国际出港分单数据模型
+ */
+data class GjcHaWb(
+ var haWbId: Long? = null, // 主键ID
+ var fid: Long? = null, // 航班主键
+ var prefix: String? = null, // 前缀
+ var no: String? = null, // 编号
+ var hno: String? = null, // H编号
+ var pc: Long? = null, // PC数量
+ var weight: Double? = null, // 重量
+ var volume: Double? = null, // 体积
+ var hpc: Long? = null, // 分单数量
+ var hweight: Double? = null, // 分单重量
+ var hvolume: Double? = null, // 分单体积
+ var goods: String? = null, // 货物英文
+ var goodsCn: String? = null, // 货物中文
+ var billsNo: String? = null, // 提单号
+ var opDate: Date? = null, // 操作日期
+ var opId: String? = null, // 操作人ID
+ var remark: String? = null, // 备注
+ // 发货人信息
+ var consignorName: String? = null, // 发货人名称
+ var consignorCode: String? = null, // 发货人代码
+ var consignorAddress: String? = null, // 发货人地址
+ var consignorCountryCode: String? = null, // 发货人国家代码
+ var consignorComType: String? = null, // 发货人公司类型
+ var consignorPnum: String? = null, // 发货人电话号码
+ // 收货人信息
+ var consigneeName: String? = null, // 收货人名称
+ var consigneeCode: String? = null, // 收货人代码
+ var consigneeAddress: String? = null, // 收货人地址
+ var consigneeCountryCode: String? = null, // 收货人国家代码
+ var consigneeComType: String? = null, // 收货人公司类型
+ var consigneePnum: String? = null, // 收货人电话号码
+ // 特殊收货人信息
+ var speConsigneeName: String? = null, // 特殊收货人名称
+ var speConsigneeComType: String? = null, // 特殊收货人公司类型
+ var speConsigneePnum: String? = null, // 特殊收货人电话号码
+ // 申报状态
+ var mftStatus: String? = null, // 预配状态
+ var mftMsgId: String? = null, // 预配消息ID
+ var arrivalStatus: String? = null, // 运抵状态
+ var arrMsgId: String? = null, // 运抵消息ID
+ var tallyStatus: String? = null, // 理货状态
+ var tallyMsgId: String? = null, // 理货消息ID
+ var transferStatus: String? = null, // 传输状态
+ var tranMsgId: String? = null, // 传输消息ID
+ var cmdStatus: String? = null, // 命令状态
+ var response: String? = null, // 响应
+ // 最后状态
+ var lastMftStatus: String? = null, // 最后预配状态
+ var lastMftMsgId: String? = null, // 最后预配消息ID
+ var lastArrStatus: String? = null, // 最后运抵状态
+ var lastArrMsgId: String? = null, // 最后运抵消息ID
+ var lastTallyStatus: String? = null, // 最后理货状态
+ var lastTallyMsgId: String? = null, // 最后理货消息ID
+ // 费率计次
+ var mftSRate: Double? = null, // 预配申报费率
+ var mftSCount: Double? = null, // 预配申报计次
+ var mftDRate: Double? = null, // 预配删除费率
+ var mftDCount: Double? = null, // 预配删除计次
+ var arrivalSRate: Double? = null, // 运抵申报费率
+ var arrivalSCount: Double? = null, // 运抵申报计次
+ var arrivalDRate: Double? = null, // 运抵删除费率
+ var arrivalDCount: Double? = null, // 运抵删除计次
+ var tallySRate: Double? = null, // 出港理货申报费率
+ var tallySCount: Double? = null, // 出港理货申报计次
+ var tallyDRate: Double? = null, // 出港理货删除费率
+ var tallyDCount: Double? = null, // 出港理货删除计次
+ // 操作信息
+ var arrivalOpDate: Date? = null, // 运抵操作日期
+ var arrivalOpId: String? = null, // 运抵操作人ID
+ var tallyOpDate: Date? = null, // 理货操作日期
+ var tallyOpId: String? = null, // 理货操作人ID
+ var declareCount: Long? = null, // 申报次数
+ var activeId: Long? = null // 活动ID
+)
+
+/**
+ * 库位使用记录
+ */
+data class GjcStorageUse(
+ var id: Long? = null, // 主键
+ var maWbId: Long? = null, // 运单id
+ var prefix: String? = null, // 运单前缀
+ var no: String? = null, // 运单号
+ var storageCode: String? = null, // 库位号
+ var inDate: Date? = null, // 入库时间
+ var inId: String? = null, // 入库人
+ var outDate: Date? = null, // 出库时间
+ var outId: String? = null // 出库人
+)
diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMostMouldPage.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMostMouldPage.kt
new file mode 100644
index 0000000..19ce7ff
--- /dev/null
+++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMostMouldPage.kt
@@ -0,0 +1,47 @@
+package com.lukouguoji.module_base.bean
+
+import java.util.Date
+
+/**
+ * 国际出港查询参数封装类
+ * 对应接口:/IntExpSearch/pageQuery
+ */
+data class GjcMostMouldPage(
+ // ==================== 分页参数 ====================
+ var pageNum: Int? = null, // 页号
+ var pageSize: Int? = null, // 每页显示条数
+
+ // ==================== 基础搜索条件 ====================
+ var fdate: Date? = null, // 航班日期
+ var fno: String? = null, // 航班号
+ var agentCode: String? = null, // 代理人code
+ var outState: Int? = null, // 出库状态(0:未出库,1:已出库)
+ var wbNo: String? = null, // 运单号(11位)
+ var no: String? = null, // 运单号
+
+ // ==================== 筛选条件 ====================
+ var spCode: String? = null, // 特码
+ var dest: String? = null, // 目的港
+ var awbType: String? = null, // 运单类型
+ var businessType: String? = null, // 业务类型
+ var goodsCn: String? = null, // 品名(中)
+
+ // ==================== 其他可选条件 ====================
+ var beginDate: Date? = null, // 航班开始时间
+ var endDate: Date? = null, // 航班结束时间
+ var by1: String? = null, // 承运人
+ var carId: String? = null, // 板车号
+ var dest1: String? = null, // 卸货站
+ var fdest: String? = null, // 目的站
+ var handoverState: Int? = null, // 交接状态(0:未交接,1:已交接)
+ var isFclose: Boolean? = null, // 筛选航班是否关闭
+ var ldId: String? = null, // 组装人
+ var likeNo: String? = null, // 运单号(模糊查询)
+ var moveState: Int? = null, // 移库状态
+ var prefix: String? = null, // 运单号前缀
+ var uld: String? = null, // uld编号
+
+ // 分页辅助字段
+ var startIndex: Int? = null,
+ var endIndex: Int? = null
+)
diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/PageInfo.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/PageInfo.kt
new file mode 100644
index 0000000..e46fe06
--- /dev/null
+++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/PageInfo.kt
@@ -0,0 +1,48 @@
+package com.lukouguoji.module_base.bean
+
+import java.util.ArrayList
+
+/**
+ * 分页响应容器 (适配MyBatis-Plus的PageInfo结构)
+ * 用于适配接口返回的PageInfo结构
+ */
+class PageInfo {
+ // 当前页号
+ var pageNum: Int = 1
+
+ // 每页显示条数
+ var pageSize: Int = 10
+
+ // 数据总量
+ var total: Long = 0
+
+ // 页面总量
+ var pages: Int = 1
+
+ // 数据列表
+ var list: ArrayList? = null
+
+ // 是否有下一页
+ var hasNextPage: Boolean = false
+
+ // 是否有上一页
+ var hasPreviousPage: Boolean = false
+
+ // 是否是第一页
+ var isFirstPage: Boolean = true
+
+ // 是否是最后一页
+ var isLastPage: Boolean = false
+
+ /**
+ * 转换为项目使用的BaseListBean
+ * 这是核心方法,用于适配项目中的PageModel
+ */
+ fun toBaseListBean(): BaseListBean {
+ return BaseListBean().apply {
+ this.pages = this@PageInfo.pages
+ this.total = this@PageInfo.total.toInt()
+ this.list = this@PageInfo.list
+ }
+ }
+}
diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt
index 94a4876..7616eda 100644
--- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt
+++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt
@@ -35,6 +35,8 @@ import com.lukouguoji.module_base.bean.GjcWaybillDataBean
import com.lukouguoji.module_base.bean.GjcWeighingBean
import com.lukouguoji.module_base.bean.GjcWeighingRecordBean
import com.lukouguoji.module_base.bean.GjcWeighingStatisticsBean
+import com.lukouguoji.module_base.bean.GjcMaWb
+import com.lukouguoji.module_base.bean.PageInfo
import com.lukouguoji.module_base.bean.GjjGoodsBean
import com.lukouguoji.module_base.bean.GjjGoodsDetailsBean
import com.lukouguoji.module_base.bean.GjjGoodsTypeBean
@@ -417,6 +419,20 @@ interface Api {
@POST("IntExpCheckInCheck/pageQueryTotal")
suspend fun getGjcInspectionTotal(@Body data: RequestBody): BaseResultBean
+ /**
+ * 国际出港查询-分页查询
+ * 接口路径: /IntExpSearch/pageQuery
+ */
+ @POST("IntExpSearch/pageQuery")
+ suspend fun getGjcQueryList(@Body data: RequestBody): BaseResultBean>
+
+ /**
+ * 国际出港查询-分页合计统计
+ * 接口路径: /IntExpSearch/pageQueryTotal
+ */
+ @POST("IntExpSearch/pageQueryTotal")
+ suspend fun getGjcQueryTotal(@Body data: RequestBody): BaseResultBean
+
/**
* 国际出港板箱过磅-分页搜索
* 接口路径: /IntExpWeighting/pageQuery
diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryActivity.kt
new file mode 100644
index 0000000..bff7fca
--- /dev/null
+++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryActivity.kt
@@ -0,0 +1,48 @@
+package com.lukouguoji.gjc.activity
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.lukouguoji.gjc.R
+import com.lukouguoji.gjc.databinding.ActivityGjcQueryBinding
+import com.lukouguoji.gjc.viewModel.GjcQueryViewModel
+import com.lukouguoji.module_base.base.BaseBindingActivity
+import com.lukouguoji.module_base.ktx.getLifecycleOwner
+import com.lukouguoji.module_base.router.ARouterConstants
+
+/**
+ * 国际出港查询列表页
+ */
+@Route(path = ARouterConstants.ACTIVITY_URL_GJC_QUERY_LIST)
+class GjcQueryActivity :
+ BaseBindingActivity() {
+
+ override fun layoutId() = R.layout.activity_gjc_query
+
+ override fun viewModelClass() = GjcQueryViewModel::class.java
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ setBackArrow("国际出港查询")
+
+ binding.viewModel = viewModel
+
+ // 绑定分页逻辑
+ viewModel.pageModel
+ .bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, getLifecycleOwner())
+
+ // 初始化代理列表
+ viewModel.initAgentList()
+
+ // 初始加载
+ viewModel.refresh()
+ }
+
+ companion object {
+ @JvmStatic
+ fun start(context: Context) {
+ val starter = Intent(context, GjcQueryActivity::class.java)
+ context.startActivity(starter)
+ }
+ }
+}
diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryListActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryListActivity.kt
index 3e8147e..6ee256b 100644
--- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryListActivity.kt
+++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcQueryListActivity.kt
@@ -30,7 +30,7 @@ import com.scwang.smart.refresh.layout.api.RefreshLayout
import java.text.SimpleDateFormat
import java.util.*
-@Route(path = ARouterConstants.ACTIVITY_URL_GJC_QUERY_LIST)
+//@Route(path = ARouterConstants.ACTIVITY_URL_GJC_QUERY_LIST)
class GjcQueryListActivity : BaseActivity(), View.OnClickListener {
private val currentTitleName = "国际出港查询"
diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/GjcQueryFilterDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/GjcQueryFilterDialogModel.kt
new file mode 100644
index 0000000..fa8e36b
--- /dev/null
+++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/GjcQueryFilterDialogModel.kt
@@ -0,0 +1,83 @@
+package com.lukouguoji.gjc.dialog
+
+import android.content.Context
+import android.view.View
+import android.widget.TextView
+import androidx.lifecycle.MutableLiveData
+import com.lukouguoji.gjc.R
+import com.lukouguoji.gjc.databinding.DialogGjcQueryFilterBinding
+import com.lukouguoji.module_base.base.BaseDialogModel
+import com.lxj.xpopup.XPopup
+import dev.utils.app.ScreenUtils
+import dev.utils.app.info.KeyValue
+
+/**
+ * 国际出港查询筛选抽屉
+ */
+class GjcQueryFilterDialogModel(
+ val spCode: MutableLiveData, // 特码
+ val dest: MutableLiveData, // 目的港
+ val awbType: MutableLiveData, // 运单类型
+ val businessType: MutableLiveData, // 业务类型
+ val goodsCn: MutableLiveData, // 品名(中)
+ private val onConfirm: () -> Unit
+) : BaseDialogModel(DIALOG_TYPE_DRAWER) {
+
+ // 运单类型列表
+ val awbTypeList = MutableLiveData(
+ listOf(
+ KeyValue("全部", ""),
+ KeyValue("主单", "1"),
+ KeyValue("分单", "2")
+ )
+ )
+
+ // 业务类型列表
+ val businessTypeList = MutableLiveData(
+ listOf(
+ KeyValue("全部", ""),
+ KeyValue("普货", "1"),
+ KeyValue("特货", "2")
+ )
+ )
+
+ override fun layoutId() = R.layout.dialog_gjc_query_filter
+
+ override fun onBuild(builder: XPopup.Builder) {
+ super.onBuild(builder)
+ // 设置抽屉宽度为屏幕宽度的1/3
+ builder.maxWidth((ScreenUtils.getScreenWidth() / 3.0).toInt())
+ }
+
+ override fun onDialogCreated(context: Context) {
+ binding.model = this
+ binding.lifecycleOwner = context as? androidx.lifecycle.LifecycleOwner
+
+ // 设置标题
+ binding.root.findViewById(R.id.title_name)?.text = "筛选条件"
+
+ // 返回按钮
+ binding.root.findViewById(R.id.tool_back)?.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ /**
+ * 重置筛选条件
+ */
+ fun onResetClick() {
+ spCode.value = ""
+ dest.value = ""
+ awbType.value = ""
+ businessType.value = ""
+ goodsCn.value = ""
+ }
+
+ /**
+ * 确认筛选
+ */
+ fun onConfirmClick() {
+ dismiss()
+ onConfirm()
+ }
+}
diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcQueryViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcQueryViewHolder.kt
new file mode 100644
index 0000000..6254618
--- /dev/null
+++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/GjcQueryViewHolder.kt
@@ -0,0 +1,27 @@
+package com.lukouguoji.gjc.holder
+
+import android.view.View
+import com.lukouguoji.gjc.databinding.ItemGjcQueryBinding
+import com.lukouguoji.module_base.base.BaseViewHolder
+import com.lukouguoji.module_base.bean.GjcMaWb
+
+/**
+ * 国际出港查询列表ViewHolder
+ */
+class GjcQueryViewHolder(view: View) :
+ BaseViewHolder(view) {
+
+ override fun onBind(item: Any?, position: Int) {
+ val bean = getItemBean(item)!!
+ binding.bean = bean
+
+ // 立即更新UI(避免闪烁)
+ binding.executePendingBindings()
+
+ // 整行点击事件(暂时不跳转详情页)
+ // binding.ll.setOnClickListener {
+ // // 后续可添加详情页跳转
+ // // GjcQueryDetailsActivity.start(it.context, bean.maWbId)
+ // }
+ }
+}
diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcQueryViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcQueryViewModel.kt
new file mode 100644
index 0000000..2e07ab2
--- /dev/null
+++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcQueryViewModel.kt
@@ -0,0 +1,186 @@
+package com.lukouguoji.gjc.viewModel
+
+import android.app.Activity
+import android.content.Intent
+import androidx.lifecycle.MutableLiveData
+import com.lukouguoji.gjc.R
+import com.lukouguoji.gjc.dialog.GjcQueryFilterDialogModel
+import com.lukouguoji.gjc.holder.GjcQueryViewHolder
+import com.lukouguoji.module_base.base.BasePageViewModel
+import com.lukouguoji.module_base.common.Constant
+import com.lukouguoji.module_base.http.net.NetApply
+import com.lukouguoji.module_base.ktx.launchCollect
+import com.lukouguoji.module_base.ktx.launchLoadingCollect
+import com.lukouguoji.module_base.ktx.showToast
+import com.lukouguoji.module_base.ktx.toRequestBody
+import com.lukouguoji.module_base.model.ScanModel
+import dev.utils.app.info.KeyValue
+
+/**
+ * 国际出港查询ViewModel
+ */
+class GjcQueryViewModel : BasePageViewModel() {
+
+ // ==================== 搜索条件 ====================
+ val flightDateStart = MutableLiveData("") // 航班日期起
+ val flightDateEnd = MutableLiveData("") // 航班日期止
+ val agentId = MutableLiveData("") // 代理ID
+ val outStatus = MutableLiveData("") // 出库状态
+ val waybillNo = MutableLiveData("") // 运单号
+
+ // ==================== 下拉列表 ====================
+ // 代理下拉列表(从API获取)
+ val agentList = MutableLiveData(listOf(KeyValue("全部", "")))
+
+ // 出库状态下拉列表
+ val outStatusList = MutableLiveData(
+ listOf(
+ KeyValue("全部", ""),
+ KeyValue("未出库", "0"),
+ KeyValue("已出库", "1")
+ )
+ )
+
+ // ==================== 适配器配置 ====================
+ val itemViewHolder = GjcQueryViewHolder::class.java
+ val itemLayoutId = R.layout.item_gjc_query
+
+ // ==================== 统计数据 ====================
+ val totalCount = MutableLiveData("0") // 合计票数
+ val totalPc = MutableLiveData("0") // 总件数
+ val totalWeight = MutableLiveData("0") // 总重量
+
+ // ==================== 筛选条件(预留)====================
+ val spCode = MutableLiveData("") // 特码
+ val dest = MutableLiveData("") // 目的港
+ val awbType = MutableLiveData("") // 运单类型
+ val businessType = MutableLiveData("") // 业务类型
+ val goodsCn = MutableLiveData("") // 品名(中)
+
+ ///////////////////////////////////////////////////////////////////////////
+ // 方法区
+ ///////////////////////////////////////////////////////////////////////////
+
+ /**
+ * 扫码输入运单号
+ */
+ fun waybillScanClick() {
+ ScanModel.startScan(getTopActivity(), Constant.RequestCode.WAYBILL)
+ }
+
+ /**
+ * 搜索按钮点击
+ */
+ fun searchClick() {
+ refresh()
+ }
+
+ /**
+ * 筛选按钮点击
+ */
+ fun filterClick() {
+ val filterDialog = GjcQueryFilterDialogModel(
+ spCode = spCode,
+ dest = dest,
+ awbType = awbType,
+ businessType = businessType,
+ goodsCn = goodsCn,
+ onConfirm = { refresh() }
+ )
+ filterDialog.show()
+ }
+
+ /**
+ * 获取列表数据
+ * 核心方法:调用API获取数据并转换PageInfo为BaseListBean
+ */
+ override fun getData() {
+ // 构建查询参数(列表接口)
+ val listParams = mapOf(
+ "pageNum" to pageModel.page,
+ "pageSize" to pageModel.limit,
+ "fdateStart" to flightDateStart.value!!.ifEmpty { null },
+ "fdateEnd" to flightDateEnd.value!!.ifEmpty { null },
+ "agentCode" to agentId.value!!.ifEmpty { null },
+ "outState" to outStatus.value!!.ifEmpty { null },
+ "wbNo" to waybillNo.value!!.ifEmpty { null },
+ // 筛选条件(暂未使用)
+ "spCode" to spCode.value!!.ifEmpty { null },
+ "dest" to dest.value!!.ifEmpty { null },
+ "awbType" to awbType.value!!.ifEmpty { null },
+ "businessType" to businessType.value!!.ifEmpty { null },
+ "goodsCn" to goodsCn.value!!.ifEmpty { null }
+ ).toRequestBody()
+
+ // 构建查询参数(统计接口 - 使用相同的搜索条件)
+ val totalParams = mapOf(
+ "fdateStart" to flightDateStart.value!!.ifEmpty { null },
+ "fdateEnd" to flightDateEnd.value!!.ifEmpty { null },
+ "agentCode" to agentId.value!!.ifEmpty { null },
+ "outState" to outStatus.value!!.ifEmpty { null },
+ "wbNo" to waybillNo.value!!.ifEmpty { null },
+ // 筛选条件
+ "spCode" to spCode.value!!.ifEmpty { null },
+ "dest" to dest.value!!.ifEmpty { null },
+ "awbType" to awbType.value!!.ifEmpty { null },
+ "businessType" to businessType.value!!.ifEmpty { null },
+ "goodsCn" to goodsCn.value!!.ifEmpty { null }
+ ).toRequestBody()
+
+ // 获取列表数据(显示loading)
+ launchLoadingCollect({
+ NetApply.api.getGjcQueryList(listParams)
+ }) {
+ onSuccess = { result ->
+ val pageInfo = result.data
+ if (pageInfo != null) {
+ // ⚠️ 核心:使用toBaseListBean()转换PageInfo为BaseListBean
+ pageModel.handleListBean(pageInfo.toBaseListBean())
+ }
+ }
+ }
+
+ // 获取统计数据(后台调用,不显示loading)
+ launchCollect({
+ NetApply.api.getGjcQueryTotal(totalParams)
+ }) {
+ onSuccess = { result ->
+ val data = result.data
+ totalCount.value = (data?.wbNumber ?: 0).toString()
+ totalPc.value = (data?.totalPc ?: 0).toString()
+ totalWeight.value = (data?.totalWeight ?: 0.0).toString()
+ }
+ }
+ }
+
+ /**
+ * 处理扫码结果
+ */
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ if (resultCode == Activity.RESULT_OK && data != null) {
+ when (requestCode) {
+ Constant.RequestCode.WAYBILL -> {
+ waybillNo.value = data.getStringExtra(Constant.Result.CODED_CONTENT)
+ refresh()
+ }
+ }
+ }
+ }
+
+ /**
+ * 初始化代理下拉列表(从API获取)
+ */
+ fun initAgentList() {
+ launchCollect({
+ NetApply.api.getIntExpAgentList()
+ }) {
+ onSuccess = { result ->
+ val list = mutableListOf(KeyValue("全部", ""))
+ result.data?.forEach {
+ list.add(KeyValue(it.name ?: "", it.code ?: ""))
+ }
+ agentList.value = list
+ }
+ }
+ }
+}
diff --git a/module_gjc/src/main/res/layout/activity_gjc_query.xml b/module_gjc/src/main/res/layout/activity_gjc_query.xml
new file mode 100644
index 0000000..6a94371
--- /dev/null
+++ b/module_gjc/src/main/res/layout/activity_gjc_query.xml
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/module_gjc/src/main/res/layout/dialog_gjc_query_filter.xml b/module_gjc/src/main/res/layout/dialog_gjc_query_filter.xml
new file mode 100644
index 0000000..7505884
--- /dev/null
+++ b/module_gjc/src/main/res/layout/dialog_gjc_query_filter.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/module_gjc/src/main/res/layout/item_gjc_query.xml b/module_gjc/src/main/res/layout/item_gjc_query.xml
new file mode 100644
index 0000000..81c1906
--- /dev/null
+++ b/module_gjc/src/main/res/layout/item_gjc_query.xml
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+