| | |
| | | import androidx.appcompat.app.AppCompatActivity |
| | | import androidx.lifecycle.lifecycleScope |
| | | import androidx.recyclerview.widget.LinearLayoutManager |
| | | import com.example.firstapp.adapter.ExpressPackageAdapter |
| | | import com.example.firstapp.R |
| | | import com.example.firstapp.adapter.PickupPackageAdapter |
| | | import com.example.firstapp.core.Core |
| | | import com.example.firstapp.databinding.ActivityPickupBinding |
| | | import com.example.firstapp.model.ExpressPackage |
| | |
| | | |
| | | class PickupActivity : AppCompatActivity() { |
| | | private lateinit var binding: ActivityPickupBinding |
| | | private lateinit var expressAdapter: ExpressPackageAdapter |
| | | private lateinit var expressAdapter: PickupPackageAdapter |
| | | private var stationIconResId = R.drawable.location // 默认图标 |
| | | |
| | | |
| | | // 添加类型常量 |
| | | companion object { |
| | | const val TYPE_EXPRESS = "express" |
| | | const val TYPE_REPAYMENT = "repayment" |
| | | const val TYPE_INCOME = "income" |
| | | const val TYPE_TRAIN = "train" |
| | | const val TYPE_FLIGHT = "flight" |
| | | } |
| | | |
| | | private var pageType = TYPE_EXPRESS |
| | | |
| | | override fun onCreate(savedInstanceState: Bundle?) { |
| | | super.onCreate(savedInstanceState) |
| | | binding = ActivityPickupBinding.inflate(layoutInflater) |
| | | setContentView(binding.root) |
| | | |
| | | // 获取页面类型 |
| | | pageType = intent.getStringExtra("page_type") ?: TYPE_EXPRESS |
| | | |
| | | stationIconResId = intent.getIntExtra("station_icon_res_id", R.drawable.location) |
| | | |
| | | |
| | | initViews() |
| | | loadData() |
| | |
| | | |
| | | private fun initViews() { |
| | | // 初始化适配器,传入取件回调 |
| | | expressAdapter = ExpressPackageAdapter { pack -> |
| | | expressAdapter = PickupPackageAdapter { pack -> |
| | | handleSinglePickup(pack) |
| | | } |
| | | |
| | | |
| | | binding.rvPackages.apply { |
| | | layoutManager = LinearLayoutManager(this@PickupActivity) |
| | | adapter = expressAdapter |
| | |
| | | finish() |
| | | } |
| | | |
| | | // 修改底部按钮点击事件 |
| | | binding.btnPickupAll.setOnClickListener { |
| | | showPickupConfirmDialog() |
| | | // 设置底部按钮文本并添加点击事件 |
| | | binding.btnPickupAll.apply { |
| | | text = getButtonText() |
| | | setOnClickListener { |
| | | showPickupConfirmDialog() |
| | | } |
| | | } |
| | | // 设置驿站图标 |
| | | binding.ivBack.setImageResource(stationIconResId) |
| | | } |
| | | |
| | | private fun getConfirmMessage(): String { |
| | | return when (pageType) { |
| | | TYPE_EXPRESS -> "是否确认取出所有包裹?" |
| | | TYPE_REPAYMENT -> "是否确认处理所有还款?" |
| | | TYPE_INCOME -> "是否确认处理所有收入?" |
| | | TYPE_TRAIN -> "是否确认处理所有火车票?" |
| | | TYPE_FLIGHT -> "是否确认处理所有机票?" |
| | | else -> "是否确认处理所有项目?" |
| | | } |
| | | } |
| | | |
| | | private fun getButtonText(): String { |
| | | return when (pageType) { |
| | | TYPE_EXPRESS -> "全部取件" |
| | | TYPE_REPAYMENT -> "全部还款" |
| | | TYPE_INCOME -> "全部收款" |
| | | TYPE_TRAIN -> "全部处理票务" |
| | | TYPE_FLIGHT -> "全部处理机票" |
| | | else -> "全部处理" |
| | | } |
| | | } |
| | | |
| | | private fun showPickupConfirmDialog() { |
| | | AlertDialog.Builder(this) |
| | | .setTitle("确认取件") |
| | | .setMessage("是否确认取出所有包裹?") |
| | | .setTitle(getButtonText()) |
| | | .setMessage(getConfirmMessage()) |
| | | .setPositiveButton("确认") { _, _ -> |
| | | handlePickupAll() |
| | | } |
| | |
| | | // 清空列表 |
| | | expressAdapter.submitList(emptyList()) |
| | | // 更新包裹数量显示 |
| | | binding.tvPackageCount.text = "共0个包裹" |
| | | binding.tvPackageCount.text = getCountText(0) |
| | | // 通知MainActivity刷新 |
| | | setResult(RESULT_OK) |
| | | } catch (e: Exception) { |
| | |
| | | } |
| | | } |
| | | |
| | | private fun getCountText(count: Int): String { |
| | | return when (pageType) { |
| | | TYPE_EXPRESS -> "共${count}个包裹" |
| | | TYPE_REPAYMENT -> "共${count}笔还款" |
| | | TYPE_INCOME -> "共${count}笔收入" |
| | | TYPE_TRAIN -> "共${count}张车票" |
| | | TYPE_FLIGHT -> "共${count}张机票" |
| | | else -> "共${count}个" |
| | | } |
| | | } |
| | | |
| | | private fun loadData() { |
| | | val stationName = intent.getStringExtra("station_name") ?: "" |
| | | val company = intent.getStringExtra("company") ?: "" |
| | | |
| | | |
| | | lifecycleScope.launch { |
| | | val codes = Core.code.getByKeyword(stationName) |
| | | val packages = codes.map { code -> |
| | |
| | | createTime = code.createTime |
| | | ) |
| | | } |
| | | |
| | | |
| | | expressAdapter.submitList(packages) |
| | | binding.tvStationName.text = stationName |
| | | binding.tvPackageCount.text = "共${packages.size}个包裹" |
| | | binding.tvPackageCount.text = getCountText(packages.size) |
| | | |
| | | // 根据PageType设置适配器的CompanyLogo处理逻辑 |
| | | expressAdapter.setPageType(pageType) |
| | | } |
| | | } |
| | | } |
| | | } |