吉安感知网项目-前端
shuishen
2026-02-03 7472d1804d94d976ac5901f5d7d947187af4bda9
feat:部门新增或者删除页面列表刷新
2 files modified
60 ■■■■■ changed files
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue 2 ●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/index.vue 58 ●●●●● patch | view | raw | blame | history
applications/drone-command/src/views/permissionManage/permissionDept/FormDiaLog.vue
@@ -258,7 +258,7 @@
        })
        ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功')
        visible.value = false
        emit('success')
        emit('success', { parentId: formData.value.parentId || null, mode: dialogMode.value, isAddChild: isAddChild.value })
    } finally {
        submitting.value = false
    }
applications/drone-command/src/views/permissionManage/permissionDept/index.vue
@@ -87,7 +87,7 @@
            </div>
        </div>
        <FormDiaLog ref="dialogRef" @success="getList" v-model="visible" v-if="visible" />
        <FormDiaLog ref="dialogRef" @success="handleFormSuccess" v-model="visible" v-if="visible" />
        <ShareDiaLog ref="shareDialogRef" @success="getList" v-model="shareVisible" v-if="shareVisible" />
    </basic-container>
</template>
@@ -123,6 +123,8 @@
const list = ref([])
const total = ref(0)
const selectedIds = ref([])
const selectedRows = ref([])
const lastActionParentRow = ref(null)
const queryParamsRef = ref(null)
const dialogRef = ref(null)
const shareDialogRef = ref(null)
@@ -133,6 +135,7 @@
})
const deptTree = ref([])
const route = useRoute()
const treeResolveMap = new Map()
provide('dictObj', dictObj)
provide('deptTree', deptTree)
@@ -167,6 +170,7 @@
}
function handleAddChild(row) {
    lastActionParentRow.value = row
    visible.value = true
    nextTick(() => {
        dialogRef.value?.open({ mode: 'add', parent: row })
@@ -203,6 +207,7 @@
        cancelButtonClass: 'command-message-box-cancel',
    })
    const ids = row ? row.id : selectedIds.value.join(',')
    const rows = row ? [row] : selectedRows.value
    await remove(ids)
    saveOperationLog({
        requestUri: route.path,
@@ -211,11 +216,18 @@
    })
    ElMessage.success('删除成功')
    selectedIds.value = []
    getList()
    selectedRows.value = []
    const parentIds = Array.from(new Set(rows.map(item => item.parentId).filter(Boolean)))
    const hasRoot = rows.some(item => !item.parentId)
    if (hasRoot) {
        getList()
    }
    parentIds.forEach(parentId => refreshChildNodes(parentId))
}
function handleSelectionChange(rows) {
    selectedIds.value = rows.map(item => item.id)
    selectedRows.value = rows
}
function getDictList() {
@@ -236,11 +248,49 @@
}
function loadChildren(row, treeNode, resolve) {
    treeResolveMap.set(row.id, { resolve, row })
    getChildLazyTree({ parentId: row.id })
        .then(res => {
            resolve(res?.data?.data ?? [])
            const children = res?.data?.data ?? []
            row.hasChildren = children.length > 0
            resolve(children)
        })
        .catch(() => resolve([]))
        .catch(() => {
            row.hasChildren = false
            resolve([])
        })
}
function refreshChildNodes(parentId) {
    const cache = treeResolveMap.get(parentId)
    if (!cache?.resolve) return
    getChildLazyTree({ parentId })
        .then(res => {
            const children = res?.data?.data ?? []
            if (cache.row) {
                cache.row.hasChildren = children.length > 0
            }
            cache.resolve(children)
        })
        .catch(() => {
            if (cache.row) {
                cache.row.hasChildren = false
            }
            cache.resolve([])
        })
}
function handleFormSuccess(payload = {}) {
    if (payload?.parentId) {
        refreshChildNodes(payload.parentId)
        if (payload.isAddChild && lastActionParentRow.value?.id === payload.parentId) {
            lastActionParentRow.value.hasChildren = true
        }
        lastActionParentRow.value = null
        return
    }
    lastActionParentRow.value = null
    getList()
}
onMounted(() => {