uniapp+vue2实现下载相关

整体逻辑流程

  1. 页面加载(onLoad 钩子)
    参数接收:从路由参数中获取 operateId、staffName 和 operateStatus,并将其赋值给组件的数据属性。
    数据初始化:调用 Promise.all 并行执行 getWarse、getAllianceParticipationList 和 getPrice 方法,获取仓库、商城和价格档等数据。
    二维码信息获取:调用 getqrCodeinfoFn 方法,根据 operateId 获取二维码的详细信息。
  2. 页面交互
    生成二维码:点击“生成二维码”按钮,调用 genQrCode 方法生成二维码。
    下载二维码:点击“下载二维码”按钮,调用 downLoadqrcode 方法下载二维码。
    编辑信息:点击“编辑”按钮,进入编辑状态,允许修改表单信息。
    保存信息:点击“保存”按钮,调用 submitFn 方法保存修改后的信息。
    取消编辑:点击“取消”按钮,调用 cancelEdit 方法取消编辑,恢复到原始状态。
    下载 H5 页面:点击“下载 H5 页”按钮,调用 downloadH5 方法下载合成的 H5 页面图片。
  3. 图片上传与删除
    上传图片:使用 u-upload 组件上传图片,上传前会进行图片宽度和大小的校验,校验通过后调用 upLoadImg 方法将图片上传到服务器,并将上传后的图片链接添加到表单数据中。
    删除图片:点击已上传图片的删除按钮,调用 handleDelete 方法从表单数据中移除该图片。
  4. 下载 H5 页面图片(downloadH5 方法)
    收集图片链接:将二维码图片链接、业务员介绍图片链接和公司介绍图片链接收集到 imageUrls 数组中,并过滤掉空链接,得到 validUrls 数组。
    检查图片链接:如果 validUrls 数组为空,提示“没有可合成的图片”并返回。
    下载图片:使用 Promise.all 并行下载所有图片,将下载后的临时文件路径存储在 tempFilePaths 数组中。
    获取图片信息:使用 Promise.all 并行获取所有图片的信息,包括宽度和高度,存储在 imageInfos 数组中。
    计算总高度:根据图片的宽度和高度,计算每张图片的缩放高度,并累加得到总高度 totalHeight。
    创建画布并绘制图片:使用 uni.createCanvasContext 创建画布上下文,将图片依次绘制到画布上。
    绘制画布:调用 canvas.draw 方法绘制画布。
    将画布转换为图片:使用 uni.canvasToTempFilePath 方法将画布转换为临时图片文件。
    保存图片到相册:使用 uni.saveImageToPhotosAlbum 方法将临时图片文件保存到相册。
    三、重点功能分析
  5. 下载图片到相册
    流程:在 downloadH5 方法中,首先收集所有图片链接,然后下载图片、获取图片信息、计算总高度、绘制画布,最后将画布转换为图片并保存到相册。
    API 调用:
    uni.downloadFile:下载图片文件。
    uni.getImageInfo:获取图片的信息,如宽度和高度。
    uni.createCanvasContext:创建画布上下文。
    canvas.draw:绘制画布。
    uni.canvasToTempFilePath:将画布转换为临时图片文件。
    uni.saveImageToPhotosAlbum:将临时图片文件保存到相册。
  6. 加载图片
    流程:在 downloadH5 方法中,使用 Promise.all 并行下载所有图片,并使用 uni.downloadFile 方法将图片下载到本地临时文件。
    API 调用:
    uni.downloadFile:下载图片文件。
  7. 为什么要用 Promise
    异步操作管理:在 downloadH5 方法中,涉及到多个异步操作,如下载图片、获取图片信息、绘制画布等。使用 Promise 可以将这些异步操作封装成可链式调用的对象,方便管理和控制异步流程。
    并行执行:使用 Promise.all 可以并行执行多个异步操作,提高程序的执行效率。
  8. 生成 H5 页面需要的流程和 API
    流程:
    收集所有图片链接。
    下载图片到本地临时文件。
    获取图片的信息,如宽度和高度。
    计算所有图片的总高度。
    创建画布并将图片依次绘制到画布上。
    绘制画布。
    将画布转换为临时图片文件。
    将临时图片文件保存到相册。
    API 调用:
    uni.downloadFile:下载图片文件。
    uni.getImageInfo:获取图片的信息,如宽度和高度。
    uni.createCanvasContext:创建画布上下文。
    canvas.draw:绘制画布。
    uni.canvasToTempFilePath:将画布转换为临时图片文件。
    uni.saveImageToPhotosAlbum:将临时图片文件保存到相册。
    四、代码优化建议
    错误处理:在 downloadH5 方法中,对每个异步操作都进行了错误处理,但可以进一步优化错误提示信息,让用户更清楚地知道出错的原因。
    代码复用:可以将一些重复的代码提取成独立的方法,提高代码的复用性和可维护性。
    性能优化:在计算图片缩放高度时,可以使用更高效的算法,减少不必要的计算。
    通过以上分析,我们可以清晰地了解 demo.vue 文件的逻辑流程和重点功能,为后续的开发和维护提供了有力的支持。
posted @   jialiangzai  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2024-02-26 vue3中404路由匹配规则
2024-02-26 说一下flex的属性

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示