Skip to content

Commit bfd000e

Browse files
committed
fix: Resource authorization selection directory checkbox Cancel optimization
1 parent 5308214 commit bfd000e

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

ui/src/components/app-table/index.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
<el-pagination
3737
v-model:current-page="paginationConfig.current_page"
3838
v-model:page-size="paginationConfig.page_size"
39-
:page-sizes="paginationConfig.page_sizes|| pageSizes"
39+
:page-sizes="paginationConfig.page_sizes || pageSizes"
4040
:total="paginationConfig.total"
4141
layout="total, prev, pager, next, sizes"
4242
@size-change="handleSizeChange"
@@ -138,8 +138,16 @@ function handleCurrentChange() {
138138
function clearSelection() {
139139
appTableRef.value?.clearSelection()
140140
}
141+
function toggleRowSelection(row: any, selected?: boolean, ignoreSelectable = true) {
142+
appTableRef.value?.toggleRowSelection(row, selected, ignoreSelectable)
143+
}
144+
function getSelectionRows() {
145+
return appTableRef.value?.getSelectionRows()
146+
}
141147
defineExpose({
142148
clearSelection,
149+
toggleRowSelection,
150+
getSelectionRows,
143151
})
144152
145153
onMounted(() => {

ui/src/views/system/resource-authorization/component/PermissionTable.vue

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
ref="multipleTableRef"
5656
class="mt-16"
5757
:data="filteredData"
58-
@selection-change="handleSelectionChange"
58+
@select="select"
5959
:maxTableHeight="260"
6060
:row-key="(row: any) => row.id"
6161
:expand-row-keys="defaultExpandKeys"
@@ -147,6 +147,7 @@ import { hasPermission } from '@/utils/permission/index'
147147
import { ComplexPermission } from '@/utils/permission/type'
148148
import { getPermissionOptions } from '@/views/system/resource-authorization/constant'
149149
import useStore from '@/stores'
150+
import { TreeToFlatten } from '@/utils/array'
150151
151152
const { model, user } = useStore()
152153
const route = useRoute()
@@ -310,11 +311,33 @@ const filteredData = computed(() => {
310311
})
311312
312313
const multipleSelection = ref<any[]>([])
314+
const selectObj: any = {}
315+
const select = (val: any[], active: any) => {
316+
if (active.resource_type === 'folder') {
317+
if (!val.some((item) => item.id == active.id)) {
318+
if (selectObj[active.id] === undefined) {
319+
selectObj[active.id] = 0
320+
}
321+
if (selectObj[active.id] % 2 == 0) {
322+
console.log(TreeToFlatten([active]))
323+
TreeToFlatten([active])
324+
.filter((item: any) => item.id != active.id)
325+
.forEach((item: any) => {
326+
multipleTableRef.value?.toggleRowSelection(item, true)
327+
})
313328
314-
const handleSelectionChange = (val: any[]) => {
315-
multipleSelection.value = val
329+
multipleSelection.value = multipleTableRef.value.getSelectionRows()
330+
} else {
331+
multipleSelection.value = val
332+
}
333+
selectObj[active.id] = selectObj[active.id] + 1
334+
} else {
335+
multipleSelection.value = val
336+
}
337+
} else {
338+
multipleSelection.value = val
339+
}
316340
}
317-
318341
const dialogVisible = ref(false)
319342
const radioPermission = ref('')
320343
function openMulConfigureDialog() {

0 commit comments

Comments
 (0)