Vue3使用element-plus实现弹窗效果-demo

 使用 


<ShareDialog v-model="isShow" @onChangeDialog="onChangeDialog" />
import ShareDialog from './ShareDialog.vue';
const isShow = ref(false);
const onShowDialog = (show) => {isShow.value = show;
};
const onChangeDialog = (val) => {console.log('onSureClick', val);isShow.value = false;
};

 组件代码

<template><el-dialogv-model="isShow":show-close="false"class="share-dialog-dialog"style="width: 423px;height: 314px;display: flex;flex-direction: column;justify-content: space-between;background-color: #fff !important;"><template #header><div class="dialog-header"><div class="title">带单平台设置</div><imgsrc="@/assets/images/followOrder/close.svg"@click="isShow = false"/></div></template><template #default><div class="dialog-box"><div:class="['icon', { active: Bi.includes('okx') }]"@click="selectBi('okx')"><i class="icon-btn"></i><img class="icon-bi" src="@/assets/images/followOrder/okx-icon.svg" /><span>Okx</span></div><div:class="['icon', { active: Bi.includes('binance') }]"@click="selectBi('binance')"><i class="icon-btn"></i><imgclass="icon-bi"src="@/assets/images/followOrder/binance-icon.svg"/><span>Binance</span></div><div:class="['icon', { active: Bi.includes('bitget') }]"@click="selectBi('bitget')"><i class="icon-btn"></i><imgclass="icon-bi"src="@/assets/images/followOrder/bitget-icon.svg"/><span>Bitget</span></div></div></template><template #footer><div class="dialog-footer"><div class="false" @click="isShow = false">取消</div><div class="true" @click="onSureClick">确定</div></div></template></el-dialog>
</template><script setup>
import { defineProps, defineEmits, ref, reactive } from 'vue';
const props = defineProps({modelValue: {type: Boolean,default: false}
});const Bi = reactive([]);
const selectBi = (val) => {console.log(val, 888);const i = Bi.indexOf(val);if (i <= -1) {Bi.push(val);} else {Bi.splice(i, 1);}console.log(Bi, 88);
};
const emits = defineEmits(['update:modelValue', 'onChangeDialog']);
const isShow = computed({get() {return props.modelValue;},set(val) {emits('update:modelValue', val);}
});const onSureClick = (val) => {emits('onChangeDialog', true);
};
</script><style lang="less">
.el-dialog__header {margin-right: 0;
}
</style>
<style lang="less" scoped>
.share-dialog-dialog {.dialog-header {display: flex;justify-content: space-between;align-items: center;border-bottom: 1px solid #f1f1f1;padding-bottom: 14px;.title {color: #000;font-size: 20px;font-style: normal;font-weight: 600;line-height: normal;}img {width: 14.161px;height: 14.515px;cursor: pointer;}}.dialog-box {padding: 0 25px;display: flex;justify-content: space-between;align-items: center;.icon {position: relative;display: flex;flex-direction: column;align-items: center;justify-content: center;width: 110px;height: 110px;border-radius: 4px;border: 1px solid #f1f1f1;background: #fff;.icon-btn {position: absolute;top: 5px;right: 5px;width: 15px;height: 15px;background-image: url(@/assets/images/followOrder/quan-icon.svg);background-size: contain;background-repeat: no-repeat;}.icon-bi {width: 40px;height: 40px;margin-bottom: 8px;}& > span {color: #000;font-size: 16px;font-family: PingFang SC;font-style: normal;font-weight: 500;line-height: normal;}}.active {border: 1px solid #31daff;background: #f1fdff;.icon-btn {background-image: url(@/assets/images/followOrder/gou-icon.svg);}}}.dialog-footer {display: flex;align-items: center;justify-content: space-between;color: #000;.false {padding: 10px 75px;border: 1px solid #000000;border-radius: 4px;cursor: pointer;}.true {padding: 10px 75px;background: #31daff;// background: linear-gradient(266.54deg, #f1fb6f 0%, #7cf9cd 98.94%);border-radius: 4px;cursor: pointer;}}
}
</style>

基础代码 

<template><ElDialog:append-to-body="true"destroy-on-close:show-close="false"v-model="isShow"class="application-dialog"><div class="application-dialog-container"><h1>111111</h1></div></ElDialog>
</template><script setup>
import { ElDialog, ElButton } from 'element-plus';
import { defineProps, defineEmits, ref, reactive } from 'vue';const props = defineProps({modelValue: {type: Boolean,default: false}
});const emits = defineEmits(['update:modelValue', 'onChangeDialog']);
const isShow = computed({get() {return props.modelValue;},set(val) {emits('update:modelValue', val);}
});const onSureClick = (val) => {emits('onChangeDialog', true);
};
</script><style lang="less" scoped></style>

 完整代码 

<template><ElDialogdestroy-on-close:show-close="false":append-to-body="true"v-model="isShow"class="application-dialog"style="width: 420px; height: 266px"><div class="application-dialog-container"><img class="fail" src="@/assets/images/followOrder/fail-1.svg" /><div class="title">{{ errType.title }}</div><div class="cont">{{ errType.cont }}</div><div class="footer"><div class="but" @click="closeDialog">确定</div></div></div></ElDialog>
</template><script setup>
import { ElDialog, ElButton } from 'element-plus';
import { defineProps, defineEmits, ref, reactive } from 'vue';const props = defineProps({modelValue: {type: Boolean,default: false},errType: {type: Object,default: {title: '审核中',cont: '申请提交成功,我们的工作人员将在24小时内完成审核'}}
});const emits = defineEmits(['update:modelValue', 'onChangeDialog']);
const isShow = computed({get() {return props.modelValue;},set(val) {emits('update:modelValue', val);}
});const closeDialog = (val) => {console.log('onChangeDialog');emits('onChangeDialog', true);
};
</script>
<style lang="less">
//单独设置颜色 /deep/ :deep  ::v-deep
.application-dialog {&.el-dialog {--el-dialog-bg-color: transparent !important;.el-dialog__header,.el-dialog__body {padding: 0;}}
}
</style>
<style lang="less" scoped>
.application-dialog {position: relative;.application-dialog-container {position: absolute;width: 100%;height: 246px;background: #ffffff;border-radius: 8px;bottom: 0;padding: 70px 24px 24px;display: flex;flex-direction: column;align-items: center;justify-content: space-between;.title {color: #000;text-align: center;font-size: 18px;font-family: PingFang SC;font-style: normal;font-weight: 500;line-height: normal;}.cont {display: flex;flex-direction: column;color: #868e9b;text-align: center;font-size: 14px;font-family: PingFang SC;font-style: normal;font-weight: 500;line-height: normal;padding: 0 14px;}.footer {.but {width: 372px;height: 40px;color: #fff;font-size: 14px;font-family: PingFang SC;font-style: normal;font-weight: 500;line-height: normal;background: #000;border-radius: 5px;display: flex;justify-content: center;align-items: center;cursor: pointer;}}.fail {width: 64.632px;height: 66.607px;position: absolute;top: -20px;left: calc((100% / 2) - (64.632px / 2));}}
}
</style>

弹窗-over 

<template><el-dialogv-model="isShow":show-close="false"class="share-dialog-dialog"style="width: 319px;height: 209px;display: flex;flex-direction: column;justify-content: space-between;background-color: #fff !important;"><template #default><div class="dialog-text">确定以当前市场价格平仓?</div></template><template #footer><div class="dialog-footer"><div class="false" @click="isShow = false">取消</div><div class="true" @click="onSureClick()">确定</div></div></template></el-dialog>
</template><script setup>
import { defineProps, defineEmits, ref, reactive } from 'vue';
const props = defineProps({modelValue: {type: Boolean,default: false}
});const Bi = reactive([]);
const selectBi = (val) => {console.log(val, 888);const i = Bi.indexOf(val);if (i <= -1) {Bi.push(val);} else {Bi.splice(i, 1);}console.log(Bi, 88);
};
const emits = defineEmits(['update:modelValue', 'onChangeDialog']);
const isShow = computed({get() {return props.modelValue;},set(val) {emits('update:modelValue', val);}
});const onSureClick = (val) => {emits('onChangeDialog', true);
};
</script><style lang="less">
.el-dialog__header {margin-right: 0;
}
</style>
<style lang="less" scoped>
.share-dialog-dialog {.dialog-text {font-family: 'PingFang SC';font-size: 18px;line-height: 25px;text-align: center;padding: 20px 0;color: #000000;}.dialog-footer {display: flex;align-items: center;justify-content: space-between;color: #000;.false {padding: 10px 50px;border: 1px solid #000000;border-radius: 4px;cursor: pointer;}.true {padding: 10px 50px;background: #000;color: #fff;// background: linear-gradient(266.54deg, #f1fb6f 0%, #7cf9cd 98.94%);border-radius: 4px;cursor: pointer;}}
}
</style><!-- 使用<ClosingDialog v-model="isShow" @onChangeDialog="onChangeDialog" />import ClosingDialog from '@/views/followOrder/myTracking/components/ClosingDialog.vue';const isShow = ref(false);const onShowDialog = (show) => {isShow.value = show;};const onChangeDialog = (val) => {console.log('onSureClick', val);isShow.value = false;}; -->

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 Eclipse 的一场 “三角关系”

上个世纪 90 年代&#xff0c;世界上的计算机要么不联网&#xff0c;要么在企业内部联网。但是&#xff0c;在互联网的概念下&#xff0c;计算机之间共享信息和资源的需求成为了必要。 1995 年 5 月&#xff0c;Java 横空出世。Java 的父亲是当时凭借 Solaris 操作系统风头正盛…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改&#xff0c;芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录&#xff1a; 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…

数据结构——各种常见算法的实现方法和思路

文章目录 常见的排序算法类型复杂度和稳定性 1.冒泡排序2.直接插入排序3.希尔排序4.简单选择排序方法1&#xff1a;双向遍历选择排序方法2&#xff1a;单向遍历选择排序 5.归并排序方法1&#xff1a;递归方法2&#xff1a;非递归 6.快速排序方法1&#xff1a;随机取keyi方法2&a…

谈 Delphi 中 JSON 的简便操作(非常简单)

我曾有讲过Delphi操作JSON的方法&#xff0c;特别是这一篇【delphi】类和记录的 helpers&#xff08;助手&#xff09;。但是因为当时是主要介绍的是Delphi的Helper&#xff0c;大家可能并没注意到Delphi中JSON的简便操作方法。 早期Delphi并没有自己的JSON操作库&#xff0c;大…

了解 JVM - 认识垃圾回收机制与类加载过程

前言 本篇通过介绍JVM是什么&#xff0c;认识JVM的内存区域的划分&#xff0c;了解类加载过程&#xff0c;JVM中垃圾回收机制&#xff0c;从中了解到垃圾回收机制中如何找到存活对象的方式&#xff0c;引用计数与可达性分析的方式&#xff0c;再释放垃圾对象时使用的方式&…

Kerberos协议详解

0x01 kerberos协议的角色组成 Kerberos协议中存在三个角色&#xff1a; 客户端(Client)&#xff1a;发送请求的一方 服务端(Server)&#xff1a;接收请求的一方 密钥分发中心(Key distribution KDC) 密钥分发中心分为两个部分&#xff1a; AS(Authentication Server)&…

Nacos (2.0版本之后)状态异常集群节点状态异常

在nacos 2.0 之后正常部署后节点状态仅有一个正常,其余均为DOWN 或者SUSPICIOUS 状态 查看日志后发现 ERROR Server check fail, please check server 192.168.172.104 ,port 9849 is available , error {} 其实是nacos 相互之间不能正常通信造成的,nacos客户端升级为2.x版…

apple pencil一代的平替有哪些品牌?苹果平板的触控笔

随着苹果Pencil系列的推出&#xff0c;平替电容笔在国内市场得到了较好的发展&#xff0c;随之的销量&#xff0c;也开始暴涨&#xff0c;苹果pencil因为价格太高&#xff0c;导致很多人买不起。目前市场上&#xff0c;有不少的平替电容笔&#xff0c;可以替代苹果的Pencil&…

MySQL 主从复制与读写分离

MySQL 主从复制与读写分离 一、mysql读写分离的概念1、什么是读写分离&#xff1f;2、为什么要读写分离呢&#xff1f;3、什么时候要读写分离&#xff1f;4、主从复制与读写分离5、mysql支持的复制类型 二、主从复制的工作过程三、MySQL 读写分离原理常见的 MySQL 读写分离分为…

【Distributed】分布式ELK日志文件分析系统(二)

文章目录 一、FilebeatELK 部署1. 环境部署2. 在 Filebeat 节点上操作2.1 安装 Filebeat2.2 设置 filebeat 的主配置文件 3. 在 Apache 节点上操作3.1 在 Logstash 组件所在节点上新建一个 Logstash 配置文件 3. 启动3.1 在Logstash 组件所在节点启动3.2 在 Filebeat 节点 启动…

Stable Diffusion 用2D图片制作3D动态壁纸

如果想让我们的2D图片动起来可以使用stable-diffusion-webui-depthmap-script插件在SD中进行加工让图片动起来。 这是一个可以从单个图像创建深度图,现在也可以生成3D立体图像对的插件,无论是并排还是浮雕。生成的结果可在3D或全息设备(如VR耳机或Looking Glass显示器)上查…

大模型加速学科升级,飞桨赋能北邮“X+大模型”特色小学期

在人工智能时代&#xff0c;设计师与产品经理比以往更加需要关注一个事实&#xff1a;那就是如何利用人工智能和数据分析技术&#xff0c;打造让用户心动的信息交互产品和用户体验&#xff0c;释放人-机协同共创的巨大潜能&#xff0c;是决定设计产能和竞争力的关键。 在产业的…

RabbitMQ ---- 消息队列

RabbitMQ ---- 消息队列 1. MQ 的相关概念1.1 什么是 MQ1.2 为什么要用 MQ1.3 MQ 的分类1.4 MQ 的选择 2. RabbitMQ2.1 RabbitMQ 的概念2.2 四大核心概念2.3 RabbitMQ 核心部分2.4 各个名词介绍2.5 安装 1. MQ 的相关概念 1.1 什么是 MQ MQ(message queue)&#xff0c;从字面…

爬虫之Scrapy

一 介绍 Scrapy一个开源和协作的框架&#xff0c;其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的&#xff0c;使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛&#xff0c;可用于如数据挖掘、监测和自动化测试等领域&#x…

什么是Docker

容器技术和虚拟机 虚拟机 和一个单纯的应用程序相比&#xff0c;操作系统是一个很重的程序&#xff0c;刚装好的系统还什么都没有部署&#xff0c;单纯的操作系统其磁盘占用至少几十G起步&#xff0c;内存要几个G起步。 在这台机器上开启三个虚拟机&#xff0c;每个虚拟机上…

PSI算法经典论文算法概述

文章目录 什么是隐私求交PSIPSI协议分类PSI算法的分类基于哈希函数的PSI算法基于不经意传输&#xff08;OT&#xff09;的 PSI算法基于GC的PSI算法基于公钥加密的PSI算法基于DH的PSI算法基于RSA盲签名的PSI算法基于同态加密的PSI算法 基于差分隐私的PSI算法 总结参考文献 什么是…

为了实现上网自由,我做了一个多功能串口服务器

项目作者&#xff1a;小华的物联网嵌入式之旅 介绍&#xff1a;从事电气自动化行业&#xff0c;多次获得物联网设计竞赛&#xff0c;爱好嵌入式设计开发&#xff0c;物联网开发。 设计方案思路的由来&#xff0c;是因为我们现在的开发板基本需要通过串口与WIFI模组或以太网模…

[Linux] 最基础简单的线程池 及其 单例模式的实现

本篇文章主要用到线程相关内容, 下面是博主关于线程相关内容的文章: [Linux] 线程同步分析&#xff1a;什么是条件变量&#xff1f;生产者消费者模型是什么&#xff1f;POSIX信号量怎么用&#xff1f;阻塞队列和环形队列模拟生产者消费者模型 [Linux] 线程互斥分析: 多线程的问…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(一)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

华为发布大模型时代AI存储新品

7月14日&#xff0c;华为发布大模型时代AI存储新品&#xff0c;为基础模型训练、行业模型训练&#xff0c;细分场景模型训练推理提供存储最优解&#xff0c;释放AI新动能。 企业在开发及实施大模型应用过程中&#xff0c;面临四大挑战&#xff1a; 首先&#xff0c;数据准备时…