|
@@ -0,0 +1,115 @@
|
|
|
+import { computed, defineComponent, onBeforeMount, reactive } from 'vue';
|
|
|
+import styles from './index.module.less';
|
|
|
+import icon_back from './image/icon_back.svg';
|
|
|
+import icon_arrow from './image/icon_arrow.svg';
|
|
|
+import { Button, Popover, Tab, Tabs, showToast } from 'vant';
|
|
|
+import { api_lessonCoursewarePage } from './api';
|
|
|
+
|
|
|
+export const BOOK_DATA = {
|
|
|
+ grades: [
|
|
|
+ { text: '全部年级', value: '' },
|
|
|
+ { text: '一年级', value: 1 },
|
|
|
+ { text: '二年级', value: 2 },
|
|
|
+ { text: '三年级', value: 3 },
|
|
|
+ { text: '四年级', value: 4 },
|
|
|
+ { text: '五年级', value: 5 },
|
|
|
+ { text: '六年级', value: 6 },
|
|
|
+ { text: '七年级', value: 7 },
|
|
|
+ { text: '八年级', value: 8 },
|
|
|
+ { text: '九年级', value: 9 }
|
|
|
+ ],
|
|
|
+ bookTypes: {
|
|
|
+ LAST: '上册',
|
|
|
+ NEXT: '下册'
|
|
|
+ } as { [key: string]: string }
|
|
|
+};
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'courseware-list',
|
|
|
+ setup() {
|
|
|
+ // 返回
|
|
|
+ const goback = () => {
|
|
|
+ postMessage({ api: 'goBack' });
|
|
|
+ };
|
|
|
+ const forms = reactive({
|
|
|
+ currentGradeNum: 0,
|
|
|
+ page: 1,
|
|
|
+ rows: 10,
|
|
|
+ type: 'COURSEWARE'
|
|
|
+ });
|
|
|
+ const _actions = computed(() => {
|
|
|
+ return BOOK_DATA.grades.map((item, index) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ color:
|
|
|
+ forms.currentGradeNum === index ? 'var(--van-primary-color)' : ''
|
|
|
+ };
|
|
|
+ });
|
|
|
+ });
|
|
|
+ const onSelect = (action: any, index: number) => {
|
|
|
+ forms.currentGradeNum = index;
|
|
|
+ forms.page = 1;
|
|
|
+ getList();
|
|
|
+ };
|
|
|
+
|
|
|
+ const data = reactive({
|
|
|
+ list: [] as any[]
|
|
|
+ });
|
|
|
+
|
|
|
+ const getList = async () => {
|
|
|
+ const res = await api_lessonCoursewarePage({
|
|
|
+ ...forms,
|
|
|
+ currentGradeNum: forms.currentGradeNum ? forms.currentGradeNum : ''
|
|
|
+ });
|
|
|
+ if (res?.code === 200 && Array.isArray(res?.data?.rows)) {
|
|
|
+ data.list = [...res.data.rows,...res.data.rows,...res.data.rows,...res.data.rows,...res.data.rows,...res.data.rows].map((item: any) => {
|
|
|
+ const type = BOOK_DATA.bookTypes[item.bookType];
|
|
|
+ item.name = `${item.name}(${type})`;
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+ onBeforeMount(() => {
|
|
|
+ getList();
|
|
|
+ });
|
|
|
+ return () => (
|
|
|
+ <div class={styles.container}>
|
|
|
+ <div class={styles.head}>
|
|
|
+ <div class={styles.back} onClick={goback}>
|
|
|
+ <img src={icon_back} />
|
|
|
+ </div>
|
|
|
+ <Tabs class={styles.tabs}>
|
|
|
+ <Tab title="全部教材" name="全部教材"></Tab>
|
|
|
+ <Tab title="我的收藏" name="我的收藏"></Tab>
|
|
|
+ </Tabs>
|
|
|
+ <Popover
|
|
|
+ class={styles.popover}
|
|
|
+ actions={_actions.value}
|
|
|
+ onSelect={onSelect}>
|
|
|
+ {{
|
|
|
+ reference: () => (
|
|
|
+ <Button class={styles.downBtn} round size="small">
|
|
|
+ 全部年级 <img class={styles.icon} src={icon_arrow} />
|
|
|
+ </Button>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </Popover>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class={styles.content}>
|
|
|
+ <div class={styles.wrap}>
|
|
|
+ {data.list.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <div class={styles.wrapItem}>
|
|
|
+ <img class={styles.cover} src={item.coverImg} />
|
|
|
+ <div class={styles.name}>{item.name}</div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|