|
|
@@ -15,6 +15,8 @@ import com.kongzue.dialogx.dialogs.CustomDialog
|
|
|
import com.kongzue.dialogx.dialogs.PopTip
|
|
|
import com.kongzue.dialogx.interfaces.OnBindView
|
|
|
import me.jessyan.autosize.utils.AutoSizeUtils
|
|
|
+import org.slf4j.Logger
|
|
|
+import org.slf4j.LoggerFactory
|
|
|
|
|
|
/**
|
|
|
* 修改角色对话框,基于 DialogX
|
|
|
@@ -25,7 +27,7 @@ class UpdateRoleDialog(
|
|
|
private val updateEntity: UpdateRoleDataEntity,
|
|
|
private val onConfirm: (UpdateRoleDataEntity, CustomDialog) -> Unit
|
|
|
) : OnBindView<CustomDialog>(R.layout.dialog_update_role) {
|
|
|
-
|
|
|
+ private val logger: Logger = LoggerFactory.getLogger(UpdateRoleDialog::class.java)
|
|
|
private lateinit var binding: DialogUpdateRoleBinding
|
|
|
private val indentPx: Int by lazy { AutoSizeUtils.dp2px(binding.root.context, 20f) }
|
|
|
private var selectedList = mutableListOf<String>()
|
|
|
@@ -45,7 +47,8 @@ class UpdateRoleDialog(
|
|
|
binding.statusRg.clearCheck()
|
|
|
updateEntity.status?.let { binding.activateRb.isChecked = it }
|
|
|
selectedList.clear()
|
|
|
- selectedList.addAll(updateEntity.functionalPermissions.map { it.functionalPermission })
|
|
|
+ selectedList.addAll(updateEntity.functionalPermissions.flatMap { it.getFunctionalPermissionWithChildren() })
|
|
|
+ logger.info("selectedList: $selectedList")
|
|
|
markSelected(treeData)
|
|
|
binding.roleListRv.linear().setup {
|
|
|
addType<RoleManageFunctionalPermissionsEntity>(R.layout.item_role)
|
|
|
@@ -58,7 +61,6 @@ class UpdateRoleDialog(
|
|
|
itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
|
|
|
itemBinding.rootLayout.setOnClickListener {
|
|
|
if (item.itemExpand) collapse() else expand()
|
|
|
- item.itemExpand = !item.itemExpand
|
|
|
itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
|
|
|
}
|
|
|
// 选中
|
|
|
@@ -104,14 +106,22 @@ class UpdateRoleDialog(
|
|
|
updateEntity.status = binding.activateRb.isChecked
|
|
|
// 收集权限
|
|
|
updateEntity.functionalPermissions = collectSelected(treeData)
|
|
|
- onConfirm(updateEntity,dialog)
|
|
|
+ onConfirm(updateEntity, dialog)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun markSelected(data: List<RoleManageFunctionalPermissionsEntity>) {
|
|
|
- data.forEach {
|
|
|
- it.isSelected = selectedList.contains(it.functionalPermission)
|
|
|
- markSelected(it.children)
|
|
|
+ private fun markSelected(list: List<RoleManageFunctionalPermissionsEntity>) {
|
|
|
+ list.forEach { item ->
|
|
|
+ // step1: 根据传入的 functionalPermissions 标记自己
|
|
|
+ item.isSelected = selectedList.contains(item.functionalPermission)
|
|
|
+ // step2: 先递归标记孩子
|
|
|
+ if (item.children.isNotEmpty()) {
|
|
|
+ markSelected(item.children)
|
|
|
+ // step3: 如果所有孩子都被选了,那自己也打勾
|
|
|
+ if (item.children.all { it.isSelected }) {
|
|
|
+ item.isSelected = true
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|