Newer
Older
dxCard-admin / src / views / monitor / mynews / DynamicNotice.vue
YFJ on 23 Sep 931 bytes 项目推送
<template>
  <component :is="currentModal" :formData="formData" v-model:visible="modalVisible"></component>
</template>
<script setup lang="ts" name="dynamic-notice">
  import { ref, shallowRef, ComponentOptions, nextTick, defineAsyncComponent } from 'vue';
  const props = defineProps({
    path: { type: String, default: '' },
    formData: { type: Object, default: {} },
  });
  const modalVisible = ref<Boolean>(false);
  const currentModal = shallowRef<Nullable<ComponentOptions>>(null);
  const formData = ref<any>(props.formData);

  const componentType = {
  };

  /**
   * 跟换组件和传值事件
   */
  function detail() {
    setTimeout(() => {
      if (props.path) {
        nextTick(() => {
          currentModal.value = componentType[props.path];
          formData.value = props.formData;
          modalVisible.value = true;
        });
      }
    }, 200);
  }

  defineExpose({
    detail,
  });
</script>