|
@@ -1,5 +1,6 @@
|
|
|
import {
|
|
|
TransitionGroup,
|
|
|
+ computed,
|
|
|
defineComponent,
|
|
|
onMounted,
|
|
|
reactive,
|
|
@@ -8,8 +9,8 @@ import {
|
|
|
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';
|
|
|
+import mock from './mock.json';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'XiaokuAi',
|
|
@@ -17,46 +18,75 @@ export default defineComponent({
|
|
|
const router = useRouter();
|
|
|
const data = reactive({
|
|
|
tags: [
|
|
|
- { name: '全部', id: 0 },
|
|
|
- { name: '人教版', id: 1 },
|
|
|
- { name: '声部训练', id: 2 },
|
|
|
- { name: '小曲目', id: 3 },
|
|
|
- { name: '考级曲目', id: 4 }
|
|
|
+ { name: '全部', id: '0' },
|
|
|
+ { name: '人教版', id: '1' },
|
|
|
+ { name: '人音版', id: '2' }
|
|
|
],
|
|
|
- tagIndex: 0,
|
|
|
- list: [
|
|
|
- {
|
|
|
- name: '一年级上册人教版(2013版)',
|
|
|
- src: ''
|
|
|
- }
|
|
|
- ]
|
|
|
+ tagIndex: '0',
|
|
|
+ list: mock.list
|
|
|
+ });
|
|
|
+ const _list = computed(() => {
|
|
|
+ if (data.tagIndex === '0') return data.list;
|
|
|
+ return data.list.filter(item => data.tagIndex === item.category);
|
|
|
});
|
|
|
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}
|
|
|
+ <div class={styles.tagWrap}>
|
|
|
+ <div class={styles.tags}>
|
|
|
+ <NSpace size={[24, 12]}>
|
|
|
+ <NButton quaternary disabled>
|
|
|
+ 类型
|
|
|
+ </NButton>
|
|
|
+ {data.tags.map((item, index) => (
|
|
|
+ <NButton
|
|
|
+ round
|
|
|
+ secondary={data.tagIndex !== item.id}
|
|
|
+ type={data.tagIndex === item.id ? 'primary' : 'default'}
|
|
|
+ class={[
|
|
|
+ styles.tag,
|
|
|
+ data.tagIndex === item.id ? styles.active : ''
|
|
|
+ ]}
|
|
|
+ onClick={() => (data.tagIndex = item.id)}>
|
|
|
+ {item.name}
|
|
|
+ </NButton>
|
|
|
+ ))}
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
+ <div class={styles.tags}>
|
|
|
+ <NSpace size={[24, 12]}>
|
|
|
+ <NButton quaternary disabled>
|
|
|
+ 学段
|
|
|
+ </NButton>
|
|
|
+ <NButton round secondary type={'default'}>
|
|
|
+ 小学
|
|
|
+ </NButton>
|
|
|
+ <NButton round secondary type={'default'}>
|
|
|
+ 初中
|
|
|
+ </NButton>
|
|
|
+ <NButton round secondary type={'default'}>
|
|
|
+ 高中
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
+ <div class={styles.tags}>
|
|
|
+ <NSpace size={[24, 12]}>
|
|
|
+ <NButton quaternary disabled>
|
|
|
+ 年级
|
|
|
</NButton>
|
|
|
- ))}
|
|
|
- </NSpace>
|
|
|
+ {['一', '二', '三', '四', '五', '六'].map((item, index) => (
|
|
|
+ <NButton secondary round>
|
|
|
+ {item}年级
|
|
|
+ </NButton>
|
|
|
+ ))}
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
</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;
|
|
|
+ {_list.value.map((item, index) => {
|
|
|
return (
|
|
|
<div
|
|
|
class={styles.item}
|
|
@@ -64,9 +94,10 @@ export default defineComponent({
|
|
|
onClick={() => router.push({ path: '/xiaoku-music' })}>
|
|
|
<div class={styles.cover}>
|
|
|
<div class={styles.itemImg}>
|
|
|
+ <div class={styles.itemBg}></div>
|
|
|
<NImage
|
|
|
objectFit="contain"
|
|
|
- src={getImage(`${_index}.png`)}
|
|
|
+ src={item.src}
|
|
|
lazy
|
|
|
previewDisabled={true}
|
|
|
onLoad={e => {
|