diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 49e76b05..b2c93bbe 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -84,9 +84,8 @@ - + @@ -148,7 +147,6 @@ const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const loading = ref(true) // 列表的加载中 -const menuStatusUpdating = ref({}) // 列表的加载中 const list = ref([]) // 列表的数据 const queryParams = reactive({ name: undefined, @@ -220,11 +218,19 @@ const handleDelete = async (id: number) => { } catch {} } -const onMenuStatusChanged = async (menu: MenuVO, val: number) => { +/** 开启/关闭菜单的状态 */ +const menuStatusUpdating = ref({}) // 菜单状态更新中的 menu 映射。key:菜单编号,value:是否更新中 +const handleStatusChanged = async (menu: MenuVO, val: number) => { + // 1. 标记 menu.id 更新中 menuStatusUpdating.value[menu.id] = true - menu.status = val - await MenuApi.updateMenu(menu) - menuStatusUpdating.value[menu.id] = false + try { + // 2. 发起更新状态 + menu.status = val + await MenuApi.updateMenu(menu) + } finally { + // 3. 标记 menu.id 更新完成 + menuStatusUpdating.value[menu.id] = false + } } /** 初始化 **/