浏览代码

炫耀一下

htc 1 天之前
父节点
当前提交
4c0242851c
共有 1 个文件被更改,包括 47 次插入2 次删除
  1. 47 2
      pagesMy/achievement.vue

+ 47 - 2
pagesMy/achievement.vue

@@ -43,7 +43,7 @@
 				<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/29/0f48d5d2-2961-4d95-9bf9-148b7f615227.png"></image>
 			</view>
 			<view class="date">{{xzInfo.lightUpDate}}获得</view>
-			<view class="btn adfacjc">
+			<view class="btn adfacjc" @click="shareMedal">
 				<image src="https://transcend.ringzle.com/xiaozhi-app/profile/2025/09/29/4e76f71e-cd46-4380-8437-04b83eec40f3.png"></image>
 				<text>炫耀一下</text>
 			</view>
@@ -153,7 +153,52 @@
 				}
 			}
 		})
-	}
+	}
+	
+	const shareMedal = () => {
+		if (!xzInfo.value || !xzInfo.value.imageUrl) {
+			proxy.$showToast('勋章信息不完整,无法分享');
+			return;
+		}
+		
+		// 1. 使用 uni.previewImage 预览图片
+		// 用户在预览界面可以长按图片,选择“发送给朋友”或“保存图片”
+		uni.previewImage({
+			urls: [xzInfo.value.imageUrl], // 需要预览的图片链接列表
+			current: xzInfo.value.imageUrl, // 当前显示图片的链接
+			success: () => {
+				// 预览成功后,给用户一个提示
+				proxy.$showToast('长按图片可保存或分享给好友', 3000); 
+				// 提示后可以关闭弹窗,也可以不关,取决于产品需求
+				// xzShow.value = false; 
+			},
+			fail: (err) => {
+				console.error('预览图片失败', err);
+				proxy.$showToast('预览图片失败,请稍后再试');
+				
+				// 预览失败的备用方案:尝试直接保存图片到相册
+				uni.getImageInfo({
+					src: xzInfo.value.imageUrl,
+					success: (res) => {
+						uni.saveImageToPhotosAlbum({
+							filePath: res.path,
+							success: () => {
+								proxy.$showToast('勋章图片已保存到相册,请前往微信选择分享给好友');
+							},
+							fail: (saveErr) => {
+								proxy.$showToast('图片保存失败,请检查相册权限');
+								console.error('保存图片失败', saveErr);
+							}
+						});
+					},
+					fail: (infoErr) => {
+						proxy.$showToast('获取图片信息失败,无法保存');
+						console.error('获取图片信息失败', infoErr);
+					}
+				});
+			}
+		});
+	};
 
 	/**
 	 * @description 【核心】使用 Canvas 绘制分享图,并返回图片临时路径