Browse Source

add previewBase64Image

dev
刘嘉炜 2 weeks ago
parent
commit
24bb413148
  1. 3
      src/subpackage/groupon/pages/exchange_success.vue
  2. 3
      src/subpackage/order/pages/detail.vue
  3. 4
      src/subpackage/order/pages/enter_code.vue
  4. 31
      src/utils/index.js

3
src/subpackage/groupon/pages/exchange_success.vue

@ -4,6 +4,7 @@ import { reactive, ref } from "vue";
import textLine from "../components/text_line.vue"; import textLine from "../components/text_line.vue";
import { getOrder, orderGet } from "../api"; import { getOrder, orderGet } from "../api";
import { routeTo, showModal } from "@/utils/polish"; import { routeTo, showModal } from "@/utils/polish";
import { previewBase64Image } from "@/utils";
const orderInfo = ref({}); const orderInfo = ref({});
onLoad(oprions => { onLoad(oprions => {
getOrderNoFn({ verify_token: oprions?.verify_token ?? '' }) getOrderNoFn({ verify_token: oprions?.verify_token ?? '' })
@ -49,7 +50,7 @@ function copyBtn(){
// //
function previewCode(){ function previewCode(){
uni.previewImage({ urls: [orderInfo.value?.verify_qrcode] })
previewBase64Image(orderInfo.value?.verify_qrcode)
} }
function toOrderDetail(){ function toOrderDetail(){

3
src/subpackage/order/pages/detail.vue

@ -10,6 +10,7 @@ import venueInfoAsync from "@/subpackage/groupon/components/venue_info.vue";
import { orderGet, cancelCheck, orderCancel, getCreateOrderProxyData } from "../api"; import { orderGet, cancelCheck, orderCancel, getCreateOrderProxyData } from "../api";
import { get_zh_day } from "@/utils"; import { get_zh_day } from "@/utils";
import { showLoad, hideLoad, showNone } from "@/utils/polish"; import { showLoad, hideLoad, showNone } from "@/utils/polish";
import { previewBase64Image } from "@/utils";
const orderInfo = ref({}); const orderInfo = ref({});
const cancelModalRef = ref(null); const cancelModalRef = ref(null);
// order_type 0 1/2 // order_type 0 1/2
@ -30,7 +31,7 @@ function getOrderInfo({ brand_id, order_no }){
} }
function previewImg(img){ function previewImg(img){
uni.previewImage({ urls: [ img ] });
previewBase64Image(img)
} }
function phoneClick(){ function phoneClick(){

4
src/subpackage/order/pages/enter_code.vue

@ -2,7 +2,9 @@
import { onLoad } from '@dcloudio/uni-app'; import { onLoad } from '@dcloudio/uni-app';
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import server from '@/api/server'; import server from '@/api/server';
import { previewBase64Image } from "@/utils";
const codeInfo = ref({}); // const codeInfo = ref({}); //
onLoad(option => { onLoad(option => {
server.post({ server.post({
url: '/stadium/order/session/get' + `/${option?.code_id ?? ''}`, url: '/stadium/order/session/get' + `/${option?.code_id ?? ''}`,
@ -42,7 +44,7 @@ function codeMaskImgPath(status){
// //
function previewCode(e){ function previewCode(e){
if(isShowCodeMask(e))return; if(isShowCodeMask(e))return;
uni.previewImage({ urls: [e.verify_qrcode] })
previewBase64Image(e.verify_qrcode);
} }
</script> </script>

31
src/utils/index.js

@ -103,3 +103,34 @@ export function formatDate(timestamp) {
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
} }
/**
* 预览 Base64 图片
* @param {string} base64 - base64 图片字符串可包含 data:image/png;base64, 前缀
*/
export function previewBase64Image(base64) {
const fs = tt.getFileSystemManager();
// 去掉前缀,如果有的话
const pureBase64 = base64.replace(/^data:image\/\w+;base64,/, '');
// 获取用户数据路径(替代 tt.env.USER_DATA_PATH)
const userDataPath = tt.getEnvInfoSync().common.USER_DATA_PATH;
// 生成临时文件路径
const filePath = `${userDataPath}/preview_${Date.now()}.png`;
// 写入临时文件
fs.writeFile({
filePath,
data: pureBase64,
encoding: 'base64',
success: () => {
// 调用预览
tt.previewImage({
current: filePath,
urls: [filePath],
success: () => console.log('预览成功'),
fail: (err) => console.error('预览失败', err)
});
},
fail: (err) => console.error('写入文件失败', err)
});
}
Loading…
Cancel
Save