当前位置: 首页 > news >正文

Modal.method() 不显示头部的问题

ant-design中的Modal组件有两种用法:
第一种是用标签:<a-modal></a-modal>
第二种是用Api:Modal.info、Modal.warning、Modal.confirm......
一开始项目中这两种用法是混用的,后面UI改造,需要统一样式,步骤如下:

1、封装全局弹窗组件 src/components/ConfirmModal/index.vue

<template><a-modalv-model:visible="visible":title="props.title"centeredwidth="400px":footer="null":keyboard="false":maskClosable="false"destroyOnClose@cancel="cancel"><div v-if="vNode" ref="contentRef" class="text-align-c mt-16"></div><div v-else class="text-align-c mt-16">{{ description }}</div><footer class="text-align-c mb-24 mt-40"><template v-if="(callType === 'method' && footerCancelOption) || callType === 'component'"><a-button v-bind="footerCancelOption?.props" class="cancel-btn long-btn" @click="cancel">{{ footerCancelOption?.text || '取消' }}</a-button></template><template v-if="(callType === 'method' && footerConfirmOption) || callType === 'component'"><a-button v-bind="footerConfirmOption?.props" class="confirm-btn long-btn" type="primary" :loading="btnLoading" @click="confirm">{{ footerConfirmOption?.text || '确认' }}</a-button></template></footer></a-modal>
</template>
<script setup>
import { ref, render, nextTick } from 'vue'
import { Button, Modal } from 'ant-design-vue'const AButton = Button
const AModal = Modalconst emits = defineEmits(['confirm', 'cancel'])
const props = defineProps({title: {type: String,default: '提示'},callType: {type: String,default: 'component'},vNode: {type: Object,default: null},footerCancelOption: {type: Object,default: null},footerConfirmOption: {type: Object,default: null}
})const contentRef = ref()
const visible = ref(false)
const description = ref('')
const btnLoading = ref(false)const openModel = value => {description.value = valuevisible.value = truenextTick(() => {if (props.vNode) {render(props.vNode, contentRef.value)}})
}const closeModel = () => {btnLoading.value = falsevisible.value = false
}const cancel = () => {closeModel()emits('cancel')
}const confirm = () => {emits('confirm')
}defineExpose({openModel,closeModel,cancel,btnLoading
})
</script>
<style lang="less" scoped>
.confirm-btn {margin-left: 0;
}
.cancel-btn + .confirm-btn {margin-left: 40px;
}
</style>

2、同级目录下新建js文件,调用弹窗组件 src/components/ConfirmModal/index.js

import { createApp } from 'vue'
import ConfirmModal from './index.vue'export const showConfirmModal = option => {const div = document.createElement('div')document.body.appendChild(div)const app = createApp(ConfirmModal, {callType: 'method',vNode: option.vNode,footerCancelOption: option.footerCancelOption,footerConfirmOption: option.footerConfirmOption,onCancel: () => {option?.footerCancelOption?.onCancel && option?.footerCancelOption?.onCancel()},onConfirm: () => {option?.footerConfirmOption?.onConfirm && option?.footerConfirmOption?.onConfirm()}})const vm = app.mount(div)vm.openModel()return { app, vm }
}

3、在需要调用弹窗组件的js文件中引用 xxx.js

import { ref, h } from 'vue'
import { showConfirmModal } from '@/components/ConfirmModal/index.js'// 强制登录提示
const { vm } = showConfirmModal({vNode: h('div', { style: { color: '#333' } }, '你的账号在另一台设备登录,你将被迫下线,请确认密码是否泄露!'),footerConfirmOption: {onConfirm: () => {window.location.reload()vm.closeModel()}}
})

4、效果图
在这里插入图片描述

http://www.lryc.cn/news/354498.html

相关文章:

  • Java中的内部类及其用途
  • 堆(建堆算法,堆排序)
  • Linux内核重置root密码
  • LaTex安装及配置(Windows)
  • 这才是满分毕业答辩PPT!
  • 【字典树(前缀树) 字符串】2416. 字符串的前缀分数和
  • X-CSV-Reader:一个使用Rust实现CSV命令行读取器
  • 集成ECharts到若依框架:原理与使用方法详解
  • 【机器学习】——线性模型
  • 最全的Redis常用命令
  • sourcetree推送到git上面
  • 勒索病毒的策略与建议
  • doxygen 1.11.0 使用详解(十四)——输出格式
  • java list<AnalystEducationDO> 转成List<AnalystEducationRespVO>两个对象的属性一样
  • [Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解
  • 微服务:利用RestTemplate实现远程调用
  • 【Linux】TCP的三次握手和四次挥手
  • 爬山算法全解析:掌握优化技巧,攀登技术高峰!
  • 使用 Ollama框架 下载和使用 Llama3 AI大模型的完整指南
  • 最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版
  • 中国改革报是什么级别的报刊?在哪些领域具有较高的影响力?
  • 乡村振兴的乡村公共服务提升:提升乡村公共服务水平,满足农民多样化需求,构建幸福美好的美丽乡村
  • 【在 Windows 上使用 ADB 安装 Android 设备上的 atx-agent】
  • iptables 防火墙
  • 软件设计师笔记1
  • springboot集成mybatis 单元测试
  • ecc dsa rsa des
  • Gitee的原理及应用详解(三)
  • Mia for Gmail for Mac:Mac用户的邮件管理首选
  • 如何在忘记密码的情况下解锁 iPhone? 6 种方法分享