【sgAudioDialog】自定义组件:基于audio标签和el-dialog构建弹窗预览音频文件

sgAudioDialog源码

<template><div :class="$options.name" v-if="visible"><!-- 如果不加v-if="visible"弹窗中使用el-tabs组件就会死循环卡死,这个是elementUI的bug --><el-dialog:append-to-body="true":close-on-click-modal="true":close-on-press-escape="true":custom-class="`${$options.name}-el-dialog`":destroy-on-close="true":fullscreen="false":show-close="true":title="`${form.name || `音频`}`":top="`calc(100vh / 2 - 70px)`":width="`500px`":visible.sync="visible"@keyup.ctrl.enter.native="save"style="animation: none"v-loading="loading":element-loading-text="elementLoadingText"><div class="audio-container"><!-- 弹窗内容 --><audio:autoplay="typeof form.autoplay === 'undefined' ? true : form.autoplay"class="audio"controls:loop="form.loop":muted="form.muted"preloadref="audio":src="form.src"webkit-playsinline="true"/></div></el-dialog></div>
</template>
<script>
export default {name: "sgAudioDialog",components: {},data() {return {loading: false, //加载状态elementLoadingText: ``, //加载提示文字visible: false,form: {}, //表单信息disabled: false, //是否只读labelWidth: `120px`,};},props: ["value", "data"],computed: {},watch: {loading(newValue, oldValue) {newValue || (this.elementLoadingText = ``);},value: {handler(d) {this.visible = d;},deep: true,immediate: true,},visible(d) {this.$emit("input", d);// 每次显示的时候,重置一些参数值if (d) {}},data: {handler(newValue, oldValue) {//console.log(`深度监听${this.$options.name}:`, newValue, oldValue);if (Object.keys(newValue || {}).length) {this.form = JSON.parse(JSON.stringify(newValue));this.disabled = this.form.disabled;} else {this.disabled = false; //添加的时候,编辑态this.form = {// 默认字段名: 缺省值,};}},deep: true, //深度监听immediate: true, //立即执行},},created() {},mounted() {},destroyed() {},methods: {valid(d) {if (!this.form.NAME) return this.$message.error(this.$refs.NAME.$attrs.placeholder);},save() {if (this.valid()) return;if (this.form.ID) {// 修改} else {// 添加}let data = {...this.form,sgLog: `前端请求来源:${this.$options.name}添加或修改`,};this.$f.保存数据接口调用方法({...data,cb: (d) => {this.$emit(`save`, this.form);this.cancel();},},this);},cancel() {this.visible = false;},},
};
</script>
<style lang="scss" scoped>
.sgAudioDialog {
}.el-dialog__wrapper {/*遮罩模糊*/backdrop-filter: blur(5px);
}
>>> .sgAudioDialog-el-dialog {border-radius: 30px;box-shadow: 0 10px 50px 0 #00000033;//关闭按钮.el-dialog__headerbtn {.el-dialog__close {background-color: #409eff;border-radius: 88px;box-sizing: border-box;padding: 5px;color: white;}&:hover {.el-dialog__close {background-color: #1f75d5;color: white;}}}.audio-container {display: flex;justify-content: center;align-items: center;margin: -20px 0px -10px;border-radius: 20px;overflow: hidden;height: calc(100vh - 180px);display: flex;flex-direction: column;width: 100%;height: 60px;overflow: hidden;.audio {width: 100%;height: 100%;}}
}
</style>

应用

<sgAudioDialog :data="data_sgAudioDialog" v-model="show_sgAudioDialog" />data_sgAudioDialog: {src:`音频路径`, name:`音频标题`,},
show_sgAudioDialog: false,

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

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

相关文章

docker nginx 部署vue 实例

1.安装docker https://blog.csdn.net/apgk1/article/details/144354588 2. 安装nginx docker 安装 nginx-CSDN博客 3. 复制 nginx-test 实例的一些文件到宿主机中&#xff0c;目前已 /home/jznh/路径演示 3.1 在/home/jznh/ 创建 conf html logs 三个文件夹&#xff0c;…

技术人员需要成为的八边形战士

那天偶然看到一个标题&#xff1a;脾气好&#xff0c;技术佳&#xff0c;哪个程序员这么宝藏&#xff1f;我没有点进去看内容&#xff0c;但是心里在琢磨一件事&#xff1a;10年前这种宝藏程序员很难得&#xff0c;现在的市场&#xff0c;恐怕不够。恐怕市场在找的都是下面技能…

VAS1260Q奇力LED驱动芯片DCDC降压恒流可替代Diodes8860

VAS1260Q是一款专为车规级LED照明设计的连续模式电感降压驱动器&#xff0c;能够高效地驱动单个或多个串联LED。它集成了高端输出电流检测电路&#xff0c;并通过外部电阻设置标称平均输出电流&#xff0c;具有高可靠性和宽广的应用场景。 核心技术参数 1. 输入电压范围…

VLDB 2024 | 时空数据(Spatial-temporal)论文总结

VLDB 2024于2024年8月26号-8月30号在中国广州举行。 本文总结了VLDB 2024有关时空数据&#xff08;time series data&#xff09;的相关论文&#xff0c;主要包含如有疏漏&#xff0c;欢迎大家补充。 &#x1f31f;【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘&#xf…

【推荐算法】单目标精排模型——FiBiNET

key word: 学术论文 Motivation&#xff1a; 传统的Embedding&MLP算法是通过内积和Hadamard product实现特征交互的&#xff0c;这篇文章的作者提出了采用SENET实现动态学习特征的重要性&#xff1b;作者认为简单的内积和Hadamard product无法有效对稀疏特征进行特征交互&a…

Windows中将springboot项目运行到docker的容器中

0&#xff0c;先打包好项目&#xff0c;再启动docker 1&#xff0c;在Java项目根目录下创建一个名为Dockerfile的文件&#xff08;没有扩展名&#xff09;&#xff0c;并添加以下内容。 # 使用OpenJDK的基础镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR /app# 将项…

GB28181系列一:GB28181协议介绍

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、GB28181协议介绍 二、GB28181交互流程 1、注册 2、观看视频 3、控制 4、SDP 5、媒体保活&#xff1a; 6、RTP 7、SIP URL 一、GB28181协议介绍 GB28181使用SIP协议&#xff0c;SIP协议参考我的SIP系列&a…

【C++指南】类和对象(七):友元

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 &#x1f343;友元的介绍 &#x1f343;友元函数 &#x1f343;友元类 &#x1f343;相关…

使用requests和BeautifulSoup的Python爬虫示例

标题“使用requests和BeautifulSoup的Python爬虫示例”清晰地指出了这个Python脚本的主要功能和所使用的库。以下是一个基于这个标题的Python爬虫代码示例&#xff0c;它展示了如何使用requests库发送HTTP请求&#xff0c;并使用BeautifulSoup库解析HTML内容来抓取网页上的特定…

【leetcode】替换后的最长重复字符、将字符串翻转到单调递增

1.替换后的最长重复字符 示例如下&#xff1a; 下面我们来分析一下一个例子&#xff0c;其中K 2 暴力枚举 这里的字符串s是仅由大写字母组成&#xff0c;首先我们尝试用暴力解法的思路来想一下这道题&#xff0c;通过从第一个字符开始进行枚举&#xff0c;如果出现了条件判断…

广州大学acm新生赛

#include <iostream> #include <unordered_map> #include <unordered_set> #include <map> #include <string> #include <vector> #include <algorithm> using namespace std;// 定义存储每个队伍的相关数据结构 struct TeamData {i…

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

记录解决 linux部署完web服务却只能127.0.0.1访问但不能公网ip访问

背景 记录一次运维经历&#xff01;&#xff01;&#xff01;&#xff01; tomcat部署完 查看日志打印一切正常 阿里云服务器控制台安全组也放行的对应端口&#xff0c;但从浏览器始终访问不上 telnet 也访问不到端口 在服务器上 访问127.0.0.1可以访问到对应页面 但是用公网ip…

【C++】输入三个整数,输出最大值的高级分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述&#x1f4af;解题思路&#x1f4af;实现与分析方法一&#xff1a;三元运算符的直接应用详细分析&#xff1a;优缺点剖析&#xff1a; 方法二&#xff1a;显式条件…

射频电路屏蔽简略

电磁波的干扰是每个射频设备的自带属性&#xff0c;不管是内部还是外部&#xff0c;怎样去更好的抑制掉干扰&#xff0c;关系到射频设备的工作状态&#xff0c;而能够找到产生干扰的来源就是重中之重&#xff0c;电磁波的干扰与其产生的源密不可分&#xff0c;而源就离不开所需…

基于python+django+vue的高校成绩管理系统

系统展示 管理员后台界面 教师界面 学生界面 系统背景 随着教育信息化的不断推进&#xff0c;传统的手工成绩管理方式已经无法满足现代教育管理的需求。传统管理方式不仅效率低下&#xff0c;还容易出错&#xff0c;且难以实现数据的集中化管理和安全访问控制。因此&#xff0c…

Qt中禁止或管理任务栏关闭窗口的行为

一、前言 作为一个合格的桌面程序&#xff0c;应该具备良好的资源释放的要求&#xff0c;即避免软件退出时&#xff0c;软件界面虽然消失&#xff0c;却假死在后台&#xff0c;只能通过任务管理器强行杀死。这意味着&#xff0c;程序无法通过正常操作进行退出&#xff0c;变成…

怎么为开源项目做贡献提PR?

GitHub 慢的话&#xff0c;https://ask.csdn.net/questions/8166374 复刻项目 以 https://github.com/open-frame/uniapp-init 项目为例 复刻完就会在你的仓库里有个同样的项目 拉取复刻下来的项目 然后常规的改动项目、git推送。比如我改了一个忽略文件&#xff1a; 提交…

记录:ubuntu 使用chattts的过程。

你知道什么是穷人吗&#xff1f;穷人就是没钱还想学习。 git GitHub - 2noise/ChatTTS: A generative speech model for daily dialogue. 因为所以。cosyvoice&#xff0c;gpt-s . 0.先找一个目录吧。 1.命令行模式 duyichengduyicheng-computer:~/gitee$ git clone https:…

vulnhub靶场【hacksudo】之LPE的后续提权方法学习

前言 靶场&#xff1a;hacksudo-lpe的后几个challenge 基于上篇靶场hacksudo-ple的sudo提权 SUID文件提权 ar文件提权 使用find寻找具有SUID权限的文件 find / -perm -us -type f 2>/dev/null查看ar的SUID用法 sudo install -m xs $(which ar) .TF$(mktemp -u) LFILE&…