Browse Source

fix: menu tree check

main
xingyu 2 years ago
parent
commit
9b2fe7f3ac
  1. 7
      src/views/system/role/RoleMenuModal.vue
  2. 11
      src/views/system/tenantPackage/TenantPackageModal.vue

7
src/views/system/role/RoleMenuModal.vue

@ -6,6 +6,7 @@
v-model:value="model[field]" v-model:value="model[field]"
:treeData="treeData" :treeData="treeData"
:fieldNames="{ title: 'name', key: 'id' }" :fieldNames="{ title: 'name', key: 'id' }"
:checkStrictly="true"
checkable checkable
toolbar toolbar
@check="menuCheck" @check="menuCheck"
@ -65,7 +66,7 @@ async function handleSubmit() {
setModalProps({ confirmLoading: true }) setModalProps({ confirmLoading: true })
await assignRoleMenu({ await assignRoleMenu({
roleId: values.id, roleId: values.id,
menuIds: menuKeys.value.concat(menuHalfKeys.value) menuIds: [...menuKeys.value, ...menuHalfKeys.value]
}) })
closeModal() closeModal()
emit('success') emit('success')
@ -81,7 +82,7 @@ function menuReset() {
} }
function menuCheck(checkedKeys, e) { function menuCheck(checkedKeys, e) {
menuKeys.value = checkedKeys.checked as number[] menuKeys.value = (checkedKeys.checked || []) as number[]
menuHalfKeys.value = e.halfCheckedKeys as number[] menuHalfKeys.value = (e.halfCheckedKeys || []) as number[]
} }
</script> </script>

11
src/views/system/tenantPackage/TenantPackageModal.vue

@ -6,6 +6,7 @@
v-model:value="model[field]" v-model:value="model[field]"
:treeData="treeData" :treeData="treeData"
:fieldNames="{ title: 'name', key: 'id' }" :fieldNames="{ title: 'name', key: 'id' }"
:checkStrictly="true"
checkable checkable
toolbar toolbar
@check="menuCheck" @check="menuCheck"
@ -32,8 +33,8 @@ const { createMessage } = useMessage()
const emit = defineEmits(['success', 'register']) const emit = defineEmits(['success', 'register'])
const isUpdate = ref(true) const isUpdate = ref(true)
const treeData = ref<TreeItem[]>([]) const treeData = ref<TreeItem[]>([])
const menuKeys = ref<(string | number)[]>([]) const menuKeys = ref<number[]>([])
const menuHalfKeys = ref<(string | number)[]>([]) const menuHalfKeys = ref<number[]>([])
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
labelWidth: 120, labelWidth: 120,
@ -63,7 +64,7 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data
async function handleSubmit() { async function handleSubmit() {
try { try {
const values = await validate() const values = await validate()
values.menuIds = menuKeys.value.concat(menuHalfKeys.value) values.menuIds = [...menuKeys.value, ...menuHalfKeys.value]
setModalProps({ confirmLoading: true }) setModalProps({ confirmLoading: true })
if (unref(isUpdate)) { if (unref(isUpdate)) {
await updateTenantPackage(values) await updateTenantPackage(values)
@ -84,7 +85,7 @@ function menuReset() {
} }
function menuCheck(checkedKeys, e) { function menuCheck(checkedKeys, e) {
menuKeys.value = checkedKeys as (string | number)[] menuKeys.value = (checkedKeys.checked || []) as number[]
menuHalfKeys.value = e.halfCheckedKeys as (string | number)[] menuHalfKeys.value = (e.halfCheckedKeys || []) as number[]
} }
</script> </script>