commit
9c8e3404bb
@ -68,3 +68,11 @@ export const delMenu = (menuId: string | number) => {
|
|||||||
method: 'delete'
|
method: 'delete'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 级联删除菜单
|
||||||
|
export const cascadeDelMenu = (menuIds: Array<string | number>) => {
|
||||||
|
return request({
|
||||||
|
url: '/system/menu/cascade/' + menuIds,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="danger" plain icon="Delete" @click="handleCascadeDelete" :loading="deleteLoading">级联删除</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
|
<right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
@ -257,11 +260,31 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog v-model="deleteDialog.visible" :title="deleteDialog.title" destroy-on-close append-to-bod width="750px">
|
||||||
|
<el-tree
|
||||||
|
ref="menuTreeRef"
|
||||||
|
class="tree-border"
|
||||||
|
:data="menuOptions"
|
||||||
|
show-checkbox
|
||||||
|
node-key="menuId"
|
||||||
|
:check-strictly="false"
|
||||||
|
empty-text="加载中,请稍候"
|
||||||
|
:default-expanded-keys="[0]"
|
||||||
|
:props="{ value: 'menuId', label: 'menuName', children: 'children' } as any"
|
||||||
|
/>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitDeleteForm" :loading="deleteLoading">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Menu" lang="ts">
|
<script setup name="Menu" lang="ts">
|
||||||
import { addMenu, delMenu, getMenu, listMenu, updateMenu } from '@/api/system/menu';
|
import { addMenu, cascadeDelMenu, delMenu, getMenu, listMenu, updateMenu } from '@/api/system/menu';
|
||||||
import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types';
|
import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types';
|
||||||
import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
|
import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
|
||||||
|
|
||||||
@ -404,7 +427,44 @@ const handleDelete = async (row: MenuVO) => {
|
|||||||
proxy?.$modal.msgSuccess('删除成功');
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const deleteLoading = ref<boolean>(false);
|
||||||
|
const menuTreeRef = ref<ElTreeInstance>();
|
||||||
|
|
||||||
|
const deleteDialog = reactive<DialogOption>({
|
||||||
|
visible: false,
|
||||||
|
title: '级联删除菜单'
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 级联删除按钮操作 */
|
||||||
|
const handleCascadeDelete = () => {
|
||||||
|
menuTreeRef.value?.setCheckedKeys([]);
|
||||||
|
getTreeselect();
|
||||||
|
deleteDialog.visible = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 删除提交按钮 */
|
||||||
|
const submitDeleteForm = async () => {
|
||||||
|
const menuIds = menuTreeRef.value?.getCheckedKeys();
|
||||||
|
if (menuIds.length < 0) {
|
||||||
|
proxy?.$modal.msgWarning('请选择要删除的菜单');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteLoading.value = true;
|
||||||
|
await cascadeDelMenu(menuIds).finally(() => (deleteLoading.value = false));
|
||||||
|
await getList();
|
||||||
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
|
deleteDialog.visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.tree-border {
|
||||||
|
height: 300px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user