|  | @@ -7,8 +7,11 @@ import { useRouter } from 'vue-router';
 | 
	
		
			
				|  |  |  import MSearch from '@/components/m-search';
 | 
	
		
			
				|  |  |  import { Cell, Image, List, Popup } from 'vant';
 | 
	
		
			
				|  |  |  import iconPlayer from './images/icon-player.png';
 | 
	
		
			
				|  |  | -import { api_musicSheetPage } from '../co-ai/api';
 | 
	
		
			
				|  |  | +import { api_musicSheetCategoriesPage, api_musicSheetPage } from '../co-ai/api';
 | 
	
		
			
				|  |  | +import { state as baseState } from '@/state';
 | 
	
		
			
				|  |  |  import { useEventListener, useWindowScroll } from '@vueuse/core';
 | 
	
		
			
				|  |  | +import request from '@/helpers/request';
 | 
	
		
			
				|  |  | +import MEmpty from '@/components/m-empty';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: 'hot-music-more',
 | 
	
	
		
			
				|  | @@ -19,7 +22,10 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        loading: false,
 | 
	
		
			
				|  |  |        finished: false,
 | 
	
		
			
				|  |  |        searchPopup: false,
 | 
	
		
			
				|  |  | -      musics: [] as any
 | 
	
		
			
				|  |  | +      musics: [] as any,
 | 
	
		
			
				|  |  | +      types: [] as any,
 | 
	
		
			
				|  |  | +      subjectList: [] as any,
 | 
	
		
			
				|  |  | +      subjectItem: {} as any
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const musicForms = reactive({
 | 
	
	
		
			
				|  | @@ -46,9 +52,74 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        state.loading = false;
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const getSubjectList = async () => {};
 | 
	
		
			
				|  |  | +    const getSubjecList = async () => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        let subjectIds = baseState.user.data?.subjectId || '';
 | 
	
		
			
				|  |  | +        subjectIds = subjectIds.split(',');
 | 
	
		
			
				|  |  | +        const subjectId = subjectIds[0] || '';
 | 
	
		
			
				|  |  | +        const res = await request.post('/edu-app/subject/list', {
 | 
	
		
			
				|  |  | +          enableFlag: true,
 | 
	
		
			
				|  |  | +          delFlag: 0,
 | 
	
		
			
				|  |  | +          page: 1,
 | 
	
		
			
				|  |  | +          subjectId: subjectId || '',
 | 
	
		
			
				|  |  | +          rows: 999
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (subjectId) {
 | 
	
		
			
				|  |  | +          const result = res.data || [];
 | 
	
		
			
				|  |  | +          let tempSubjects: any = [];
 | 
	
		
			
				|  |  | +          result.forEach((item: any) => {
 | 
	
		
			
				|  |  | +            const instruments = item.instruments || [];
 | 
	
		
			
				|  |  | +            if (Number(subjectId) === item.id && instruments.length > 0) {
 | 
	
		
			
				|  |  | +              instruments.forEach((child: any, index: number) => {
 | 
	
		
			
				|  |  | +                tempSubjects.push({
 | 
	
		
			
				|  |  | +                  text: child.name,
 | 
	
		
			
				|  |  | +                  value: child.id,
 | 
	
		
			
				|  |  | +                  className: index === 0 ? 'selected' : ''
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (tempSubjects.length > 0) {
 | 
	
		
			
				|  |  | +            state.subjectList = [{ text: '全部', value: '' }, ...tempSubjects];
 | 
	
		
			
				|  |  | +            state.subjectItem = tempSubjects[0];
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // console.log(state.subjectList, state.subjectItem);
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 获取音乐教材列表 */
 | 
	
		
			
				|  |  | +    const getMusicSheetCategories = async () => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        let subjectIds = baseState.user.data?.subjectId || '';
 | 
	
		
			
				|  |  | +        subjectIds = subjectIds.split(',');
 | 
	
		
			
				|  |  | +        const subjectId = subjectIds[0] || '';
 | 
	
		
			
				|  |  | +        const res = await api_musicSheetCategoriesPage({
 | 
	
		
			
				|  |  | +          page: 1,
 | 
	
		
			
				|  |  | +          rows: 999,
 | 
	
		
			
				|  |  | +          subjectId: subjectId
 | 
	
		
			
				|  |  | +          // musicTagIds: route.query.musicTagId ? [route.query.musicTagId] : []
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        if (res.code === 200 && Array.isArray(res?.data?.rows)) {
 | 
	
		
			
				|  |  | +          const temp: any = [];
 | 
	
		
			
				|  |  | +          res.data.rows.forEach((item: any) => {
 | 
	
		
			
				|  |  | +            temp.push({
 | 
	
		
			
				|  |  | +              value: item.id,
 | 
	
		
			
				|  |  | +              text: item.name
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          state.types = temp;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } catch (error) {
 | 
	
		
			
				|  |  | +        console.log('🚀 ~ error:', error);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | +    onMounted(async () => {
 | 
	
		
			
				|  |  |        useEventListener(document, 'scroll', () => {
 | 
	
		
			
				|  |  |          const { y } = useWindowScroll();
 | 
	
		
			
				|  |  |          if (y.value > 32) {
 | 
	
	
		
			
				|  | @@ -57,6 +128,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            state.background = 'transparent';
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  | +      state.loading = true;
 | 
	
		
			
				|  |  | +      await getSubjecList();
 | 
	
		
			
				|  |  | +      await getMusicSheetCategories();
 | 
	
		
			
				|  |  |        getMusicList();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      return () => (
 | 
	
	
		
			
				|  | @@ -137,9 +211,9 @@ export default defineComponent({
 | 
	
		
			
				|  |  |            ))}
 | 
	
		
			
				|  |  |          </List>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        {/* {!data.skelete && data.list.length === 0 && (
 | 
	
		
			
				|  |  | -          <MEmpty description="暂无记录" />
 | 
	
		
			
				|  |  | -        )} */}
 | 
	
		
			
				|  |  | +        {!state.loading && state.musics.length === 0 && (
 | 
	
		
			
				|  |  | +          <MEmpty description="暂无曲谱" />
 | 
	
		
			
				|  |  | +        )}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <Popup position="bottom" round v-model:show={state.searchPopup}>
 | 
	
		
			
				|  |  |            <div class={styles.searchContainer}>
 | 
	
	
		
			
				|  | @@ -158,43 +232,39 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              <div class={styles.changeSubjectContainer}>
 | 
	
		
			
				|  |  | -              <div class={styles.title}>声部</div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -              <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | -                <div
 | 
	
		
			
				|  |  | -                  class={[
 | 
	
		
			
				|  |  | -                    styles.subjectItem
 | 
	
		
			
				|  |  | -                    // item.children.length > 0 && styles.arrow,
 | 
	
		
			
				|  |  | -                    // item.id === state.subjectValue && styles.active
 | 
	
		
			
				|  |  | -                  ]}>
 | 
	
		
			
				|  |  | -                  测试
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -                <div class={[styles.subjectItem, styles.arrow, styles.active]}>
 | 
	
		
			
				|  |  | -                  测试
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -              <div class={styles.title}>乐器</div>
 | 
	
		
			
				|  |  | -              <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | -                <div
 | 
	
		
			
				|  |  | -                  class={[
 | 
	
		
			
				|  |  | -                    styles.subjectItem
 | 
	
		
			
				|  |  | -                    // styles.active
 | 
	
		
			
				|  |  | -                  ]}>
 | 
	
		
			
				|  |  | -                  测试
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +              {state.subjectList.length > 2 && (
 | 
	
		
			
				|  |  | +                <>
 | 
	
		
			
				|  |  | +                  <div class={styles.title}>乐器</div>
 | 
	
		
			
				|  |  | +                  <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | +                    {state.subjectList.map((subject: any) => (
 | 
	
		
			
				|  |  | +                      <div
 | 
	
		
			
				|  |  | +                        class={[
 | 
	
		
			
				|  |  | +                          styles.subjectItem
 | 
	
		
			
				|  |  | +                          // styles.active
 | 
	
		
			
				|  |  | +                        ]}>
 | 
	
		
			
				|  |  | +                        {subject.text}
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    ))}
 | 
	
		
			
				|  |  | +                  </div>
 | 
	
		
			
				|  |  | +                </>
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -              <div class={styles.title}>曲谱教材</div>
 | 
	
		
			
				|  |  | -              <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | -                <div
 | 
	
		
			
				|  |  | -                  class={[
 | 
	
		
			
				|  |  | -                    styles.subjectItem
 | 
	
		
			
				|  |  | -                    // styles.active
 | 
	
		
			
				|  |  | -                  ]}>
 | 
	
		
			
				|  |  | -                  一年级上册
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | +              {state.types.length > 0 && (
 | 
	
		
			
				|  |  | +                <>
 | 
	
		
			
				|  |  | +                  <div class={styles.title}>曲谱教材</div>
 | 
	
		
			
				|  |  | +                  <div class={styles.subjectContainer}>
 | 
	
		
			
				|  |  | +                    {state.types.map((item: any) => (
 | 
	
		
			
				|  |  | +                      <div
 | 
	
		
			
				|  |  | +                        class={[
 | 
	
		
			
				|  |  | +                          styles.subjectItem
 | 
	
		
			
				|  |  | +                          // styles.active
 | 
	
		
			
				|  |  | +                        ]}>
 | 
	
		
			
				|  |  | +                        {item.text}
 | 
	
		
			
				|  |  | +                      </div>
 | 
	
		
			
				|  |  | +                    ))}
 | 
	
		
			
				|  |  | +                  </div>
 | 
	
		
			
				|  |  | +                </>
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  |          </Popup>
 |