feat: alipay login
This commit is contained in:
@@ -1180,6 +1180,12 @@ const saveByCanvas = async (save = true) => {
|
|||||||
canvas.width = baseW * dpr;
|
canvas.width = baseW * dpr;
|
||||||
canvas.height = baseH * dpr;
|
canvas.height = baseH * dpr;
|
||||||
|
|
||||||
|
// ⚠️ 关键修复:重置变换矩阵,防止多次调用导致 scale 累积
|
||||||
|
// 支付宝小程序在设置 width/height 后可能未完全重置 Context 状态
|
||||||
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||||
|
// 清空画布(使用物理像素尺寸)
|
||||||
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||||
|
|
||||||
// 缩放上下文,使得后续绘制指令依然可以使用逻辑坐标 (baseW, baseH)
|
// 缩放上下文,使得后续绘制指令依然可以使用逻辑坐标 (baseW, baseH)
|
||||||
ctx.scale(dpr, dpr);
|
ctx.scale(dpr, dpr);
|
||||||
|
|
||||||
@@ -1201,6 +1207,11 @@ const saveByCanvas = async (save = true) => {
|
|||||||
const r2p = (rpx) => (rpx * baseW) / 506;
|
const r2p = (rpx) => (rpx * baseW) / 506;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// #ifdef MP-ALIPAY
|
||||||
|
// 支付宝环境:显式等待 Canvas 节点就绪,避免过早绘制
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 300));
|
||||||
|
// #endif
|
||||||
|
|
||||||
// 1️⃣ 画背景
|
// 1️⃣ 画背景
|
||||||
// ⭐ 先加载背景图
|
// ⭐ 先加载背景图
|
||||||
const [bgImg, avatarImg, titleImg] = await Promise.all([
|
const [bgImg, avatarImg, titleImg] = await Promise.all([
|
||||||
@@ -1266,6 +1277,11 @@ const saveByCanvas = async (save = true) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 6️⃣ 输出
|
// 6️⃣ 输出
|
||||||
|
// #ifdef MP-ALIPAY
|
||||||
|
// 支付宝环境:等待绘制指令执行完毕,确保渲染完成
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 300));
|
||||||
|
// #endif
|
||||||
|
|
||||||
uni.canvasToTempFilePath({
|
uni.canvasToTempFilePath({
|
||||||
canvas: canvas, // Canvas 2D 必须传 canvas 实例
|
canvas: canvas, // Canvas 2D 必须传 canvas 实例
|
||||||
width: canvas.width,
|
width: canvas.width,
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ const userInfo = computed(() => ({
|
|||||||
|
|
||||||
const isLoggedIn = computed(() => !!userStore.userInfo.nickName);
|
const isLoggedIn = computed(() => !!userStore.userInfo.nickName);
|
||||||
|
|
||||||
const isIos = computed(() => uni.getSystemInfoSync().osName === "ios");
|
const isIos = false;
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const sysInfo = uni.getSystemInfoSync();
|
const sysInfo = uni.getSystemInfoSync();
|
||||||
|
|||||||
Reference in New Issue
Block a user