| 
					
				 | 
			
			
				@@ -0,0 +1,331 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import request from '@/helpers/request' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Button, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  closeToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Icon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Image, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  showFailToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  showLoadingToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  showSuccessToast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  showToast 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from 'vant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, onMounted, reactive } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRoute } from 'vue-router' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import styles from './index.module.less' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { postMessage, promisefiyPostMessage } from '@/helpers/native-message' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import html2canvas from 'html2canvas' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { state as baseState } from '@/state' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import OQrcode from '@/components/o-qrcode' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import iconImage from './images/icon-image.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import iconWeichat from './images/icon-weichat.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import teacherTopBg from './images/teacher-top_bg.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import manageTopBg from './images/manage-top_bg.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import orchestraTopBg from './images/orchestra-top_bg.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'save-share-image', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setup() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const route = useRoute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const state = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: route.query.type as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      paramValue: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      schoolName: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      schoolId: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      url: null as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      schoolLogo: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const imgs = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      saveLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      image: null as any, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      shareLoading: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onSaveImg = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 判断是否在保存中... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (imgs.saveLoading) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      imgs.saveLoading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 判断是否已经生成图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (imgs.image) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveImg() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const container: any = document.getElementById(`preview-container`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        html2canvas(container, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          allowTaint: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          useCORS: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          backgroundColor: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .then(async (canvas) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const url = canvas.toDataURL('image/png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgs.image = url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveImg() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            closeToast() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgs.saveLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onShare = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (imgs.shareLoading) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      imgs.shareLoading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (imgs.image) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        openShare() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const container: any = document.getElementById(`preview-container`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        html2canvas(container, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          allowTaint: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          useCORS: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          backgroundColor: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .then(async (canvas) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const url = canvas.toDataURL('image/png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgs.image = url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            openShare() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .catch(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            closeToast() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgs.shareLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const openShare = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const image = imgs.image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imgs.shareLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (image) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        postMessage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            api: 'shareTripartite', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            content: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              title: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              desc: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              image, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              video: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              type: 'image', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // button: ['copy'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              shareType: 'wechat' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (res && res.content) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              showToast(res.content.message || (res.content.status ? '分享成功' : '分享失败')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const saveImg = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showLoadingToast({ message: '图片生成中...', forbidClick: true }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imgs.saveLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const res = await promisefiyPostMessage({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        api: 'savePicture', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          base64: imgs.image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (res?.content?.status === 'success') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        showSuccessToast('保存成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        showFailToast('保存失败') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取当前用户所在的学校 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getDetail = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const schoolId = (baseState.user.data.schoolInfos || []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .map((item) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return item.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .join(',') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await request.get(`/api-school/school/detail/${schoolId}`, {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolName = res.data.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolId = res.data.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolLogo = res.data.logo + '@base@tag=imgScale&w=570?t=' + +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 生成二维码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (state.type === 'teacher') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.url = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            location.origin + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '/orchestra-school/#/companion-teacher-register?id=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.data.id + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '&name=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.data.name + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '&t=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (state.type === 'manage') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          state.url = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            location.origin + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '/orchestra-school/#/manage-teacher-register?id=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.data.id + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '&name=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.data.name + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '&t=' + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取当前用户所在的学校 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getOrchestraDetail = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await request.get('/api-school/orchestra/detail/' + route.query.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolName = res.data.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolId = res.data.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.schoolLogo = res.data.schoolLogo + '@base@tag=imgScale&w=570?t=' + +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 生成二维码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.url = window.location.origin + '/orchestra-student/#/preApply?id=' + route.query.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (state.type === 'teacher') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        document.title = '乐团伴学指导注册' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (state.type === 'manage') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        document.title = '乐团管理老师注册' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (state.type === 'orchestra') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        document.title = '乐团报名' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { data } = await request.get('/api-school/open/paramConfig/queryByParamName', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          requestType: 'form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          params: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            paramName: 'qr_code_expire_hours' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        state.paramValue = data.paramValue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (state.type === 'orchestra') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getOrchestraDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getDetail() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class={[styles.saveShareImage]}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {state.type === 'teacher' && <Image src={teacherTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {state.type === 'manage' && <Image src={manageTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {state.type === 'orchestra' && <Image src={orchestraTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class={[styles.shareContaienr, state.type === 'orchestra' && styles.orchestraContainer]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {state.type !== 'orchestra' ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class={[styles.schoolLogo]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                src={state.schoolLogo} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                crossorigin="anonymous" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  objectFit: 'cover' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.schoolName}>{state.schoolName}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.shareType}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                邀请您成为 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {state.type === 'teacher' && '乐团伴学指导'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {state.type === 'manage' && '乐团管理老师'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.schoolName}>乐团报名</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.shareType}>{state.schoolName}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class={styles.qrcodeSection}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <OQrcode text={state.url} logoSize={'small'} size={'100%'} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class={styles.memo}>扫描上方二维码完成资料填写</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {state.type !== 'orchestra' && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class={styles.endTime}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              二维码将在<span>{state.paramValue}小时后</span>失效,请及时登记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class={styles.btnGroup}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Button class={styles.btn} round block onClick={onSaveImg}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <Icon name={iconImage} class={styles.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            保存图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Button class={styles.btn} round block onClick={onShare}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <Icon name={iconWeichat} class={styles.icon} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            分享到微信 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {!state.loading && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class={[styles.saveShareImage, styles.previewSection]} id="preview-container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {state.type === 'teacher' && <Image src={teacherTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {state.type === 'manage' && <Image src={manageTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {state.type === 'orchestra' && <Image src={orchestraTopBg} class={styles.topImage} />} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class={[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                styles.shareContaienr, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                state.type === 'orchestra' && styles.orchestraContainer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {state.type !== 'orchestra' ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    class={[styles.schoolLogo]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    src={state.schoolLogo} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    crossorigin="anonymous" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      objectFit: 'cover' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.schoolName}>{state.schoolName}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.shareType}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    邀请您成为 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {state.type === 'teacher' && '乐团伴学指导'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      {state.type === 'manage' && '乐团管理老师'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.schoolName}>乐团报名</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.shareType}>{state.schoolName}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.qrcodeSection}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <OQrcode text={state.url} logoSize={'small'} size={'100%'} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.memo}>扫描上方二维码完成资料填写</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {state.type !== 'orchestra' && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class={styles.endTime}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  二维码将在<span>{state.paramValue}小时后</span>失效,请及时登记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 |