|  | @@ -13,6 +13,9 @@ import tagItem from '@/components/tagItem'
 | 
	
		
			
				|  |  |  import code from './images/code.png'
 | 
	
		
			
				|  |  |  import musicItem from './modals/musicItem'
 | 
	
		
			
				|  |  |  import request from '@/helpers/request'
 | 
	
		
			
				|  |  | +import { useRoute } from 'vue-router'
 | 
	
		
			
				|  |  | +import { getUserType } from '@/helpers/utils'
 | 
	
		
			
				|  |  | +import printJS from 'print-js'
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'muiscDetial',
 | 
	
		
			
				|  |  |    props: {
 | 
	
	
		
			
				|  | @@ -27,33 +30,75 @@ export default defineComponent({
 | 
	
		
			
				|  |  |      musicItem
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    setup(props, conent) {
 | 
	
		
			
				|  |  | +    const route = useRoute()
 | 
	
		
			
				|  |  |      const state = reactive({
 | 
	
		
			
				|  |  |        title: props.title,
 | 
	
		
			
				|  |  | +      id: route.query.id,
 | 
	
		
			
				|  |  |        subjectId: '',
 | 
	
		
			
				|  |  |        subjectList: [],
 | 
	
		
			
				|  |  |        tagList: [],
 | 
	
		
			
				|  |  |        teacherDetail: {} as any,
 | 
	
		
			
				|  |  | -      musicList:[]
 | 
	
		
			
				|  |  | +      musicDetail: {} as any,
 | 
	
		
			
				|  |  | +      musicList: [],
 | 
	
		
			
				|  |  | +      mp3Type: '',
 | 
	
		
			
				|  |  | +      activeRow: {} as any,
 | 
	
		
			
				|  |  | +      showCode: false,
 | 
	
		
			
				|  |  | +      userType: ''
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    const print = ref()
 | 
	
		
			
				|  |  |      const getMusicList = async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  | -        const res = await request.post('/api-website/open/music/sheet/list', {
 | 
	
		
			
				|  |  | -          data: {
 | 
	
		
			
				|  |  | -            albumStatus: 'PASS',
 | 
	
		
			
				|  |  | -            page: 1,
 | 
	
		
			
				|  |  | -            rows: 5,
 | 
	
		
			
				|  |  | -            state: 1
 | 
	
		
			
				|  |  | +        const res = await request.get(
 | 
	
		
			
				|  |  | +          `/api-website/open/music/sheet/detail/${state.id}`,
 | 
	
		
			
				|  |  | +          {}
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        state.musicDetail = res.data
 | 
	
		
			
				|  |  | +        state.musicList = res.data.teacher.musicSheetList
 | 
	
		
			
				|  |  | +        state.subjectList = res.data.background
 | 
	
		
			
				|  |  | +        state.mp3Type = res.data.audioType
 | 
	
		
			
				|  |  | +        state.activeRow = res.data.background[0]
 | 
	
		
			
				|  |  | +        state.subjectId = res.data.background[0].id
 | 
	
		
			
				|  |  | +        state.teacherDetail = res.data.teacher
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        console.log(e)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    const followVideo = async () => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const res = await request.get('/api-website/student/starOrUnStar', {
 | 
	
		
			
				|  |  | +          params: {
 | 
	
		
			
				|  |  | +            userId: state.teacherDetail.userId,
 | 
	
		
			
				|  |  | +            starStatus: state.teacherDetail.star ? 0 : 1
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          })
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        state.musicList = res.data.rows
 | 
	
		
			
				|  |  | +        getMusicList()
 | 
	
		
			
				|  |  | +        // state.otherVideoList = res.data
 | 
	
		
			
				|  |  |        } catch (e) {
 | 
	
		
			
				|  |  |          console.log(e)
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    onMounted(()=>{
 | 
	
		
			
				|  |  | +    const getDetail = (val: string | number) => {
 | 
	
		
			
				|  |  | +      state.id = val as string
 | 
	
		
			
				|  |  | +      getMusicList()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    onMounted(() => {
 | 
	
		
			
				|  |  | +      state.userType = getUserType()
 | 
	
		
			
				|  |  | +      state.showCode = state.userType == 'STUDENT' ? true : false
 | 
	
		
			
				|  |  |        getMusicList()
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    const printHander = () => {
 | 
	
		
			
				|  |  | +      printJS({
 | 
	
		
			
				|  |  | +        printable: 'containerPrint', // 元素id,不支持多个
 | 
	
		
			
				|  |  | +        type: 'html',
 | 
	
		
			
				|  |  | +        targetStyle: ['* '],
 | 
	
		
			
				|  |  | +        targetStyles: ['*'],
 | 
	
		
			
				|  |  | +        maxWidth: '', // 最大宽度,默认800,仅支持数字
 | 
	
		
			
				|  |  | +        style:
 | 
	
		
			
				|  |  | +          '@page{size:auto; margin: 0;}' +
 | 
	
		
			
				|  |  | +          '@media print { @page {size: landscape } }' // landscape  默认横向打印
 | 
	
		
			
				|  |  | +      } as any)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      return () => (
 | 
	
		
			
				|  |  |        <>
 | 
	
		
			
				|  |  |          <div class={classes.wall}></div>
 | 
	
	
		
			
				|  | @@ -68,45 +113,63 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                    placeholder="请选择声部"
 | 
	
		
			
				|  |  |                  >
 | 
	
		
			
				|  |  |                    {state.subjectList.map((item: any) => (
 | 
	
		
			
				|  |  | -                    <ElOption key={item.id} value={item.id} label={item.name} />
 | 
	
		
			
				|  |  | +                    <ElOption
 | 
	
		
			
				|  |  | +                      key={item.id}
 | 
	
		
			
				|  |  | +                      value={item.id}
 | 
	
		
			
				|  |  | +                      label={item.track}
 | 
	
		
			
				|  |  | +                    />
 | 
	
		
			
				|  |  |                    ))}
 | 
	
		
			
				|  |  |                  </ElSelect>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  | -              <div class={classes.titleRight}>
 | 
	
		
			
				|  |  | +              <div class={classes.titleRight}  onClick={() => printHander()}>
 | 
	
		
			
				|  |  |                  <img src={printIcon} alt="" />
 | 
	
		
			
				|  |  |                  <p>打印乐谱</p>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <div class={classes.musicContent}></div>
 | 
	
		
			
				|  |  | -            <div class={classes.showCode}>
 | 
	
		
			
				|  |  | -              <div class={classes.showCodeWrap}>
 | 
	
		
			
				|  |  | -                <img class={classes.close} src={iconClose} alt="" />
 | 
	
		
			
				|  |  | -                <img class={classes.code} src={code} alt="" />
 | 
	
		
			
				|  |  | -                <h2 class={classes.title}>酷乐秀</h2>
 | 
	
		
			
				|  |  | -                <p class={classes.conent}>扫码下载酷乐秀APP</p>
 | 
	
		
			
				|  |  | -                <p class={classes.subConent}>
 | 
	
		
			
				|  |  | -                  使用小酷Ai即可智能练习本首曲目哦!
 | 
	
		
			
				|  |  | -                </p>
 | 
	
		
			
				|  |  | -                <img src={banner} alt="" />
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +            <div class={classes.musicContent} id='containerPrint' ref="print">
 | 
	
		
			
				|  |  | +              123
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  | -            <colVideo
 | 
	
		
			
				|  |  | -              src=""
 | 
	
		
			
				|  |  | -              styleValue={{
 | 
	
		
			
				|  |  | -                height: '68px',
 | 
	
		
			
				|  |  | -                bacground: '#333'
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -              type={'audto'}
 | 
	
		
			
				|  |  | -              settings={['captions', 'quality', 'speed', 'loop']}
 | 
	
		
			
				|  |  | -              class={classes.audios}
 | 
	
		
			
				|  |  | -            ></colVideo>
 | 
	
		
			
				|  |  | +            {state.showCode ? (
 | 
	
		
			
				|  |  | +              <div class={classes.showCode}>
 | 
	
		
			
				|  |  | +                <div class={classes.showCodeWrap}>
 | 
	
		
			
				|  |  | +                  <img
 | 
	
		
			
				|  |  | +                    class={classes.close}
 | 
	
		
			
				|  |  | +                    src={iconClose}
 | 
	
		
			
				|  |  | +                    alt=""
 | 
	
		
			
				|  |  | +                    onClick={() => {
 | 
	
		
			
				|  |  | +                      state.showCode = false
 | 
	
		
			
				|  |  | +                    }}
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                  <img class={classes.code} src={code} alt="" />
 | 
	
		
			
				|  |  | +                  <h2 class={classes.title}>酷乐秀</h2>
 | 
	
		
			
				|  |  | +                  <p class={classes.conent}>扫码下载酷乐秀APP</p>
 | 
	
		
			
				|  |  | +                  <p class={classes.subConent}>
 | 
	
		
			
				|  |  | +                    使用小酷Ai即可智能练习本首曲目哦!
 | 
	
		
			
				|  |  | +                  </p>
 | 
	
		
			
				|  |  | +                  <img src={banner} alt="" />
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            ) : null}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            {state.mp3Type == 'MP3' ? (
 | 
	
		
			
				|  |  | +              <colVideo
 | 
	
		
			
				|  |  | +                src={state.activeRow.audioFileUrl}
 | 
	
		
			
				|  |  | +                styleValue={{
 | 
	
		
			
				|  |  | +                  height: '68px',
 | 
	
		
			
				|  |  | +                  bacground: '#333'
 | 
	
		
			
				|  |  | +                }}
 | 
	
		
			
				|  |  | +                type={'audto'}
 | 
	
		
			
				|  |  | +                settings={['captions', 'quality', 'speed', 'loop']}
 | 
	
		
			
				|  |  | +                class={classes.audios}
 | 
	
		
			
				|  |  | +              ></colVideo>
 | 
	
		
			
				|  |  | +            ) : null}
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |            <div class={classes.right}>
 | 
	
		
			
				|  |  |              <div class={classes.musicInfo}>
 | 
	
		
			
				|  |  | -              <h2>曲目:红莲华</h2>
 | 
	
		
			
				|  |  | +              <h2>曲目:{state.musicDetail.musicSheetName}</h2>
 | 
	
		
			
				|  |  |                <div class={classes.collect}>
 | 
	
		
			
				|  |  |                  <img src={start} class={classes.start} alt="" />
 | 
	
		
			
				|  |  | -                <p>321人收藏</p>
 | 
	
		
			
				|  |  | +                <p>{state.musicDetail.favoriteNum}人收藏</p>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |                <div class={classes.tagList}>
 | 
	
		
			
				|  |  |                  {state.tagList.map((item: any) => {
 | 
	
	
		
			
				|  | @@ -114,66 +177,79 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  })}
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |                <p class={classes.subTitle}>
 | 
	
		
			
				|  |  | -                作曲人:<span>草野华余子</span>
 | 
	
		
			
				|  |  | +                作曲人:<span>{state.musicDetail.composer}</span>
 | 
	
		
			
				|  |  |                </p>
 | 
	
		
			
				|  |  |                <p class={classes.subTitle}>
 | 
	
		
			
				|  |  | -                声部:<span>长笛、萨克斯、单簧管</span>
 | 
	
		
			
				|  |  | +                声部:<span>{state.musicDetail.subjectNames}</span>
 | 
	
		
			
				|  |  |                </p>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |              <div class={classes.btooom}>
 | 
	
		
			
				|  |  | -              <div class={classes.teacherInfo}>
 | 
	
		
			
				|  |  | -                <div class={classes.teacherHeadWrap}>
 | 
	
		
			
				|  |  | -                  <div class={classes.teacherHeadLeft}>
 | 
	
		
			
				|  |  | -                    <img
 | 
	
		
			
				|  |  | -                      src={
 | 
	
		
			
				|  |  | -                        state.teacherDetail.avatar
 | 
	
		
			
				|  |  | -                          ? state.teacherDetail.avatar
 | 
	
		
			
				|  |  | -                          : teacherHeader
 | 
	
		
			
				|  |  | -                      }
 | 
	
		
			
				|  |  | -                      alt=""
 | 
	
		
			
				|  |  | -                      class={classes.teacherHeader}
 | 
	
		
			
				|  |  | -                    />
 | 
	
		
			
				|  |  | -                    <div class={classes.teacherHeadInfo}>
 | 
	
		
			
				|  |  | -                      <div class={classes.teacherHeadName}>
 | 
	
		
			
				|  |  | -                        <span>{state.teacherDetail.username}</span>
 | 
	
		
			
				|  |  | -                        {state.teacherDetail.teacherType &&
 | 
	
		
			
				|  |  | -                        state.teacherDetail.teacherType.indexOf('ENTRY') ==
 | 
	
		
			
				|  |  | -                          -1 ? (
 | 
	
		
			
				|  |  | -                          ''
 | 
	
		
			
				|  |  | -                        ) : (
 | 
	
		
			
				|  |  | -                          <img
 | 
	
		
			
				|  |  | -                            src={teacher}
 | 
	
		
			
				|  |  | -                            class={classes.teacherIcon}
 | 
	
		
			
				|  |  | -                            alt=""
 | 
	
		
			
				|  |  | -                          />
 | 
	
		
			
				|  |  | -                        )}
 | 
	
		
			
				|  |  | -                        {state.teacherDetail.teacherType &&
 | 
	
		
			
				|  |  | -                        state.teacherDetail.teacherType.indexOf('MUSICIAN') ==
 | 
	
		
			
				|  |  | -                          -1 ? (
 | 
	
		
			
				|  |  | -                          ''
 | 
	
		
			
				|  |  | -                        ) : (
 | 
	
		
			
				|  |  | -                          <img
 | 
	
		
			
				|  |  | -                            src={musiceIcon}
 | 
	
		
			
				|  |  | -                            class={classes.teacherIcon}
 | 
	
		
			
				|  |  | -                            alt=""
 | 
	
		
			
				|  |  | -                          />
 | 
	
		
			
				|  |  | -                        )}
 | 
	
		
			
				|  |  | +              {state.teacherDetail.userId ? (
 | 
	
		
			
				|  |  | +                <div class={classes.teacherInfo}>
 | 
	
		
			
				|  |  | +                  <div class={classes.teacherHeadWrap}>
 | 
	
		
			
				|  |  | +                    <div class={classes.teacherHeadLeft}>
 | 
	
		
			
				|  |  | +                      <img
 | 
	
		
			
				|  |  | +                        src={
 | 
	
		
			
				|  |  | +                          state.teacherDetail.avatar
 | 
	
		
			
				|  |  | +                            ? state.teacherDetail.avatar
 | 
	
		
			
				|  |  | +                            : teacherHeader
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        alt=""
 | 
	
		
			
				|  |  | +                        class={classes.teacherHeader}
 | 
	
		
			
				|  |  | +                      />
 | 
	
		
			
				|  |  | +                      <div class={classes.teacherHeadInfo}>
 | 
	
		
			
				|  |  | +                        <div class={classes.teacherHeadName}>
 | 
	
		
			
				|  |  | +                          <span>{state.teacherDetail.userName}</span>
 | 
	
		
			
				|  |  | +                          {!state.teacherDetail.entryFlag ? (
 | 
	
		
			
				|  |  | +                            ''
 | 
	
		
			
				|  |  | +                          ) : (
 | 
	
		
			
				|  |  | +                            <img
 | 
	
		
			
				|  |  | +                              src={teacher}
 | 
	
		
			
				|  |  | +                              class={classes.teacherIcon}
 | 
	
		
			
				|  |  | +                              alt=""
 | 
	
		
			
				|  |  | +                            />
 | 
	
		
			
				|  |  | +                          )}
 | 
	
		
			
				|  |  | +                          {!state.teacherDetail.musicianFlag ? (
 | 
	
		
			
				|  |  | +                            ''
 | 
	
		
			
				|  |  | +                          ) : (
 | 
	
		
			
				|  |  | +                            <img
 | 
	
		
			
				|  |  | +                              src={musiceIcon}
 | 
	
		
			
				|  |  | +                              class={classes.teacherIcon}
 | 
	
		
			
				|  |  | +                              alt=""
 | 
	
		
			
				|  |  | +                            />
 | 
	
		
			
				|  |  | +                          )}
 | 
	
		
			
				|  |  | +                        </div>
 | 
	
		
			
				|  |  | +                        <p class={classes.fens}>
 | 
	
		
			
				|  |  | +                          粉丝 <span>{state.teacherDetail.fansNum}</span>
 | 
	
		
			
				|  |  | +                        </p>
 | 
	
		
			
				|  |  |                        </div>
 | 
	
		
			
				|  |  | -                      <p class={classes.fens}>
 | 
	
		
			
				|  |  | -                        粉丝 <span>{state.teacherDetail.fansNum}</span>
 | 
	
		
			
				|  |  | -                      </p>
 | 
	
		
			
				|  |  |                      </div>
 | 
	
		
			
				|  |  | +                    {state.userType == 'STUDENT' ? (
 | 
	
		
			
				|  |  | +                      <div
 | 
	
		
			
				|  |  | +                        class={[
 | 
	
		
			
				|  |  | +                          classes.teacherHeadRight,
 | 
	
		
			
				|  |  | +                          state.teacherDetail.star ? classes.isStart : ''
 | 
	
		
			
				|  |  | +                        ]}
 | 
	
		
			
				|  |  | +                        onClick={() => followVideo()}
 | 
	
		
			
				|  |  | +                      >
 | 
	
		
			
				|  |  | +                        {state.teacherDetail.star ? '已关注' : '关注'}
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    ) : null}
 | 
	
		
			
				|  |  |                    </div>
 | 
	
		
			
				|  |  | -                  <div class={classes.teacherHeadRight}>关注</div>
 | 
	
		
			
				|  |  |                  </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +              ) : null}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                <div class={classes.otherMusic}>
 | 
	
		
			
				|  |  |                  <h2>Ta的曲谱</h2>
 | 
	
		
			
				|  |  |                  <div class={classes.otherMusicList}>
 | 
	
		
			
				|  |  | -                  {state.musicList.map(item=>{
 | 
	
		
			
				|  |  | -                    return  <musicItem item={item}></musicItem>
 | 
	
		
			
				|  |  | +                  {state.musicList.map(item => {
 | 
	
		
			
				|  |  | +                    return (
 | 
	
		
			
				|  |  | +                      <musicItem
 | 
	
		
			
				|  |  | +                        item={item}
 | 
	
		
			
				|  |  | +                        onMusicDetail={val => getDetail(val)}
 | 
	
		
			
				|  |  | +                      ></musicItem>
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  |                    })}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  </div>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </div>
 |