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} 未处理")
            }
        }
    }

}
