|
@@ -32,8 +32,9 @@
|
|
|
<script setup lang="ts">
|
|
|
import { Close } from "@element-plus/icons-vue"
|
|
|
import { addClass, removeClass } from "@/libs/tools"
|
|
|
-import { ref, computed, onMounted, DefineComponent, ComponentPublicInstance, App } from "vue"
|
|
|
+import { ref, shallowRef, computed, onMounted, DefineComponent, ComponentPublicInstance, App } from "vue"
|
|
|
import { baseSize, baseWidth, size } from "@/libs/rem"
|
|
|
+import { modalFrameSet } from "./index"
|
|
|
|
|
|
interface modalFrameDataType {
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
@@ -68,8 +69,8 @@ const props = withDefaults(defineProps<modalFrameDataType>(), {
|
|
|
const bodyDom = document.querySelector("body"),
|
|
|
name = "h-modalFrameBody"
|
|
|
const show = ref(false) //控制动画显示隐藏
|
|
|
-const vm = ref<ComponentPublicInstance>()
|
|
|
-const vmApp = ref<App<Element>>()
|
|
|
+const vm = shallowRef<ComponentPublicInstance>()
|
|
|
+const vmApp = shallowRef<App<Element>>()
|
|
|
const modalFrameTitleDom = ref<HTMLDivElement>()
|
|
|
const modalFrameBoxDom = ref<HTMLDivElement>()
|
|
|
const templateModal = ref<ComponentPublicInstance>()
|
|
@@ -194,6 +195,7 @@ function remove() {
|
|
|
function unmount() {
|
|
|
window.removeEventListener("resize", refreshPos)
|
|
|
vm.value && bodyDom!.removeChild(vm.value.$el)
|
|
|
+ vmApp.value && modalFrameSet.delete(vmApp.value)
|
|
|
vmApp.value?.unmount()
|
|
|
removeClass(bodyDom, name)
|
|
|
}
|