自定义element-plus的弹框样式
项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容
一、文件结构如下:
二、自定义myDialog组件
需求:
1.自定义弹框头部背景样式和文字
2.自定义弹框内容
3.基本业务流程框架

components/myDialog/index.vue完整代码:
<template><div class="system-user-dialog-container"><el-dialog center align-center v-model="state.isShow" width="769px" @close="dialogRefresh"><template #header="{ titleClass }"><div :class="titleClass">{{ state.title }}</div></template><el-form ref="formRef" :rules="state.rules" :model="state.formData" size="default" label-width="100px"><slot name="formPart"><div>表单内容</div></slot></el-form><template #footer><span class="dialog-footer"><el-button @click="onCancel" size="default">取 消</el-button><el-button type="primary" @click="onSubmit(formRef)" size="default">确认</el-button></span></template></el-dialog></div>
</template><script setup lang="ts" name="myDialog">
import { ElMessage, FormInstance } from 'element-plus';
import { reactive, ref } from 'vue';// 定义变量内容
const formRef = ref();// 定义子组件向父组件传值/事件
const emit = defineEmits(['doSend']);const state: any = reactive({isShow: false,formData: [],title: '',rules: {},
});// 取消
const onCancel = () => {state.isShow = false;
};// 提交
const onSubmit = async (formEl: FormInstance | undefined) => {if (!formEl) return;//表格验证await formEl.validate(async (valid: any, fields: any) => {if (valid) {emit('doSend');} else {ElMessage.warning('表格项验证失败,请检查');console.log('表格项验证失败!', fields);}});onCancel();
};const dialogRefresh = () => {// 清除校验规则formRef.value?.resetFields();// 重置表单内容state.formData = [];
};/** formData:表单数据* title:标题* rules:表单校验规则*/
const openDialog = (formData: object, title: string, rules: object) => {state.isShow = true;state.formData = formData;state.title = title;state.rules = rules;
};// 暴露变量
defineExpose({openDialog,
});
</script>
<style scoped lang="scss">
:deep .el-dialog__header {width: 100%;height: 60px;background-color: #5e8dff;
}:deep .el-dialog__header .el-dialog__title {font-size: 20px;color: #fff;
}:deep .el-dialog__header .el-dialog__close {color: #fff;
}
</style>
三、使用组件
实现方法:
1.通过插槽自定义弹框中的表单内容
2.父子组件传值
3.ref直接获取dom

dialogDemo/dialog.vue完整代码:
<template><div class="system-dic-dialog-container"><myDialog ref="myDialogRef" @doSend="handleOperate"><template #formPart><div>自定义表单内容</div></template></myDialog></div>
</template><script setup lang="ts" name="systemDicDialog">
import myDialog from '/@/components/myDialog/index.vue';
import { reactive, ref } from 'vue';// 定义子组件向父组件传值/事件
const emit = defineEmits(['refresh']);// 定义变量内容
const myDialogRef = ref();
const state = reactive({data: [],title: '',isAdd: false,rules: {// area: [{ required: true, message: '请选择区域', trigger: 'blur' }],// alarmValueName: [{ required: true, message: '请输入告警值名称', trigger: 'blur' }],// alarmValue: [{ required: true, message: '请输入告警值', trigger: 'blur' }],// alarmValueUnit: [{ required: true, message: '请选择告警值单位', trigger: 'blur' }],// alarmText: [{ required: true, message: '请输入告警提示语', trigger: 'blur' }],},dialog: {isShowDialog: false,type: '',title: '',submitTxt: '',},
});const openDialog = (row: any) => {console.log(row, 'row');console.log(state.data, 'data');if (row) {state.title = '修改';state.isAdd = false;} else {state.title = '新增';state.isAdd = true;}myDialogRef.value.openDialog(state.data, state.title, state.rules);
};// 发请求
const handleOperate = () => {console.log('校验成功');state.isAdd ? doAdd() : doEdit();
};// 添加
const doAdd = () => {console.log('doAdd');clearFormData();emit('refresh');
};
// 修改
const doEdit = () => {console.log('doEdit');clearFormData();emit('refresh');
};// 清空表单信息
const clearFormData = () => {state.data = [];
};// 暴露变量
defineExpose({openDialog,
});
</script>
添加或编辑成功后,刷新页面

dialogDemo/index.vue完整代码:
<template><div class="notice-bar-container layout-pd"><el-button type="success" @click="handleOpenDialog">点我打开弹框</el-button><openDialog ref="openDialogRef" @refresh="handleRefresh"></openDialog></div>
</template>
<script setup lang="ts" name="makeDialogDemo">
import openDialog from './dialog.vue';
import { ref } from 'vue';const openDialogRef = ref();const handleOpenDialog = () => {openDialogRef.value.openDialog();
};// 刷新页面
const handleRefresh = () => {};
</script>
<style lang="scss" scoped></style>

相关文章:
自定义element-plus的弹框样式
项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容 一、文件结构如下: 二、自定义myDialog组件 需求: 1.自定义弹框头部背景样式和文字 2.自定义弹框内容 3.基本业务流程框架 components/myDialog/index.vue完整代码: &…...
Linux:iptables防火墙
目录 绪论 1、防火墙 1.1 保护范围 1.2 网络协议划分 1.3 协议:tcp 1.4 四表 1.5 五链 1.6 iptables的规则 1.7 匹配顺序 流入本机:prerouting ------->iuput---------->用户进程(httpd服务)------请求--------响应--------->数据要返…...
MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查
传送门: MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&…...
设计模式十四:责任链模式(Chain of Responsibility Pattern)
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求。 在责任链模式中,多个处理者对象被连接成一个链。当接收到一个请求时…...
将商城项目放到docker-centos7中
1、docker pull centos:7 2、docker run -d -it --privileged 仓库名称/shopcentos:1.1 /usr/sbin/init 注意: /usr/sbin/init 必须加,否则没法使用systemctl启动mysql 3、安装mysql教程 安装msyql教程:https://blog.csdn.net/davice_li…...
C# Winform 自动获取 软件版本号
C# Winform如何自动获取版本号 方案一 缺点是不适配,clickones发布的版本 public static string GetVersion() {try {return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();}catch{return System.Ref…...
基于C++实现了最小反馈弧集问题的三种近似算法(GreedyFAS、SortFAS、PageRankFAS)
该项目是一个基于链式前向星存图、boost(boost::hash、asio线程池)以及emhash7/8的非官方实现,实现了最小反馈弧集问题的三种近似算法。该问题是在有向图中找到最小的反馈弧集,其中反馈弧集是指一组弧,使得从这些反馈弧…...
奶牛用餐 优先队列 java
👨🏫 奶牛用餐 约翰的农场有 n n n 头奶牛,编号 1 s i m n 1 \\sim n 1simn。 每天奶牛们都要去食堂用餐。 食堂一共有 k k k 个座位,也就是说同一时间最多可以容纳 k k k 头奶牛同时用餐。 已知,第 i i i …...
包管理机制pip3
pip3 安装pip3 安装pip3 apt install python3-pip yum install python3-pip从仓库出发的命令 查询仓库信息 // 获取默认pip3源 pip3 config get global.index-url查询所有软件包 查询已经安装的所有软件包 pip3 list从软件包出发的命令 从软件包名出发查询其他信息 查询…...
liunx在线安装tomcat
1、在线安装 https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.91/bin/apache-tomcat-8.5.91.tar.gz 执行:wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.91/bin/apache-tomcat-8.5.91.tar.gz ps:或者直接把tar.gz扔服务器 2、 编…...
导入示例工程出现error: failed to start ability. Error while Launching activity错误的解决办法
导入华为健康生活应用(ArkTS),使用DevEco Studio打开,运行报错: error: failed to start ability. Error while Launching activity解决办法:修改module.json5里面exported的值,由false改为tr…...
【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行
【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行 PyTorch分布式训练:多GPU、数据并行与模型并行1. 分布式训练简介2. 多GPU训练3. 数据并行4. 模型并行5. 总结PyTorch分布式训练:多GPU、数据并行与模型并行 在深度学习领域,模型的复杂性和数据集的巨大规…...
linux 下 网卡命名改名
Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS7 提供了不同的命名规则,默认是网卡命名会根据网卡的硬件信息,插槽位置等有关;来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、…...
6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack
GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…...
为什么需要智能指针?
为什么需要智能指针? 解决忘记释放内存导致内存泄漏的问题。解决异常安全问题。 #include<iostream> using namespace std;int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void Func(…...
《华为认证》L2TP VPN配置
配置接口ip地址,并且将防火墙的接口加入对应的安全区域 。 LNS的G1/0/0 IP为202.1.1.1 1、配置LNS的缺省路由: ip route-static 0.0.0.0 0.0.0.0 202.1.1.2 2、通过WEB 界面配置防火墙的 L2TP VPN 浏览器输入: https://202.1.1.1:8443/def…...
【JVM】JVM垃圾收集器
文章目录 什么是JVM垃圾收集器四种垃圾收集器(按类型分)1.串行垃圾收集器(效率低)2.并行垃圾收集器(JDK8默认使用此垃圾回收器)3.CMS(并发)垃圾收集器(只针对老年代垃圾回收的) 什么是JVM垃圾收…...
StarGANv2: Diverse Image Synthesis for Multiple Domains论文解读及实现(一)
StarGAN v2: Diverse Image Synthesis for Multiple Domainsp github:https://github.com/clovaai/stargan-v2 1 模型架构 模型主要架构由四部分组成 ①Generator、②Mapping network、③Style encoder、④Discriminator Generator:G网络 生成模型G将输入图片x转换…...
Go Gin 中使用 JWT
一、JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 二、为什么要用在你的Gin中使用JWT 传统的Cookie-Sesson模式占用服务器内存, 拓展性…...
AWS中Lambda集成SNS
1.创建Lambda 在Lambda中,创建名为AWSSNSDemo的函数 use strict console.log(loading function); var aws require(aws-sdk); var docClient new aws.DynamoDB.DocumentClient(); aws.config.regionap-southeast-1;exports.handler function(event,context,cal…...
Hypnos-i1-8B惊艳案例:用自然语言描述→自动生成LaTeX+Python可执行代码
Hypnos-i1-8B惊艳案例:用自然语言描述→自动生成LaTeXPython可执行代码 1. 模型能力概览 Hypnos-i1-8B是一款基于量子噪声注入训练的8B参数开源大模型,专为复杂逻辑推理和数学问题求解而设计。它能够理解自然语言描述,并直接生成可执行的La…...
别再花钱买插件了!用这3个免费3dMAX脚本,轻松搞定砖墙、屋顶和地板生成
3D建筑建模效率革命:3款免费脚本深度解析与实战应用 在建筑可视化与室内设计领域,时间就是竞争力。当项目周期压缩到以小时计算时,传统手动建模方式往往成为瓶颈——一面石墙可能需要调整数十次UV贴图,屋顶瓦片的排列耗费整个下午…...
企业未来需要“首席 AI Agent Harness Engineering 官”吗?
《从CIO到CAHEO:为什么2027年80%的世界500强都会设立「首席AI Agent驾驭工程官」?》 关键词 首席AI Agent驾驭工程官(CAHEO)、AI Agent治理、企业AI落地ROI、Agent工程化、大模型应用架构、数字员工管理、AI合规风险防控 摘要 2024年,AI Agent已经从实验室概念演变为企…...
Windows 11 LTSC 24H2 微软商店一键安装终极指南:3分钟解决应用商店缺失问题
Windows 11 LTSC 24H2 微软商店一键安装终极指南:3分钟解决应用商店缺失问题 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用…...
ESP32 RMT实战:手把手教你用ESP-IDF驱动WS2812灯带(附完整代码)
ESP32 RMT实战:手把手教你用ESP-IDF驱动WS2812灯带(附完整代码) 在智能家居和物联网项目中,可编程RGB灯带因其丰富的色彩表现和灵活的编程能力而广受欢迎。WS2812作为其中最具代表性的产品之一,仅需单线控制即可实现全…...
智能游戏伴侣BetterGI:让原神体验全面升级的终极解决方案
智能游戏伴侣BetterGI:让原神体验全面升级的终极解决方案 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 …...
【CrewAI系列3】8 分钟,我用 CrewAI 创建了第一个 AI 员工
这是CrewAI系列的第3篇,计划写24篇,会持续更新;作者:14 年测试/QA 老兵系列:CrewAI 多 Agent 测试框架实战(第 3 篇)字数:约 4,200 字阅读时间:10 分钟收益:学…...
AndroidUSBCamera媒体捕获完全解析:照片、视频、音频一站式解决方案
AndroidUSBCamera媒体捕获完全解析:照片、视频、音频一站式解决方案 【免费下载链接】AndroidUSBCamera 🔥🔥🔥Flexible and useful UVC camera engine on Android platform, supporting multi-road cameras! 项目地址: https:/…...
终极Airframe React主题定制指南:轻松打造个性化UI界面
终极Airframe React主题定制指南:轻松打造个性化UI界面 【免费下载链接】airframe-react Free Open Source High Quality Dashboard based on Bootstrap 4 & React 16: https://airframe-react-lime.vercel.app 项目地址: https://gitcode.com/gh_mirrors/ai/…...
Qwen3.5-2B开源大模型落地:非遗纹样图片→文化内涵解读+设计建议
Qwen3.5-2B开源大模型落地:非遗纹样图片→文化内涵解读设计建议 1. 引言:当AI遇见非遗文化 非遗纹样是中华文化的重要载体,但传统解读方式面临两大难题:一是专业人才稀缺,二是设计转化效率低。Qwen3.5-2B作为轻量化多…...
