|  | @@ -1,93 +1,52 @@
 | 
	
		
			
				|  |  | -import { onBeforeUnmount, onMounted, ref, watch } from 'vue'
 | 
	
		
			
				|  |  | -import appState from '/src/state'
 | 
	
		
			
				|  |  | -import detailState from '/src/pages/detail/state'
 | 
	
		
			
				|  |  | -import runtime, * as RuntimeUtils from '/src/pages/detail/runtime'
 | 
	
		
			
				|  |  | -import { IPostMessage, listenerMessage, removeListenerMessage } from '/src/helpers/native-message'
 | 
	
		
			
				|  |  | -import { permissionPopup } from '/src/subpages/colexiu/popups/permission/permission'
 | 
	
		
			
				|  |  | -import { browser } from '/src/helpers/utils'
 | 
	
		
			
				|  |  | -import { OrderStatus } from '../index.d'
 | 
	
		
			
				|  |  | -import { useClientType, useOriginSearch } from '.'
 | 
	
		
			
				|  |  | +import { browser, getDevelopment } from '/src/helpers/utils'
 | 
	
		
			
				|  |  | +import { userInfo } from '../App'
 | 
	
		
			
				|  |  | +import { Dialog } from 'vant'
 | 
	
		
			
				|  |  | +import { postMessage } from '/src/helpers/native-message'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const browserInfo = browser()
 | 
	
		
			
				|  |  | +/** 去会员中心 */
 | 
	
		
			
				|  |  | +const gotoMemberCenter = () => {
 | 
	
		
			
				|  |  | +  const isDev = getDevelopment()
 | 
	
		
			
				|  |  | +  const url = isDev
 | 
	
		
			
				|  |  | +    ? `https://ponline.colexiu.com/orchestra-student/#/memberCenter`
 | 
	
		
			
				|  |  | +    : `${location.origin}/orchestra-student/#/memberCenter`
 | 
	
		
			
				|  |  | +  postMessage({
 | 
	
		
			
				|  |  | +    api: 'back',
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +  postMessage({
 | 
	
		
			
				|  |  | +    api: 'openWebView',
 | 
	
		
			
				|  |  | +    content: {
 | 
	
		
			
				|  |  | +      url: url,
 | 
	
		
			
				|  |  | +      orientation: 1,
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 效验是否开通会员
 | 
	
		
			
				|  |  | - * @param type VIP收费或者单曲收费类型
 | 
	
		
			
				|  |  | - * @param status 订单状态
 | 
	
		
			
				|  |  | - * @param play 后端验证是否可以播放
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -export const useFee = (type?: string, status?: OrderStatus) => {
 | 
	
		
			
				|  |  | -  // console.log('maxtime', type, status)
 | 
	
		
			
				|  |  | -  const orderStatus: OrderStatus = detailState.activeDetail?.orderStatus || status
 | 
	
		
			
				|  |  | -  const search = useOriginSearch()
 | 
	
		
			
				|  |  | -  const setting = (search.setting || {}) as any
 | 
	
		
			
				|  |  | -  /** 后端返回状态优先级最高 */
 | 
	
		
			
				|  |  | -  if (detailState.activeDetail?.play || setting.feeType === 'FREE') {
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  const clientType = useClientType()
 | 
	
		
			
				|  |  | -  /** web端无需验证权限 */
 | 
	
		
			
				|  |  | -  if (!browserInfo.isApp && clientType === 'web') {
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  /** VIP收费并且时长大于0天 */
 | 
	
		
			
				|  |  | -  if (type?.includes('VIP') && appState.user?.membershipDays > 0) {
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  /** 单曲收费并且订单状态已付费 */
 | 
	
		
			
				|  |  | -  if (type?.includes('CHARGE') && orderStatus === 'PAID') {
 | 
	
		
			
				|  |  | -    return
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  /** 获取收费时间 */
 | 
	
		
			
				|  |  | -  const endtime = ref(-1)
 | 
	
		
			
				|  |  | -  const lastTime = detailState.times[detailState.times.length - 1]
 | 
	
		
			
				|  |  | -  if (lastTime) {
 | 
	
		
			
				|  |  | -    endtime.value = Math.max(10, lastTime.time * detailState.freeRate)
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  // if (lastTime && lastTime.noteElement.sourceMeasure.MeasureNumberXML > 5) {
 | 
	
		
			
				|  |  | -  //   for (const time of detailState.times) {
 | 
	
		
			
				|  |  | -  //     if (time.noteElement.sourceMeasure.MeasureNumberXML === 5) {
 | 
	
		
			
				|  |  | -  //       endtime.value = time.time
 | 
	
		
			
				|  |  | -  //       break
 | 
	
		
			
				|  |  | -  //     }
 | 
	
		
			
				|  |  | -  //   }
 | 
	
		
			
				|  |  | -  // }
 | 
	
		
			
				|  |  | -  const onTimeUpdate = (evt?: IPostMessage) => {
 | 
	
		
			
				|  |  | -    const orderStatus: OrderStatus = detailState.activeDetail?.orderStatus || status
 | 
	
		
			
				|  |  | -    if (clientType == 'web') {
 | 
	
		
			
				|  |  | -      return 
 | 
	
		
			
				|  |  | +export const useFee = () => {
 | 
	
		
			
				|  |  | +  const browserInfo = browser()
 | 
	
		
			
				|  |  | +  // 学生端验证
 | 
	
		
			
				|  |  | +  if (browserInfo.isStudent) {
 | 
	
		
			
				|  |  | +    //学生有待激活会员
 | 
	
		
			
				|  |  | +    if (!userInfo.membershipDays && userInfo.purchaseMemberRecord) {
 | 
	
		
			
				|  |  | +      Dialog.alert({
 | 
	
		
			
				|  |  | +        title: '温馨提示',
 | 
	
		
			
				|  |  | +        message: '您的团练宝暂未激活,请激活后使用',
 | 
	
		
			
				|  |  | +      }).then((val) => {
 | 
	
		
			
				|  |  | +        gotoMemberCenter()
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (endtime.value >= 0 && runtime.currentTimeNum >= endtime.value) {
 | 
	
		
			
				|  |  | -      if (type?.includes('CHARGE') && type.includes('VIP')) { // 会员和单曲购买
 | 
	
		
			
				|  |  | -        if(orderStatus !== 'PAID' && !(appState.user?.membershipDays > 0)) {
 | 
	
		
			
				|  |  | -          permissionPopup.active = 'memberAndDemand'
 | 
	
		
			
				|  |  | -          permissionPopup.show = true
 | 
	
		
			
				|  |  | -          RuntimeUtils.pause()
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      } else if (type === 'CHARGE') { // 单曲购买
 | 
	
		
			
				|  |  | -        if (orderStatus !== 'PAID') {
 | 
	
		
			
				|  |  | -          permissionPopup.active = 'demand'
 | 
	
		
			
				|  |  | -          permissionPopup.show = true
 | 
	
		
			
				|  |  | -          RuntimeUtils.pause()
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      } else if (type === 'VIP') { // 会员
 | 
	
		
			
				|  |  | -        if (!(appState.user?.membershipDays > 0)) {
 | 
	
		
			
				|  |  | -          permissionPopup.active = 'member'
 | 
	
		
			
				|  |  | -          permissionPopup.show = true
 | 
	
		
			
				|  |  | -          RuntimeUtils.pause()
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +    //学生没有会员
 | 
	
		
			
				|  |  | +    if (!userInfo.vipMember) {
 | 
	
		
			
				|  |  | +      Dialog.alert({
 | 
	
		
			
				|  |  | +        title: '温馨提示',
 | 
	
		
			
				|  |  | +        message: '您暂未开通团练宝,请开通后使用',
 | 
	
		
			
				|  |  | +      }).then(() => {
 | 
	
		
			
				|  |  | +        gotoMemberCenter()
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // runtime.audiosInstance.event.on('timeupdate', onTimeUpdate)
 | 
	
		
			
				|  |  | -  // listenerMessage('cloudTimeUpdae', onTimeUpdate)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // onBeforeUnmount(() => {
 | 
	
		
			
				|  |  | -  //   runtime.audiosInstance.event.off('timeupdate', onTimeUpdate)
 | 
	
		
			
				|  |  | -  //   removeListenerMessage('cloudTimeUpdae', onTimeUpdate)
 | 
	
		
			
				|  |  | -  // })
 | 
	
		
			
				|  |  |  }
 |