diff --git a/.claude/skills/phone-adapt/references/api-doc.md b/.claude/skills/phone-adapt/references/api-doc.md index 62c4e22..93a3cb5 100644 --- a/.claude/skills/phone-adapt/references/api-doc.md +++ b/.claude/skills/phone-adapt/references/api-doc.md @@ -101,6 +101,14 @@ curl -s -X POST "$URL" -H "$AUTH" -H "Content-Type: application/json" \ `awbPc`/`awbWeight`/`cashWeight`/`inPc`/`inWeight`/`lockState`(0/1 需转中文)/`mftStatus` 原始舱单/ `tallyStatus` 理货报告/`command` 海关放行/`by1` 承运人/`dlvTime` 出库时间;`dep`/`dest1`/`dest`/ `unNumber`/`opDate` 为按出港推断,待实测 #27) +- `IntImpPickUpDlv`(提取出库,2026-07-31 文档核对):`pageQuery` 入参含 **`outState` + (0 未出库/1 已出库)**——待出库/已出库 Tab 直接真实过滤(抓包证实携带,效果待内网 A/B #29); + 另有 `fno`/`dest`/`origin`/`carrier`/`awbType`/`businessType`/`goods`/`likeNo`/`pkId`/ + `beginDate`/`endDate`+`dateType`(0 入库/1 离港)/`chargeFlag`(0 未提取/1 已提取); + **无 `fdate`(航班日期)入参**(缺口 #28);出参无车牌/目的港/业务类型名称(#28); + 运单号筛选参数名是 **`no`**(平板既有口径);`chargeName`/`chargeTime` = 柜台办理人/缴费(提取)时间, + `dlvTime` = 出库时间,`dlvName` 按提货人语义推断作「出库人」展示(待确认 #29); + 确认出库接口 `pickUpOut` 文档注明**需将全字段传至后端**(平板 `selectedItems.toRequestBody()` 已满足) - `IntExpCheckIn`(出港计重,2026-07-29 内网实测):`likeNo` **并非任意模糊**——按 8 位 `no` 匹配(11 位 wbNo 或部分号均 0 条),11 位全号必须走 `wbNo`;`checkIn`/`checkInList` 文档有定义但 `pageQuery`/`pageQueryTotal` **均静默忽略**(缺口 #12,待计重/计重中计数依赖); diff --git a/CHANGELOG.md b/CHANGELOG.md index a753159..94db5db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,22 @@ ## [Unreleased] ### 新增 (Added) +- 「提取出库」5.5 寸手机端适配(设计稿 09_提取出库):列表 `IntImpPickUpDLVActivity`(module_gjj) + 手机布局 = PhoneSearchBar(运单号+扫码+筛选)+ **PhoneStatusTab 待出库/已出库**(`outState` + 为 pageQuery 文档定义入参 0/1,Tab 真实过滤 + 角标双 pageQueryTotal,抓包证实携带)+ + 双形态卡片(待出库:圆形勾选框+橙标签+库位行;已出库:绿 √ 标签+出库人·出库时间行, + `isPickedUp` = dlvTime 非空)+ 卡片内 PhoneStatBox 三列(代理人/件数/重量)+「查看详情」链接 + + PhoneBottomBar(全选+已选 N 项+出库,仅待出库 Tab 显示,复用既有 confirmOutbound); + 筛选弹层 4 项(航班日期为 pageQuery 未定义入参预留;航班号 fno;代理人/特码下拉); + 手机端进入时清空平板默认「当天缴费日期」查全量(initPhoneExtras,平板默认值不变) +- 手机专属新页「运单详情」`IntImpPickUpDetailActivity`:蓝头运单卡(红标签国际进港+品名大标题+ + 两列 KV+库位橙标签)+ 绿头提货信息卡(柜台办理人/时间,已出库追加出库人/出库时间行), + 数据直接 Intent 传列表 bean(Serializable),零新增请求 +- `IntImpPickUpDLVBean` 新增 `isPickedUp` 计算属性;手机首页「国际」Tab 增加「提取出库」入口 + (权限 AppIntImpPickUpDLV 对应权限串,图标复用 Pad 端 gjj_chu_ku_icon) +- 后端缺口 2 项登记问题清单 #28~#29(pageQuery 无 fdate 入参、出参无车牌/目的港/业务类型; + outState 过滤与 dlvName=出库人语义待内网实测) + - 「进港仓库」5.5 寸手机端适配(设计稿 08_进港仓库,07 出港仓库的进港镜像 + 进港详情页首次适配): 列表 `IntImpStorageUseActivity`(module_gjj,首页菜单实际跳转页;旧版 `GjjWareHouseActivity` 路由已注释弃用)手机布局 = PhoneSearchBar(placeholder「搜索运单号/航班号」,`phoneSearchClick` @@ -64,12 +80,20 @@ 无已入库/已离港分项统计出参;detail 出参无锁定状态/计费重量字段) ### 修复 (Fixed) +- 提取出库手机版底部条「已选 N 项」在点全选后不更新:`checkAllClick` 只改勾选状态未同步 + `selectedCountText`(卡片单选走 FlowBus→updateCheckAllStatus 正常),补同步后实测「已选 3 项」正确 - **`PhoneFilterPanel` 底部按钮被挤出屏幕**:面板高度 wrap_content 且内容插槽无滚动,筛选项多 (出港查询 9 项)时「重置/确认」按钮直接超出屏幕外且无任何报错。修复:内容插槽外包 ScrollView(weight=1),筛选项少时行为不变,超屏时内容区收缩滚动、按钮始终可见 (已回归出港计重 4 项弹层,行为不变) ### 验证 (Verified) +- 提取出库双端验证通过(2026-07-31,Proxyman Map Local mock 口径):手机端菜单入口、 + Tab 角标(双 total)、双形态卡片(含库位空值兜底)、单选/全选与「已选 N 项」联动、 + 出库 ConfirmDialogModel、待出库/已出库两种详情页形态(出库人行按需显隐)、筛选弹层 4 项、 + Tab 切换请求体抓包证实 outState=1 正确携带、冷启动方向恒竖屏、崩溃 0; + 平板端回归:缴费日期默认当天/5 搜索条/全选/底部统计/确认出库与改造前一致,崩溃 0。 + **待内网补测**:outState 过滤 A/B、dlvName=出库人语义、出库真实提交链路 - 进港仓库双端验证通过(2026-07-31,同出港仓库为 Proxyman Map Local mock 口径): 手机端登录→国际 Tab→进港仓库菜单入口、三格统计、三种卡片形态(含空值 "--" 兜底)、 详情 3 Tab 全字段(锁定状态转中文、库位中文姓名、时间截断、空值兜底)、四操作弹框、 diff --git a/CLAUDE.md b/CLAUDE.md index 0481338..64be4e6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1134,6 +1134,13 @@ override fun dispatchRestoreInstanceState(container: SparseArray) = `.checked.set(...)` 会崩溃——接收方 `initOnCreated` 必须对列表 `.map { it.copy() }` 补上。 2026-07-30 review 修正:状态重置弹框改手机底部弹层(弹框双变体首例,见改造步骤第 6 条)、 主列表/回执页补空态、分单浮层补「回执」、分单统计加分母、Tab 角标初始 0 + - 「提取出库」`IntImpPickUpDLVActivity`(module_gjj,类型2 多选批量页 + 手机专属详情新页 + `IntImpPickUpDetailActivity`(Intent 传 Serializable bean 零请求)。待出库/已出库 Tab 绑 + **文档定义入参 `outState`**(0/1,抓包证实携带,效果待内网 #29)+ 角标双 pageQueryTotal; + 双形态卡片按 `isPickedUp`(dlvTime 非空)切换;手机进入时清空平板默认「当天缴费日期」查全量; + 缺口 #28:无 fdate 入参、出参无车牌(提货车辆)/目的港/业务类型。 + ⚠️ 踩坑:`checkAllClick` 全选后底部「已选 N 项」不更新——批量勾选不走 FlowBus 单卡事件, + 必须在 checkAllClick 里同步 selectedCountText) - 「进港仓库」`IntImpStorageUseActivity`(module_gjj,07 出港仓库的进港镜像;**首页菜单实际跳转页, 旧版 `GjjWareHouseActivity` 路由已注释弃用**。差异:卡片/筛选用始发站(fdep 入参)替代目的站; 搜索框「运单号/航班号」分流(含字母→fno、其余→wbNo,抓包证实);筛选 5 项无入参(缺口 #25, @@ -1252,6 +1259,8 @@ adb shell am start -n com.lukouguoji.aerologic/com.lukouguoji.gjc.activity.IntEx | 平板先竖屏再转横屏 + 交互后 UI 放大约 1.6 倍 | Manifest 用了 `@integer/screen_orientation` 资源引用;系统解析 Manifest 不套用限定符,全部取到竖屏值,AutoSize 随之选了平板竖屏 720dp 基准 | Manifest 改回 `unspecified`(见「屏幕方向」小节的 ⛔ 说明) | | Tab/分类切换后列表顶部留一大块空白,卡片数量却不对 | 给 item 根节点加了 `visibility="@{tab条件 ? VISIBLE : GONE}"`——RecyclerView/LinearLayoutManager 不会像普通 ViewGroup 那样让 GONE 的子项自动塌陷为 0 高度,仍按测量高度参与滚动区域计算 | 不要用 item 级 visibility 做过滤;在 ViewModel 里自行维护完整列表,Tab 切换时把过滤后的子集整体 `commonAdapter()?.refresh(filteredList)` 给 adapter | | 通过 `Intent.putExtra(Serializable)` 传递的 Bean,切换其 `checked`/`showMore` 等状态时崩溃 `NullPointerException: ... on a null object reference` | 这些字段标了 `@Transient`(= JVM `transient`,本意是避免 Gson 网络请求序列化 `ObservableBoolean`),但 Java 对象序列化(Intent 传递走的机制)会跳过 `transient` 字段的恢复,反序列化后是 null | 接收方 `initOnCreated` 里对列表做 `.map { it.copy() }`——`.copy()` 会重新走一遍类体初始化逻辑,用全新 `ObservableBoolean(false)` 补上 | +| 布局构建报 `Error: The string "--" is not permitted within comments` | XML 注释中出现连续双横线(如写"兜底 \"--\""),XML 规范禁止 | 注释里改用文字描述(如「兜底双横线」),代码绑定表达式中的 `"--"` 不受影响 | +| 多选页手机版点「全选」后底部「已选 N 项」不更新(单卡勾选正常) | 批量勾选在 `checkAllClick` 里直接 set,不走 FlowBus 的单卡 EVENT_CHECK_CHANGED 事件,`selectedCountText` 只在事件回调里更新 | `checkAllClick` 末尾自行同步 `selectedCountText`(平板布局不绑定该字段,无影响) | --- diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml index dcccdf0..543f109 100644 --- a/app/src/debug/AndroidManifest.xml +++ b/app/src/debug/AndroidManifest.xml @@ -140,5 +140,17 @@ android:exported="true" tools:replace="android:exported" /> + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c02e4dd..00d91a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -558,6 +558,13 @@ android:exported="false" android:screenOrientation="unspecified" /> + + + () { + + override fun layoutId() = R.layout.activity_int_imp_pick_up_detail + override fun viewModelClass() = BaseViewModel::class.java + + override fun initOnCreate(savedInstanceState: Bundle?) { + setBackArrow("运单详情") + val bean = intent.getSerializableExtra(Constant.Key.DATA) as? IntImpPickUpDLVBean + if (bean == null) { + finish() + return + } + binding.bean = bean + } + + companion object { + @JvmStatic + fun start(context: Context, bean: IntImpPickUpDLVBean) { + context.startActivity( + Intent(context, IntImpPickUpDetailActivity::class.java) + .putExtra(Constant.Key.DATA, bean) + ) + } + } +} diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt index 3a28b70..cc1514d 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/holder/IntImpPickUpDLVViewHolder.kt @@ -1,6 +1,7 @@ package com.lukouguoji.gjj.holder import android.view.View +import com.lukouguoji.gjj.activity.IntImpPickUpDetailActivity import com.lukouguoji.gjj.databinding.ItemIntImpPickUpDlvBinding import com.lukouguoji.module_base.base.BaseViewHolder import com.lukouguoji.module_base.common.ConstantEvent @@ -9,6 +10,9 @@ import com.lukouguoji.module_base.bean.IntImpPickUpDLVBean /** * 国际进港-提取出库 列表项ViewHolder + * + * 双形态布局:平板变体含 iv_icon(多选图标),手机变体含 iv_check(圆形勾选框,仅待出库形态显示) + * 与 tv_detail(查看详情)。单侧独有的 id 在 Binding 基类中为 @Nullable,必须判空访问。 */ class IntImpPickUpDLVViewHolder(view: View) : BaseViewHolder(view) { @@ -19,11 +23,25 @@ class IntImpPickUpDLVViewHolder(view: View) : binding.position = position binding.executePendingBindings() - // 点击图标切换选中状态 - binding.ivIcon.setOnClickListener { + // 平板:点击图标切换选中状态 + binding.ivIcon?.setOnClickListener { bean.checked.set(!bean.checked.get()) FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") binding.executePendingBindings() } + + // 手机:圆形勾选框(已出库形态隐藏,无勾选语义) + binding.ivCheck?.setOnClickListener { + if (!bean.isPickedUp) { + bean.checked.set(!bean.checked.get()) + FlowBus.with(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed") + binding.executePendingBindings() + } + } + + // 手机:查看详情(手机专属新页,数据直接传当前 bean,零新增请求) + binding.tvDetail?.setOnClickListener { + IntImpPickUpDetailActivity.start(itemView.context, bean) + } } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt index f5cbe29..ef4d5b4 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpDLVViewModel.kt @@ -20,6 +20,7 @@ import com.lukouguoji.module_base.ktx.formatDate import com.lukouguoji.module_base.ktx.toRequestBody import com.lukouguoji.module_base.model.ConfirmDialogModel import com.lukouguoji.module_base.model.ScanModel +import com.lukouguoji.module_base.util.DictUtils import dev.utils.app.info.KeyValue import dev.utils.common.DateUtils import kotlinx.coroutines.launch @@ -54,6 +55,68 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() { fun updateCheckAllStatus() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return isAllChecked.value = list.isNotEmpty() && list.all { it.checked.get() } + selectedCountText.value = "已选 ${list.count { it.checked.get() }} 项" + } + + // ========== 5.5寸手机版专属 ========== + // 状态 Tab:待出库/已出库(outState 为 pageQuery 真实入参,0:未出库,1:已出库;平板恒空不进请求) + val outState = MutableLiveData("") + val tabList = MutableLiveData(listOf(KeyValue("待出库", "0"), KeyValue("已出库", "1"))) + val tabCounts = MutableLiveData(listOf("0", "0")) + + // 底部操作条「已选 N 项」 + val selectedCountText = MutableLiveData("已选 0 项") + + // 筛选弹层显隐 + val filterVisible = MutableLiveData(false) + + // 筛选条件(flightDate 为 pageQuery 未定义入参 fdate,预留传参,见接口问题清单) + val flightDate = MutableLiveData("") + val flightNo = MutableLiveData("") + + // 特码下拉字典(initPhoneExtras 加载,平板为扫码输入不加载) + val specialCodeList = MutableLiveData>(emptyList()) + + private var phoneExtrasEnabled = false + + /** + * 手机形态专属初始化(Activity 在 DeviceUtil.isPhone() 时调用)。 + * 平板端不调用,请求次数与行为零变化。 + */ + fun initPhoneExtras() { + phoneExtrasEnabled = true + // 默认进「待出库」Tab + outState.value = "0" + // 平板默认按当天缴费日期过滤,设计稿无此默认——手机端清空查全量 + paymentDateStart.value = "" + // 特码字典:flag=1 国际;ieFlag 必须留空 + DictUtils.getSpecialCodeList(addAll = false, flag = 1, ieFlag = "") { list -> + specialCodeList.postValue(listOf(KeyValue("全部", "")) + list) + } + } + + /** 筛选按钮点击 - 打开筛选面板 */ + fun filterClick() { + filterVisible.value = true + } + + /** 关闭筛选面板 */ + fun closeFilter() { + filterVisible.value = false + } + + /** 重置筛选条件 */ + fun resetFilter() { + flightDate.value = "" + flightNo.value = "" + agentCode.value = "" + spCode.value = "" + } + + /** 确认筛选 - 关闭面板并刷新 */ + fun confirmFilter() { + filterVisible.value = false + refresh() } // ========== 适配器配置 ========== @@ -105,6 +168,8 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() { list.forEach { it.checked.set(shouldCheckAll) } isAllChecked.value = shouldCheckAll pageModel.rv?.commonAdapter()?.notifyDataSetChanged() + // 同步手机版底部条「已选 N 项」(平板布局不绑定该字段,无影响) + selectedCountText.value = "已选 ${list.count { it.checked.get() }} 项" } /** @@ -139,12 +204,17 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() { * 获取列表数据 */ override fun getData() { + // 手机专属 3 项平板恒为空,不进请求;fdate 为 pageQuery 未定义入参 + //(后端静默忽略,补齐后自动生效,见接口问题清单) val filterParams = mapOf( "beginDate" to paymentDateStart.value?.ifEmpty { null }, "endDate" to paymentDateEnd.value?.ifEmpty { null }, "agentCode" to agentCode.value?.ifEmpty { null }, "no" to wbNo.value?.ifEmpty { null }, - "spCode" to spCode.value?.ifEmpty { null } + "spCode" to spCode.value?.ifEmpty { null }, + "outState" to outState.value?.ifEmpty { null }, + "fno" to flightNo.value?.ifEmpty { null }, + "fdate" to flightDate.value?.ifEmpty { null } ) val listParams = (filterParams + mapOf( @@ -169,6 +239,28 @@ class IntImpPickUpDLVViewModel : BasePageViewModel() { totalWeight.value = (data?.totalWeight ?: 0.0).toString() } } + + // 手机专属:Tab 角标计数(同条件 + outState=0/1 各查一次,平板不发) + if (phoneExtrasEnabled) { + val pendingParams = (filterParams + mapOf("outState" to "0")).toRequestBody() + launchCollect({ NetApply.api.getIntImpPickUpDLVTotal(pendingParams) }) { + onSuccess = { result -> + tabCounts.value = listOf( + (result.data?.wbNumber ?: 0).toString(), + tabCounts.value?.getOrNull(1) ?: "0" + ) + } + } + val shippedParams = (filterParams + mapOf("outState" to "1")).toRequestBody() + launchCollect({ NetApply.api.getIntImpPickUpDLVTotal(shippedParams) }) { + onSuccess = { result -> + tabCounts.value = listOf( + tabCounts.value?.getOrNull(0) ?: "0", + (result.data?.wbNumber ?: 0).toString() + ) + } + } + } } /** diff --git a/module_gjj/src/main/res/layout-sw600dp/activity_int_imp_pick_up_dlv.xml b/module_gjj/src/main/res/layout-sw600dp/activity_int_imp_pick_up_dlv.xml new file mode 100644 index 0000000..b50335f --- /dev/null +++ b/module_gjj/src/main/res/layout-sw600dp/activity_int_imp_pick_up_dlv.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_gjj/src/main/res/layout-sw600dp/item_int_imp_pick_up_dlv.xml b/module_gjj/src/main/res/layout-sw600dp/item_int_imp_pick_up_dlv.xml new file mode 100644 index 0000000..37fe4b0 --- /dev/null +++ b/module_gjj/src/main/res/layout-sw600dp/item_int_imp_pick_up_dlv.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_detail.xml b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_detail.xml new file mode 100644 index 0000000..4ee37f8 --- /dev/null +++ b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_detail.xml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_dlv.xml b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_dlv.xml index b50335f..1a9be68 100644 --- a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_dlv.xml +++ b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_dlv.xml @@ -1,204 +1,166 @@ + - + + + - + android:background="@color/phone_page_bg"> - - - + android:layout_height="match_parent" + android:orientation="vertical"> - - + + + + android:background="@color/white" + android:orientation="vertical" + android:paddingHorizontal="16dp" + android:paddingTop="16dp" + android:paddingBottom="12dp"> - - + + + + + + counts="@{viewModel.tabCounts}" + setOnTabChanged="@{()-> viewModel.searchClick()}" + tabs="@{viewModel.tabList}" + value="@={viewModel.outState}" /> - - + + + + + + + + + + + + + + + + + + + + + + + title='@{"代理人"}' + type="@{PhoneDataLayoutType.SPINNER}" + value="@={viewModel.agentCode}" /> - - - - - - - - - - - - - - - + - - - - - - - - + hint='@{"请选择特码"}' + list="@{viewModel.specialCodeList}" + title='@{"特码"}' + type="@{PhoneDataLayoutType.SPINNER}" + value="@={viewModel.spCode}" /> - + - - - - - - - - - - - - - - - - - - - - - + diff --git a/module_gjj/src/main/res/layout/item_int_imp_pick_up_dlv.xml b/module_gjj/src/main/res/layout/item_int_imp_pick_up_dlv.xml index 37fe4b0..f18a006 100644 --- a/module_gjj/src/main/res/layout/item_int_imp_pick_up_dlv.xml +++ b/module_gjj/src/main/res/layout/item_int_imp_pick_up_dlv.xml @@ -1,9 +1,27 @@ + + xmlns:tools="http://schemas.android.com/tools"> + + @@ -17,250 +35,188 @@ android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="15dp" - android:layout_marginVertical="5dp" - android:background="@drawable/bg_item" - android:gravity="center_vertical" - android:orientation="horizontal" - android:paddingVertical="20dp" - android:paddingHorizontal="10dp"> - - + android:layout_marginHorizontal="16dp" + android:layout_marginTop="12dp" + android:background="@drawable/bg_phone_card" + android:orientation="vertical" + android:padding="14dp"> - + + android:gravity="center_vertical" + android:orientation="horizontal"> - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_weight="1" + android:text="@{bean.wbNo}" + android:textColor="@{bean.isPickedUp ? @color/phone_text_title : @color/phone_primary}" + android:textSize="16sp" + android:textStyle="bold" + tools:text="78133363573" /> - - + + + + + + + + + android:layout_marginStart="4dp" + android:text="已出库" + android:textColor="@color/phone_text_title" + android:textSize="13sp" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_p/src/main/java/com/sixin/module_p/ui/enter/gj/GjViewModel.kt b/module_p/src/main/java/com/sixin/module_p/ui/enter/gj/GjViewModel.kt index 41412d8..d6309af 100644 --- a/module_p/src/main/java/com/sixin/module_p/ui/enter/gj/GjViewModel.kt +++ b/module_p/src/main/java/com/sixin/module_p/ui/enter/gj/GjViewModel.kt @@ -78,6 +78,12 @@ class GjViewModel : BaseViewModel() { Constant.AuthName.GjjWareHouseActivity, ARouterConstants.ACTIVITY_URL_GJJ_WARE_HOUSE ), + ActionBean( + "提取出库", + R.drawable.gjj_chu_ku_icon, + Constant.AuthName.IntImpPickUpDLV, + ARouterConstants.ACTIVITY_URL_INT_IMP_PICK_UP_DLV + ), // ULD管理属综合管理业务(Pad 端在「综合管理」菜单组),手机端首页暂无综合 Tab,挂在国际 Tab 下 ActionBean( "ULD管理", diff --git a/module_p/src/main/res/drawable-xxhdpi/gjj_chu_ku_icon.png b/module_p/src/main/res/drawable-xxhdpi/gjj_chu_ku_icon.png new file mode 100644 index 0000000..7cca5d2 Binary files /dev/null and b/module_p/src/main/res/drawable-xxhdpi/gjj_chu_ku_icon.png differ