merge: 手机适配分支 feature/phone-ui-adaptation 合入 main,平板与 5.5 寸手机统一在主干开发
合并原则:业务层以 main 平板为准,手机端只做 UI 适配。 - 冲突布局:平板改动三方合并进 layout-sw600dp/,手机布局保留并补齐主干新增业务 - Bean/ViewModel 冲突取平板业务逻辑(计重托盘联动、开始计重运抵重量自动计算、 出港查询 dateState、仓库入/出库件数重量、清仓备注等),手机仅保留展示字段 - 主干新功能同步到手机:运抵海关放行/分单号筛选/回执走 getResponse、删除申报; 出库交接装机状态与允许装机/配运;出港移库详情与编辑共用 IntExpMoveEditActivity; 出入港仓库清仓备注、出库弹框件数重量、进港仓库 pcLabel;ULD 所在港/位置 - 新增手机变体:出库/入库/清仓/配运/删除申报弹框、移库详情编辑页、海关回执页; PhoneBottomBar 增次操作按钮 - 手机对齐平板:去掉 likeNo 与平板没有的筛选入参、恢复平板默认查询日期, 补齐平板表单/筛选项与操作入口;移除手机专属 IntExpMoveDetailActivity - CLAUDE.md 记录单分支约定与「业务以平板为准」规则,CHANGELOG 补合并记录 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@@ -1,48 +1,134 @@
|
||||
package com.sixin.module_p.ui.enter.gj
|
||||
|
||||
import com.lukouguoji.module_base.base.BaseViewModel
|
||||
import com.lukouguoji.module_base.bean.ActionBean
|
||||
import com.lukouguoji.module_base.common.Constant
|
||||
import com.lukouguoji.module_base.db.perference.SharedPreferenceUtil
|
||||
import com.lukouguoji.module_base.ktx.loge
|
||||
import com.sixin.module_p.R
|
||||
import com.sixin.module_p.ui.guobang.PdaGuoBangActivity
|
||||
import com.sixin.module_p.ui.lihuo.PdaLiHuoActivity
|
||||
import com.sixin.module_p.ui.shouyun.PdaShouYunActivity
|
||||
import com.sixin.module_p.ui.zuzhuang.PdaZuZhuangActivity
|
||||
import dev.DevUtils
|
||||
|
||||
class GjViewModel : BaseViewModel() {
|
||||
|
||||
val actionList = listOf(
|
||||
ActionBean("普货收运", R.drawable.gjc_shou_yun_icon, Constant.AuthName.GjcAppDomExpCheckin),
|
||||
ActionBean("板箱组装", R.drawable.img_bxzz, Constant.AuthName.GjcBanXListActivity),
|
||||
ActionBean("板箱过磅", R.drawable.gjc_fu_bang_icon, Constant.AuthName.GjcFuBangActivity),
|
||||
ActionBean("进港理货", R.drawable.img_jglh, Constant.AuthName.GjjTallyListActivity),
|
||||
).filter { SharedPreferenceUtil.getString(Constant.Share.authList).contains(it.key) }
|
||||
|
||||
fun onItemClick(position: Int) {
|
||||
when (val title = actionList[position].title) {
|
||||
"普货收运" -> {
|
||||
PdaShouYunActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"板箱组装" -> {
|
||||
PdaZuZhuangActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"板箱过磅" -> {
|
||||
PdaGuoBangActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"进港理货" -> {
|
||||
PdaLiHuoActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
else -> {
|
||||
loge("点击事件 $title 未处理")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
package com.sixin.module_p.ui.enter.gj
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.lukouguoji.module_base.base.BaseViewModel
|
||||
import com.lukouguoji.module_base.bean.ActionBean
|
||||
import com.lukouguoji.module_base.common.Constant
|
||||
import com.lukouguoji.module_base.db.perference.SharedPreferenceUtil
|
||||
import com.lukouguoji.module_base.ktx.loge
|
||||
import com.lukouguoji.module_base.router.ARouterConstants
|
||||
import com.sixin.module_p.R
|
||||
import com.sixin.module_p.ui.guobang.PdaGuoBangActivity
|
||||
import com.sixin.module_p.ui.lihuo.PdaLiHuoActivity
|
||||
import com.sixin.module_p.ui.shouyun.PdaShouYunActivity
|
||||
import com.sixin.module_p.ui.zuzhuang.PdaZuZhuangActivity
|
||||
import dev.DevUtils
|
||||
|
||||
/**
|
||||
* 手持端首页「国际业务」Tab
|
||||
*
|
||||
* 菜单项是**手写清单**(不是接口下发),只用登录返回的 authList 做权限过滤:
|
||||
* 某项没配 [ActionBean.key] 对应的权限串时不显示。所以新页面适配完之后
|
||||
* **必须回来这里加一行**,否则手机端首页根本没有入口。
|
||||
*
|
||||
* 两类跳转:
|
||||
* - 带 [ActionBean.route] → 通用 ARouter 跳转(module_p 不依赖 module_gjc 等业务模块,
|
||||
* 跨模块只能走路由)。**5.5 寸适配页一律用这种,加一行即可。**
|
||||
* - 不带 route → 落到 [onItemClick] 的 when 分支(module_p 内部的 PDA 专用页面)
|
||||
*/
|
||||
class GjViewModel : BaseViewModel() {
|
||||
|
||||
val actionList = listOf(
|
||||
// ===== module_p 内的 PDA 专用页面(无 route,走 when 分支) =====
|
||||
ActionBean("普货收运", R.drawable.gjc_shou_yun_icon, Constant.AuthName.GjcAppDomExpCheckin),
|
||||
ActionBean("板箱组装", R.drawable.img_bxzz, Constant.AuthName.GjcBanXListActivity),
|
||||
ActionBean("板箱过磅", R.drawable.gjc_fu_bang_icon, Constant.AuthName.GjcFuBangActivity),
|
||||
ActionBean("进港理货", R.drawable.img_jglh, Constant.AuthName.GjjTallyListActivity),
|
||||
|
||||
// ===== 5.5 寸手机版已适配页面(图标复用 Pad 端同款,跳转走 ARouter) =====
|
||||
ActionBean(
|
||||
"出港移库",
|
||||
R.drawable.gjc_yi_ku_icon,
|
||||
Constant.AuthName.GjcYiKuListActivity,
|
||||
ARouterConstants.ACTIVITY_URL_INT_EXP_MOVE
|
||||
),
|
||||
ActionBean(
|
||||
"出库交接",
|
||||
R.drawable.img_gjc_chuku_jiaojie,
|
||||
Constant.AuthName.GjcIntExpOutHandover,
|
||||
ARouterConstants.ACTIVITY_URL_INT_EXP_OUT_HANDOVER
|
||||
),
|
||||
ActionBean(
|
||||
"出港计重",
|
||||
R.drawable.img_gjc_chugangjizhong,
|
||||
Constant.AuthName.GjcCheckWeighing,
|
||||
ARouterConstants.ACTIVITY_URL_GJC_WEIGHING_LIST
|
||||
),
|
||||
ActionBean(
|
||||
"出港运抵",
|
||||
R.drawable.img_gjc_chugang_diyun,
|
||||
Constant.AuthName.GjcIntExpArrive,
|
||||
ARouterConstants.ACTIVITY_URL_INT_EXP_ARRIVE
|
||||
),
|
||||
ActionBean(
|
||||
"出港查询",
|
||||
R.drawable.gjc_query_icon,
|
||||
Constant.AuthName.GjcQueryListActivity,
|
||||
ARouterConstants.ACTIVITY_URL_GJC_QUERY_LIST
|
||||
),
|
||||
ActionBean(
|
||||
"出港仓库",
|
||||
R.drawable.gjc_cang_ku_icon,
|
||||
Constant.AuthName.GjcIntExpStorageUse,
|
||||
ARouterConstants.ACTIVITY_URL_INT_EXP_STORAGE_USE
|
||||
),
|
||||
ActionBean(
|
||||
"进港仓库",
|
||||
R.drawable.gjc_cang_ku_icon, // Pad 端进港仓库菜单同样复用出港仓库图标
|
||||
Constant.AuthName.GjjWareHouseActivity,
|
||||
ARouterConstants.ACTIVITY_URL_GJJ_WARE_HOUSE
|
||||
),
|
||||
ActionBean(
|
||||
"进港查询",
|
||||
R.drawable.gjj_query_icon,
|
||||
Constant.AuthName.GjjQueryListActivity,
|
||||
ARouterConstants.ACTIVITY_URL_GJJ_QUERY_LIST
|
||||
),
|
||||
ActionBean(
|
||||
"提取出库",
|
||||
R.drawable.gjj_chu_ku_icon,
|
||||
Constant.AuthName.IntImpPickUpDLV,
|
||||
ARouterConstants.ACTIVITY_URL_INT_IMP_PICK_UP_DLV
|
||||
),
|
||||
// ULD管理属综合管理业务(Pad 端在「综合管理」菜单组),手机端首页暂无综合 Tab,挂在国际 Tab 下
|
||||
ActionBean(
|
||||
"ULD管理",
|
||||
com.lukouguoji.module_base.R.mipmap.cargo, // 图标复用 Pad 端同款(在 module_base,直接引用)
|
||||
Constant.AuthName.ComprehensiveUld, // 权限串与 Pad 端菜单一致
|
||||
ARouterConstants.ACTIVITY_URL_ULD_LIST
|
||||
),
|
||||
).filter { SharedPreferenceUtil.getString(Constant.Share.authList).contains(it.key) }
|
||||
|
||||
fun onItemClick(position: Int) {
|
||||
val bean = actionList.getOrNull(position) ?: return
|
||||
|
||||
// 配了路由的直接跳(5.5 寸适配页走这条)
|
||||
if (bean.route.isNotEmpty()) {
|
||||
ARouter.getInstance().build(bean.route).navigation()
|
||||
return
|
||||
}
|
||||
|
||||
when (bean.title) {
|
||||
"普货收运" -> {
|
||||
PdaShouYunActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"板箱组装" -> {
|
||||
PdaZuZhuangActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"板箱过磅" -> {
|
||||
PdaGuoBangActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
"进港理货" -> {
|
||||
PdaLiHuoActivity.start(DevUtils.getTopActivity())
|
||||
}
|
||||
|
||||
else -> {
|
||||
loge("点击事件 ${bean.title} 未处理")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.sixin.module_p.ui.enter.gn
|
||||
|
||||
import android.content.Intent
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.lukouguoji.module_base.base.BaseViewModel
|
||||
import com.lukouguoji.module_base.bean.ActionBean
|
||||
import com.lukouguoji.module_base.common.Constant
|
||||
import com.lukouguoji.module_base.db.perference.SharedPreferenceUtil
|
||||
import com.lukouguoji.module_base.ktx.logd
|
||||
import com.lukouguoji.module_base.ktx.loge
|
||||
import com.lukouguoji.module_base.router.ARouterConstants
|
||||
import com.sixin.module_p.R
|
||||
import com.sixin.module_p.ui.enter.gn.document.PdaDocumentHandoverActivity
|
||||
import com.sixin.module_p.ui.gnc.cunfang.list.PdaGncCunFangListActivity
|
||||
@@ -57,11 +59,25 @@ class GnViewModel : BaseViewModel() {
|
||||
R.mipmap.gnc_document_handover,
|
||||
Constant.AuthName.DocumentHandover
|
||||
),
|
||||
ActionBean(
|
||||
"进港移库",
|
||||
R.drawable.gnj_yi_ku_icon, // 图标复制自 module_gnj(module_p 看不到业务模块资源)
|
||||
Constant.AuthName.GnjYiKu, // 权限串与 Pad 端菜单一致(AppDomImpMove)
|
||||
ARouterConstants.ACTIVITY_URL_GNJ_MOVE_STASH_LIST // 与 Pad 首页菜单同一跳转页(app 模块,走路由)
|
||||
),
|
||||
)
|
||||
.filter { SharedPreferenceUtil.getString(Constant.Share.authList).contains(it.key) }
|
||||
|
||||
|
||||
fun onItemClick(position: Int) {
|
||||
val bean = actionList.getOrNull(position) ?: return
|
||||
|
||||
// 配了路由的直接跳(5.5 寸适配页走这条,与 GjViewModel 同模式)
|
||||
if (bean.route.isNotEmpty()) {
|
||||
ARouter.getInstance().build(bean.route).navigation()
|
||||
return
|
||||
}
|
||||
|
||||
when (val title = actionList[position].title) {
|
||||
"出港收运" -> {
|
||||
GncUnShouYunActivity.start(DevUtils.getTopActivity())
|
||||
|
||||
BIN
module_p/src/main/res/drawable-xxhdpi/gjc_cang_ku_icon.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/gjc_query_icon.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/gjc_yi_ku_icon.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/gjj_chu_ku_icon.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/gjj_query_icon.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/gnj_yi_ku_icon.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/img_gjc_chugang_diyun.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/img_gjc_chugangjizhong.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
module_p/src/main/res/drawable-xxhdpi/img_gjc_chuku_jiaojie.png
Normal file
|
After Width: | Height: | Size: 32 KiB |