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 () => (

我在音乐数字课堂发布了演奏作品

赶快扫码看看吧!

{props.musicDetail.musicSheetName}

演奏者:{props.musicDetail.username}

温馨提示:保存图片到相册或长按识别二维码进入查看喔~

扫码下载音乐数字课堂App

emit('close')} />
海报已生成!快来分享吧!
onSavePath('')}> {/* */} onSavePath('wechat')}> onSavePath('wechat_circle')}> {/* */}
emit('close')}> 取消
); } });