当前位置: 首页 > news >正文

uniapp+<script setup lang=“ts“>解析后端返回的图片流并将二维码展示在页面中

页面展示

apiFox请求

封装公用的ts

import config from '@/../config/config';
const URL = `${config.apiDomain}${config.apiBase}/order/genVerificationQr`;
interface GenQrParams {orderNo: string;width: number;height: number;
}// 生成核销二维码接口
export const genVerificationQr = (params: GenQrParams) => {const accessToken = uni.getStorageSync('access_token');return new Promise<string>((resolve, reject) => {uni.request({url: `${URL}`, // 注意补充完整的接口URLmethod: 'GET',header: {Authorization: 'Bearer ' + accessToken,},data: params,responseType: 'arraybuffer',success: (res) => {if (res.statusCode === 200 && res.data) {try {// 将arraybuffer转换为base64格式const base64Str = wx?.arrayBufferToBase64(res.data as ArrayBuffer);if (!base64Str) {throw new Error('转换base64失败');}// 生成正确的dataURL(根据实际图片类型调整mime类型,这里假设是png)const imageSrc = `data:image/png;base64,${base64Str}`;resolve(imageSrc); // 成功时返回imageSrc} catch (err) {reject(err); // 转换过程出错时 reject}} else {reject(new Error(`请求失败,状态码:${res.statusCode}`));}},fail: (err) => {reject(err); // 网络请求失败时 reject},});});
};

页面使用


<template><view class="qr-code-box flex-column-center"><image :src="currentImg" class="qr-code-img" /><view class="qr-code-text">请将此二维码呈现给工作人员为您核销订单</view></view>
</template><script setup lang="ts">
import { onMounted, nextTick } from 'vue';
import { genVerificationQr } from '@/utils/createQrCode'; 
interface PropsType {orderNo: any;
}
const props = withDefaults(defineProps<PropsType>(), {orderNo: 0,
});
const { orderNo } = toRefs(props);const getGenVerificationQr = async () => {currentImg.value = ''; //每次请求前置空let params = {orderNo: orderNo.value,width: 200,height: 200,};nextTick(async () => {// 调用接口生成二维码const qrImageSrc = await genVerificationQr(params);// 将结果赋值给页面的image srccurrentImg.value = qrImageSrc; // 假设页面中有qrImage这个数据变量});
};onMounted(() => {getGenVerificationQr();
});</script><style lang="scss">
@import './index.scss';
</style>

http://www.dtcms.com/a/402970.html

相关文章:

  • 1- 十大排序算法(选择排序、冒泡排序、插入排序)
  • uniapp x 鸿蒙开发之调试证书签名配置
  • RabbitMQ-消息堆积
  • uniapp x鸿蒙开发之运行到鸿蒙模拟器
  • wordpress建站 外贸适合做装饰公司的名字
  • Web3实操:2025年DePIN 挂机项目要点分享
  • 公司做网站费用wordpress alchem
  • 内存对齐与变量/结构体分析
  • 常见开发语言在 Windows 上的默认编码格式
  • 卫朋:AI硬件产品怎么做?——雷达模块选型实操
  • 从另一个视角看Transformer:注意力机制就是可微分的k-NN算法
  • [优选算法专题三.二分查找——NO.21山脉数组的峰顶索引]
  • 湖南营销型网站建设推广如何更改网站标题
  • 云原生网络基础设施的核心组件Envoy
  • KubeSphere 社区版即将发布:开启云原生新篇章
  • K8s学习笔记(五) Velero结合minnio业务数据备份与恢复
  • 23种设计模式——组合模式(Composite Pattern)
  • 培训机构网站开发汉中杨海明
  • 2- 十大排序算法(希尔排序、计数排序、桶排序)
  • 哈尔滨服务器托管优选-青蛙云
  • 【MySQL】JDBC
  • sogoupinyin输入法,LINUX版输入中文不显示中文
  • 自动化运维工具 Ansible:集中化管理服务器完全指南
  • 电影网站的建设目标做网站的公司简称什么行业
  • 【ThreeJs】【HTML载入】Three.js 中的 CSS2DRenderer 与 CSS3DRenderer 全面解析
  • (50)elasticsearch服务部署-有状态负载(华为云平台CCE)
  • 【时序预测-5】FFT、STL、ARIMA频域特征和时序分解
  • Kotlinx Serialization 指南
  • SpringBoot @Scheduled 注解详解
  • layui 表格行级 upload 上传操作