Vue3:uv-upload图片上传
效果图:
参考文档:
Upload 上传 | 我的资料管理-uv-ui 是全面兼容vue3+2、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn)
代码:
<view class="greenBtn_zw2" @click="handleAddGroup">添加班级群</view>
//添加班级群const handleAddGroup = () => {addDialog.value.open();};
<!-- 添加班级群弹窗 --><uv-popup ref="addDialog" mode="center" :customStyle="dialogStyle2" :closeOnClickOverlay="false"><view class="dialogBG"><view class="dialog-all"><view class="dialog-small-close" @click="cancelRoom"><uv-icon name="close-circle-fill" size="28" color="#B1B1B1"></uv-icon></view><view class="dialog-center"><view class="dialog-title pb-10">班级群</view><view class="diaText">班级群名称</view><uv-input maxlength="10" placeholder="请输入班级群名称" border="surround" clearable v-model="addGroup.info.groupName"></uv-input><view class="diaText statusD">群二维码<view class="gray_s"><text style="margin-right: 38rpx; font-size: 28rpx; color: #555555">状态</text><uv-switch v-model="addGroup.info.status" size="20" activeColor="#287e66" inactive-color="#c0c0c0" asyncChange @change="changeValue"></uv-switch></view></view><view class="m-flex" style="align-items: center"><uv-upload:fileList="fileList"name="fileList":maxCount="1"@afterRead="afterRead"@delete="deletePic"width="360rpx"height="360rpx":customStyle="{ width: '360rpx', height: '360rpx', marginBottom: '40rpx', display: 'flex', alignItems: 'center' }"></uv-upload></view><view class="dialog_footer1 displayFlexSB"><view class="common-sure-btn-1" @click="confirmRoom()">确定</view><view class="common-sure-btn-2" @click="cancelRoom()">取消</view></view></view></view></view></uv-popup>
<script setup lang="ts"> import { onLoad, onShow } from '@dcloudio/uni-app';import { ref, reactive, toRefs, onMounted, defineComponent } from 'vue';import { getFirstPage, getFirstClass, sessionUpdate, sessionCreate, sessionDelete } from '@/apis/vocabulary.ts'; const dialogStyle2 = reactive({ width: '597rpx', height: '855rpx', background: '#FFFFFF', borderRadius: '48rpx' });const addGroup = reactive<object>({ info: { groupName: '', status: true } });const fileList = ref([]);const validateClassForm = () => {if (addGroup.info.groupName == '') {toast.value.show({ message: '请输入班级群名称', success: false });return false;}if (addGroup.info.groupName.trim().length >= 11) {toast.value.show({ message: '班级群名称不能超过10个字符', success: false });return false;}if (fileList.value.length < 1) {toast.value.show({ message: '请上传群二维码', success: false });return false;}return true;};//关闭/取消 弹框按钮方法const cancelRoom = () => {addGroup.info = {groupName: '',status: true};fileList.value = [];addDialog.value.close();};//是否切换switch进行状态推送const changeValue = (e: any) => {uni.showModal({content: e ? `确定要开启${addGroup.info.groupName}吗` : `确定要关闭${addGroup.info.groupName}吗`,success: (res) => {if (res.confirm) {addGroup.info.status = e;console.log('e------', addGroup.info.status);}}});};//图片上传方法//afterRead读取后的处理函数const afterRead = async (event: any) => {// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式let lists = [].concat(event.file);let fileListLen = fileList.value.length;lists.map((item) => {fileList.value.push({...item,status: 'uploading',message: '上传中'});});for (let i = 0; i < lists.length; i++) {const result = await uploadFilePromise(lists[i].url);// console.log(result, '1111111111111111');let item = fileList.value[fileListLen];fileList.value.splice(fileListLen,1,Object.assign(item, {status: 'success',message: '',url: result ? result : ''}));fileListLen++;}};const uploadFilePromise = (url) => {return new Promise((resolve, reject) => {let a = uni.uploadFile({// url: `${config.baseURL}/zx/common/uploadFile`, // 仅为示例,非真实的接口地址url: 'https://baiduway.baijy.com/zx/common/uploadFile', // 仅为示例,非真实的接口地址filePath: url,name: 'file',// formData: {// user: 'test'// },header: {Token: uni.getStorageSync('token')},success: (res) => {let result = JSON.parse(res.data);setTimeout(() => {resolve(result.data.fileUrl);}, 1000);}});});};// 删除图片const deletePic = (event: any) => {console.log(event);console.log('fileList.value', fileList.value);console.log('fileList${event.name}', `fileList${event.name}`);// fileList[event.name]fileList.value.splice(event.index, 1);// this[`fileList${event.name}`].splice(event.index, 1);};//确定方法const confirmRoom = () => {if (validateClassForm()) {let obj = {groupName: addGroup.info.groupName,status: addGroup.info.status ? 1 : 0,qrcodeUrl: fileList.value[0].url};addGroupList(obj).then((res: any) => {if (res.success) {toast.value.show({ message: '班级群添加成功', success: true });getclassList();cancelRoom();} else {toast.value.show({ message: res.message, success: false });}});}};</script>
相关文章:

Vue3:uv-upload图片上传
效果图: 参考文档: Upload 上传 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn) 代码: <view class"greenBtn_zw2" click"handleAddGroup">添加班级群</vie…...

大数据机器学习算法和计算机视觉应用07:机器学习
Machine Learning Goal of Machine LearningLinear ClassificationSolutionNumerical output example: linear regressionStochastic Gradient DescentMatrix Acceleration Goal of Machine Learning 机器学习的目标 假设现在有一组数据 x i , y i {x_i,y_i} xi,yi&…...

基于asp.net游乐园管理系统设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…...

一区牛顿-拉夫逊算法+分解+深度学习!VMD-NRBO-Transformer-GRU多变量时间序列光伏功率预测
一区牛顿-拉夫逊算法分解深度学习!VMD-NRBO-Transformer-GRU多变量时间序列光伏功率预测 目录 一区牛顿-拉夫逊算法分解深度学习!VMD-NRBO-Transformer-GRU多变量时间序列光伏功率预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.中科院一区…...

uniapp使用腾讯地图接口的时候提示此key每秒请求量已达到上限或者提示此key每日调用量已达到上限问题解决
要在创建的key上添加配额 点击配额之后进入分配页面,分配完之后刷新uniapp就可以调用成功了。...

WPF 完美解决改变指示灯的颜色
WPF 完美解决改变指示灯的颜色 原有:自己再做WPF页面设计后发现直接去查找页面多个控件嵌套情况下找不到指示灯(Button实现的,详细可以看这篇文章 这里),具体看看来如何实现 加粗样式思路:无论多级嵌套&a…...

Flutter/Dart:使用日志模块Logger Easier
Flutter笔记 Flutter/Dart:使用日志模块Logger Easier Logger Easier 是一个为 Dart 和 Flutter 应用程序量身定制的现代化日志管理解决方案。它提供了一个高度灵活、功能丰富的日志记录系统,旨在简化开发者的日志管理工作,同时提供一定的定制…...

阿里云云服务器初始化
如果我们的云服务器出现无法挽回的错误时,我们可以尝试初始化云服务器进行解决。 首先搜索阿里云(你要先确认自己已经购买了阿里云的云服务器): 登录账号后主页向下划 进入后点击管理控制台 点击进入后可以看到正在运行࿰…...

Python中SKlearn的K-means使用详解
文章目录 Python中SKlearn的K-means使用详解一、引言二、K-means算法原理三、使用SKlearn进行K-means聚类的步骤1、导入必要的库2、生成数据集3、创建K-means模型并设置参数4、训练模型5、预测簇标签6、可视化结果 四、总结 Python中SKlearn的K-means使用详解 一、引言 K-mea…...

红帽RHCE认证适用哪些人学习
红帽 RHCE工程师认证有着广泛的适用人群。对于初入 IT 行业的新手来说,RHCE 是快速建立专业基础、提升自身竞争力的绝佳途径。它能帮助新人系统地学习 Linux 系统知识,从基础的安装配置到复杂的网络服务管理,一步一个脚印地构建起坚实的技术框…...

FFmpeg 框架简介和文件解复用
文章目录 ffmpeg框架简介libavformat库libavcodec库libavdevice库 复用(muxers)和解复用(demuxers)容器格式FLVScript Tag Data结构(脚本类型、帧类型)Audio Tag Data结构(音频Tag)V…...

《Java核心技术I》Swing中的边框
边框 BorderFactory静态方法创建边框,凹斜面,凸斜面,蚀刻,直线,蒙版,空白。 边框添加标题,BorderFactory.createTitledBorder 组合边框,BorderFactory.createCompoundBorder JCo…...

MySQL 中的常见错误与排查
在 MySQL 数据库的日常运维中,管理员可能会遇到各种错误。无论是查询性能问题、连接异常、数据一致性问题,还是磁盘空间不足等,及时排查并解决这些问题是保证数据库稳定运行的关键。本文将列出 MySQL 中一些常见的错误及其排查方法。 一、连接…...

SQL 查询方式比较:子查询与自连接
在 SQL 中,子查询和自连接是两种常见的查询方式,它们的功能虽然可以相同,但实现的方式不同。本文通过具体示例,深入探讨这两种查询方式,并配合数据展示,帮助大家理解它们的使用场景和差异。 数据示例 假设…...

Linux下学【MySQL】所有常用类型详解( 配实操图 通俗易懂 )
每日激励:“当你觉得你会幸运时,幸运就会眷顾你,所以努力吧,只要你把事情做好,并觉得你会幸运,你将会变得幸运且充实。” 绪论: 本章继续学习MySQL的知识,本章主要讲到mysql中的所…...

Gin-vue-admin(1):环境配置和安装
目录 环境配置如果443网络连接问题,需要添加代理服务器 后端运行前端运行 环境配置 git clone https://gitcode.com/gh_mirrors/gi/gin-vue-admin.git到server文件目录下 go mod tidygo mod tidy 是 Go 语言模块系统中的一个命令,用于维护 go.mod 文件…...

如何在centos系统上挂载U盘
在CentOS上挂载NTFS格式的U盘,需要执行一系列步骤,包括识别U盘设备、安装必要的软件、创建挂载点,并最终挂载U盘。以下是在CentOS上挂载NTFS格式U盘的详细步骤: 一、准备工作 确认CentOS版本: 确保你的CentOS系统已经安装并正常运行。不同版本的CentOS在命令和工具方面可能…...

2024年12月大语言模型最新对比:GPT-4、Claude 3、文心一言等详细评测
前言 随着人工智能技术的快速发展,大语言模型(LLM)已经成为了技术领域最热门的话题。本文将详细对比目前主流的大语言模型,帮助大家选择最适合的工具。 一、OpenAI GPT系列 1. GPT-4 核心优势: 多模态理解能力强 逻辑推理能力出色 创造…...

openjdk17 从C++视角看 String的intern的jni方法JVM_InternString方法被gcc编译器连接
symbols-unix 文件部分内容 JVM_IHashCode JVM_InitClassName JVM_InitStackTraceElement JVM_InitStackTraceElementArray JVM_InitializeFromArchive JVM_InternString 要理解在 symbols-unix 文件中包含 JVM_InternString 方法的原因,我们需要从构建过程、符号…...

day16 python(4)——UnitTest
【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、UnitTest框架介绍 1.1 UnitTest框架 1.2 unitTest的组成(5部分) 1.2.1 TestCase(测试用例) 1.2.2 TestSuit 和 TestRunner 【方法1】 【方法2】 1…...

Kafka快速扫描
Architecture 系统间解耦,异步通信,削峰填谷 Topic 消息主题,用于存储消息 Partition 分区,通过扩大分区,可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道:…...

python打包时候遇到问题:ImportError: DLL load failed while importing _ufuncs: 找不到指定的模块
问题:python打包时候遇到问题:ImportError: DLL load failed while importing _ufuncs: 找不到指定的模块 解决方法 pip uninstall scipy pip install scipy总结:卸载出问题的库并重新安装,再次通过pyinstaller -F -w xxx.py 打包…...

【6】期末复习C#第6套
1.两个指针变量不能 2.函数可以有也可以没有形参 3.开始执行点是程序中的main函数 4.调用函数时形参和实参各占一个独立的存储单元 5.给指针赋NULL值和地址值 6.函数头和函数体 7.(C)形式参数是局部变量 8.在C语言中,一维数组的定义方…...

开源轮子 - EasyExcel01(核心api)
EasyExcel01 - 核心api 本文整理自掘金大佬 - 竹子爱熊猫 https://juejin.cn/post/7405158045662576640 文章目录 EasyExcel01 - 核心api一:初相识EasyExcel1:写入excel入门2:读取Excel入门 二:数据模型注解1:读写通用…...

SpringBoot3+Vue3开发在线考试系统
项目介绍 项目分为3种角色,分别为:超级管理员、老师、学生。超级管理员,负责系统的设置、角色的创建、菜单的管理、老师的管理等功能,也可以叫做系统管理员;老师角色,负责系统业务的管理,包括学…...

2. Kafka入门-开发环境准备
Kafka入门-开发环境准备 1. 环境准备2. Centos7安装2.1 镜像安装2.2 初始化配置2.3 JDK1.8安装 ---------------------------------------------------------------------------------------------- 1. 环境准备 2. Centos7安装 2.1 镜像安装 2.2 初始化配置 设置系统时区 …...

Halcon中histo_2dim(Operator)算子原理及应用详解
在Halcon中,histo_2dim算子是一个用于计算双通道灰度值图像的直方图的工具。以下是对该算子的原理及应用的详细解释: 一、原理 histo_2dim算子的函数原型为:histo_2dim(Regions, ImageCol, ImageRow : Histo2Dim : : )。 输入参数ÿ…...

TCP 与 UDP
TCP与UDP的区别分析 TCP(传输控制协议)和UDP(用户数据报协议)是互联网协议族(TCP/IP)中的两种重要传输层协议。它们在数据传输的方式、特性以及应用场景方面存在显著差异。以下将从多个方面详细分析TCP与U…...

ubuntu 安装更新 ollama新版本
ubuntu 安装更新 ollama新版本 我这里是 2024-12-18 ollama 版本是 0.5.3 1手动下载 ollama-linux-amd64.tgz https://github.com/ollama/ollama/releases 2下载脚本 https://ollama.com/install.sh install.sh 和 ollama-linux-amd64.tgz 在相同路径下 修改:…...

Numpy基本操作
目录 1、生成数组的方法 1.1、生成0和1的数组 1.2、从现有数组生成 1.2.1、生成方式 1.3、生成固定范围的数组 1.4、生成随机数组 1.4.1、使用模块介绍 1.4.2、均匀分布 1.4.3、正态分布 1.4.4、正态分布创建方式 1、生成数组的方法 1.1、生成0和1的数组 import numpy…...