import React from 'react' import { View, Text } from '@tarojs/components' import { Popup } from '@nutui/nutui-react-taro' import { Share, Link, Close, Gift } from '@nutui/icons-react-taro' import Taro from '@tarojs/taro' export interface GiftCardShareProps { /** 是否显示分享弹窗 */ visible: boolean /** 礼品卡信息 */ giftCard: { id: number name: string type: number faceValue: string code?: string description?: string } /** 关闭回调 */ onClose: () => void } const GiftCardShare: React.FC = ({ visible, giftCard, onClose }) => { // 获取礼品卡类型文本 const getTypeText = () => { switch (giftCard.type) { case 10: return '实物礼品卡' case 20: return '虚拟礼品卡' case 30: return '服务礼品卡' default: return '礼品卡' } } // 生成分享文案 const generateShareText = () => { const typeText = getTypeText() const valueText = `¥${giftCard.faceValue}` return `🎁 ${giftCard.name}\n💰 面值 ${valueText}\n🏷️ ${typeText}\n${giftCard.description ? `📝 ${giftCard.description}\n` : ''}快来领取这份礼品卡吧!` } // 生成分享链接 const generateShareUrl = () => { // 这里应该是实际的分享链接,包含礼品卡ID等参数 return `https://your-domain.com/gift/share?id=${giftCard.id}` } // 微信分享 const handleWechatShare = () => { Taro.showShareMenu({ withShareTicket: true, success: () => { Taro.showToast({ title: '分享成功', icon: 'success' }) onClose() }, fail: () => { Taro.showToast({ title: '分享失败', icon: 'error' }) } }) } // 复制链接 const handleCopyLink = () => { const shareUrl = generateShareUrl() const shareText = generateShareText() const fullText = `${shareText}\n\n${shareUrl}` Taro.setClipboardData({ data: fullText, success: () => { Taro.showToast({ title: '已复制到剪贴板', icon: 'success' }) onClose() }, fail: () => { Taro.showToast({ title: '复制失败', icon: 'error' }) } }) } // 复制兑换码 const handleCopyCode = () => { if (!giftCard.code) { Taro.showToast({ title: '暂无兑换码', icon: 'none' }) return } Taro.setClipboardData({ data: giftCard.code, success: () => { Taro.showToast({ title: '兑换码已复制', icon: 'success' }) onClose() }, fail: () => { Taro.showToast({ title: '复制失败', icon: 'error' }) } }) } // 保存图片分享 const handleSaveImage = async () => { try { // 这里可以生成礼品卡图片并保存到相册 // 实际实现需要canvas绘制礼品卡图片 Taro.showToast({ title: '功能开发中', icon: 'none' }) } catch (error) { Taro.showToast({ title: '保存失败', icon: 'error' }) } } const shareOptions = [ { icon: , label: '微信好友', onClick: handleWechatShare }, { icon: , label: '复制链接', onClick: handleCopyLink }, { icon: , label: '复制兑换码', onClick: handleCopyCode, disabled: !giftCard.code }, { icon: , label: '保存图片', onClick: handleSaveImage } ] return ( {/* 头部 */} 分享礼品卡 {/* 礼品卡预览 */} {giftCard.name} ¥{giftCard.faceValue} {getTypeText()} {giftCard.code && ( 兑换码 {giftCard.code} )} {/* 分享选项 */} {shareOptions.map((option, index) => ( {option.icon} {option.label} ))} {/* 分享文案预览 */} 分享文案预览: {generateShareText()} ) } export default GiftCardShare