| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- import ColSticky from '@/components/col-sticky'
- import { postMessage, promisefiyPostMessage } from '@/helpers/native-message'
- import request from '@/helpers/request'
- import { browser } from '@/helpers/utils'
- import { state } from '@/state'
- import { Button, Dialog, Toast } from 'vant'
- import { defineComponent } from 'vue'
- import styles from './index.module.less'
- import iconDefault from '@/common/images/icon_teacher.png'
- export const getAssetsHomeFile = (fileName: string) => {
- const path = `./images/${fileName}`
- const modules = import.meta.globEager('./images/*')
- return modules[path].default
- }
- export default defineComponent({
- name: 'shareLiveRoom',
- data() {
- return {
- query: {
- ...this.$route.query
- // id: 'COOLESHOW-TEMP-416-1663833046284',
- // userId: 416
- },
- liveRoom: {} as any, //直播间信息
- teacher: {} as any,
- student: {} as any, // 分享人信息
- wxStatus: false
- }
- },
- async mounted() {
- await this.getData()
- this.openApp()
- },
- methods: {
- // 获取直播信息和分享人信息
- async getData() {
- try {
- const { data } = await request.get(
- `/api-student/open/liveRoom/detail/${this.query.id}`,
- {
- params: {
- userId: this.query.userId
- }
- }
- )
- this.liveRoom = data
- this.teacher = data.teacher || {}
- this.student = data.student || {}
- } catch {}
- },
- // 分享进入
- openApp() {
- if (browser().weixin) {
- // 微信浏览器
- this.wxStatus = true
- return
- }
- if (!browser().isApp) {
- // 不是APP
- this.onWakeApp()
- return
- }
- if (browser().isApp) {
- if (state.platformType === 'STUDENT') {
- this.onJoinLiveRoom()
- } else if (state.platformType === 'TEACHER') {
- Dialog.alert({
- title: '提示',
- message: '请使用酷乐秀学生端扫码打开',
- confirmButtonColor: '#2dc7aa'
- }).then(() => {
- postMessage({ api: 'back' })
- })
- }
- }
- },
- //进入直播间
- onJoinLiveRoom() {
- postMessage({
- api: 'joinLiveRoom',
- content: {
- roomId: this.liveRoom.roomUid,
- teacherId: this.liveRoom.speakerId
- }
- })
- },
- // 唤醒APP
- onWakeApp() {
- const query = {
- action: 'app', // app, h5
- pageTag: 'liveRoom', // 页面标识
- params: JSON.stringify({ liveRoomId: this.query.id })
- }
- const iosStr = encodeURIComponent(JSON.stringify(query))
- if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
- // ColexiuStudent 唤起学生端
- // ColexiuTeacher 唤起老师端
- window.location.href = `ColexiuStudent://linkUrl=${iosStr}`
- } else if (/(Android)/i.test(navigator.userAgent)) {
- window.location.href = `colexiustudent://html:8888/SplashActivity?url=${iosStr}`
- } else {
- Toast('请用手机或移动设备打开')
- }
- }
- },
- render() {
- return (
- <div class={styles.container}>
- <div class={styles.wrap}>
- <div class={styles.userWrap}>
- <div class={styles.user}>
- <div class={styles.avator}>
- <img src={this.teacher.avatar || iconDefault} />
- </div>
- <div class={styles.tips}>
- <img src={getAssetsHomeFile('icon-live.png')} />
- <span>直播中</span>
- </div>
- </div>
- </div>
- <div class={styles.titleWrap}>
- <div class={styles.title}>{this.liveRoom.roomTitle}</div>
- <div class={styles.liveUser}>
- 主讲人:{this.teacher.realName || this.teacher.username}
- </div>
- </div>
- <div class={styles.content}>
- <div class={styles.top}>直播内容</div>
- <div>{this.liveRoom.liveRemark}</div>
- <div class={styles.comentWrap}>
- <div class={styles.contentAvator}>
- <img src={this.student.avatar || iconDefault} />
- </div>
- <div>
- <div class={styles.comentTitle}>
- 快进入老师的直播间一起围观~
- </div>
- <div class={styles.comentDes}>
- {this.teacher.realName || this.student.username} 为您推荐
- </div>
- </div>
- </div>
- </div>
- </div>
- <ColSticky position="bottom">
- <div class={['btnGroup']} style={{ paddingTop: '12px' }}>
- <Button
- color="linear-gradient(180deg, #59E5D5 0%, #2DC7AA 100%)"
- block
- round
- type="primary"
- onClick={this.openApp}
- >
- 开启酷乐秀进入直播间!
- </Button>
- </div>
- </ColSticky>
- {this.wxStatus && (
- <div
- class={styles.wxpopup}
- onClick={() => {
- this.wxStatus = false
- }}
- >
- <img src={getAssetsHomeFile('wx_bg.png')} alt="" />
- </div>
- )}
- </div>
- )
- }
- })
|