drawer.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <template>
  2. <BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="500px" @ok="handleSubmit"> </BasicDrawer>
  3. </template>
  4. <script lang="ts">
  5. import { defineComponent, ref, computed, unref } from 'vue';
  6. import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
  7. export default defineComponent({
  8. name: 'tableDrawer',
  9. components: { BasicDrawer },
  10. emits: ['success', 'register'],
  11. setup(_, { emit }) {
  12. const isUpdate = ref(true);
  13. const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
  14. setDrawerProps({ confirmLoading: false });
  15. isUpdate.value = !!data?.isUpdate;
  16. });
  17. const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色'));
  18. async function handleSubmit() {
  19. try {
  20. setDrawerProps({ confirmLoading: true });
  21. closeDrawer();
  22. emit('success');
  23. } finally {
  24. setDrawerProps({ confirmLoading: false });
  25. }
  26. }
  27. return {
  28. registerDrawer,
  29. getTitle,
  30. handleSubmit,
  31. };
  32. },
  33. });
  34. </script>