|  | @@ -1,4 +1,4 @@
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, reactive } from 'vue';
 | 
	
		
			
				|  |  | +import { computed, defineComponent, onMounted, reactive } from 'vue';
 | 
	
		
			
				|  |  |  import styles from './index.module.less';
 | 
	
		
			
				|  |  |  import { browser } from '@/helpers/utils';
 | 
	
		
			
				|  |  |  import MSticky from '@/components/m-sticky';
 | 
	
	
		
			
				|  | @@ -12,6 +12,7 @@ import { state as baseState } from '@/state';
 | 
	
		
			
				|  |  |  import { useEventListener, useWindowScroll } from '@vueuse/core';
 | 
	
		
			
				|  |  |  import request from '@/helpers/request';
 | 
	
		
			
				|  |  |  import MEmpty from '@/components/m-empty';
 | 
	
		
			
				|  |  | +import { postMessage } from '@/helpers/native-message';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'hot-music-more',
 | 
	
	
		
			
				|  | @@ -25,7 +26,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        musics: [] as any,
 | 
	
		
			
				|  |  |        types: [] as any,
 | 
	
		
			
				|  |  |        subjectList: [] as any,
 | 
	
		
			
				|  |  | -      subjectItem: {} as any
 | 
	
		
			
				|  |  | +      sMSCI: '',
 | 
	
		
			
				|  |  | +      sMII: ''
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const musicForms = reactive({
 | 
	
	
		
			
				|  | @@ -33,7 +35,8 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        rows: 20,
 | 
	
		
			
				|  |  |        status: 1,
 | 
	
		
			
				|  |  |        keyword: '', // 关键词
 | 
	
		
			
				|  |  | -      musicSheetCategoriesId: ''
 | 
	
		
			
				|  |  | +      musicSheetCategoriesId: '',
 | 
	
		
			
				|  |  | +      musicalInstrumentId: ''
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const getMusicList = async () => {
 | 
	
	
		
			
				|  | @@ -83,7 +86,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            if (tempSubjects.length > 0) {
 | 
	
		
			
				|  |  |              state.subjectList = [{ text: '全部', value: '' }, ...tempSubjects];
 | 
	
		
			
				|  |  | -            state.subjectItem = tempSubjects[0];
 | 
	
		
			
				|  |  | +            // musicForms.musicalInstrumentId = tempSubjects[0].value;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // console.log(state.subjectList, state.subjectItem);
 | 
	
	
		
			
				|  | @@ -119,6 +122,28 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const onDetail = (item: any) => {
 | 
	
		
			
				|  |  | +      let src = `${location.origin}/instrument?id=${item?.id}&showGuide=true`;
 | 
	
		
			
				|  |  | +      postMessage({
 | 
	
		
			
				|  |  | +        api: 'openAccompanyWebView',
 | 
	
		
			
				|  |  | +        content: {
 | 
	
		
			
				|  |  | +          url: src,
 | 
	
		
			
				|  |  | +          orientation: 0,
 | 
	
		
			
				|  |  | +          isHideTitle: true,
 | 
	
		
			
				|  |  | +          statusBarTextColor: false,
 | 
	
		
			
				|  |  | +          isOpenLight: true,
 | 
	
		
			
				|  |  | +          c_orientation: 0 // 0 横屏 1 竖屏
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 判断是否有数据
 | 
	
		
			
				|  |  | +    const isSearch = computed(() => {
 | 
	
		
			
				|  |  | +      return state.subjectList.length > 2 && state.types.length > 0
 | 
	
		
			
				|  |  | +        ? true
 | 
	
		
			
				|  |  | +        : false;
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      onMounted(async () => {
 | 
	
		
			
				|  |  |        useEventListener(document, 'scroll', () => {
 | 
	
		
			
				|  |  |          const { y } = useWindowScroll();
 | 
	
	
		
			
				|  | @@ -169,17 +194,22 @@ export default defineComponent({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            <MSearch background={state.background}>
 | 
	
		
			
				|  |  |              {{
 | 
	
		
			
				|  |  | -              left: () => (
 | 
	
		
			
				|  |  | -                <div
 | 
	
		
			
				|  |  | -                  class={[
 | 
	
		
			
				|  |  | -                    styles.searchContent,
 | 
	
		
			
				|  |  | -                    state.searchPopup && styles.active
 | 
	
		
			
				|  |  | -                  ]}
 | 
	
		
			
				|  |  | -                  onClick={() => (state.searchPopup = true)}>
 | 
	
		
			
				|  |  | -                  <span>筛选</span>
 | 
	
		
			
				|  |  | -                  <i></i>
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              )
 | 
	
		
			
				|  |  | +              left: () =>
 | 
	
		
			
				|  |  | +                isSearch.value && (
 | 
	
		
			
				|  |  | +                  <div
 | 
	
		
			
				|  |  | +                    class={[
 | 
	
		
			
				|  |  | +                      styles.searchContent,
 | 
	
		
			
				|  |  | +                      state.searchPopup && styles.active
 | 
	
		
			
				|  |  | +                    ]}
 | 
	
		
			
				|  |  | +                    onClick={() => {
 | 
	
		
			
				|  |  | +                      state.sMSCI = musicForms.musicSheetCategoriesId;
 | 
	
		
			
				|  |  | +                      state.sMII = musicForms.musicalInstrumentId;
 | 
	
		
			
				|  |  | +                      state.searchPopup = true;
 | 
	
		
			
				|  |  | +                    }}>
 | 
	
		
			
				|  |  | +                    <span>筛选</span>
 | 
	
		
			
				|  |  | +                    <i></i>
 | 
	
		
			
				|  |  | +                  </div>
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  |              }}
 | 
	
		
			
				|  |  |            </MSearch>
 | 
	
		
			
				|  |  |          </MSticky>
 | 
	
	
		
			
				|  | @@ -189,30 +219,39 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            finished={state.finished}
 | 
	
		
			
				|  |  |            finishedText=" "
 | 
	
		
			
				|  |  |            onLoad={getMusicList}
 | 
	
		
			
				|  |  | -          immediateCheck={false}
 | 
	
		
			
				|  |  | -          class={styles.musicList}>
 | 
	
		
			
				|  |  | -          {state.musics.map((item: any) => (
 | 
	
		
			
				|  |  | -            <Cell class={styles.musicItem} border={false} center>
 | 
	
		
			
				|  |  | -              {{
 | 
	
		
			
				|  |  | -                icon: () => (
 | 
	
		
			
				|  |  | -                  <Image class={styles.musicImg} src={item.titleImg} />
 | 
	
		
			
				|  |  | -                ),
 | 
	
		
			
				|  |  | -                title: () => (
 | 
	
		
			
				|  |  | -                  <div class={styles.musicContnet}>
 | 
	
		
			
				|  |  | -                    <h2>{item.musicSheetName}</h2>
 | 
	
		
			
				|  |  | -                    {item.composer && <p>{item.composer}</p>}
 | 
	
		
			
				|  |  | -                  </div>
 | 
	
		
			
				|  |  | -                ),
 | 
	
		
			
				|  |  | -                'right-icon': () => (
 | 
	
		
			
				|  |  | -                  <Image class={styles.musicPlayIcon} src={iconPlayer} />
 | 
	
		
			
				|  |  | -                )
 | 
	
		
			
				|  |  | -              }}
 | 
	
		
			
				|  |  | -            </Cell>
 | 
	
		
			
				|  |  | -          ))}
 | 
	
		
			
				|  |  | +          immediateCheck={false}>
 | 
	
		
			
				|  |  | +          {state.musics.length > 0 && (
 | 
	
		
			
				|  |  | +            <div class={styles.musicList}>
 | 
	
		
			
				|  |  | +              {state.musics.map((item: any) => (
 | 
	
		
			
				|  |  | +                <Cell
 | 
	
		
			
				|  |  | +                  class={styles.musicItem}
 | 
	
		
			
				|  |  | +                  border={false}
 | 
	
		
			
				|  |  | +                  center
 | 
	
		
			
				|  |  | +                  onClick={(item: any) => onDetail(item)}>
 | 
	
		
			
				|  |  | +                  {{
 | 
	
		
			
				|  |  | +                    icon: () => (
 | 
	
		
			
				|  |  | +                      <Image class={styles.musicImg} src={item.titleImg} />
 | 
	
		
			
				|  |  | +                    ),
 | 
	
		
			
				|  |  | +                    title: () => (
 | 
	
		
			
				|  |  | +                      <div class={styles.musicContnet}>
 | 
	
		
			
				|  |  | +                        <h2>{item.musicSheetName}</h2>
 | 
	
		
			
				|  |  | +                        {item.composer && <p>{item.composer}</p>}
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    ),
 | 
	
		
			
				|  |  | +                    'right-icon': () => (
 | 
	
		
			
				|  |  | +                      <Image class={styles.musicPlayIcon} src={iconPlayer} />
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                  }}
 | 
	
		
			
				|  |  | +                </Cell>
 | 
	
		
			
				|  |  | +              ))}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          )}
 | 
	
		
			
				|  |  |          </List>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          {!state.loading && state.musics.length === 0 && (
 | 
	
		
			
				|  |  | -          <MEmpty description="暂无曲谱" />
 | 
	
		
			
				|  |  | +          <div class={styles.emptyGroup}>
 | 
	
		
			
				|  |  | +            <MEmpty description="暂无曲谱" />
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  |          )}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <Popup position="bottom" round v-model:show={state.searchPopup}>
 | 
	
	
		
			
				|  | @@ -226,7 +265,15 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                <span>筛选</span>
 | 
	
		
			
				|  |  |                <span
 | 
	
		
			
				|  |  |                  class={styles.confirm}
 | 
	
		
			
				|  |  | -                onClick={() => (state.searchPopup = false)}>
 | 
	
		
			
				|  |  | +                onClick={() => {
 | 
	
		
			
				|  |  | +                  musicForms.musicSheetCategoriesId = state.sMSCI;
 | 
	
		
			
				|  |  | +                  musicForms.musicalInstrumentId = state.sMII;
 | 
	
		
			
				|  |  | +                  state.searchPopup = false;
 | 
	
		
			
				|  |  | +                  musicForms.page = 1;
 | 
	
		
			
				|  |  | +                  state.musics = [];
 | 
	
		
			
				|  |  | +                  state.finished = false;
 | 
	
		
			
				|  |  | +                  getMusicList();
 | 
	
		
			
				|  |  | +                }}>
 | 
	
		
			
				|  |  |                  确定
 | 
	
		
			
				|  |  |                </span>
 | 
	
		
			
				|  |  |              </div>
 | 
	
	
		
			
				|  | @@ -239,9 +286,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                      {state.subjectList.map((subject: any) => (
 | 
	
		
			
				|  |  |                        <div
 | 
	
		
			
				|  |  |                          class={[
 | 
	
		
			
				|  |  | -                          styles.subjectItem
 | 
	
		
			
				|  |  | -                          // styles.active
 | 
	
		
			
				|  |  | -                        ]}>
 | 
	
		
			
				|  |  | +                          styles.subjectItem,
 | 
	
		
			
				|  |  | +                          subject.value === state.sMII && styles.active
 | 
	
		
			
				|  |  | +                        ]}
 | 
	
		
			
				|  |  | +                        onClick={() => {
 | 
	
		
			
				|  |  | +                          state.sMII = subject.value;
 | 
	
		
			
				|  |  | +                        }}>
 | 
	
		
			
				|  |  |                          {subject.text}
 | 
	
		
			
				|  |  |                        </div>
 | 
	
		
			
				|  |  |                      ))}
 | 
	
	
		
			
				|  | @@ -253,12 +303,25 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                  <>
 | 
	
		
			
				|  |  |                    <div class={styles.title}>曲谱教材</div>
 | 
	
		
			
				|  |  |                    <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | +                    <div
 | 
	
		
			
				|  |  | +                      class={[
 | 
	
		
			
				|  |  | +                        styles.subjectItem,
 | 
	
		
			
				|  |  | +                        state.sMSCI === '' && styles.active
 | 
	
		
			
				|  |  | +                      ]}
 | 
	
		
			
				|  |  | +                      onClick={() => {
 | 
	
		
			
				|  |  | +                        state.sMSCI = '';
 | 
	
		
			
				|  |  | +                      }}>
 | 
	
		
			
				|  |  | +                      全部
 | 
	
		
			
				|  |  | +                    </div>
 | 
	
		
			
				|  |  |                      {state.types.map((item: any) => (
 | 
	
		
			
				|  |  |                        <div
 | 
	
		
			
				|  |  |                          class={[
 | 
	
		
			
				|  |  | -                          styles.subjectItem
 | 
	
		
			
				|  |  | -                          // styles.active
 | 
	
		
			
				|  |  | -                        ]}>
 | 
	
		
			
				|  |  | +                          styles.subjectItem,
 | 
	
		
			
				|  |  | +                          item.value === state.sMSCI && styles.active
 | 
	
		
			
				|  |  | +                        ]}
 | 
	
		
			
				|  |  | +                        onClick={() => {
 | 
	
		
			
				|  |  | +                          state.sMSCI = item.value;
 | 
	
		
			
				|  |  | +                        }}>
 | 
	
		
			
				|  |  |                          {item.text}
 | 
	
		
			
				|  |  |                        </div>
 | 
	
		
			
				|  |  |                      ))}
 |