|  | @@ -0,0 +1,171 @@
 | 
	
		
			
				|  |  | +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() {
 | 
	
		
			
				|  |  | +    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.userId
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 唤醒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>
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +})
 |