|
@@ -0,0 +1,132 @@
|
|
|
+import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
+import { NAvatar, NButton, NForm, NFormItem, NSpace, NTag } from 'naive-ui';
|
|
|
+import Pagination from '@/components/pagination';
|
|
|
+import { courseSchedulePage } from '../api';
|
|
|
+import { useRoute } from 'vue-router';
|
|
|
+import CDatePicker from '/src/components/CDatePicker';
|
|
|
+import styles from './classRecord.module.less';
|
|
|
+import teacherIcon from '@components/layout/images/teacherIcon.png';
|
|
|
+import dayjs from 'dayjs';
|
|
|
+import { getTimes } from '/src/utils';
|
|
|
+export default defineComponent({
|
|
|
+ name: 'class-record',
|
|
|
+ setup() {
|
|
|
+ const nowTime = dayjs().format('YYYY-MM-DD');
|
|
|
+ const state = reactive({
|
|
|
+ searchForm: {
|
|
|
+ createTimer: [
|
|
|
+ dayjs(nowTime).subtract(1, 'month').valueOf(),
|
|
|
+ dayjs(nowTime).valueOf()
|
|
|
+ ] as any
|
|
|
+ },
|
|
|
+ loading: false,
|
|
|
+ pagination: {
|
|
|
+ page: 1,
|
|
|
+ rows: 10,
|
|
|
+ pageTotal: 0
|
|
|
+ },
|
|
|
+ tableList: [] as any
|
|
|
+ });
|
|
|
+ const route = useRoute();
|
|
|
+ const search = () => {
|
|
|
+ state.pagination.page = 1;
|
|
|
+ getList();
|
|
|
+ };
|
|
|
+
|
|
|
+ const onReset = () => {
|
|
|
+ state.searchForm = { createTimer: null as any };
|
|
|
+ search();
|
|
|
+ };
|
|
|
+ const getList = async () => {
|
|
|
+ state.loading = true;
|
|
|
+ try {
|
|
|
+ const res = await courseSchedulePage({
|
|
|
+ classGroupId: route.query.id,
|
|
|
+ ...getTimes(
|
|
|
+ state.searchForm.createTimer,
|
|
|
+ ['startTime', 'endTime'],
|
|
|
+ 'YYYY-MM-DD'
|
|
|
+ ),
|
|
|
+ ...state.pagination
|
|
|
+ });
|
|
|
+ state.tableList = res.data.rows;
|
|
|
+ state.pagination.pageTotal = res.data.total;
|
|
|
+ state.loading = false;
|
|
|
+ } catch (e) {
|
|
|
+ state.loading = false;
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ onMounted(() => {
|
|
|
+ getList();
|
|
|
+ });
|
|
|
+ return () => (
|
|
|
+ <div>
|
|
|
+ <div class={styles.searchList}>
|
|
|
+ <NForm label-placement="left" inline>
|
|
|
+ <NFormItem>
|
|
|
+ <CDatePicker
|
|
|
+ v-model:timerValue={state.searchForm.createTimer}
|
|
|
+ separator={'-'}
|
|
|
+ type="daterange"></CDatePicker>
|
|
|
+ </NFormItem>
|
|
|
+
|
|
|
+ <NFormItem>
|
|
|
+ <NSpace justify="end">
|
|
|
+ <NButton type="primary" class="searchBtn" onClick={search}>
|
|
|
+ 搜索
|
|
|
+ </NButton>
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ ghost
|
|
|
+ class="resetBtn"
|
|
|
+ onClick={onReset}>
|
|
|
+ 重置
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+ </NFormItem>
|
|
|
+ </NForm>
|
|
|
+ </div>
|
|
|
+ <div class={styles.tableWrap}>
|
|
|
+ <NSpace>
|
|
|
+ {state.tableList.map((item: any) => (
|
|
|
+ <div class={styles.tableContainer}>
|
|
|
+ <div class={styles.header}>
|
|
|
+ <div class={styles.time}>
|
|
|
+ {dayjs(item.classDate).format('YYYY-MM-DD')}
|
|
|
+ </div>
|
|
|
+ <NTag type="primary" class={styles.ntag} strong>
|
|
|
+ 三年二班
|
|
|
+ </NTag>
|
|
|
+ </div>
|
|
|
+ <div class={styles.content}>
|
|
|
+ <NAvatar
|
|
|
+ class={styles.navatar}
|
|
|
+ round
|
|
|
+ src={item.teacherAvatar || teacherIcon}
|
|
|
+ />
|
|
|
+ <div class={styles.userInfo}>
|
|
|
+ <h2>{item.teacherName}</h2>
|
|
|
+ <p>
|
|
|
+ 人教版二年级上册 | 第二十一单元
|
|
|
+ |【歌表演】我和我的祖国一刻也不能分割
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </NSpace>
|
|
|
+
|
|
|
+ <Pagination
|
|
|
+ v-model:page={state.pagination.page}
|
|
|
+ v-model:pageSize={state.pagination.rows}
|
|
|
+ v-model:pageTotal={state.pagination.pageTotal}
|
|
|
+ onList={getList}
|
|
|
+ sync
|
|
|
+ saveKey="classRecord-key"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|