|
@@ -13,6 +13,7 @@ import { useEventListener, useWindowScroll } from '@vueuse/core';
|
|
|
import request from '@/helpers/request';
|
|
|
import MEmpty from '@/components/m-empty';
|
|
|
import { postMessage } from '@/helpers/native-message';
|
|
|
+import dayjs from 'dayjs';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'hot-music-more',
|
|
@@ -23,11 +24,16 @@ export default defineComponent({
|
|
|
loading: false,
|
|
|
finished: false,
|
|
|
searchPopup: false,
|
|
|
+ musicTagList: [] as any,
|
|
|
+ gradeList: [] as any,
|
|
|
+ musicCategory: [] as any,
|
|
|
musics: [] as any,
|
|
|
types: [] as any,
|
|
|
subjectList: [] as any,
|
|
|
sMSCI: '',
|
|
|
- sMII: ''
|
|
|
+ sMII: '',
|
|
|
+ sBookId: null as any,
|
|
|
+ sGrade: null as any
|
|
|
});
|
|
|
|
|
|
const musicForms = reactive({
|
|
@@ -35,6 +41,8 @@ export default defineComponent({
|
|
|
rows: 20,
|
|
|
status: 1,
|
|
|
keyword: '', // 关键词
|
|
|
+ grade: '',
|
|
|
+ bookVersionId: null as any,
|
|
|
musicSheetCategoriesId: '',
|
|
|
musicalInstrumentId: ''
|
|
|
});
|
|
@@ -148,9 +156,68 @@ export default defineComponent({
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+ const onChangeSearch = (type: string, list: any, search = false) => {
|
|
|
+ if (type === 'version') {
|
|
|
+ state.gradeList = list || [];
|
|
|
+ if (state.gradeList.length > 0) {
|
|
|
+ if (search) {
|
|
|
+ state.sGrade = state.gradeList[0].id;
|
|
|
+ } else {
|
|
|
+ musicForms.grade = state.gradeList[0].id;
|
|
|
+ }
|
|
|
+
|
|
|
+ state.musicCategory = state.gradeList[0].children || [];
|
|
|
+ if (state.musicCategory.length > 0) {
|
|
|
+ if (search) {
|
|
|
+ state.sMSCI = state.musicCategory[0].id;
|
|
|
+ } else {
|
|
|
+ musicForms.musicSheetCategoriesId = state.musicCategory[0].id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type === 'grade') {
|
|
|
+ state.musicCategory = list || [];
|
|
|
+ if (state.musicCategory.length > 0) {
|
|
|
+ // musicForms.musicSheetCategoriesId = state.musicCategory[0].id;
|
|
|
+ if (search) {
|
|
|
+ state.sMSCI = state.musicCategory[0].id;
|
|
|
+ } else {
|
|
|
+ musicForms.musicSheetCategoriesId = state.musicCategory[0].id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const getMusicTagTree = async () => {
|
|
|
+ try {
|
|
|
+ const { data } = await request.get(
|
|
|
+ '/edu-app/musicTag/tree?queryCategory=true'
|
|
|
+ );
|
|
|
+ console.log(data);
|
|
|
+ const result = data || [];
|
|
|
+ result.forEach((item: any) => {
|
|
|
+ if (item.children && item.children.length > 0) {
|
|
|
+ item.children.forEach((child: any) => {
|
|
|
+ child.children = child.categoriesList || [];
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ console.log(result, 'result');
|
|
|
+ state.musicTagList = result;
|
|
|
+ if (result.length > 0) {
|
|
|
+ musicForms.bookVersionId = result[0].id;
|
|
|
+ onChangeSearch('version', result[0].children);
|
|
|
+ }
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
// 判断是否有数据
|
|
|
const isSearch = computed(() => {
|
|
|
- return state.subjectList.length > 2 || state.types.length > 0
|
|
|
+ return state.subjectList.length > 2 ||
|
|
|
+ state.musicCategory.length > 0 ||
|
|
|
+ state.musicTagList.length > 0 ||
|
|
|
+ state.gradeList.length > 0
|
|
|
? true
|
|
|
: false;
|
|
|
});
|
|
@@ -164,9 +231,11 @@ export default defineComponent({
|
|
|
// state.background = 'transparent';
|
|
|
// }
|
|
|
// });
|
|
|
+
|
|
|
state.loading = true;
|
|
|
// await getSubjecList();
|
|
|
- await getMusicSheetCategories();
|
|
|
+ // await getMusicSheetCategories();
|
|
|
+ await getMusicTagTree();
|
|
|
getMusicList();
|
|
|
});
|
|
|
return () => (
|
|
@@ -223,6 +292,8 @@ export default defineComponent({
|
|
|
]}
|
|
|
onClick={() => {
|
|
|
state.sMSCI = musicForms.musicSheetCategoriesId;
|
|
|
+ state.sBookId = musicForms.bookVersionId;
|
|
|
+ state.sGrade = musicForms.grade;
|
|
|
state.sMII = musicForms.musicalInstrumentId;
|
|
|
state.searchPopup = true;
|
|
|
}}>
|
|
@@ -295,6 +366,8 @@ export default defineComponent({
|
|
|
onClick={() => {
|
|
|
musicForms.musicSheetCategoriesId = state.sMSCI;
|
|
|
musicForms.musicalInstrumentId = state.sMII;
|
|
|
+ musicForms.bookVersionId = state.sBookId;
|
|
|
+ musicForms.grade = state.sGrade;
|
|
|
state.searchPopup = false;
|
|
|
musicForms.page = 1;
|
|
|
state.musics = [];
|
|
@@ -328,7 +401,49 @@ export default defineComponent({
|
|
|
)}
|
|
|
*/}
|
|
|
|
|
|
- {state.types.length > 0 && (
|
|
|
+ {state.musicTagList.length > 0 && (
|
|
|
+ <>
|
|
|
+ <div class={styles.title}>版本</div>
|
|
|
+ <div class={styles.subjectContainer}>
|
|
|
+ {state.musicTagList.map((subject: any) => (
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.subjectItem,
|
|
|
+ subject.id === state.sBookId && styles.active
|
|
|
+ ]}
|
|
|
+ onClick={() => {
|
|
|
+ state.sBookId = subject.id;
|
|
|
+ onChangeSearch('version', subject.children, true);
|
|
|
+ }}>
|
|
|
+ {subject.name}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+
|
|
|
+ {state.gradeList.length > 0 && (
|
|
|
+ <>
|
|
|
+ <div class={styles.title}>年级</div>
|
|
|
+ <div class={styles.subjectContainer}>
|
|
|
+ {state.gradeList.map((subject: any) => (
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.subjectItem,
|
|
|
+ subject.id === state.sGrade && styles.active
|
|
|
+ ]}
|
|
|
+ onClick={() => {
|
|
|
+ state.sGrade = subject.id;
|
|
|
+ onChangeSearch('grade', subject.children, true);
|
|
|
+ }}>
|
|
|
+ {subject.name}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+
|
|
|
+ {state.musicCategory.length > 0 && (
|
|
|
<>
|
|
|
<div class={styles.title}>曲谱教材</div>
|
|
|
<div
|
|
@@ -336,26 +451,16 @@ export default defineComponent({
|
|
|
styles.subjectContainer,
|
|
|
styles.subjectContainerTwo
|
|
|
]}>
|
|
|
- <div
|
|
|
- class={[
|
|
|
- styles.subjectItem,
|
|
|
- state.sMSCI === '' && styles.active
|
|
|
- ]}
|
|
|
- onClick={() => {
|
|
|
- state.sMSCI = '';
|
|
|
- }}>
|
|
|
- 全部
|
|
|
- </div>
|
|
|
- {state.types.map((item: any) => (
|
|
|
+ {state.musicCategory.map((item: any) => (
|
|
|
<div
|
|
|
class={[
|
|
|
styles.subjectItem,
|
|
|
- item.value === state.sMSCI && styles.active
|
|
|
+ item.id === state.sMSCI && styles.active
|
|
|
]}
|
|
|
onClick={() => {
|
|
|
- state.sMSCI = item.value;
|
|
|
+ state.sMSCI = item.id;
|
|
|
}}>
|
|
|
- {item.text}
|
|
|
+ {item.name}
|
|
|
</div>
|
|
|
))}
|
|
|
</div>
|