|
@@ -1,9 +1,11 @@
|
|
|
-import { defineComponent, onMounted } from 'vue';
|
|
|
+import { defineComponent, onMounted, reactive, ref } from 'vue';
|
|
|
import styles from './index.module.less';
|
|
|
-import { NInput, NScrollbar, NSelect, NThing } from 'naive-ui';
|
|
|
+import { NInput, NScrollbar, NSelect, NSpin, NThing } from 'naive-ui';
|
|
|
import { useRouter } from 'vue-router';
|
|
|
import { BOOK_DATA } from '/src/views/natural-resources/model/add-teaching';
|
|
|
import { classGroupPage } from '../../api';
|
|
|
+import { useThrottleFn } from '@vueuse/core';
|
|
|
+import TheEmpty from '/src/components/TheEmpty';
|
|
|
|
|
|
const classList: any = [];
|
|
|
for (let i = 1; i <= 40; i++) {
|
|
@@ -15,6 +17,13 @@ export default defineComponent({
|
|
|
emits: ['close'],
|
|
|
setup(props, { emit }) {
|
|
|
const router = useRouter();
|
|
|
+ const forms = reactive({
|
|
|
+ keyword: null,
|
|
|
+ currentGradeNum: null,
|
|
|
+ currentClass: null
|
|
|
+ });
|
|
|
+ const list = ref([] as any);
|
|
|
+ const loading = ref(false);
|
|
|
const onAttendClass = (i: any) => {
|
|
|
emit('close');
|
|
|
|
|
@@ -25,13 +34,23 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
const getList = async () => {
|
|
|
+ loading.value = true;
|
|
|
try {
|
|
|
- await classGroupPage({});
|
|
|
+ const { data } = await classGroupPage({
|
|
|
+ page: 1,
|
|
|
+ rows: 99,
|
|
|
+ ...forms
|
|
|
+ });
|
|
|
+ console.log(data, 'data');
|
|
|
+ list.value = data.rows || [];
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
|
+ loading.value = false;
|
|
|
};
|
|
|
|
|
|
+ const throttleFn = useThrottleFn(() => getList(), 500);
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
getList();
|
|
|
});
|
|
@@ -39,31 +58,70 @@ export default defineComponent({
|
|
|
return () => (
|
|
|
<div class={styles.attendClass}>
|
|
|
<div class={styles.attendClassSearch}>
|
|
|
- <NInput placeholder="请输入班级名称" clearable>
|
|
|
+ <NInput
|
|
|
+ placeholder="请输入班级名称"
|
|
|
+ clearable
|
|
|
+ v-model:value={forms.keyword}
|
|
|
+ onKeyup={(e: KeyboardEvent) => {
|
|
|
+ if (e.code === 'Enter') {
|
|
|
+ throttleFn();
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ onClear={() => throttleFn()}>
|
|
|
{{
|
|
|
- prefix: () => <span class="icon-search-input"></span>
|
|
|
+ prefix: () => (
|
|
|
+ <span
|
|
|
+ class="icon-search-input"
|
|
|
+ onClick={() => throttleFn()}></span>
|
|
|
+ )
|
|
|
}}
|
|
|
</NInput>
|
|
|
- <NSelect placeholder="年级" clearable options={BOOK_DATA.grades} />
|
|
|
- <NSelect placeholder="班级" clearable options={classList} />
|
|
|
+ <NSelect
|
|
|
+ placeholder="全部年级"
|
|
|
+ clearable
|
|
|
+ options={
|
|
|
+ [{ label: '全部年级', value: null }, ...BOOK_DATA.grades] as any
|
|
|
+ }
|
|
|
+ v-model:value={forms.currentGradeNum}
|
|
|
+ onUpdate:value={() => throttleFn()}
|
|
|
+ />
|
|
|
+ <NSelect
|
|
|
+ placeholder="全部班级"
|
|
|
+ clearable
|
|
|
+ options={[{ label: '全部班级', value: null }, ...classList]}
|
|
|
+ v-model:value={forms.currentClass}
|
|
|
+ onUpdate:value={() => throttleFn()}
|
|
|
+ />
|
|
|
</div>
|
|
|
<NScrollbar class={styles.classList}>
|
|
|
- {[1, 2, 3, 4, 5, 6, 7].map(i => (
|
|
|
- <div onClick={() => onAttendClass(i)}>
|
|
|
- <NThing class={styles.thingItem}>
|
|
|
- {{
|
|
|
- header: () => (
|
|
|
- <div class={styles.title}>一年级{i}班 23人</div>
|
|
|
- ),
|
|
|
- default: () => (
|
|
|
- <div class={styles.content}>
|
|
|
- 人教版二年级上册 | 第一单元 |【歌表演】我和我的祖国
|
|
|
- </div>
|
|
|
- )
|
|
|
- }}
|
|
|
- </NThing>
|
|
|
+ <NSpin show={loading.value}>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.listSection,
|
|
|
+ !loading.value && list.value.length <= 0
|
|
|
+ ? styles.emptySection
|
|
|
+ : ''
|
|
|
+ ]}>
|
|
|
+ {list.value.map((item: any) => (
|
|
|
+ <div onClick={() => onAttendClass(item)}>
|
|
|
+ <NThing class={styles.thingItem}>
|
|
|
+ {{
|
|
|
+ header: () => (
|
|
|
+ <div class={styles.title}>
|
|
|
+ {item.name} {item.preStudentNum}人
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ default: () =>
|
|
|
+ item.lastStudy && (
|
|
|
+ <div class={styles.content}>{item.lastStudy}</div>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </NThing>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ {!loading.value && list.value.length <= 0 && <TheEmpty />}
|
|
|
</div>
|
|
|
- ))}
|
|
|
+ </NSpin>
|
|
|
</NScrollbar>
|
|
|
</div>
|
|
|
);
|