CreateDrawer.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <el-drawer v-model="isDrawer" :size="width" :title="title" @close="handleReset">
  3. <MenuForm ref="menuFormRef" :parent-menu-tree="parentMenuTree" @change="menuFormChange" isCreating />
  4. <template #footer>
  5. <el-space>
  6. <el-button type="primary" :loading="subLoading" @click="formSubmit">提交</el-button>
  7. <el-button @click="handleReset">重置</el-button>
  8. </el-space>
  9. </template>
  10. </el-drawer>
  11. </template>
  12. <script lang="ts" setup>
  13. import { ref } from 'vue';
  14. import MenuForm from './MenuForm.vue';
  15. import { MenuTree } from '@/types/menu/type';
  16. withDefaults(
  17. defineProps<{
  18. title?: string;
  19. width?: number;
  20. parentMenuTree: MenuTree;
  21. }>(),
  22. {
  23. title: '添加顶级菜单',
  24. width: 580,
  25. },
  26. );
  27. const emit = defineEmits(['change']);
  28. const isDrawer = ref(false);
  29. const subLoading = ref(false);
  30. const menuFormRef = ref();
  31. function openDrawer() {
  32. isDrawer.value = true;
  33. }
  34. function closeDrawer() {
  35. isDrawer.value = false;
  36. }
  37. function formSubmit() {
  38. menuFormRef.value?.formSubmit();
  39. }
  40. function handleReset() {
  41. menuFormRef.value?.handleReset();
  42. }
  43. function menuFormChange() {
  44. closeDrawer();
  45. emit('change');
  46. }
  47. defineExpose({
  48. openDrawer,
  49. closeDrawer,
  50. });
  51. </script>