index.vue 1.21 KB
<script lang="ts" setup>
  import { Spin, Empty } from 'ant-design-vue';
  import { DataActionModeEnum } from '/@/enums/toolEnum';
  import { BasicModal } from '/@/components/Modal';
  import { useAwaitPopupWindowBindData } from '../../../hook/useAwaitPopupWindowBindData';
  import { ElementsTypeEnum } from '../../../enum';

  defineProps<{
    getContainer: () => any;
  }>();

  const {
    visible,
    nodeData,
    spinning,
    shadowComponent,
    getComponentKey,
    createComponentEl,
    open,
    handleSubmit,
    handleCancel,
    handleOnMounted,
  } = useAwaitPopupWindowBindData({ type: ElementsTypeEnum.EDGE, mode: DataActionModeEnum.CREATE });

  defineExpose({ open });
</script>

<template>
  <BasicModal
    v-model:visible="visible"
    title="添加链接"
    :get-container="getContainer"
    @ok="handleSubmit"
    @cancel="handleCancel"
  >
    <Spin :spinning="spinning">
      <component
        :is="shadowComponent"
        v-if="shadowComponent"
        ref="createComponentEl"
        :config="nodeData"
        :key="getComponentKey"
        @vue:mounted="handleOnMounted"
      />
      <Empty v-if="!shadowComponent" description="未找到链接组件" />
    </Spin>
  </BasicModal>
</template>