【解决】el-message消息弹框的显示被el-dialog覆盖(z-index导致)

方案一:设置el-message的z-index为更大值即可。

// to fix el-message弹框被el-dialog覆盖的问题。
.el-message {
  z-index: 99999999 !important;
}

方案二:设置el-dialog的z-index为较小值即可。

<!--【close-on-click-modal】:点击空白处是否关闭弹框; -->
<el-dialog 
    :title="title" 
    :visible.sync="visible" 
    width="35%"
    z-index="1000"
    :destroy-on-close="true" 
    :close-on-click-modal="false" 
    :show-close="!loading" 
    :before-close="closeDg">
</el-dialog>

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个简单的示例代码,演示了如何在Vue 3中使用`el-dialog`实现新增和编辑功能,并且共用一个组件。 父组件: ```html <template> <div> <el-button type="primary" @click="showAddDialog">新增</el-button> <el-button type="primary" @click="showEditDialog">编辑</el-button> <my-dialog :visible="dialogVisible" :title="dialogTitle" :type="dialogType" @submit="handleSubmit" @close="handleClose"></my-dialog> </div> </template> <script> import MyDialog from './MyDialog.vue'; import { ref } from 'vue'; export default { components: { MyDialog, }, setup() { const dialogVisible = ref(false); const dialogTitle = ref(''); const dialogType = ref('add'); const currentData = ref({}); const showAddDialog = () => { dialogTitle.value = '新增'; dialogType.value = 'add'; dialogVisible.value = true; }; const showEditDialog = () => { dialogTitle.value = '编辑'; dialogType.value = 'edit'; dialogVisible.value = true; }; const handleSubmit = (data) => { // 处理提交逻辑 console.log(data); dialogVisible.value = false; }; const handleClose = () => { dialogVisible.value = false; }; return { dialogVisible, dialogTitle, dialogType, currentData, showAddDialog, showEditDialog, handleSubmit, handleClose, }; }, }; </script> ``` 子组件: ```html <template> <el-dialog :visible.sync="visible" :title="title"> <el-form :model="formData" ref="form" :rules="rules" label-width="80px"> <el-form-item label="姓名" prop="name"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="formData.age"></el-input> </el-form-item> <el-form-item label="性别" prop="gender"> <el-select v-model="formData.gender"> <el-option label="男" value="male"></el-option> <el-option label="女" value="female"></el-option> </el-select> </el-form-item> </el-form> <div slot="footer"> <el-button @click="handleClose">取消</el-button> <el-button type="primary" @click="handleSubmit">确定</el-button> </div> </el-dialog> </template> <script> import { ref, watchEffect } from 'vue'; export default { props: { visible: { type: Boolean, required: true, }, title: { type: String, required: true, }, type: { type: String, required: true, }, }, setup(props, { emit }) { const formData = ref({ name: '', age: '', gender: '', }); const rules = { name: [ { required: true, message: '请输入姓名', trigger: 'blur' }, ], age: [ { required: true, message: '请输入年龄', trigger: 'blur' }, ], gender: [ { required: true, message: '请选择性别', trigger: 'change' }, ], }; watchEffect(() => { if (props.visible) { if (props.type === 'add') { formData.value = { name: '', age: '', gender: '', }; } else { formData.value = { name: '张三', age: 18, gender: 'male', }; } } }); const handleSubmit = () => { const form = this.$refs.form; form.validate((valid) => { if (valid) { emit('submit', formData.value); } }); }; const handleClose = () => { emit('close'); }; return { formData, rules, handleSubmit, handleClose, }; }, }; </script> ``` 在父组件中,我们使用`ref`创建了一个名为`dialogVisible`的响应式变量,用于控制弹框显示与隐藏。除此之外,我们还创建了一些方法,如`showAddDialog`、`showEditDialog`、`handleSubmit`和`handleClose`。这些方法都是通过`setup`函数返回的对象暴露出去的,供模板中使用。 在子组件中,我们接收了父组件传递过来的`visible`、`title`和`type`属性,并在`setup`函数中使用`watchEffect`监听`visible`的变化,当`visible`为`true`时,根据`type`的值来判断是新增还是编辑操作,并清空或者填充表单数据。另外,我们在`handleSubmit`方法中使用了`emit`方法触发了一个名为`submit`的自定义事件,用于向父组件传递表单数据。在父组件中,我们可以通过`@submit`监听这个事件,并处理提交逻辑。 总的来说,以上是一个简单的示例,实际开发中还需要根据具体业务需求进行修改

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值