Vue3:uv-upload图片上传

news/2024/12/26 17:46:33/

效果图:

参考文档:

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>


http://www.ppmy.cn/news/1558319.html

相关文章

Linux之ARM(MX6U)裸机篇----1.开发环境搭建

下载开启FTP服务 作用&#xff1a;用于电脑与linux系统之前文件传输 如上&#xff0c;编辑完成后重启 Window下FTP客户端安装使用http://www.filezilla.cn/download网址下载 新建网络连接站点 主机后写虚拟机的ip地址&#xff0c;用ifconfig查出ipv4的地址 笔记本电脑中虚拟…

oracle 加字段和字段注释 sql

在 Oracle 数据库中&#xff0c;你可以使用 ALTER TABLE 语句来添加字段&#xff0c;并使用 COMMENT ON COLUMN 语句来添加字段注释。以下是一个示例&#xff1a; 假设你有一个名为 employees 的表&#xff0c;你想要添加一个名为 email 的字段&#xff0c;并为其添加注释。 …

腾讯云云开发 Copilot具有以下优势

与其他代码生成工具相比&#xff0c;腾讯云云开发 Copilot具有以下优势&#xff1a; 功能特性方面 自然语言处理能力更强&#xff1a;许多代码生成工具仅能实现简单的代码补全或根据特定模板生成代码&#xff0c;而云开发 Copilot可直接通过自然语言生成完整的小程序/web全栈…

springboot实现图片上传、下载功能

写一下后端spring项目经常要做的功能&#xff0c;实现图片上传和下载&#xff0c;这里也把前端代码附上了。可能算是个简单版的&#xff0c;我这里图片上传都存在当前项目的根目录resource下了。 这里包含了&#xff0c;上传文件、下载文件&#xff08;下载文件流、获取base64&…

谈谈JSON

中文名&#xff1a;JS键值对数据 英文名&#xff1a;JavaScript Object Notation JSON是一种常用的数据格式&#xff0c;其简洁和清晰的层次结构有效地提升了网络传输效率&#xff0c;很多编程语言都支持JSON格式的数据交换。 JSON 相比于 XML 来说&#xff0c;更小、…

LabVIEW物联网开发实战:专栏总述

本专栏以LabVIEW为开发平台&#xff0c;讲解物联网通信组网原理与开发方法&#xff0c;覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例&#xff0c;展示如何利用LabVIEW和常用模块实现物联网系统的快速开发与原型设计&#xff0c;助你从基础到实战&#xff0…

Android笔试面试题AI答之Android基础(2)

文章目录 1.启动应用后&#xff0c;改变系统语言&#xff0c;应用的语言会改变么&#xff1f;一、应用支持多语言切换的情况二、应用不支持多语言切换的情况三、Android系统的特殊处理四、实践中的注意事项 2.请介绍下adb、ddms、aapt 的作用adb&#xff08;Android Debug Brid…

作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化

文|作业帮大数据团队&#xff08;阮文俊、孙建业&#xff09; 背 景 基于 Apache DolphinScheduler &#xff08;以下简称DolphinScheduler&#xff09;搭建的 UDA 任务调度平台有效支撑了公司的业务数据开发需求&#xff0c;处理着日均百万级别的任务量。 整个 UDA 的架构如…