From 7fc3ae98d1d1d557462a486e9c0b1f4f52afd1a4 Mon Sep 17 00:00:00 2001 From: aihe <961836564@qq.com> Date: Sat, 11 May 2024 13:11:46 +0800 Subject: [PATCH] uu --- common/api/common.js | 3 +- common/api/order.js | 6 +-- common/manageServer.js | 30 +++++-------- common/request.js | 15 +++++-- common/util.js | 12 +++++ .../tpx-bluetooth-print.vue | 45 ++++++++++++++----- pages/print/bluetoothPrinter.vue | 20 +++++++-- pages/print/courierNote.vue | 10 ++--- pages/user/exclusiveQrcode.vue | 2 +- 9 files changed, 96 insertions(+), 47 deletions(-) diff --git a/common/api/common.js b/common/api/common.js index 0c1f82f..475f4bd 100644 --- a/common/api/common.js +++ b/common/api/common.js @@ -54,8 +54,9 @@ export const getLatestNotices = (data = {})=> { return coreRequest(url.getLatestNotices, data, {}, "GET") } +// 接口返回-文件流 export const getStaffQRCodePng = (data = {})=> { - return coreRequest(url.getStaffQRCodePng, data, {}, "GET") + return coreRequest(url.getStaffQRCodePng, data, {}, "GET", { _isFile: true }) } diff --git a/common/api/order.js b/common/api/order.js index 333b6c8..90bca8f 100644 --- a/common/api/order.js +++ b/common/api/order.js @@ -91,9 +91,7 @@ export const getNextStationList = (data = {})=> { return coreRequest(url.getNextStationList, data, {}, "GET") } -// 扫描-获取下一网点 +// 获取运单详细信息-图片 接口返回-文件流 export const getRealGetWaybillPrintData = (data = {})=> { - return coreRequest(url.getRealGetWaybillPrintData, data, {}, "GET") + return coreRequest(url.getRealGetWaybillPrintData, data, {}, "GET", { _isFile: true }) } - - diff --git a/common/manageServer.js b/common/manageServer.js index e2156aa..ee9d15b 100644 --- a/common/manageServer.js +++ b/common/manageServer.js @@ -1,6 +1,7 @@ import { goto } from "./untool"; -import { showToast, showLoading, hideLoading } from "./untool" +import { showToast, showLoading, hideLoading, downloadFile } from "./untool" import { setSessionXToken, getSessionXToken } from "@/session" +import { textEncoder, textDecoder } from "./util" const getCommonReqData = ()=> { const xToken = getSessionXToken() @@ -12,7 +13,7 @@ const getCommonReqData = ()=> { } // 请求接口 -function dealRequest(def, url, param) { +function dealRequest(def, url, param, coreParams) { if(param && param._loading) { showLoading() } @@ -38,7 +39,8 @@ function dealRequest(def, url, param) { reject, url, header, - param + param, + coreParams }); }, function(response) { console.log('request url==========1', url) @@ -63,30 +65,22 @@ function dealRequest(def, url, param) { } // 处理响应 -function handleResponse({ +async function handleResponse({ data, header, resolve, reject, url, - param + param, + coreParams }) { // 图片类型数据特殊处理 if(header['content-type']?.indexOf?.("image/") > -1) { - uni.downloadFile({ - url: data, - success: (res) => { - debugger - }, - fail: (err)=>{ - debugger - console.log("downloadFile:err", err) - reject(err) - } - }) - debugger + const base64 = "data:image/png;base64," + uni.arrayBufferToBase64(data) + let { tempFilePath } = await downloadFile(base64) + resolve({ data: { fileUrl: tempFilePath } }) + return } - data = data || {} const { msg, code } = data if ((code == 200)) { diff --git a/common/request.js b/common/request.js index 7fd6ea2..2553997 100644 --- a/common/request.js +++ b/common/request.js @@ -3,9 +3,12 @@ import { showToast } from "./untool" import { host } from "./api" import { getSessionXToken } from "@/session" -const coreRequestBase = (url, reqParams, options = {}, methodType = "POST") => { +const coreRequestBase = (url, reqParams, options = {}, methodType = "POST", coreParams = {}) => { let comReqData = getCommonReqData() + if(coreParams._isFile) { + coreParams.responseType = "arraybuffer" + } return new Promise((resolve, reject) => { uni.request({ @@ -16,6 +19,7 @@ const coreRequestBase = (url, reqParams, options = {}, methodType = "POST") => { ...options }, method: methodType, + ...coreParams, success: (res) => { resolve(res) }, @@ -28,14 +32,19 @@ const coreRequestBase = (url, reqParams, options = {}, methodType = "POST") => { const BaseParam = {} // 请求处理 -let coreRequest = function(url, params = {}, options = {}, methodType) { +let coreRequest = function(url, params = {}, options = {}, methodType, coreParams) { // 统一把emo转unicode // emoUnicode(params) const reqParams = { ...BaseParam, ...params, } - return dealRequest(coreRequestBase(url, reqParams, options, methodType), url, reqParams).then(res => { + return dealRequest( + coreRequestBase(url, reqParams, options, methodType, coreParams), + url, + reqParams, + coreParams + ).then(res => { // 解析unicode // emoUnicode(res, 2) return res diff --git a/common/util.js b/common/util.js index 323627c..147f76b 100644 --- a/common/util.js +++ b/common/util.js @@ -169,6 +169,16 @@ const throttle = (fn, wait) => { } } +//TextEncoder +const textEncoder = (input)=> { + return unescape(encodeURIComponent(input)).split("").map(val => val.charCodeAt()); +} + +//TextDecoder +const textDecoder = (input)=> { + return decodeURIComponent(escape(String.fromCharCode(...[input]))); +} + export { getAddressDetail, setAddresModalParam, @@ -179,4 +189,6 @@ export { transListKeyTitle, debounce, throttle, + textEncoder, + textDecoder } diff --git a/components/tpx-bluetooth-print/tpx-bluetooth-print.vue b/components/tpx-bluetooth-print/tpx-bluetooth-print.vue index 35106a7..7b59126 100644 --- a/components/tpx-bluetooth-print/tpx-bluetooth-print.vue +++ b/components/tpx-bluetooth-print/tpx-bluetooth-print.vue @@ -1,10 +1,11 @@ diff --git a/pages/print/courierNote.vue b/pages/print/courierNote.vue index f3ab5ae..2129242 100644 --- a/pages/print/courierNote.vue +++ b/pages/print/courierNote.vue @@ -157,10 +157,9 @@ handleScanValChange: debounce(function(val){ // val && () }), - handleSubmit() { - this.getRealGetWaybillPrintData() - this.goto("print/bluetoothPrinter") - // this.goto("print/bluetooth-mini-printer") + async handleSubmit() { + let res = await this.getRealGetWaybillPrintData() + this.goto(`print/bluetoothPrinter?imageUrl=${res.data.fileUrl}&canvasWidth=${480}`) }, handleSelAll() { if(this.submitParam.subBillCodeRange.length == this.yundanList.length) { @@ -174,7 +173,8 @@ param.printType = param.printType.join(',') param.subBillCodeRange = param.subBillCodeRange.join(',') // param.isNeedPdf = param.isNeedPdf ? 'T' : '' - let res = await apiService.getRealGetWaybillPrintData(param) + let res = await apiService.getRealGetWaybillPrintData(param, { _loading: true }) + return res } } } diff --git a/pages/user/exclusiveQrcode.vue b/pages/user/exclusiveQrcode.vue index 68d0d89..75f967f 100644 --- a/pages/user/exclusiveQrcode.vue +++ b/pages/user/exclusiveQrcode.vue @@ -63,7 +63,7 @@ methods: { async initData(){ let res = await apiService.getStaffQRCodePng({ _loading: true }) - this.qrCodeImgUrl = res.data + this.qrCodeImgUrl = res?.data?.fileUrl }, async handleSave(){ this.saveNetFile(this.qrCodeImgUrl)