|
@@ -1,6 +1,7 @@
|
|
|
package com.grkj.iscs.features.main.fragment.hardware_manage
|
|
package com.grkj.iscs.features.main.fragment.hardware_manage
|
|
|
|
|
|
|
|
-import android.widget.LinearLayout
|
|
|
|
|
|
|
+import android.view.Gravity
|
|
|
|
|
+import android.view.View
|
|
|
import androidx.core.view.isVisible
|
|
import androidx.core.view.isVisible
|
|
|
import androidx.fragment.app.viewModels
|
|
import androidx.fragment.app.viewModels
|
|
|
import com.drake.brv.BindingAdapter
|
|
import com.drake.brv.BindingAdapter
|
|
@@ -15,18 +16,18 @@ import com.google.android.flexbox.FlexboxLayoutManager
|
|
|
import com.google.android.flexbox.JustifyContent
|
|
import com.google.android.flexbox.JustifyContent
|
|
|
import com.grkj.iscs.R
|
|
import com.grkj.iscs.R
|
|
|
import com.grkj.iscs.databinding.FragmentSlotsManageBinding
|
|
import com.grkj.iscs.databinding.FragmentSlotsManageBinding
|
|
|
-import com.grkj.iscs.databinding.ItemDeviceRegistrationKeyBinding
|
|
|
|
|
import com.grkj.iscs.databinding.ItemDeviceRegistrationKeyLayoutBinding
|
|
import com.grkj.iscs.databinding.ItemDeviceRegistrationKeyLayoutBinding
|
|
|
-import com.grkj.iscs.databinding.ItemDeviceRegistrationLockBinding
|
|
|
|
|
import com.grkj.iscs.databinding.ItemDeviceRegistrationLockLayoutBinding
|
|
import com.grkj.iscs.databinding.ItemDeviceRegistrationLockLayoutBinding
|
|
|
import com.grkj.iscs.databinding.ItemDeviceSlotManageKeyBinding
|
|
import com.grkj.iscs.databinding.ItemDeviceSlotManageKeyBinding
|
|
|
import com.grkj.iscs.databinding.ItemDeviceSlotManageLockBinding
|
|
import com.grkj.iscs.databinding.ItemDeviceSlotManageLockBinding
|
|
|
import com.grkj.iscs.features.init.model.DockData
|
|
import com.grkj.iscs.features.init.model.DockData
|
|
|
import com.grkj.iscs.features.main.viewmodel.hardware_manage.SlotsManageViewModel
|
|
import com.grkj.iscs.features.main.viewmodel.hardware_manage.SlotsManageViewModel
|
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
|
|
|
+import com.grkj.ui_base.dialog.TipDialog
|
|
|
import com.grkj.ui_base.utils.modbus.DeviceConst
|
|
import com.grkj.ui_base.utils.modbus.DeviceConst
|
|
|
import com.grkj.ui_base.utils.modbus.DockBean
|
|
import com.grkj.ui_base.utils.modbus.DockBean
|
|
|
import com.grkj.ui_base.utils.modbus.ModBusController
|
|
import com.grkj.ui_base.utils.modbus.ModBusController
|
|
|
|
|
+import com.kongzue.dialogx.dialogs.PopMenu
|
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
|
|
|
@@ -36,6 +37,13 @@ import dagger.hilt.android.AndroidEntryPoint
|
|
|
@AndroidEntryPoint
|
|
@AndroidEntryPoint
|
|
|
class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
private val viewModel: SlotsManageViewModel by viewModels()
|
|
private val viewModel: SlotsManageViewModel by viewModels()
|
|
|
|
|
+ private val slotsLongClickMenu: List<String> = listOf(
|
|
|
|
|
+ getString(com.grkj.ui_base.R.string.exception_report),
|
|
|
|
|
+ getString(com.grkj.ui_base.R.string.turn_on),
|
|
|
|
|
+ getString(com.grkj.ui_base.R.string.turn_off),
|
|
|
|
|
+ getString(R.string.detect_slot)
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
override fun getLayoutId(): Int {
|
|
override fun getLayoutId(): Int {
|
|
|
return R.layout.fragment_slots_manage
|
|
return R.layout.fragment_slots_manage
|
|
|
}
|
|
}
|
|
@@ -45,7 +53,10 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
viewModel.unregisterStatusListener()
|
|
viewModel.unregisterStatusListener()
|
|
|
navController.popBackStack()
|
|
navController.popBackStack()
|
|
|
}
|
|
}
|
|
|
- binding.dockRv.linear().dividerSpace(10, DividerOrientation.GRID).setup {
|
|
|
|
|
|
|
+ binding.dockRv.linear().dividerSpace(
|
|
|
|
|
+ requireContext().resources.getDimension(com.grkj.ui_base.R.dimen.common_spacing_2x)
|
|
|
|
|
+ .toInt(), DividerOrientation.GRID
|
|
|
|
|
+ ).setup {
|
|
|
addType<DockData.KeyDock>(R.layout.item_device_registration_key_layout)
|
|
addType<DockData.KeyDock>(R.layout.item_device_registration_key_layout)
|
|
|
addType<DockData.LockDock>(R.layout.item_device_registration_lock_layout)
|
|
addType<DockData.LockDock>(R.layout.item_device_registration_lock_layout)
|
|
|
addType<DockData.PortableDock>(R.layout.item_device_registration_portable_layout)
|
|
addType<DockData.PortableDock>(R.layout.item_device_registration_portable_layout)
|
|
@@ -67,6 +78,28 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 显示长按菜单
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun showLongClickMenu(v: View, deviceBean: DockBean.DeviceBean) {
|
|
|
|
|
+ PopMenu.show(v, slotsLongClickMenu)
|
|
|
|
|
+ .setAlignGravity(Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL)
|
|
|
|
|
+ .setOverlayBaseView(false)
|
|
|
|
|
+ .setOnMenuItemClickListener { dialog, _, index ->
|
|
|
|
|
+ when (index) {
|
|
|
|
|
+ //异常上报
|
|
|
|
|
+ 0 -> {}
|
|
|
|
|
+ //开
|
|
|
|
|
+ 1 -> {}
|
|
|
|
|
+ //关
|
|
|
|
|
+ 2 -> {}
|
|
|
|
|
+ //检查仓位
|
|
|
|
|
+ 3 -> {}
|
|
|
|
|
+ }
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private fun BindingAdapter.BindingViewHolder.onKeyDockRVListBinding(
|
|
private fun BindingAdapter.BindingViewHolder.onKeyDockRVListBinding(
|
|
|
keyDock: DockData.KeyDock,
|
|
keyDock: DockData.KeyDock,
|
|
|
) {
|
|
) {
|
|
@@ -76,15 +109,33 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
|
}
|
|
}
|
|
|
- itemBinding.rvKeyLayout.linear(LinearLayout.HORIZONTAL)
|
|
|
|
|
- .setup {
|
|
|
|
|
- addType<DockBean.KeyBean>(R.layout.item_device_slot_manage_key)
|
|
|
|
|
- onBind {
|
|
|
|
|
- val itemKeyBinding = getBinding<ItemDeviceSlotManageKeyBinding>()
|
|
|
|
|
- val itemKey = getModel<DockBean.KeyBean>()
|
|
|
|
|
- itemKeyBinding.ivKey.isSelected = itemKey.isExist
|
|
|
|
|
|
|
+ itemBinding.rvKeyLayout.setup {
|
|
|
|
|
+ addType<DockBean.KeyBean>(R.layout.item_device_slot_manage_key)
|
|
|
|
|
+ onBind {
|
|
|
|
|
+ val itemKeyBinding = getBinding<ItemDeviceSlotManageKeyBinding>()
|
|
|
|
|
+ val itemKey = getModel<DockBean.KeyBean>()
|
|
|
|
|
+ itemKeyBinding.exceptionIv.isVisible =
|
|
|
|
|
+ viewModel.exceptionKeyData.find { it.keyNfc == itemKey.rfid } != null
|
|
|
|
|
+ itemKeyBinding.ivKey.isSelected = itemKey.isExist
|
|
|
|
|
+ itemKeyBinding.ivKey.setOnLongClickListener { v ->
|
|
|
|
|
+ showLongClickMenu(v, itemKey)
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ itemKeyBinding.exceptionIv.setOnClickListener {
|
|
|
|
|
+ TipDialog.showError(
|
|
|
|
|
+ msg = viewModel.exceptionKeyData.find { it.keyNfc == itemKey.rfid }?.remark
|
|
|
|
|
+ ?: ""
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ itemKeyBinding.exceptionIv.setOnLongClickListener {
|
|
|
|
|
+ viewModel.removeSlotsException(itemKey.row, itemKey.idx)
|
|
|
|
|
+ .observe(this@SlotsManageFragment) {
|
|
|
|
|
+ adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ false
|
|
|
}
|
|
}
|
|
|
- }.models = keyDock.keyData
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }.models = keyDock.keyData
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -97,15 +148,33 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
|
}
|
|
}
|
|
|
- itemBinding.rvLockLayout.linear(LinearLayout.HORIZONTAL)
|
|
|
|
|
- .setup {
|
|
|
|
|
- addType<DockBean.LockBean>(R.layout.item_device_slot_manage_lock)
|
|
|
|
|
- onBind {
|
|
|
|
|
- val itemLockBinding = getBinding<ItemDeviceSlotManageLockBinding>()
|
|
|
|
|
- val itemLock = getModel<DockBean.LockBean>()
|
|
|
|
|
- itemLockBinding.root.isSelected = itemLock.isExist
|
|
|
|
|
|
|
+ itemBinding.rvLockLayout.setup {
|
|
|
|
|
+ addType<DockBean.LockBean>(R.layout.item_device_slot_manage_lock)
|
|
|
|
|
+ onBind {
|
|
|
|
|
+ val itemLockBinding = getBinding<ItemDeviceSlotManageLockBinding>()
|
|
|
|
|
+ val itemLock = getModel<DockBean.LockBean>()
|
|
|
|
|
+ itemLockBinding.exceptionIv.isVisible =
|
|
|
|
|
+ viewModel.exceptionLockData.find { it.lockNfc == itemLock.rfid } != null
|
|
|
|
|
+ itemLockBinding.root.isSelected = itemLock.isExist
|
|
|
|
|
+ itemLockBinding.root.setOnLongClickListener { v ->
|
|
|
|
|
+ showLongClickMenu(v, itemLock)
|
|
|
|
|
+ false
|
|
|
}
|
|
}
|
|
|
- }.models = lockDock.lockData
|
|
|
|
|
|
|
+ itemLockBinding.exceptionIv.setOnClickListener {
|
|
|
|
|
+ TipDialog.showError(
|
|
|
|
|
+ msg = viewModel.exceptionLockData.find { it.lockNfc == itemLock.rfid }?.remark
|
|
|
|
|
+ ?: ""
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ itemLockBinding.exceptionIv.setOnLongClickListener {
|
|
|
|
|
+ viewModel.removeSlotsException(itemLock.row, itemLock.idx)
|
|
|
|
|
+ .observe(this@SlotsManageFragment) {
|
|
|
|
|
+ adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }.models = lockDock.lockData
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private fun BindingAdapter.BindingViewHolder.onPortableDockRVListBinding(
|
|
private fun BindingAdapter.BindingViewHolder.onPortableDockRVListBinding(
|
|
@@ -117,28 +186,68 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
|
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
justifyContent = JustifyContent.SPACE_EVENLY // 等间距居中
|
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
alignItems = AlignItems.CENTER // 垂直居中对齐
|
|
|
}
|
|
}
|
|
|
- itemBinding.rvKeyLayout.linear(LinearLayout.HORIZONTAL)
|
|
|
|
|
- .setup {
|
|
|
|
|
- addType<DockBean.LockBean>(R.layout.item_device_slot_manage_lock)
|
|
|
|
|
- addType<DockBean.KeyBean>(R.layout.item_device_slot_manage_key)
|
|
|
|
|
- onBind {
|
|
|
|
|
- when (val itemPortable = getModel<Any>()) {
|
|
|
|
|
- is DockBean.KeyBean -> {
|
|
|
|
|
- val itemKeyBinding = getBinding<ItemDeviceSlotManageKeyBinding>()
|
|
|
|
|
- itemKeyBinding.ivKey.isSelected = itemPortable.isExist
|
|
|
|
|
|
|
+ itemBinding.rvKeyLayout.setup {
|
|
|
|
|
+ addType<DockBean.LockBean>(R.layout.item_device_slot_manage_lock)
|
|
|
|
|
+ addType<DockBean.KeyBean>(R.layout.item_device_slot_manage_key)
|
|
|
|
|
+ onBind {
|
|
|
|
|
+ when (val itemPortable = getModel<Any>()) {
|
|
|
|
|
+ is DockBean.KeyBean -> {
|
|
|
|
|
+ val itemKeyBinding = getBinding<ItemDeviceSlotManageKeyBinding>()
|
|
|
|
|
+ itemKeyBinding.exceptionIv.isVisible =
|
|
|
|
|
+ viewModel.exceptionKeyData.find { it.keyNfc == itemPortable.rfid } != null
|
|
|
|
|
+ itemKeyBinding.ivKey.isSelected = itemPortable.isExist
|
|
|
|
|
+ itemKeyBinding.ivKey.setOnLongClickListener { v ->
|
|
|
|
|
+ showLongClickMenu(v, itemPortable)
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ itemKeyBinding.exceptionIv.setOnClickListener {
|
|
|
|
|
+ TipDialog.showError(
|
|
|
|
|
+ msg = viewModel.exceptionKeyData.find { it.keyNfc == itemPortable.rfid }?.remark
|
|
|
|
|
+ ?: ""
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
|
|
+ itemKeyBinding.exceptionIv.setOnLongClickListener {
|
|
|
|
|
+ viewModel.removeSlotsException(itemPortable.row, itemPortable.idx)
|
|
|
|
|
+ .observe(this@SlotsManageFragment) {
|
|
|
|
|
+ adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- is DockBean.LockBean -> {
|
|
|
|
|
- val itemLockBinding = getBinding<ItemDeviceSlotManageLockBinding>()
|
|
|
|
|
- itemLockBinding.root.isSelected = itemPortable.isExist
|
|
|
|
|
|
|
+ is DockBean.LockBean -> {
|
|
|
|
|
+ val itemLockBinding = getBinding<ItemDeviceSlotManageLockBinding>()
|
|
|
|
|
+ itemLockBinding.exceptionIv.isVisible =
|
|
|
|
|
+ viewModel.exceptionLockData.find { it.lockNfc == itemPortable.rfid } != null
|
|
|
|
|
+ itemLockBinding.root.isSelected = itemPortable.isExist
|
|
|
|
|
+ itemLockBinding.root.setOnLongClickListener { v ->
|
|
|
|
|
+ showLongClickMenu(v, itemPortable)
|
|
|
|
|
+ false
|
|
|
|
|
+ }
|
|
|
|
|
+ itemLockBinding.exceptionIv.setOnClickListener {
|
|
|
|
|
+ TipDialog.showError(
|
|
|
|
|
+ msg = viewModel.exceptionLockData.find { it.lockNfc == itemPortable.rfid }?.remark
|
|
|
|
|
+ ?: ""
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ itemLockBinding.exceptionIv.setOnLongClickListener {
|
|
|
|
|
+ viewModel.removeSlotsException(itemPortable.row, itemPortable.idx)
|
|
|
|
|
+ .observe(this@SlotsManageFragment) {
|
|
|
|
|
+ adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ false
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }.models = portableDock.deviceData
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }.models = portableDock.deviceData
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun initData() {
|
|
override fun initData() {
|
|
|
super.initData()
|
|
super.initData()
|
|
|
|
|
+ viewModel.getExceptionData().observe(this) {
|
|
|
|
|
+ binding.dockRv.adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
viewModel.registerStatusListener {
|
|
viewModel.registerStatusListener {
|
|
|
getData()
|
|
getData()
|
|
|
}
|
|
}
|