import { defineComponent, onMounted, reactive, ref } from 'vue' import styles from './index.module.less' import { Button, Grid, GridItem, Icon, Image, closeToast, showFailToast, showLoadingToast, showSuccessToast, showToast } from 'vant' import iconDownload from './images/icon-download.png' import iconFirend from './images/icon-friend.png' import iconWeChat from './images/icon-wechat.png' import iconFriendRing from './images/icon-friend-ring.png' // import iconLink from './images/icon-link.png'; import iconLogo from './images/icon-logo.png' import shareBg from './images/share-bg.png' import audioPan from '../images/audio-pan.png' import smallLogo from '@common/images/logo.png' import musicBg from './images/music-bg.png' import QRCode from 'qrcode' import { promisefiyPostMessage, postMessage } from '@/helpers/native-message' import html2canvas from 'html2canvas' export default defineComponent({ name: 'sahre-model', props: { musicDetail: { type: Object, default: () => {} } }, emits: ['close'], setup(props, { emit }) { const canvasRef = ref() const state = reactive({ saveLoading: false, image: null as any }) const saveImg = async () => { showLoadingToast({ message: '图片生成中...', forbidClick: true }) setTimeout(() => { state.saveLoading = false }, 100) const res = await promisefiyPostMessage({ api: 'savePicture', content: { base64: state.image } }) if (res?.content?.status === 'success') { showSuccessToast('保存至相册') } else { showFailToast('保存失败') } } const onSaveWe = async (type: string) => { showLoadingToast({ message: '图片生成中...', forbidClick: true }) setTimeout(() => { state.saveLoading = false }, 100) const res = await promisefiyPostMessage({ api: 'shareTripartite', content: { title: '', desc: '', image: state.image, video: '', type: 'image', shareType: type } }) if (res?.content?.status) { showSuccessToast('分享成功') } else { showFailToast('分享失败') } } const onSavePath = (type: string) => { // 判断是否在保存中... if (state.saveLoading) { return } state.saveLoading = true // 判断是否已经生成图片 if (state.image) { if (type) { onSaveWe(type) } else { saveImg() } } else { const container: any = document.getElementById('shareContent') html2canvas(container, { allowTaint: true, useCORS: true, backgroundColor: null }) .then(async (canvas) => { const url = canvas.toDataURL('image/png') state.image = url if (type) { onSaveWe(type) } else { saveImg() } }) .catch(() => { closeToast() state.saveLoading = false }) } } onMounted(() => { const canvas = canvasRef.value QRCode.toCanvas( canvas, location.origin + location.pathname + '#/shareCreation?id=' + props.musicDetail.id, { margin: 1 }, (error: any) => { if (error) console.log(error) console.log('success') } ) }) return () => (