|
@@ -1,8 +1,84 @@
|
|
|
-import { defineComponent } from "vue";
|
|
|
+import {
|
|
|
+ TransitionGroup,
|
|
|
+ defineComponent,
|
|
|
+ onMounted,
|
|
|
+ reactive,
|
|
|
+ ref
|
|
|
+} from 'vue';
|
|
|
+import styles from './index.module.less';
|
|
|
+import TheSearch from '@/components/TheSearch';
|
|
|
+import { NButton, NImage, NSpace } from 'naive-ui';
|
|
|
+import { getImage } from './image';
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
|
|
|
export default defineComponent({
|
|
|
- name: 'XiaokuAi',
|
|
|
- setup(){
|
|
|
- return () => <div></div>
|
|
|
- }
|
|
|
-})
|
|
|
+ name: 'XiaokuAi',
|
|
|
+ setup() {
|
|
|
+ const router = useRouter();
|
|
|
+ const data = reactive({
|
|
|
+ tags: [
|
|
|
+ { name: '全部', id: 0 },
|
|
|
+ { name: '人教版', id: 1 },
|
|
|
+ { name: '声部训练', id: 2 },
|
|
|
+ { name: '小曲目', id: 3 },
|
|
|
+ { name: '考级曲目', id: 4 }
|
|
|
+ ],
|
|
|
+ tagIndex: 0,
|
|
|
+ list: [
|
|
|
+ {
|
|
|
+ name: '一年级上册人教版(2013版)',
|
|
|
+ src: ''
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ return () => (
|
|
|
+ <div class={styles.container}>
|
|
|
+ <div class={styles.tools}>
|
|
|
+ <div class={styles.tags}>
|
|
|
+ <NSpace size={[24, 12]}>
|
|
|
+ {data.tags.map((item, index) => (
|
|
|
+ <NButton
|
|
|
+ round
|
|
|
+ secondary={data.tagIndex !== index}
|
|
|
+ type={data.tagIndex === index ? 'primary' : 'default'}
|
|
|
+ class={[
|
|
|
+ styles.tag,
|
|
|
+ data.tagIndex === index ? styles.active : ''
|
|
|
+ ]}
|
|
|
+ onClick={() => (data.tagIndex = index)}>
|
|
|
+ {item.name}
|
|
|
+ </NButton>
|
|
|
+ ))}
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
+ <TheSearch round />
|
|
|
+ </div>
|
|
|
+ <div class={styles.content}>
|
|
|
+ <NSpace size={[50, 40]}>
|
|
|
+ {new Array(30).fill(data.list[0]).map((item, index) => {
|
|
|
+ const _index = index > 5 ? index % 5 : index;
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ class={styles.item}
|
|
|
+ key={`item-${index}`}
|
|
|
+ onClick={() => router.push({ path: '/xiaoku-music' })}>
|
|
|
+ <div class={styles.cover}>
|
|
|
+ <div class={styles.itemImg}>
|
|
|
+ <NImage
|
|
|
+ objectFit="contain"
|
|
|
+ src={getImage(`${_index}.png`)}
|
|
|
+ lazy
|
|
|
+ previewDisabled={true}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={styles.itemName}>{item.name}</div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|