对话框二次封装
// 对话框子组件 <template> <div> <el-dialog class="comn_dialog" :title="dialogTitle" :visible.sync="visible" :width="popupWidth" :top="popupTop" > <slot> <p>弹窗内容自定义</p> </slot> <span slot="footer" class="dialog-footer"> <el-button @click="Cancel">取 消</el-button> <el-button type="primary" @click="Save">确定</el-button> </span> </el-dialog> </div> </template> <script> export default { props: { dialogTitle: { type: String, default: "标题" }, centerDialogVisible: { type: Boolean, default() { return false; } }, popupWidth: { type: String, default() { return "430px"; } }, popupTop: { type: String, default() { return "23vh"; } } }, computed: { visible: { get() { return this.centerDialogVisible; }, set(val) { // 当visible改变的时候,触发父组件的 updateVisible方法,在该方法中更改传入子组件的 centerDialogVisible的值 this.$emit("updateVisible", val); } } }, methods: { Cancel() { this.$emit("resetPopupData"); }, Save() { this.$emit("submitPopupData"); } } }; </script> <style lang="scss"> .comn_dialog { .el-dialog__header { padding: 20px 0px 9px 20px; border-bottom: 1px solid #e7e6e6; box-shadow: 0px 4px 4px -4px #d1d0d0; } .el-dialog__title { font-size: 16px; letter-spacing: 1px; color: #464646; font-weight: bolder; } .el-dialog__footer { padding: 0px 20px 20px 0px; } .el-dialog__headerbtn { position: static; // 兼容IE11 ,取消原有的position定位 } .el-dialog__close { font-size: 20px; font-weight: bolder; position: absolute; top: 8px; right: 8px; &::after { content: \'\'; width: 20px; height: 20px; border-radius: 25px; position: absolute; right: -2px; top: -3px; } } .el-dialog__body { padding: 20px; } } </style>
// 引入对话框的组件 <template> <div class="test"> <comn-dialog :dialogTitle="dialogTitle" :centerDialogVisible="visible" @updateVisible="updateVisible" @resetPopupData="resetPopupData" @submitPopupData="submitPopupData" :popupWidth="\'550px\'" :popupTop="\'200px\'" > <p class="enable_font"> <span> 确定要 <em class="operate_font"> 删除</em> 选中数据吗? </span> </p> </comn-dialog> </div> </template> <script> import comnDialog from "@/components/Dialog.vue" // 引入Dialog export default { components:{ comnDialog }, data() { return { dialogTitle: "", // 标题 visible: false }; }, methods: {
// 点击旁边对话框消失 updateVisible(val) { this.visible = val; }, resetPopupData() { this.visible = false; }, // 确定按钮 submitPopupData() { this.visible = false; }, } }; </script>
可以直接套用
版权声明:本文为yjd-05原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。