|
|
@@ -10,6 +10,7 @@ import com.drake.brv.utils.divider
|
|
|
import com.drake.brv.utils.linear
|
|
|
import com.drake.brv.utils.models
|
|
|
import com.drake.brv.utils.setup
|
|
|
+import com.google.gson.annotations.Until
|
|
|
import com.grkj.data.data.CommonConstants
|
|
|
import com.grkj.data.data.EventConstants
|
|
|
import com.grkj.data.data.MMKVConstants
|
|
|
@@ -21,6 +22,7 @@ import com.grkj.iscs.features.main.dialog.SwipCardOperationTipDialog
|
|
|
import com.grkj.iscs.features.main.dialog.TextDropDownDialog
|
|
|
import com.grkj.iscs.features.main.dialog.data_manage.AddUserDialog
|
|
|
import com.grkj.iscs.features.main.dialog.data_manage.FilterUserDialog
|
|
|
+import com.grkj.iscs.features.main.dialog.data_manage.RegisterFaceDialog
|
|
|
import com.grkj.iscs.features.main.dialog.data_manage.UpdateUserDialog
|
|
|
import com.grkj.iscs.features.main.dialog.user_info.AddFingerprintDialog
|
|
|
import com.grkj.iscs.features.main.viewmodel.data_manage.UserManageViewModel
|
|
|
@@ -113,7 +115,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
|
|
|
}
|
|
|
}, {
|
|
|
addUserDialog = this
|
|
|
- }) { data, dialog ->
|
|
|
+ }, { data, dialog ->
|
|
|
viewModel.validateUserData(data.username).observe(this) {
|
|
|
viewModel.addUser(data).observe(this) {
|
|
|
dialog.dismiss()
|
|
|
@@ -130,7 +132,14 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }.setDialogLifecycleCallback(object : DialogLifecycleCallback<CustomDialog>() {
|
|
|
+ }, { registerFingerprintResult ->
|
|
|
+ startRegisterTempFingerprint {
|
|
|
+ registerFingerprintResult(it)
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ viewModel.clearNoUserFingerprint().observe(this@UserManageFragment) {}
|
|
|
+ viewModel.clearNoUserFace().observe(this@UserManageFragment) {}
|
|
|
+ }).setDialogLifecycleCallback(object : DialogLifecycleCallback<CustomDialog>() {
|
|
|
override fun onDismiss(dialog: CustomDialog?) {
|
|
|
viewModel.startReadCard = false
|
|
|
viewModel.isDialogRead = false
|
|
|
@@ -201,99 +210,152 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
|
|
|
})
|
|
|
}
|
|
|
itemBinding.registerFingerprint.setDebouncedClickListener {
|
|
|
- if (item.fingerprintSize >= maxFingerprintInsertSize) {
|
|
|
- showToast(CommonUtils.getStr("fingerprint_limit_tip"))
|
|
|
- return@setDebouncedClickListener
|
|
|
- }
|
|
|
+ startRegisterFingerprint(item)
|
|
|
+ }
|
|
|
+ itemBinding.registerFace.setDebouncedClickListener {
|
|
|
viewModel.currentHandleUser = item
|
|
|
- mFingerprintPressTimes = 0
|
|
|
- mFingerprintInputErrorTimes = 0
|
|
|
- fingerprintTempData.clear()
|
|
|
- AddFingerprintDialog.show({
|
|
|
- FingerprintUtil.stop()
|
|
|
- it.dismiss()
|
|
|
- }) {
|
|
|
- pressTip = it
|
|
|
- it.text = CommonUtils.getStr(
|
|
|
- "fingerprint_scan_tip",
|
|
|
- maxPressTimes - mFingerprintPressTimes
|
|
|
- )
|
|
|
- }.apply {
|
|
|
- startCaptureFingerprint(this)
|
|
|
+ RegisterFaceDialog.show { imageData, savePath ->
|
|
|
+ viewModel.saveUserFace(savePath).observe(this@UserManageFragment) {
|
|
|
+ TipDialog.showSuccess(
|
|
|
+ CommonUtils.getStr(com.grkj.ui_base.R.string.user_face_register_success),
|
|
|
+ onConfirmClick = {
|
|
|
+ getUserData(nextPage = false)
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
itemBinding.root.setDebouncedClickListener {
|
|
|
viewModel.startReadCard = true
|
|
|
viewModel.isDialogRead = true
|
|
|
viewModel.getRoleAndWorkStationData().observe(this@UserManageFragment) {
|
|
|
- UpdateUserDialog.show(item, viewModel.roleData.map {
|
|
|
- val i18NRoleName = I18nManager.t(it.roleKey ?: "")
|
|
|
- val roleName = if (i18NRoleName == it.roleKey || i18NRoleName.isEmpty()) {
|
|
|
- it.roleName
|
|
|
- } else {
|
|
|
- i18NRoleName
|
|
|
- }
|
|
|
- TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = it.roleId,
|
|
|
- dataText = roleName
|
|
|
- )
|
|
|
- }, viewModel.workstationData.map {
|
|
|
- TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = it.workstationId,
|
|
|
- dataText = it.workstationName,
|
|
|
- )
|
|
|
- .apply {
|
|
|
- setChildren(it.children.map {
|
|
|
- TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = it.workstationId,
|
|
|
- dataText = it.workstationName,
|
|
|
- dataObject = it,
|
|
|
- dataLevel = 1
|
|
|
- ).apply {
|
|
|
- setSelected(viewModel.workstationData.map { it.workstationName }
|
|
|
- .contains(getShowText()))
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }, {
|
|
|
- updateUserDialog = this
|
|
|
- }) { data, dialog ->
|
|
|
- viewModel.updateUser(data).observe(this@UserManageFragment) {
|
|
|
- dialog.dismiss()
|
|
|
- if (it) {
|
|
|
- TipDialog.show(
|
|
|
- title = CommonUtils.getStr("action_succeed"),
|
|
|
- dialogType = TipDialog.DialogType.SUCCESS,
|
|
|
- msg = CommonUtils.getStr("update_user_succeed"),
|
|
|
- showCancel = false,
|
|
|
- onConfirmClick = {
|
|
|
- getUserData(false)
|
|
|
- }
|
|
|
- )
|
|
|
+ viewModel.getUserFingerprintAndFaceData(item).observe(this@UserManageFragment) {
|
|
|
+ UpdateUserDialog.show(item, viewModel.roleData.map {
|
|
|
+ val i18NRoleName = I18nManager.t(it.roleKey ?: "")
|
|
|
+ val roleName = if (i18NRoleName == it.roleKey || i18NRoleName.isEmpty()) {
|
|
|
+ it.roleName
|
|
|
} else {
|
|
|
- TipDialog.show(
|
|
|
- title = CommonUtils.getStr("action_failed"),
|
|
|
- dialogType = TipDialog.DialogType.ERROR,
|
|
|
- msg = CommonUtils.getStr("update_user_failed"),
|
|
|
- showCancel = false,
|
|
|
- onConfirmClick = {
|
|
|
- getUserData(false)
|
|
|
- }
|
|
|
- )
|
|
|
+ i18NRoleName
|
|
|
}
|
|
|
- }
|
|
|
- }.setDialogLifecycleCallback(object : DialogLifecycleCallback<CustomDialog>() {
|
|
|
- override fun onDismiss(dialog: CustomDialog?) {
|
|
|
- viewModel.startReadCard = false
|
|
|
- viewModel.isDialogRead = false
|
|
|
- super.onDismiss(dialog)
|
|
|
- }
|
|
|
- })
|
|
|
+ TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
+ dataId = it.roleId,
|
|
|
+ dataText = roleName
|
|
|
+ )
|
|
|
+ }, viewModel.workstationData.map {
|
|
|
+ TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
+ dataId = it.workstationId,
|
|
|
+ dataText = it.workstationName,
|
|
|
+ )
|
|
|
+ .apply {
|
|
|
+ setChildren(it.children.map {
|
|
|
+ TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
+ dataId = it.workstationId,
|
|
|
+ dataText = it.workstationName,
|
|
|
+ dataObject = it,
|
|
|
+ dataLevel = 1
|
|
|
+ ).apply {
|
|
|
+ setSelected(viewModel.workstationData.map { it.workstationName }
|
|
|
+ .contains(getShowText()))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ updateUserDialog = this
|
|
|
+ }, { data, dialog ->
|
|
|
+ viewModel.updateUser(data).observe(this@UserManageFragment) {
|
|
|
+ dialog.dismiss()
|
|
|
+ if (it) {
|
|
|
+ TipDialog.show(
|
|
|
+ title = CommonUtils.getStr("action_succeed"),
|
|
|
+ dialogType = TipDialog.DialogType.SUCCESS,
|
|
|
+ msg = CommonUtils.getStr("update_user_succeed"),
|
|
|
+ showCancel = false,
|
|
|
+ onConfirmClick = {
|
|
|
+ getUserData(false)
|
|
|
+ }
|
|
|
+ )
|
|
|
+ } else {
|
|
|
+ TipDialog.show(
|
|
|
+ title = CommonUtils.getStr("action_failed"),
|
|
|
+ dialogType = TipDialog.DialogType.ERROR,
|
|
|
+ msg = CommonUtils.getStr("update_user_failed"),
|
|
|
+ showCancel = false,
|
|
|
+ onConfirmClick = {
|
|
|
+ getUserData(false)
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, { registerFingerprintResult ->
|
|
|
+ startRegisterTempFingerprint {
|
|
|
+ registerFingerprintResult(it)
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ viewModel.clearNoUserFingerprint().observe(this@UserManageFragment) {}
|
|
|
+ viewModel.clearNoUserFace().observe(this@UserManageFragment) {}
|
|
|
+ }).setDialogLifecycleCallback(object : DialogLifecycleCallback<CustomDialog>() {
|
|
|
+ override fun onDismiss(dialog: CustomDialog?) {
|
|
|
+ viewModel.startReadCard = false
|
|
|
+ viewModel.isDialogRead = false
|
|
|
+ super.onDismiss(dialog)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun startCaptureFingerprint(dialog: CustomDialog) {
|
|
|
+ /**
|
|
|
+ * 录入指纹
|
|
|
+ */
|
|
|
+ private fun startRegisterFingerprint(item: UserManageVo) {
|
|
|
+ if (item.fingerprintSize >= maxFingerprintInsertSize) {
|
|
|
+ showToast(CommonUtils.getStr("fingerprint_limit_tip"))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ viewModel.currentHandleUser = item
|
|
|
+ mFingerprintPressTimes = 0
|
|
|
+ mFingerprintInputErrorTimes = 0
|
|
|
+ fingerprintTempData.clear()
|
|
|
+ AddFingerprintDialog.show({
|
|
|
+ FingerprintUtil.stop()
|
|
|
+ it.dismiss()
|
|
|
+ }) {
|
|
|
+ pressTip = it
|
|
|
+ it.text = CommonUtils.getStr(
|
|
|
+ "fingerprint_scan_tip",
|
|
|
+ maxPressTimes - mFingerprintPressTimes
|
|
|
+ )
|
|
|
+ }.apply {
|
|
|
+ startCaptureFingerprint(this)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 临时录入指纹
|
|
|
+ */
|
|
|
+ private fun startRegisterTempFingerprint(registerResult: (String) -> Unit = {}) {
|
|
|
+ mFingerprintPressTimes = 0
|
|
|
+ mFingerprintInputErrorTimes = 0
|
|
|
+ fingerprintTempData.clear()
|
|
|
+ AddFingerprintDialog.show({
|
|
|
+ FingerprintUtil.stop()
|
|
|
+ it.dismiss()
|
|
|
+ }) {
|
|
|
+ pressTip = it
|
|
|
+ it.text = CommonUtils.getStr(
|
|
|
+ "fingerprint_scan_tip",
|
|
|
+ maxPressTimes - mFingerprintPressTimes
|
|
|
+ )
|
|
|
+ }.apply {
|
|
|
+ startCaptureFingerprint(this, true, registerResult)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun startCaptureFingerprint(
|
|
|
+ dialog: CustomDialog,
|
|
|
+ isTemp: Boolean = false,
|
|
|
+ registerResult: (String) -> Unit = {}
|
|
|
+ ) {
|
|
|
FingerprintUtil.init(requireContext())
|
|
|
FingerprintUtil.start()
|
|
|
mFingerprintGroupName = UUID.randomUUID().toString()
|
|
|
@@ -301,16 +363,17 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
|
|
|
override fun onScan(bitmap: Bitmap) {
|
|
|
viewModel.saveUserFingerprint(
|
|
|
ImageConvertUtils.bitmapToBase64(bitmap) ?: "",
|
|
|
- mFingerprintGroupName
|
|
|
+ mFingerprintGroupName,
|
|
|
+ isTemp
|
|
|
).observe(this@UserManageFragment) {
|
|
|
if (it != null) {
|
|
|
logger.info("添加指纹:${it}")
|
|
|
inputFingerprintIds.add(it)
|
|
|
mFingerprintPressTimes++
|
|
|
if (mFingerprintPressTimes == maxPressTimes) {
|
|
|
- dialog?.dismiss()
|
|
|
+ dialog.dismiss()
|
|
|
showToast(CommonUtils.getStr("fingerprint_add_success_tip"))
|
|
|
- getUserData(false)
|
|
|
+ registerResult(mFingerprintGroupName)
|
|
|
} else if (mFingerprintInputErrorTimes == inputFingerprintErrorTimes) {
|
|
|
mFingerprintGroupName = UUID.randomUUID().toString()
|
|
|
mFingerprintPressTimes = 0
|