feat: 完成国际出港移库/出库交接页面5.5寸手机端适配

- 落地手机端双形态适配框架:同名布局+资源限定符(layout/手机、
  layout-sw600dp/平板)自动切换,DeviceUtil 设备形态判定,7个
  手机版公共组件(PhoneSearchBar/StatusTab/DataLayout/FilterPanel/
  BottomBar/StatBox/KvItem)
- 完成「国际出港移库」「国际出港出库交接」两页手机端适配,新增
  各自详情页(IntExpMoveDetailActivity/IntExpOutHandoverDetailActivity)
- 手机端首页菜单接入"出港移库""出库交接"入口
- 修复手机端进入页面先横屏后转竖屏的闪屏问题:Manifest 全项目
  192 处改为 screenOrientation="unspecified",由 BaseActivity
  按设备形态运行时锁定方向
- 修复该方案的中间版本在平板端引入的回归(先竖后横 + UI放大1.6倍)
- AutoSize 补充手机竖屏 390×844 设计基准
- 修复 CHANGELOG.md 因脚本异常导致的内容重复损坏(膨胀至12万行),
  恢复正常结构并补充本次变更记录

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 14:18:29 +08:00
parent 9c4588e47e
commit db062c8ee3
134 changed files with 19602 additions and 2965 deletions

View File

@@ -1,48 +1,85 @@
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
),
).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} 未处理")
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB