feat: 国际进港查询详情页面(三Tab:运单/仓库/库位信息)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-16 11:34:20 +08:00
parent edb1f576b7
commit baaa9c5615
21 changed files with 1417 additions and 3 deletions

View File

@@ -0,0 +1,89 @@
package com.lukouguoji.gjj.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.FragmentIntImpQueryStorageBinding
import com.lukouguoji.gjj.holder.IntImpQueryStorageViewHolder
import com.lukouguoji.gjj.viewModel.IntImpQueryDetailsViewModel
import com.lukouguoji.module_base.base.CommonAdapter
import com.lukouguoji.module_base.bean.GjjStorageUse
import com.lukouguoji.module_base.http.net.NetApply
/**
* 国际进港查询详情 - 库位信息Fragment
*/
class IntImpQueryStorageFragment : Fragment() {
private lateinit var binding: FragmentIntImpQueryStorageBinding
private lateinit var viewModel: IntImpQueryDetailsViewModel
private lateinit var adapter: CommonAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_int_imp_query_storage,
container,
false
)
binding.lifecycleOwner = viewLifecycleOwner
initRecyclerView()
observeData()
return binding.root
}
private fun initRecyclerView() {
adapter = CommonAdapter(
requireContext(),
R.layout.item_int_imp_query_storage,
IntImpQueryStorageViewHolder::class.java
)
binding.rvStorageList.apply {
layoutManager = LinearLayoutManager(requireContext())
adapter = this@IntImpQueryStorageFragment.adapter
}
}
private fun observeData() {
viewModel.storageUseList.observe(viewLifecycleOwner) { mapList ->
if (mapList.isEmpty()) {
binding.rvStorageList.visibility = View.GONE
binding.llEmpty.visibility = View.VISIBLE
} else {
val beanList = mapList.map { map ->
try {
val json = NetApply.gson.toJson(map)
NetApply.gson.fromJson(json, GjjStorageUse::class.java)
} catch (e: Exception) {
e.printStackTrace()
GjjStorageUse()
}
}
binding.rvStorageList.visibility = View.VISIBLE
binding.llEmpty.visibility = View.GONE
adapter.refresh(beanList)
}
}
}
companion object {
@JvmStatic
fun newInstance(vm: IntImpQueryDetailsViewModel) =
IntImpQueryStorageFragment().apply {
viewModel = vm
}
}
}

View File

@@ -0,0 +1,89 @@
package com.lukouguoji.gjj.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.FragmentIntImpQueryWarehouseBinding
import com.lukouguoji.gjj.holder.IntImpQueryWarehouseViewHolder
import com.lukouguoji.gjj.viewModel.IntImpQueryDetailsViewModel
import com.lukouguoji.module_base.base.CommonAdapter
import com.lukouguoji.module_base.bean.GjjWarehouse
import com.lukouguoji.module_base.http.net.NetApply
/**
* 国际进港查询详情 - 仓库信息Fragment
*/
class IntImpQueryWarehouseFragment : Fragment() {
private lateinit var binding: FragmentIntImpQueryWarehouseBinding
private lateinit var viewModel: IntImpQueryDetailsViewModel
private lateinit var adapter: CommonAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_int_imp_query_warehouse,
container,
false
)
binding.lifecycleOwner = viewLifecycleOwner
initRecyclerView()
observeData()
return binding.root
}
private fun initRecyclerView() {
adapter = CommonAdapter(
requireContext(),
R.layout.item_int_imp_query_warehouse,
IntImpQueryWarehouseViewHolder::class.java
)
binding.rvWarehouseList.apply {
layoutManager = LinearLayoutManager(requireContext())
adapter = this@IntImpQueryWarehouseFragment.adapter
}
}
private fun observeData() {
viewModel.warehouseList.observe(viewLifecycleOwner) { mapList ->
if (mapList.isEmpty()) {
binding.rvWarehouseList.visibility = View.GONE
binding.llEmpty.visibility = View.VISIBLE
} else {
val beanList = mapList.map { map ->
try {
val json = NetApply.gson.toJson(map)
NetApply.gson.fromJson(json, GjjWarehouse::class.java)
} catch (e: Exception) {
e.printStackTrace()
GjjWarehouse()
}
}
binding.rvWarehouseList.visibility = View.VISIBLE
binding.llEmpty.visibility = View.GONE
adapter.refresh(beanList)
}
}
}
companion object {
@JvmStatic
fun newInstance(vm: IntImpQueryDetailsViewModel) =
IntImpQueryWarehouseFragment().apply {
viewModel = vm
}
}
}

View File

@@ -0,0 +1,44 @@
package com.lukouguoji.gjj.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import com.lukouguoji.gjj.R
import com.lukouguoji.gjj.databinding.FragmentIntImpQueryWaybillBinding
import com.lukouguoji.gjj.viewModel.IntImpQueryDetailsViewModel
/**
* 国际进港查询详情 - 运单信息Fragment
*/
class IntImpQueryWaybillFragment : Fragment() {
private lateinit var binding: FragmentIntImpQueryWaybillBinding
private lateinit var viewModel: IntImpQueryDetailsViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_int_imp_query_waybill,
container,
false
)
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
return binding.root
}
companion object {
@JvmStatic
fun newInstance(vm: IntImpQueryDetailsViewModel) =
IntImpQueryWaybillFragment().apply {
viewModel = vm
}
}
}