Преглед изворни кода

refactor(更新)
- 弹窗修改

周文健 пре 4 месеци
родитељ
комит
e81be84baa
51 измењених фајлова са 243 додато и 201 уклоњено
  1. 2 1
      app/src/main/java/com/grkj/iscs/features/init/fragment/InitCardRegistrationFragment.kt
  2. 2 1
      app/src/main/java/com/grkj/iscs/features/init/fragment/InitDeviceRegistrationKeyAndLockFragment.kt
  3. 3 2
      app/src/main/java/com/grkj/iscs/features/login/activity/LoginActivity.kt
  4. 6 6
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddPointDialog.kt
  5. 5 5
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddUserDialog.kt
  6. 2 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt
  7. 0 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/FilterUserDialog.kt
  8. 6 6
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointDialog.kt
  9. 2 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateRoleDialog.kt
  10. 5 5
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateUserDialog.kt
  11. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddCardDialog.kt
  12. 4 4
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddKeyDialog.kt
  13. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddLockDialog.kt
  14. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddRfidTokenDialog.kt
  15. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateCardDialog.kt
  16. 4 4
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateKeyDialog.kt
  17. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateLockDialog.kt
  18. 3 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateRfidTokenDialog.kt
  19. 8 7
      app/src/main/java/com/grkj/iscs/features/main/fragment/common/SelectMemberFragment.kt
  20. 2 1
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt
  21. 3 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt
  22. 2 13
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt
  23. 6 5
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/WorkstationManageFragment.kt
  24. 4 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt
  25. 9 8
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt
  26. 9 8
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt
  27. 5 4
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt
  28. 16 15
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt
  29. 4 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt
  30. 12 5
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/UserManageViewModel.kt
  31. 7 6
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobExecuteViewModel.kt
  32. 2 1
      app/src/main/res/values-en/strings.xml
  33. 2 1
      app/src/main/res/values-zh/strings.xml
  34. 1 0
      app/src/main/res/values/strings.xml
  35. 1 1
      data/src/main/java/com/grkj/data/dao/HardwareDao.kt
  36. 6 0
      data/src/main/java/com/grkj/data/dao/UserDao.kt
  37. 5 0
      data/src/main/java/com/grkj/data/repository/IUserRepository.kt
  38. 4 0
      data/src/main/java/com/grkj/data/repository/impl/network/NetworkUserRepository.kt
  39. 4 0
      data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt
  40. 4 0
      data/src/main/java/com/grkj/data/repository/impl/standard/UserRepository.kt
  41. 1 1
      gradle/libs.versions.toml
  42. 6 2
      ui-base/src/main/java/com/grkj/ui_base/base/BaseActivity.kt
  43. 6 1
      ui-base/src/main/java/com/grkj/ui_base/base/BaseFragment.kt
  44. 9 0
      ui-base/src/main/java/com/grkj/ui_base/base/BaseViewModel.kt
  45. 13 12
      ui-base/src/main/java/com/grkj/ui_base/business/BleBusinessManager.kt
  46. 13 12
      ui-base/src/main/java/com/grkj/ui_base/business/ModbusBusinessManager.kt
  47. 1 25
      ui-base/src/main/java/com/grkj/ui_base/utils/ble/BleConnectionManager.kt
  48. 5 0
      ui-base/src/main/java/com/grkj/ui_base/utils/event/UiEvent.kt
  49. 7 2
      ui-base/src/main/java/com/grkj/ui_base/utils/extension/DialogXExtension.kt
  50. 2 1
      ui-base/src/main/java/com/grkj/ui_base/utils/modbus/ModBusController.kt
  51. 5 4
      ui-base/src/main/java/com/grkj/ui_base/utils/modbus/PortManager.kt

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/init/fragment/InitCardRegistrationFragment.kt

@@ -17,6 +17,7 @@ import com.grkj.shared.model.EventBean
 import com.grkj.shared.utils.KeyboardUtils
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.utils.event.CardSwipeEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
@@ -103,7 +104,7 @@ class InitCardRegistrationFragment : BaseFragment<FragmentInitCardRegistrationBi
             EventConstants.EVENT_CARD_SWIPE -> {
                 val cardSwipeEvent = (event.data as CardSwipeEvent)
                 if (cardRfidData.contains(cardSwipeEvent.cardNo)) {
-                    PopTip.tip(R.string.card_already_registration)
+                    PopTip.build().tip(R.string.card_already_registration)
                     return
                 }
                 cardRfidData.add(cardSwipeEvent.cardNo)

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/init/fragment/InitDeviceRegistrationKeyAndLockFragment.kt

@@ -24,6 +24,7 @@ import com.grkj.iscs.features.init.model.DockData
 import com.grkj.iscs.features.init.viewmodel.InitDeviceRegistrationKeyAndLockViewModel
 import com.grkj.shared.model.EventBean
 import com.grkj.ui_base.base.BaseFragment
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.grkj.ui_base.utils.modbus.DockBean
 import com.grkj.ui_base.utils.modbus.ModBusController
@@ -56,7 +57,7 @@ class InitDeviceRegistrationKeyAndLockFragment :
         }
         binding.nextBtn.setDebouncedClickListener {
             if (viewModel.isLoadComplete.value == false) {
-                PopTip.tip(R.string.device_in_detect)
+                PopTip.build().tip(R.string.device_in_detect)
                 return@setDebouncedClickListener
             }
             viewModel.deviceRegistrationData().observe(this) {

+ 3 - 2
app/src/main/java/com/grkj/iscs/features/login/activity/LoginActivity.kt

@@ -30,6 +30,7 @@ import com.grkj.ui_base.utils.extension.getAppVersionName
 import com.grkj.shared.utils.extension.toByteArrays
 import com.grkj.shared.utils.extension.toHexStrings
 import com.grkj.ui_base.config.ISCSConfig
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.fingerprint.FingerprintUtil
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikimage.ImageConvertUtils
@@ -85,7 +86,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
                 if (it) {
                     startActivity(Intent(this@LoginActivity, MainActivity::class.java))
                 } else {
-                    PopTip.tip(CommonUtils.getStr(R.string.login_failed))
+                    PopTip.build().tip(CommonUtils.getStr(R.string.login_failed))
                 }
             }
         }
@@ -159,7 +160,7 @@ class LoginActivity : BaseActivity<ActivityLoginBinding>() {
                             if (isSuccess) {
                                 startActivity(Intent(this@LoginActivity, MainActivity::class.java))
                             } else {
-                                PopTip.tip(CommonUtils.getStr(R.string.login_failed))
+                                PopTip.build().tip(CommonUtils.getStr(R.string.login_failed))
                             }
                         }
                 }

+ 6 - 6
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddPointDialog.kt

@@ -7,7 +7,7 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogAddPointBinding
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -84,23 +84,23 @@ class AddPointDialog(
 
     private fun checkData(): Boolean {
         if (binding.pointNameTv.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_input_point_name)
+            PopTip.build().tip(R.string.please_input_point_name)
             return false
         }
         if (binding.functionEt.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_input_point_function)
+            PopTip.build().tip(R.string.please_input_point_function)
             return false
         }
         if (binding.powerTypeTv.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_select_power_type)
+            PopTip.build().tip(R.string.please_select_power_type)
             return false
         }
         if (binding.workstationTv.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_select_workstation)
+            PopTip.build().tip(R.string.please_select_workstation)
             return false
         }
         if (binding.rfidTagTv.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_select_rfid_tag)
+            PopTip.build().tip(R.string.please_select_rfid_tag)
             return false
         }
         return true

+ 5 - 5
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddUserDialog.kt

@@ -8,7 +8,7 @@ import com.grkj.iscs.databinding.DialogAddUserBinding
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.config.ISCSConfig
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -80,7 +80,7 @@ class AddUserDialog(
 
     private fun checkData(): Boolean {
         if (binding.nicknameEt.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_input_nickname)
+            PopTip.build().tip(R.string.please_input_nickname)
             return false
         }
 //        if (binding.cardcodeEt.text.isNullOrBlank()) {
@@ -88,15 +88,15 @@ class AddUserDialog(
 //            return false
 //        }
         if (selectedRoles.isEmpty()) {
-            PopTip.build().tipDialog(R.string.please_select_role)
+            PopTip.build().tip(R.string.please_select_role)
             return false
         }
         if (ISCSConfig.isWorkstationOn && selectedWorkstations.isEmpty()) {
-            PopTip.build().tipDialog(R.string.please_select_area)
+            PopTip.build().tip(R.string.please_select_area)
             return false
         }
         if (binding.statusRg.checkedRadioButtonId == -1) {
-            PopTip.build().tipDialog(R.string.please_select_status)
+            PopTip.build().tip(R.string.please_select_status)
             return false
         }
         return true

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt

@@ -4,7 +4,7 @@ import android.view.View
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogAddWorkstationBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -30,7 +30,7 @@ class AddWorkstationDialog(
         binding.confirm.setOnClickListener {
             val name = binding.workstationNameEt.text.trim().toString()
             if (name.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_workstation_name)
+                PopTip.build().tip(R.string.please_input_workstation_name)
             } else {
                 onConfirm(name)
                 dialog?.dismiss()

+ 0 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/FilterUserDialog.kt

@@ -7,9 +7,7 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogFilterUserBinding
 import com.grkj.ui_base.config.ISCSConfig
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
 import com.kongzue.dialogx.dialogs.CustomDialog
-import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
 
 /**

+ 6 - 6
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointDialog.kt

@@ -8,7 +8,7 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogUpdatePointBinding
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -104,23 +104,23 @@ class UpdatePointDialog(
 
     private fun validate(): Boolean {
         if (binding.pointNameTv.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_input_point_name)
+            PopTip.build().tip(R.string.please_input_point_name)
             return false
         }
         if (binding.functionEt.text.isNullOrBlank()) {
-            PopTip.build().tipDialog(R.string.please_input_point_function)
+            PopTip.build().tip(R.string.please_input_point_function)
             return false
         }
         if (binding.powerTypeTv.tag == null) {
-            PopTip.build().tipDialog(R.string.please_select_power_type)
+            PopTip.build().tip(R.string.please_select_power_type)
             return false
         }
         if (binding.workstationTv.tag == null) {
-            PopTip.build().tipDialog(R.string.please_select_workstation)
+            PopTip.build().tip(R.string.please_select_workstation)
             return false
         }
         if (binding.rfidTagTv.tag == null) {
-            PopTip.build().tipDialog(R.string.please_select_rfid_tag)
+            PopTip.build().tip(R.string.please_select_rfid_tag)
             return false
         }
         return true

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateRoleDialog.kt

@@ -10,7 +10,7 @@ import com.grkj.iscs.databinding.ItemRoleBinding
 import com.grkj.iscs.features.main.entity.RoleManageFunctionalPermissionsEntity
 import com.grkj.iscs.features.main.entity.UpdateRoleDataEntity
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -92,7 +92,7 @@ class UpdateRoleDialog(
         // 确认
         binding.confirm.setOnClickListener {
             if (binding.roleNameEt.text.isNullOrBlank()) {
-                PopTip.build().tipDialog(R.string.please_input_role_name)
+                PopTip.build().tip(R.string.please_input_role_name)
                 return@setOnClickListener
             }
             updateEntity.roleName = binding.roleNameEt.text.toString()

+ 5 - 5
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateUserDialog.kt

@@ -9,7 +9,7 @@ import com.grkj.iscs.databinding.DialogUpdateUserBinding
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.config.ISCSConfig
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -95,13 +95,13 @@ class UpdateUserDialog(
             val name = binding.nicknameEt.text.trim().toString()
             val card = binding.cardcodeEt.text.trim().toString()
             if (name.isBlank()) return@setOnClickListener PopTip.build()
-                .tipDialog(R.string.please_input_nickname)
+                .tip(R.string.please_input_nickname)
             if (card.isBlank()) return@setOnClickListener PopTip.build()
-                .tipDialog(R.string.please_input_card_code)
+                .tip(R.string.please_input_card_code)
             if (selectedRoles.isEmpty()) return@setOnClickListener PopTip.build()
-                .tipDialog(R.string.please_select_role)
+                .tip(R.string.please_select_role)
             if (ISCSConfig.isWorkstationOn && selectedWorkstations.isEmpty()) return@setOnClickListener PopTip.build()
-                .tipDialog(R.string.please_select_area)
+                .tip(R.string.please_select_area)
             val isActive = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
             val updateVo = UpdateUserDataVo(
                 userVo.userId,

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddCardDialog.kt

@@ -9,7 +9,7 @@ import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.shared.model.EventBean
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.DialogLifecycleCallback
@@ -63,11 +63,11 @@ class AddCardDialog(
             val nfc = binding.cardNfcEt.text.trim().toString()
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
             if (nfc.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_card_nfc)
+                PopTip.build().tip(R.string.please_input_card_nfc)
                 return@setOnClickListener
             }
             if (selectedUser == null) {
-                PopTip.build().tipDialog(R.string.please_select_card_username)
+                PopTip.build().tip(R.string.please_select_card_username)
                 return@setOnClickListener
             }
             // 构造并回调

+ 4 - 4
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddKeyDialog.kt

@@ -5,7 +5,7 @@ import com.grkj.data.model.vo.AddKeyDataVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogAddKeyBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -38,15 +38,15 @@ class AddKeyDialog(
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
 
             if (code.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_name)
+                PopTip.build().tip(R.string.please_input_key_name)
                 return@setOnClickListener
             }
             if (nfc.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_nfc)
+                PopTip.build().tip(R.string.please_input_key_nfc)
                 return@setOnClickListener
             }
             if (mac.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_mac)
+                PopTip.build().tip(R.string.please_input_key_mac)
                 return@setOnClickListener
             }
             // 构建并回调(位置参数方式)

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddLockDialog.kt

@@ -5,7 +5,7 @@ import com.grkj.data.model.vo.AddLockDataVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogAddLockBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -38,11 +38,11 @@ class AddLockDialog(
             val remark = binding.remarkEt.text.toString()
 
             if (code.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_lock_code)
+                PopTip.build().tip(R.string.please_input_lock_code)
                 return@setOnClickListener
             }
             if (nfc.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_lock_nfc)
+                PopTip.build().tip(R.string.please_input_lock_nfc)
                 return@setOnClickListener
             }
             // 构建并回调(位置参数方式,与VO构造器一致)

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/AddRfidTokenDialog.kt

@@ -8,7 +8,7 @@ import com.grkj.iscs.databinding.DialogAddRfidTokenBinding
 import com.grkj.shared.model.EventBean
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.DialogLifecycleCallback
@@ -54,11 +54,11 @@ class AddRfidTokenDialog(
             val remark = binding.remarkEt.text.toString().takeIf { it.isNotBlank() }
 
             if (code.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_rfid_code)
+                PopTip.build().tip(R.string.please_input_rfid_code)
                 return@setOnClickListener
             }
             if (rfid.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_rfid)
+                PopTip.build().tip(R.string.please_input_rfid)
                 return@setOnClickListener
             }
             // 构造并回调(位置参数方式)

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateCardDialog.kt

@@ -9,7 +9,7 @@ import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogUpdateCardBinding
 import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -59,8 +59,8 @@ class UpdateCardDialog(
         // 确认
         binding.confirm.setOnClickListener {
             val nfc = binding.cardNfcEt.text.trim().toString()
-            if (nfc.isBlank()) return@setOnClickListener PopTip.build().tipDialog(R.string.please_input_card_nfc)
-            val user = selectedUser ?: return@setOnClickListener PopTip.build().tipDialog(R.string.please_select_card_username)
+            if (nfc.isBlank()) return@setOnClickListener PopTip.build().tip(R.string.please_input_card_nfc)
+            val user = selectedUser ?: return@setOnClickListener PopTip.build().tip(R.string.please_select_card_username)
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
             val vo = UpdateCardDataVo(
                 card.cardId,

+ 4 - 4
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateKeyDialog.kt

@@ -7,7 +7,7 @@ import com.grkj.data.model.vo.UpdateKeyDataVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogUpdateKeyBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -51,15 +51,15 @@ class UpdateKeyDialog(
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
 
             if (code.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_name)
+                PopTip.build().tip(R.string.please_input_key_name)
                 return@setOnClickListener
             }
             if (nfc.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_nfc)
+                PopTip.build().tip(R.string.please_input_key_nfc)
                 return@setOnClickListener
             }
             if (mac.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_key_mac)
+                PopTip.build().tip(R.string.please_input_key_mac)
                 return@setOnClickListener
             }
             // 构建 DTO 并回调

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateLockDialog.kt

@@ -7,7 +7,7 @@ import com.grkj.data.model.vo.UpdateLockDataVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogUpdateLockBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -49,11 +49,11 @@ class UpdateLockDialog(
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
 
             if (code.isBlank()) {
-                PopTip.build().tipDialog(R.string.please_input_lock_code)
+                PopTip.build().tip(R.string.please_input_lock_code)
                 return@setOnClickListener
             }
             if (nfc.isBlank()) {
-                PopTip.build().tipDialog(R.string.please_input_lock_nfc)
+                PopTip.build().tip(R.string.please_input_lock_nfc)
                 return@setOnClickListener
             }
             // 构造并回调

+ 3 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/hardware_manage/UpdateRfidTokenDialog.kt

@@ -7,7 +7,7 @@ import com.grkj.data.model.vo.UpdateRfidTokenDataVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogUpdateRfidTokenBinding
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tipDialog
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.dialogs.PopTip
 import com.kongzue.dialogx.interfaces.OnBindView
@@ -51,11 +51,11 @@ class UpdateRfidTokenDialog(
             val statusChecked = binding.statusRg.checkedRadioButtonId == binding.activateRb.id
 
             if (code.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_rfid_code)
+                PopTip.build().tip(R.string.please_input_rfid_code)
                 return@setOnClickListener
             }
             if (rfid.isEmpty()) {
-                PopTip.build().tipDialog(R.string.please_input_rfid)
+                PopTip.build().tip(R.string.please_input_rfid)
                 return@setOnClickListener
             }
             // 构造 DTO 并回调

+ 8 - 7
app/src/main/java/com/grkj/iscs/features/main/fragment/common/SelectMemberFragment.kt

@@ -20,6 +20,7 @@ import com.grkj.data.enums.RoleEnum
 import com.grkj.iscs.features.main.viewmodel.common.SelectMemberViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
@@ -62,11 +63,11 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         }
         binding.confirm.setDebouncedClickListener {
             if (selectedLockerData.isEmpty()) {
-                PopTip.tip(com.grkj.ui_base.R.string.please_select_locker)
+                PopTip.build().tip(com.grkj.ui_base.R.string.please_select_locker)
                 return@setDebouncedClickListener
             }
             if (canSelectColoker && selectedColockerData.isEmpty()) {
-                PopTip.tip(com.grkj.ui_base.R.string.please_select_colocker)
+                PopTip.build().tip(com.grkj.ui_base.R.string.please_select_colocker)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance()
@@ -119,10 +120,10 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         itemBinding.root.setOnClickListener {
             if (item.isSelected) {
                 if (!isLockerSelect && (selectedColockerData.size == 1 || (viewModel.ticketUsers.isNotEmpty() && viewModel.ticketUsers.find { it.userId == item.userId }?.jobStatus == "1"))) {
-                    PopTip.tip(com.grkj.ui_base.R.string.can_not_remove_current_colocker)
+                    PopTip.build().tip(com.grkj.ui_base.R.string.can_not_remove_current_colocker)
                     return@setOnClickListener
                 } else if (selectedLockerData.size == 1 && viewModel.jobTicketData != null && viewModel.jobTicketData?.ticketStatus != JobTicketStatusEnum.SELECT_MEMBER.status) {
-                    PopTip.tip(com.grkj.ui_base.R.string.can_not_remove_current_locker)
+                    PopTip.build().tip(com.grkj.ui_base.R.string.can_not_remove_current_locker)
                     return@setOnClickListener
                 }
                 item.isSelected = false
@@ -136,7 +137,7 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
                 if ((item.avatar
                         ?: viewModel.userBiometricDataVo.find { it.userId == item.userId }?.content) == null
                 ) {
-                    PopTip.tip(R.string.current_user_has_not_face_data)
+                    PopTip.build().tip(R.string.current_user_has_not_face_data)
                 }
                 if (isLockerSelect) {
                     viewModel.userData.filter { it.userId in selectedLockerData.map { it.userId } }
@@ -170,7 +171,7 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         } ?: itemBinding.lockerIcon.setImageResource(R.drawable.icon_select_member)
         itemBinding.root.setOnClickListener {
             if (selectedLockerData.size == 1 && viewModel.jobTicketData != null && viewModel.jobTicketData?.ticketStatus != JobTicketStatusEnum.SELECT_MEMBER.status) {
-                PopTip.tip(com.grkj.ui_base.R.string.can_not_remove_current_locker)
+                PopTip.build().tip(com.grkj.ui_base.R.string.can_not_remove_current_locker)
                 return@setOnClickListener
             }
             selectedLockerData.removeIf { it.userId == item.userId }
@@ -194,7 +195,7 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         } ?: itemBinding.lockerIcon.setImageResource(R.drawable.icon_select_member)
         itemBinding.root.setOnClickListener {
             if (selectedColockerData.size == 1 || (viewModel.ticketUsers.isNotEmpty() && viewModel.ticketUsers.find { it.userId == item.userId }?.jobStatus == "1")) {
-                PopTip.tip(com.grkj.ui_base.R.string.can_not_remove_current_colocker)
+                PopTip.build().tip(com.grkj.ui_base.R.string.can_not_remove_current_colocker)
                 return@setOnClickListener
             }
             selectedColockerData.removeIf { it.userId == item.userId }

+ 2 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt

@@ -21,6 +21,7 @@ import com.grkj.iscs.features.main.viewmodel.data_manage.PointManageViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
@@ -209,7 +210,7 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
 
     private fun deleteSelectPoint() {
         if (viewModel.pointManageDataList.none { it.isSelected }) {
-            PopTip.tip(R.string.please_select_point)
+            PopTip.build().tip(R.string.please_select_point)
             return
         }
         TipDialog.show(

+ 3 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt

@@ -22,6 +22,7 @@ import com.grkj.iscs.features.main.viewmodel.data_manage.RoleManageViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
@@ -221,13 +222,13 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
 
     private fun deleteSelect() {
         if (viewModel.roleManageDataList.none { it.isSelected }) {
-            PopTip.tip(R.string.please_select_role)
+            PopTip.build().tip(R.string.please_select_role)
             return
         }
         if (viewModel.roleManageDataList.any {
                 it.isSelected && it.roleKey in RoleEnum.values().map { it.roleKey }
             }) {
-            PopTip.tip(R.string.role_in_preset_tip)
+            PopTip.build().tip(R.string.role_in_preset_tip)
             return
         }
         TipDialog.show(

+ 2 - 13
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt

@@ -21,6 +21,7 @@ import com.grkj.iscs.features.main.viewmodel.data_manage.UserManageViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
@@ -69,18 +70,6 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                                     getUserData(false)
                                 }
                             )
-                        } else {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.ERROR,
-                                msg = CommonUtils.getStr(R.string.add_user_failed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getUserData(false)
-                                }
-                            )
                         }
                     }
                 }
@@ -201,7 +190,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
 
     private fun deleteSelectUser() {
         if (viewModel.userManageDataList.none { it.isSelected }) {
-            PopTip.tip(R.string.please_select_user)
+            PopTip.build().tip(R.string.please_select_user)
             return
         }
         TipDialog.show(

+ 6 - 5
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/WorkstationManageFragment.kt

@@ -18,6 +18,7 @@ import com.grkj.iscs.features.main.viewmodel.data_manage.WorkstationManageViewMo
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
@@ -75,27 +76,27 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
         }
         binding.moveUp.setDebouncedClickListener {
             if (viewModel.workstationManageData.none { it.isSelected }) {
-                PopTip.tip(R.string.please_select_workstation)
+                PopTip.build().tip(R.string.please_select_workstation)
                 return@setDebouncedClickListener
             }
             viewModel.moveUp().observe(this) {
                 if (it) {
                     getWorkstationManageData()
                 } else {
-                    PopTip.tip(R.string.workstation_is_in_top)
+                    PopTip.build().tip(R.string.workstation_is_in_top)
                 }
             }
         }
         binding.moveDown.setDebouncedClickListener {
             if (viewModel.workstationManageData.none { it.isSelected }) {
-                PopTip.tip(R.string.please_select_workstation)
+                PopTip.build().tip(R.string.please_select_workstation)
                 return@setDebouncedClickListener
             }
             viewModel.moveDown().observe(this) {
                 if (it) {
                     getWorkstationManageData()
                 } else {
-                    PopTip.tip(R.string.workstation_is_in_bottom)
+                    PopTip.build().tip(R.string.workstation_is_in_bottom)
                 }
             }
         }
@@ -148,7 +149,7 @@ class WorkstationManageFragment : BaseFragment<FragmentWorkstationManageBinding>
 
     private fun deleteSelectWorkstation() {
         if (viewModel.workstationManageData.none { it.isSelected }) {
-            PopTip.tip(R.string.please_select_workstation)
+            PopTip.build().tip(R.string.please_select_workstation)
             return
         }
         val deleteItem = viewModel.workstationManageData.first { it.isSelected }

+ 4 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt

@@ -17,6 +17,7 @@ import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.BottomNavVisibilityEvent
 import com.grkj.ui_base.utils.event.JumpViewEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.loper7.date_time_picker.dialog.CardDatePickerDialog
 import com.sik.sikcore.date.TimeUtils
@@ -96,7 +97,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
         }
         binding.endTime.setDebouncedClickListener {
             if (binding.startTime.text.isEmpty()) {
-                PopTip.tip(R.string.please_select_start_time)
+                PopTip.build().tip(R.string.please_select_start_time)
                 return@setDebouncedClickListener
             }
             pickDateTime(false, binding.endTime)
@@ -122,7 +123,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
                             TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
                         )
                     ) {
-                        PopTip.tip(R.string.start_time_must_large_then_end_time)
+                        PopTip.build().tip(R.string.start_time_must_large_then_end_time)
                         return@setOnChoose
                     }
                 } else {
@@ -132,7 +133,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
                             TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
                         )
                     ) {
-                        PopTip.tip(R.string.start_time_must_large_then_end_time)
+                        PopTip.build().tip(R.string.start_time_must_large_then_end_time)
                         return@setOnChoose
                     }
                 }

+ 9 - 8
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt

@@ -23,6 +23,7 @@ import com.grkj.iscs.features.main.viewmodel.job_manage.JobViewModel
 import com.grkj.ui_base.base.BaseFormFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
@@ -112,7 +113,7 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
         }
         binding.workflowModeSettingTv.setDebouncedClickListener {
             if (selectedModeId == null) {
-                PopTip.tip(R.string.please_select_workflow_mode)
+                PopTip.build().tip(R.string.please_select_workflow_mode)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance()
@@ -134,7 +135,7 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
         }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_job_workstation)
+                PopTip.build().tip(R.string.please_select_job_workstation)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance().saveData(
@@ -159,11 +160,11 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
         }
         binding.selectMemberTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_job_workstation)
+                PopTip.build().tip(R.string.please_select_job_workstation)
                 return@setDebouncedClickListener
             }
             if (selectedModeId == null) {
-                PopTip.tip(R.string.please_select_flow_mode)
+                PopTip.build().tip(R.string.please_select_flow_mode)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance().saveData(
@@ -293,19 +294,19 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
      */
     private fun checkData(): Boolean {
         if (selectedWorkstationId == null) {
-            PopTip.tip(R.string.please_select_job_workstation)
+            PopTip.build().tip(R.string.please_select_job_workstation)
             return false
         }
         if (selectedModeId == null) {
-            PopTip.tip(R.string.please_select_flow_mode)
+            PopTip.build().tip(R.string.please_select_flow_mode)
             return false
         }
         if (binding.jobNameEt.text.isEmpty()) {
-            PopTip.tip(R.string.please_input_job_name)
+            PopTip.build().tip(R.string.please_input_job_name)
             return false
         }
         if (selectedPointData.isEmpty()) {
-            PopTip.tip(R.string.please_must_select_at_least_one_point)
+            PopTip.build().tip(R.string.please_must_select_at_least_one_point)
             return false
         }
         if (selectedLockerData.isEmpty()) {

+ 9 - 8
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt

@@ -24,6 +24,7 @@ import com.grkj.iscs.features.main.viewmodel.job_manage.SopViewModel
 import com.grkj.ui_base.base.BaseFormFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
@@ -100,7 +101,7 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
         }
         binding.workflowModeSettingTv.setDebouncedClickListener {
             if (selectedModeId == null) {
-                PopTip.tip(R.string.please_select_workflow_mode)
+                PopTip.build().tip(R.string.please_select_workflow_mode)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance()
@@ -122,7 +123,7 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
         }
         binding.selectPointTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_sop_workstation)
+                PopTip.build().tip(R.string.please_select_sop_workstation)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance()
@@ -151,11 +152,11 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
         }
         binding.selectMemberTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_sop_workstation)
+                PopTip.build().tip(R.string.please_select_sop_workstation)
                 return@setDebouncedClickListener
             }
             if (selectedModeId == null) {
-                PopTip.tip(R.string.please_select_flow_mode)
+                PopTip.build().tip(R.string.please_select_flow_mode)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance().saveData(
@@ -260,19 +261,19 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
      */
     private fun checkData(): Boolean {
         if (selectedWorkstationId == null) {
-            PopTip.tip(R.string.please_select_sop_workstation)
+            PopTip.build().tip(R.string.please_select_sop_workstation)
             return false
         }
         if (selectedModeId == null) {
-            PopTip.tip(R.string.please_select_flow_mode)
+            PopTip.build().tip(R.string.please_select_flow_mode)
             return false
         }
         if (binding.sopNameEt.text.isEmpty()) {
-            PopTip.tip(R.string.please_input_sop_name)
+            PopTip.build().tip(R.string.please_input_sop_name)
             return false
         }
         if (selectedPointData.isEmpty()) {
-            PopTip.tip(R.string.please_must_select_at_least_one_point)
+            PopTip.build().tip(R.string.please_must_select_at_least_one_point)
             return false
         }
         if (selectedLockerData.isEmpty()) {

+ 5 - 4
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt

@@ -26,6 +26,7 @@ import com.grkj.ui_base.base.BaseFormFragment
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.file
@@ -117,7 +118,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
         }
         binding.sopTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_sop_workstation)
+                PopTip.build().tip(R.string.please_select_sop_workstation)
                 return@setDebouncedClickListener
             } else {
                 viewModel.getSopByWorkstation(selectedWorkstationId!!).observe(this) {
@@ -127,7 +128,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
         }
         binding.workflowModeSettingTv.setDebouncedClickListener {
             if (selectedSop == null) {
-                PopTip.tip(R.string.please_select_sop)
+                PopTip.build().tip(R.string.please_select_sop)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance()
@@ -149,7 +150,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
         }
         binding.selectMemberTv.setDebouncedClickListener {
             if (selectedWorkstationId == null) {
-                PopTip.tip(R.string.please_select_sop_workstation)
+                PopTip.build().tip(R.string.please_select_sop_workstation)
                 return@setDebouncedClickListener
             }
             GlobalDataTempStore.getInstance().saveData(
@@ -280,7 +281,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
      */
     private fun checkData(): Boolean {
         if (selectedWorkstationId == null) {
-            PopTip.tip(R.string.please_select_sop_workstation)
+            PopTip.build().tip(R.string.please_select_sop_workstation)
             return false
         }
         if (selectedSopId == null) {

+ 16 - 15
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt

@@ -39,6 +39,7 @@ import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.RFIDCardReadEvent
 import com.grkj.ui_base.utils.event.UiEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.extension.toggleExpandView
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.kongzue.dialogx.dialogs.PopTip
@@ -298,7 +299,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                         stepClickConfirm(adapter, item, workflowStep)
                     } else {
                         val errorTipData = viewModel.getStepErrorTip(workflowStep)
-                        PopTip.tip(errorTipData.first)
+                        PopTip.build().tip(errorTipData.first)
                         errorTipData.second?.let {
                             checkLayout(it)
                         }
@@ -321,7 +322,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                         item.stepStatus = "1"
                         viewModel.updateStepStatus(item).observe(this@JobExecuteFragment) {
                             if (it == false) {
-                                PopTip.tip(R.string.step_confirm_failed)
+                                PopTip.build().tip(R.string.step_confirm_failed)
                             } else {
                                 logger.info("点击更新步骤状态完成")
                                 checkLayout(0)
@@ -332,7 +333,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     })
             } else {
                 val errorTipData = viewModel.getStepErrorTip(workflowStep)
-                PopTip.tip(errorTipData.first)
+                PopTip.build().tip(errorTipData.first)
                 errorTipData.second?.let {
                     checkLayout(it)
                 }
@@ -468,10 +469,10 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                                                 viewModel.colockerStatusChange(colocker)
                                                     .observe(this) {
                                                         if (it) {
-                                                            PopTip.tip(R.string.colock_complete)
+                                                            PopTip.build().tip(R.string.colock_complete)
                                                             checkStepComplete()
                                                         } else {
-                                                            PopTip.tip(R.string.colock_failed)
+                                                            PopTip.build().tip(R.string.colock_failed)
                                                         }
                                                         refreshTicketUser()
                                                     }
@@ -487,22 +488,22 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                                                 viewModel.colockerStatusChange(colocker)
                                                     .observe(this) {
                                                         if (it) {
-                                                            PopTip.tip(R.string.uncolock_complete)
+                                                            PopTip.build().tip(R.string.uncolock_complete)
                                                             checkStepComplete()
                                                         } else {
-                                                            PopTip.tip(R.string.uncolock_failed)
+                                                            PopTip.build().tip(R.string.uncolock_failed)
                                                         }
                                                         refreshTicketUser()
                                                     }
                                             })
                                     } else {
-                                        PopTip.tip(R.string.currently_unable_to_lock_together)
+                                        PopTip.build().tip(R.string.currently_unable_to_lock_together)
                                     }
-                                } ?: PopTip.tip(R.string.invalid_user)
-                            } ?: PopTip.tip(R.string.invalid_card)
+                                } ?: PopTip.build().tip(R.string.invalid_user)
+                            } ?: PopTip.build().tip(R.string.invalid_card)
                         }
                     } else {
-                        PopTip.tip(R.string.currently_unable_to_lock_together)
+                        PopTip.build().tip(R.string.currently_unable_to_lock_together)
                     }
                 }
             }
@@ -538,7 +539,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                 it.stepStatus = "1"
                 viewModel.updateStepStatus(it).observe(this@JobExecuteFragment) {
                     if (it == false) {
-                        PopTip.tip(R.string.step_confirm_failed)
+                        PopTip.build().tip(R.string.step_confirm_failed)
                     } else {
                         logger.info("检查更新步骤状态完成")
                     }
@@ -594,7 +595,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
     override fun initData() {
         super.initData()
         if (!GlobalDataTempStore.getInstance().hasData(DataTransferConstants.KEY_JOB_TICKET_ID)) {
-            PopTip.tip(R.string.job_lost)
+            PopTip.build().tip(R.string.job_lost)
             navController.popBackStack()
             return
         }
@@ -690,7 +691,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     viewModel.currentStepData?.let {
                         viewModel.updateStepStatus(it).observe(this@JobExecuteFragment) {
                             if (it == false) {
-                                PopTip.tip(R.string.step_confirm_failed)
+                                PopTip.build().tip(R.string.step_confirm_failed)
                             } else {
                                 checkCurrentStep()
                             }
@@ -708,7 +709,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                             it.stepStatus = "0"
                             viewModel.updateStepStatusBack(it).observe(this@JobExecuteFragment) {
                                 if (it == false) {
-                                    PopTip.tip(R.string.step_confirm_failed)
+                                    PopTip.build().tip(R.string.step_confirm_failed)
                                 } else {
                                     viewModel.currentStepData =
                                         viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }

+ 4 - 3
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt

@@ -18,6 +18,7 @@ import com.grkj.iscs.features.main.viewmodel.job_manage.JobManageViewModel
 import com.grkj.ui_base.base.BaseFragment
 import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.setDebouncedClickListener
@@ -63,7 +64,7 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
 
     private fun deleteSelected() {
         if (viewModel.jobManageDataList.none { it.isSelected }) {
-            PopTip.tip(R.string.please_select_job)
+            PopTip.build().tip(R.string.please_select_job)
             return
         }
         if (viewModel.jobManageDataList.any { it.ticketStatus !in listOf(JobTicketStatusEnum.CANCELED.status, JobTicketStatusEnum.FINISHED.status) }){
@@ -132,9 +133,9 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
                     navController.navigate(R.id.action_jobManageFragment_to_editJobFragment)
                 }
             } else if (item.ticketStatus == JobTicketStatusEnum.CANCELED.status) {
-                PopTip.tip(R.string.job_canceled)
+                PopTip.build().tip(R.string.job_canceled)
             } else if (item.ticketStatus == JobTicketStatusEnum.FINISHED.status) {
-                PopTip.tip(R.string.job_finished)
+                PopTip.build().tip(R.string.job_finished)
             } else if (item.exStatus == viewModel.jobTicketStatus.find { it.dictLabel == "异常" }?.dictValue?.toInt()) {
                 viewModel.getExceptionIdByTicketId(item.ticketId).observe(this@JobManageFragment) {
                     GlobalDataTempStore.getInstance()

+ 12 - 5
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/UserManageViewModel.kt

@@ -12,7 +12,9 @@ import com.grkj.data.repository.IHardwareRepository
 import com.grkj.data.repository.IRoleRepository
 import com.grkj.data.repository.IUserRepository
 import com.grkj.data.repository.IWorkstationRepository
+import com.grkj.iscs.R
 import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.utils.CommonUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
@@ -71,12 +73,17 @@ class UserManageViewModel @Inject constructor(
      */
     fun addUser(userData: AddUserDataVo): LiveData<Boolean> {
         return liveData(Dispatchers.IO) {
-            val userId = userRepository.addUserData(userData)
-            userData.workstationId?.let {
-                workstationRepository.addUserWorkstationData(userId, it)
+            val user = userRepository.getUserByUserName(userData.username)
+            if (user.isNotEmpty()) {
+                showTip(CommonUtils.getStr(R.string.user_already_exists).toString())
+            } else {
+                val userId = userRepository.addUserData(userData)
+                userData.workstationId?.let {
+                    workstationRepository.addUserWorkstationData(userId, it)
+                }
+                roleRepository.addUserRoleData(userId, userData.roleId)
+                emit(true)
             }
-            roleRepository.addUserRoleData(userId, userData.roleId)
-            emit(true)
         }
     }
 

+ 7 - 6
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobExecuteViewModel.kt

@@ -31,6 +31,7 @@ import com.grkj.ui_base.dialog.TipDialog
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.LoadingEvent
 import com.grkj.ui_base.utils.event.UiEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.grkj.ui_base.utils.modbus.ModBusController
 import com.kongzue.dialogx.dialogs.PopTip
@@ -129,7 +130,7 @@ class JobExecuteViewModel @Inject constructor(
             }
             if (role == null) {
                 ThreadUtils.runOnMain {
-                    PopTip.tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
+                    PopTip.build().tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
                 }
                 return@liveData
             }
@@ -163,7 +164,7 @@ class JobExecuteViewModel @Inject constructor(
             }
             if (role == null) {
                 ThreadUtils.runOnMain {
-                    PopTip.tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
+                    PopTip.build().tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
                 }
                 return@liveData
             }
@@ -196,7 +197,7 @@ class JobExecuteViewModel @Inject constructor(
             }
             if (role == null) {
                 ThreadUtils.runOnMain {
-                    PopTip.tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
+                    PopTip.build().tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
                 }
                 return@liveData
             }
@@ -294,7 +295,7 @@ class JobExecuteViewModel @Inject constructor(
             }
             if (role == null) {
                 ThreadUtils.runOnMain {
-                    PopTip.tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
+                    PopTip.build().tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
                 }
                 return@liveData
             }
@@ -343,7 +344,7 @@ class JobExecuteViewModel @Inject constructor(
     private fun checkBeforeToUnlock(): Boolean {
         val tickets = jobTicketRepository.samePointLockingTicket(ticketId)
         tickets.firstOrNull()?.let {
-            PopTip.tip(
+            PopTip.build().tip(
                 CommonUtils.getStr(
                     R.string.please_wait_ticket_name_lock_complete,
                     args = listOf<String>(it.ticketName).toTypedArray()
@@ -714,7 +715,7 @@ class JobExecuteViewModel @Inject constructor(
             }
             if (role == null) {
                 ThreadUtils.runOnMain {
-                    PopTip.tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
+                    PopTip.build().tip(CommonUtils.getStr(com.grkj.ui_base.R.string.no_permission_to_handle))
                 }
                 emit(false)
             } else {

+ 2 - 1
app/src/main/res/values-en/strings.xml

@@ -169,7 +169,7 @@
     <string name="job_manage_delete_failed">Delete selected job failed</string>
     <string name="please_select_job">Please select job</string>
     <string name="check_delete_job">Do you want to delete selected job</string>
-    <string name="please_wait_ticket_name_lock_complete">Please wait ticket [%1$d] locking complete</string>
+    <string name="please_wait_ticket_name_lock_complete">Please wait ticket [%1$s] locking complete</string>
     <string name="user_info_title">User info</string>
     <string name="user_name">Login name</string>
     <string name="please_input_phone">please input phone</string>
@@ -456,5 +456,6 @@
     <string name="has_job_in_progress">There are ongoing assignments</string>
     <string name="loading_device">Loading hardware .....</string>
     <string name="confirm_create_unlock_job">Confirm whether to create a unlock job</string>
+    <string name="user_already_exists">User already exists</string>
 
 </resources>

+ 2 - 1
app/src/main/res/values-zh/strings.xml

@@ -169,7 +169,7 @@
     <string name="job_manage_delete_failed">无法删除选中的作业</string>
     <string name="please_select_job">请选择作业</string>
     <string name="check_delete_job">您确认要删除作业吗</string>
-    <string name="please_wait_ticket_name_lock_complete">请等待[%1$d]上锁完成</string>
+    <string name="please_wait_ticket_name_lock_complete">请等待[%1$s]上锁完成</string>
     <string name="user_info_title">个人信息</string>
     <string name="user_name">登录名</string>
     <string name="please_input_phone">请输入电话</string>
@@ -456,5 +456,6 @@
     <string name="has_job_in_progress">存在正在进行中的作业</string>
     <string name="loading_device">正在加载硬件......</string>
     <string name="confirm_create_unlock_job">是否创建解锁作业</string>
+    <string name="user_already_exists">用户已存在</string>
 
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -459,5 +459,6 @@
     <string name="has_job_in_progress">存在正在进行中的作业</string>
     <string name="loading_device">正在加载硬件......</string>
     <string name="confirm_create_unlock_job">是否创建解锁作业</string>
+    <string name="user_already_exists">用户已存在</string>
 
 </resources>

+ 1 - 1
data/src/main/java/com/grkj/data/dao/HardwareDao.kt

@@ -52,6 +52,7 @@ interface HardwareDao {
 
     /**
      * 更新挂锁取出
+     * todo 目前去除筛选lock_id是空的数据用于覆盖
      */
     @Query(
         """
@@ -64,7 +65,6 @@ interface HardwareDao {
           SELECT record_id
           FROM is_job_ticket_lock
           WHERE ticket_id = :ticketId
-            AND lock_id IS NULL
           LIMIT 1
         );
     """

+ 6 - 0
data/src/main/java/com/grkj/data/dao/UserDao.kt

@@ -281,4 +281,10 @@ interface UserDao {
      */
     @Query("select * from sys_user_characteristic where user_id in (:userIds)")
     fun getUserBiometricDataByUserIds(userIds: List<Long>): List<SysBiometricDataVo>
+
+    /**
+     * 根据用户名获取用户
+     */
+    @Query("select * from sys_user where user_name = :username")
+    fun getUsersByUsername(username: String): List<SysUserDo>
 }

+ 5 - 0
data/src/main/java/com/grkj/data/repository/IUserRepository.kt

@@ -153,4 +153,9 @@ interface IUserRepository {
      * userId登录
      */
     fun loginWithUserId(userId: Long?): Boolean
+
+    /**
+     * 根据用户名获取用户
+     */
+    fun getUserByUserName(username: String): List<SysUserDo>
 }

+ 4 - 0
data/src/main/java/com/grkj/data/repository/impl/network/NetworkUserRepository.kt

@@ -113,6 +113,10 @@ class NetworkUserRepository @Inject constructor() : BaseRepository(), IUserRepos
         TODO("Not yet implemented")
     }
 
+    override fun getUserByUserName(username: String): List<SysUserDo> {
+        TODO("Not yet implemented")
+    }
+
     override fun getAllUsersWithRole(): List<SysUserVo> {
         TODO("Not yet implemented")
     }

+ 4 - 0
data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt

@@ -207,21 +207,25 @@ class JobTicketRepository @Inject constructor(
             return null
         }
         val ticketDetailRes = BeanUtils.copyProperties(ticketData, TicketDetailRes::class.java)
+        //填充钥匙数据
         val ticketKeyData = getJobTicketKeyDataByTicketId(ticketId)
         val jobTicketKeyDataList =
             BeanUtils.copyList(ticketKeyData, TicketDetailRes.JobTicketKeyVO::class.java)
         ticketDetailRes?.ticketKeyVOList =
             jobTicketKeyDataList?.filterIsInstance<TicketDetailRes.JobTicketKeyVO>() as MutableList<TicketDetailRes.JobTicketKeyVO>?
+        //填充挂锁数据
         val ticketLockData = getJobTicketLockDataByTicketId(ticketId)
         val jobTicketLockDataList =
             BeanUtils.copyList(ticketLockData, TicketDetailRes.JobTicketLockVO::class.java)
         ticketDetailRes?.ticketLockVOList =
             jobTicketLockDataList?.filterIsInstance<TicketDetailRes.JobTicketLockVO>() as MutableList<TicketDetailRes.JobTicketLockVO>?
+        //填充用户数据
         val ticketUserData = getJobTicketUserDataByTicketId(ticketId)
         val jobTicketUserDataList =
             BeanUtils.copyList(ticketUserData, TicketDetailRes.JobTicketUserVO::class.java)
         ticketDetailRes?.ticketUserVOList =
             jobTicketUserDataList?.filterIsInstance<TicketDetailRes.JobTicketUserVO>() as MutableList<TicketDetailRes.JobTicketUserVO>?
+        //填充点位数据
         val ticketPointData = jobTicketDao.getJobTicketDetailPointsDataByTicketId(ticketId)
         val jobTicketPointDataList =
             BeanUtils.copyList(ticketPointData, TicketDetailRes.JobTicketPointsVO::class.java)

+ 4 - 0
data/src/main/java/com/grkj/data/repository/impl/standard/UserRepository.kt

@@ -294,6 +294,10 @@ class UserRepository @Inject constructor(
         return userDao.insert(sysUserDo)
     }
 
+    override fun getUserByUserName(username: String): List<SysUserDo> {
+        return userDao.getUsersByUsername(username)
+    }
+
     override fun updateUserData(userDataVo: UpdateUserDataVo) {
         val sysUserDo = SysUserDo()
         sysUserDo.userId = userDataVo.userId

+ 1 - 1
gradle/libs.versions.toml

@@ -17,7 +17,7 @@ sikcronjob = "1.0.3"
 sikfontmanager = "1.0.2"
 brv = "1.6.1"
 androidautosize = "v1.2.1"
-dialogx = "0.0.49"
+dialogx = "0.0.50.beta38"
 room = "2.7.1"  # 最新稳定版(Apr 23, 2025) :contentReference[oaicite:0]{index=0}
 lifecycle-version = "2.9.0"
 ksp = "2.1.10-1.0.31"

+ 6 - 2
ui-base/src/main/java/com/grkj/ui_base/base/BaseActivity.kt

@@ -19,6 +19,7 @@ import com.grkj.ui_base.dialog.LoadingDialog
 import com.grkj.ui_base.utils.event.JumpViewEvent
 import com.grkj.ui_base.utils.event.LoadingEvent
 import com.grkj.ui_base.utils.extension.checkPermissions
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.widget.CustomNavBar
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikandroid.permission.PermissionUtils
@@ -91,7 +92,10 @@ abstract class BaseActivity<V : ViewDataBinding> : AppCompatActivity(), CustomAd
         permissionCallback: PermissionUtils.PermissionCallback
     ) {
         logger.info("权限检查结果:${checkPermissions(permissions.toList().toTypedArray())}")
-        PermissionUtils.checkAndRequestPermissions(permissions.toList().toTypedArray(),permissionCallback)
+        PermissionUtils.checkAndRequestPermissions(
+            permissions.toList().toTypedArray(),
+            permissionCallback
+        )
     }
 
     /** 动态切换 Nav Graph */
@@ -160,7 +164,7 @@ abstract class BaseActivity<V : ViewDataBinding> : AppCompatActivity(), CustomAd
 
     /** 通用吐司 */
     protected fun showToast(msg: String) {
-        PopTip.tip(msg)
+        PopTip.build().tip(msg)
     }
 
 

+ 6 - 1
ui-base/src/main/java/com/grkj/ui_base/base/BaseFragment.kt

@@ -12,13 +12,17 @@ import androidx.annotation.LayoutRes
 import androidx.databinding.DataBindingUtil
 import androidx.databinding.ViewDataBinding
 import androidx.fragment.app.Fragment
+import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
 import androidx.navigation.NavController
 import androidx.navigation.fragment.findNavController
 import com.grkj.shared.model.EventBean
 import com.grkj.shared.utils.KeyboardUtils
 import com.grkj.ui_base.config.ISCSConfig
 import com.grkj.ui_base.utils.event.LoadingEvent
+import com.grkj.ui_base.utils.event.UiEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikandroid.permission.PermissionUtils
 import kotlinx.coroutines.launch
@@ -95,6 +99,7 @@ abstract class BaseFragment<V : ViewDataBinding> : Fragment(), CustomAdapt {
     /** EventBus 事件,子类可重写 */
     @Subscribe(threadMode = ThreadMode.MAIN)
     open fun onEvent(event: EventBean<Any>) {
+
     }
 
     override fun onDestroyView() {
@@ -116,7 +121,7 @@ abstract class BaseFragment<V : ViewDataBinding> : Fragment(), CustomAdapt {
 
     /** 通用吐司 */
     protected fun showToast(msg: String) {
-        PopTip.tip(msg)
+        PopTip.build().tip(msg)
     }
 
     /**

+ 9 - 0
ui-base/src/main/java/com/grkj/ui_base/base/BaseViewModel.kt

@@ -6,6 +6,8 @@ import androidx.lifecycle.liveData
 import androidx.lifecycle.viewModelScope
 import com.grkj.data.repository.IUserRepository
 import com.grkj.ui_base.utils.event.UiEvent
+import com.grkj.ui_base.utils.extension.tip
+import com.kongzue.dialogx.dialogs.PopTip
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.flow.receiveAsFlow
@@ -75,5 +77,12 @@ open class BaseViewModel constructor(
             emit(userRepository?.checkCard(cardNo) == true)
         }
     }
+
+    /**
+     * 显示吐司
+     */
+    protected fun showTip(msg: String) {
+        PopTip.build().tip(msg)
+    }
 }
 

+ 13 - 12
ui-base/src/main/java/com/grkj/ui_base/business/BleBusinessManager.kt

@@ -33,6 +33,7 @@ import com.grkj.ui_base.utils.event.LoadingEvent
 import com.grkj.ui_base.utils.event.TicketFinishedEvent
 import com.grkj.ui_base.utils.event.UpdateTicketProgressEvent
 import com.grkj.ui_base.utils.extension.serialNo
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.grkj.ui_base.utils.modbus.ModBusController
 import com.kongzue.dialogx.dialogs.PopTip
@@ -125,7 +126,7 @@ object BleBusinessManager {
                     val keyBean = ModBusController.getKeyByMac(bleBean.bleDevice.mac)
                     if (keyBean == null) {
                         LoadingEvent.sendLoadingEvent("未找到钥匙信息", true)
-                        PopTip.tip(R.string.key_not_exists)
+                        PopTip.build().tip(R.string.key_not_exists)
                     } else {
                         LoadingEvent.sendLoadingEvent(
                             CommonUtils.getStr(R.string.take_out_key_tip), true
@@ -138,7 +139,7 @@ object BleBusinessManager {
                         ModBusController.updateKeyReadyStatus(
                             bleBean.bleDevice.mac, false, 1
                         )
-                        PopTip.tip(R.string.take_out_key)
+                        PopTip.build().tip(R.string.take_out_key)
                     }
                 } else {
                     logger.error("切换工作模式失败 : ${bleBean.bleDevice.mac}")
@@ -234,7 +235,7 @@ object BleBusinessManager {
                         sendTicketWithRetry(bleBean.ticketSend!!, bleBean.bleDevice, isNeedLoading)
                     }
                 } else {
-                    PopTip.tip(R.string.send_ticket_fail)
+                    PopTip.build().tip(R.string.send_ticket_fail)
                     logger.error("Send ticket fail")
                     ModBusController.getKeyByMac(bleBean.bleDevice.mac)?.let { itKey ->
                         ModbusBusinessManager.removeDeviceTake(
@@ -363,7 +364,7 @@ object BleBusinessManager {
                                     }
                                     if (role == null) {
                                         ThreadUtils.runOnMain {
-                                            PopTip.tip(CommonUtils.getStr(R.string.you_are_not_locker_tip))
+                                            PopTip.build().tip(CommonUtils.getStr(R.string.you_are_not_locker_tip))
                                         }
                                         return@getTicketDetail
                                     }
@@ -406,7 +407,7 @@ object BleBusinessManager {
             // 故障模式
             0x03.toByte() -> {
                 // TODO 上报?
-                PopTip.tip(
+                PopTip.build().tip(
                     "${currentModeEvent.bleBean.bleDevice.mac} : " + "${CommonUtils.getStr(R.string.key_is_in_failure_mode)}"
                 )
             }
@@ -499,7 +500,7 @@ object BleBusinessManager {
             }
             logger.info("作业票信息:${workTicketGet}")
             if (workTicketGet == null) {
-                PopTip.tip(R.string.ticket_data_error)
+                PopTip.build().tip(R.string.ticket_data_error)
                 switchReadyMode(bleDevice)
                 return@handleTicketStatus
             }
@@ -518,7 +519,7 @@ object BleBusinessManager {
                     TipDialog.show(
                         msg = CommonUtils.getStr(R.string.key_return_tip)!!, onConfirmClick = {
                             LoadingEvent.sendLoadingEvent()
-                            PopTip.tip(CommonUtils.getStr(R.string.continue_the_ticket))
+                            PopTip.build().tip(CommonUtils.getStr(R.string.continue_the_ticket))
                             BleManager.getInstance().disconnect(bleDevice)
                             // 打开卡扣,防止初始化的时候选择不处理钥匙导致无法使用
                             val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
@@ -586,7 +587,7 @@ object BleBusinessManager {
                                         TicketFinishedEvent.sendTicketFinishedEvent(it.toLong())
                                     }
                                 }
-                                PopTip.tip(R.string.key_return_success)
+                                PopTip.build().tip(R.string.key_return_success)
                             } else {
                                 //更新作业票的状态
                                 val jobTicketData =
@@ -595,7 +596,7 @@ object BleBusinessManager {
                                     data.taskCode?.let {
                                         TicketFinishedEvent.sendTicketFinishedEvent(it.toLong())
                                     }
-                                    PopTip.tip(R.string.key_return_success)
+                                    PopTip.build().tip(R.string.key_return_success)
                                     return@updateKeyReturn
                                 }
                                 val ticketStepDataVo =
@@ -642,7 +643,7 @@ object BleBusinessManager {
                                 )
                                 // 确认归还,切换为待机模式
                                 switchReadyMode(bleDevice)
-                                PopTip.tip(R.string.key_return_success)
+                                PopTip.build().tip(R.string.key_return_success)
                             }
                         }
                     } else {
@@ -650,7 +651,7 @@ object BleBusinessManager {
                             // 当前策略:作业票未完成禁止归还钥匙
                             fun keyReturnErrorConfirm() {
                                 LoadingEvent.sendLoadingEvent()
-                                PopTip.tip(R.string.continue_the_ticket)
+                                PopTip.build().tip(R.string.continue_the_ticket)
                                 // 打开卡扣,防止初始化的时候选择不处理钥匙导致无法使用
                                 if (workTicketGet.data?.all { it.dataList?.all { it.closed == 1 } == true } == true) {
                                     workTicketGet.data?.firstOrNull()?.taskCode?.toLong()?.let {
@@ -709,7 +710,7 @@ object BleBusinessManager {
                     it.userId == MainDomainData.userInfo?.userId && currentStep?.currentUserCanConfirm() == true
                 }
                 if (role == null) {
-                    PopTip.tip(R.string.you_are_not_locker_tip)
+                    PopTip.build().tip(R.string.you_are_not_locker_tip)
                     return@getTicketDetail
                 }
                 if (currentStep?.enableLock == true) {    // 上锁工作票

+ 13 - 12
ui-base/src/main/java/com/grkj/ui_base/business/ModbusBusinessManager.kt

@@ -20,6 +20,7 @@ import com.grkj.ui_base.utils.event.UpdateTicketProgressEvent
 import com.grkj.shared.utils.extension.removeLeadingZeros
 import com.grkj.ui_base.utils.extension.serialNo
 import com.grkj.shared.utils.extension.toHexStrings
+import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.utils.modbus.DeviceConst
 import com.grkj.ui_base.utils.modbus.DockBean
 import com.grkj.ui_base.utils.modbus.ModBusController
@@ -174,7 +175,7 @@ object ModbusBusinessManager {
                             Executor.runOnMain {
                                 if (isSuccess == false) {
                                     logger.error("Lock take report fail")
-                                    PopTip.tip(CommonUtils.getStr(R.string.lock_take_report_fail))
+                                    PopTip.build().tip(CommonUtils.getStr(R.string.lock_take_report_fail))
                                     SPUtils.saveTicketTakeLockException(info.ticketId)
                                     mDeviceTakeList.removeIf { it.deviceType == DeviceConst.DEVICE_TYPE_LOCK && it.nfc == info.nfc }
                                     mDeviceTakeList.removeIf { it.deviceType == DeviceConst.DEVICE_TYPE_KEY && it.ticketId == info.ticketId }
@@ -192,14 +193,14 @@ object ModbusBusinessManager {
                                             mDeviceTakeList.count { it.deviceType == DeviceConst.DEVICE_TYPE_LOCK && it.ticketId == info.ticketId }),
                                         true
                                     )
-                                    PopTip.tip(R.string.take_out_rest_locks)
+                                    PopTip.build().tip(R.string.take_out_rest_locks)
                                     return@runOnMain
                                 } else {
                                     logger.info("All locks are taken")
                                     LoadingEvent.sendLoadingEvent()
                                 }
                                 if (SPUtils.getTicketTakeLockException(info.ticketId)) {
-                                    PopTip.tip(R.string.current_ticket_report_lock_take_exception_tip)
+                                    PopTip.build().tip(R.string.current_ticket_report_lock_take_exception_tip)
                                     return@runOnMain
                                 }
                                 // 检查有无当前工作票的钥匙
@@ -268,7 +269,7 @@ object ModbusBusinessManager {
                 val actualLockCount = lockMap.values.sumBy { it.size }
                 // 如果锁不够,提前清空并立刻返回
                 if (actualLockCount < needLockCount) {
-                    PopTip.tip(
+                    PopTip.build().tip(
                         R.string.lock_is_not_enough
                     )
                     callBack(null, mutableMapOf())
@@ -293,7 +294,7 @@ object ModbusBusinessManager {
                         )
                     }
                     if (keyPair == null) {
-                        PopTip.tip(R.string.no_available_key)
+                        PopTip.build().tip(R.string.no_available_key)
                     }
                 }
                 // —— 全部计算完毕,在主线程一次性回调 ——
@@ -303,7 +304,7 @@ object ModbusBusinessManager {
                 // 根据需求处理异常,或把异常信息也通过 callback 返回
                 LoadingEvent.sendLoadingEvent()
                 e.printStackTrace()
-                PopTip.tip("检查设备异常:${e.message}")
+                PopTip.build().tip("检查设备异常:${e.message}")
             }
         }
     }
@@ -328,7 +329,7 @@ object ModbusBusinessManager {
                 }
             }
             tipStr += addressList
-            PopTip.tip(tipStr)
+            PopTip.build().tip(tipStr)
         }
         res.forEachIndexed { index, bytes ->
             val dockBean = ModBusController.updateStatus(bytes) ?: return@forEachIndexed
@@ -432,12 +433,12 @@ object ModbusBusinessManager {
                                 ?.map { it.lockNfc }?.toMutableList()
                                 ?: mutableListOf())
                         ) {
-                            PopTip.tip(R.string.lock_exception_tag)
+                            PopTip.build().tip(R.string.lock_exception_tag)
                         } else if (slotsPage?.records?.filter {
                                 it.slotType == slotTypeList.find { d -> d.dictLabel == "锁" }?.dictValue && it.status == slotStatusList.find { d -> d.dictLabel == "异常" }?.dictValue
                             }
                                 ?.find { it.row?.toInt() == dockBean.row && (lockBean.idx + 1) == it.col?.toInt() } != null) {
-                            PopTip.tip(R.string.slot_exception_tag)
+                            PopTip.build().tip(R.string.slot_exception_tag)
                         } else {
                             logger.info("挂锁归还:${lockBean.rfid}")
                             RepositoryManager.hardwareRepo.getLockInfo(rfid) {
@@ -521,14 +522,14 @@ object ModbusBusinessManager {
                             ?.map { it.keyNfc }?.toMutableList()
                             ?: mutableListOf())
                     ) {
-                        PopTip.tip(
+                        PopTip.build().tip(
                             CommonUtils.getStr(R.string.key_exception_tag)
                         )
                     } else if (slotsPage?.records?.filter {
                             it.slotType == slotTypeList.find { d -> d.dictLabel == "钥匙" }?.dictValue && it.status == slotStatusList.find { d -> d.dictLabel == "异常" }?.dictValue
                         }
                             ?.find { it.row?.toInt() == dockBean.row && it.col?.toInt() == (dockBean.col + (keyBean.idx) * 2 + 1) } != null) {
-                        PopTip.tip(
+                        PopTip.build().tip(
                             CommonUtils.getStr(R.string.slot_exception_tag)
                         )
                     } else {
@@ -550,7 +551,7 @@ object ModbusBusinessManager {
                                 } else {
                                     logger.error("Get key info fail : $rfid")
                                     if (ISCSConfig.isInit) {
-                                        PopTip.tip(R.string.get_key_info_fail)
+                                        PopTip.build().tip(R.string.get_key_info_fail)
                                     }
                                     ModBusController.controlKeyBuckle(
                                         true, keyBean.idx, dockBean.addr

+ 1 - 25
ui-base/src/main/java/com/grkj/ui_base/utils/ble/BleConnectionManager.kt

@@ -280,10 +280,6 @@ object BleConnectionManager {
         isNeedLoading: Boolean = false,
         prepareDoneCallBack: ((Boolean, BleBean?) -> Unit)?
     ) {
-        if (!checkProcess(mac, false)) {
-            logger.error("蓝牙连接-Prepare is canceled : $mac")
-            return
-        }
         ThreadUtils.runOnMain {
             doScanBle(mac, isNeedLoading, prepareDoneCallBack)
         }
@@ -295,10 +291,6 @@ object BleConnectionManager {
         prepareDoneCallBack: ((Boolean, BleBean?) -> Unit)?
     ) {
         logger.info("蓝牙连接-doScanBle:$mac")
-        if (!checkProcess(mac, false)) {
-            logger.error("蓝牙连接-Prepare is canceled : $mac")
-            return
-        }
         if (isNeedLoading) LoadingEvent.sendLoadingEvent("正在扫描设备...", true)
         BleUtil.Companion.instance?.scan(object : CustomBleScanCallback() {
             override fun onPrompt(promptStr: String?) {
@@ -356,10 +348,6 @@ object BleConnectionManager {
         prepareDoneCallBack: ((Boolean, BleBean?) -> Unit)?
     ) {
         logger.info("蓝牙连接-doConnect : ${bleDevice.mac}")
-        if (!checkProcess(bleDevice.mac, false)) {
-            logger.error("蓝牙连接-Prepare is canceled : ${bleDevice.mac}")
-            return
-        }
         if (isNeedLoading) LoadingEvent.sendLoadingEvent(
             CommonUtils.getStr(R.string.ble_connecting), true
         )
@@ -400,10 +388,6 @@ object BleConnectionManager {
                             removeExceptionKey(it.mac)
                             // 设置MTU
                             ThreadUtils.runOnMainDelayed(200) {
-                                if (!checkProcess(bleDevice.mac, false)) {
-                                    logger.error("Prepare is canceled : ${bleDevice.mac}")
-                                    return@runOnMainDelayed
-                                }
                                 BleUtil.Companion.instance?.setMtu(it)
                             }
                             // 监听
@@ -546,10 +530,6 @@ object BleConnectionManager {
         isNeedLoading: Boolean = false,
         prepareDoneCallBack: ((Boolean, BleBean?) -> Unit)?
     ) {
-        if (!checkProcess(bleBean?.bleDevice?.mac, false)) {
-            logger.error("蓝牙连接-Prepare is canceled : ${bleBean?.bleDevice?.mac}")
-            return
-        }
         if (isNeedLoading) LoadingEvent.sendLoadingEvent("开始监听......", true)
         bleBean?.let {
             var isIndicateSuccess = false
@@ -609,10 +589,6 @@ object BleConnectionManager {
         isNeedLoading: Boolean = false,
         prepareDoneCallBack: ((Boolean, BleBean?) -> Unit)?
     ) {
-        if (!checkProcess(bleBean?.bleDevice?.mac)) {
-            logger.error("Prepare is canceled : ${bleBean?.bleDevice?.mac}")
-            return
-        }
         if (isNeedLoading) LoadingEvent.sendLoadingEvent("开始获取token...", true)
         bleBean?.let {
             BleCmdManager.getToken(it.bleDevice.mac, object : CustomBleWriteCallback() {
@@ -722,7 +698,7 @@ object BleConnectionManager {
 //            override fun onPrompt(promptStr: String?) {
 //                // 蓝牙未启动重试
 //                logger.info("设备录入-参数:${promptStr}")
-//                PopTip.tip(R.string.please_reopen_ble)
+//                PopTip.build().tip(R.string.please_reopen_ble)
 //                BleManager.getInstance().enableBluetooth()
 //                ThreadUtils.runOnMainDelayed(5000) {
 //                    scanOnlineKeyLockMac(existsMac, callback)

+ 5 - 0
ui-base/src/main/java/com/grkj/ui_base/utils/event/UiEvent.kt

@@ -18,4 +18,9 @@ sealed class UiEvent {
      * 卡片检测
      */
     object CardCheck : UiEvent()
+
+    /**
+     * 提示
+     */
+    object Tip : UiEvent()
 }

+ 7 - 2
ui-base/src/main/java/com/grkj/ui_base/utils/extension/DialogXExtension.kt

@@ -5,8 +5,12 @@ import com.kongzue.dialogx.dialogs.PopTip
 /**
  * 使用dialog模式显示
  */
-fun PopTip.tipDialog(msg: String) {
+fun PopTip.tip(msg: String?) {
+    if (msg.isNullOrEmpty()){
+        return
+    }
     message = msg
+    bringToFront()
     showShort()
 }
 
@@ -14,7 +18,8 @@ fun PopTip.tipDialog(msg: String) {
 /**
  * 使用dialog模式显示
  */
-fun PopTip.tipDialog(msg: Int) {
+fun PopTip.tip(msg: Int) {
     setMessage(msg)
+    bringToFront()
     showShort()
 }

+ 2 - 1
ui-base/src/main/java/com/grkj/ui_base/utils/modbus/ModBusController.kt

@@ -12,6 +12,7 @@ import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.Executor
 import com.grkj.ui_base.utils.ble.BleConnectionManager
 import com.grkj.ui_base.utils.event.ModbusInitCompleteEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.thread.ThreadUtils
 import org.slf4j.Logger
@@ -262,7 +263,7 @@ object ModBusController {
                                     controlKeyBuckle(false, key.idx, dockBean.addr)
                                 } else {
                                     if (ISCSConfig.isInit) {
-                                        PopTip.tip(CommonUtils.getStr(R.string.get_key_info_fail))
+                                        PopTip.build().tip(CommonUtils.getStr(R.string.get_key_info_fail))
                                     }
                                     controlKeyBuckle(true, key.idx, dockBean.addr)
                                 }

+ 5 - 4
ui-base/src/main/java/com/grkj/ui_base/utils/modbus/PortManager.kt

@@ -10,6 +10,7 @@ import com.grkj.shared.utils.extension.toHexStrings
 import com.grkj.ui_base.R
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.event.RestartAppEvent
+import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.SIKCore
 import com.sik.sikcore.extension.getMMKVData
@@ -140,7 +141,7 @@ class PortManager private constructor(
             } catch (e: Exception) {
                 blocked = false
                 logger.error("异常 : ${e.message}")
-                PopTip.tip("串口[${port}, ${bps}]打开失败[${e.javaClass.simpleName}]${e.message}")
+                PopTip.build().tip("串口[${port}, ${bps}]打开失败[${e.javaClass.simpleName}]${e.message}")
                 return null
             }
         }
@@ -377,7 +378,7 @@ class PortManager private constructor(
                     // 打开失败,清掉旧配置,提示一下
                     logger.warn("缓存的串口 $savedPort 打开失败,准备重新扫描")
                     MMKVConstants.KEY_PORT_CONFIG.saveMMKVData("")
-                    PopTip.tip("主控板串口已变更,正在重新扫描…")
+                    PopTip.build().tip("主控板串口已变更,正在重新扫描…")
                 }
             }
 
@@ -387,12 +388,12 @@ class PortManager private constructor(
             if (newPort != null) {
                 // 3. 扫描到就保存,下次直接用
                 MMKVConstants.KEY_PORT_CONFIG.saveMMKVData(newPort)
-                PopTip.tip(CommonUtils.getStr(R.string.scan_complete_app_restarting))
+                PopTip.build().tip(CommonUtils.getStr(R.string.scan_complete_app_restarting))
                 RestartAppEvent.sendRestartAppEvent()
                 logger.info("扫描到新主控板串口: $newPort")
                 return null
             } else {
-                PopTip.tip("未找到从机,请检查硬件连接")
+                PopTip.build().tip("未找到从机,请检查硬件连接")
                 return null
             }
         }