效果
封装后的组件
<template><el-dialog v-model="dialogVisible" :show-close="false" :fullscreen="fullscreen" draggable overflow><template #header="{ close }"><div><span style="font-weight: bolder">{{ title0 }}</span><el-icon style="cursor: pointer; float: right" @click="close"><Close /></el-icon><el-icon style="cursor: pointer; float: right; margin-right: 8px" @click="fullScreenFun"><FullScreen /></el-icon><el-icon style="cursor: pointer; float: right; margin-right: 8px" @click="close"><Minus /></el-icon></div></template><slot>默认内容</slot><template #footer><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="submit"> 确定 </el-button></template></el-dialog>
</template><script setup lang="tsx" name="assignRoleDialog">
import { ref } from "vue";
const title0 = ref("默认标题");
const dialogVisible = ref(false);
const fullscreen = ref(false);
const openDialog = (title: string) => {title0.value = title;dialogVisible.value = true;
};
const closeDilog = () => {dialogVisible.value = false;
};const fullScreenFun = () => {fullscreen.value = !fullscreen.value;
};const emits = defineEmits(["fun"]);
const submit = () => {emits("fun");
};defineExpose({openDialog,closeDilog
});
</script>
页面中使用
<template><el-button @click="openDialogFun">haaha</el-button><FullScreenDialog ref="hdialog" @fun="dfun"><el-scrollbar max-height="800px"><h2>111111</h2><h2>111111</h2><!-- <h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2><h2>111111</h2> --></el-scrollbar></FullScreenDialog>
</template>
<script lant=ts>
import FullScreenDialog from "@/components/FullScreenDialog/index.vue";
const hdialog = ref();const openDialogFun = () => {hdialog.value!.openDialog("修改用户");
};
const dfun = () => {alert("执行业务代码……");hdialog.value.closeDilog();
};
</script>