| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | import { Cell, Icon, Image, Popup } from 'vant';import { PropType, defineComponent, onMounted, reactive } from 'vue';import styles from './component.module.less';import iconStudent from '@/common/images/icon-student-default.png';import iconMember from '../images/icon-member.png';import DetailModal from '../detail-modal';import request from '@/helpers/request';import SkeletonComponentModal from './skeleton-component-modal';export default defineComponent({  name: 'practice-list',  props: {    courseId: {      type: String as PropType<any>,      default: null    }  },  setup(props) {    // schoolStudentHomework/findCourseStudentsPublic/v2    const forms = reactive({      showPopup: false,      list: [] as any[],      dataShow: true,      detail: {} as any,      loading: true    });    const getList = async () => {      try {        const { data } = await request.post(          '/api-web/schoolStudentHomework/findCourseStudentsPublic/v2',          {            data: {              courseScheduleId: props.courseId,              type: 'HOMEWORK'            }          }        );        forms.list = data || [];      } catch {        //      } finally {        forms.dataShow = forms.list.length ? true : false;        forms.loading = false;      }    };    const onDetail = async (item: any) => {      try {        forms.detail = {          avatar: item.avatar,          memberFlag: item.vipFlag,          username: item.userName,          subjectName: item.subjectName,          finishFlag: item.finishFlag,          list: item.studentLessonTrainingDetail || []        };        forms.showPopup = true;      } catch {        //      }    };    onMounted(() => {      getList();    });    return () => (      <div class={styles['practice-list']}>        <SkeletonComponentModal v-model:loading={forms.loading}>          {forms.list.map((item: any) => (            <Cell center isLink onClick={() => onDetail(item)}>              {{                icon: () => (                  <div class={styles.iconGroup}>                    <Image                      src={item.avatar || iconStudent}                      class={styles.iconStudent}                      fit="contain"                    />                    <Icon name={iconMember} class={styles.iconMember} />                  </div>                ),                title: () => (                  <div class={styles.userInfo}>                    <p class={styles.name}>{item.userName}</p>                    <span>{item.subjectName}</span>                  </div>                ),                value: () => (                  <div                    class={[                      styles.after,                      item.finishFlag ? styles.success : styles.error                    ]}>                    {item.finishFlag ? '完成' : '未完成'}                  </div>                )              }}            </Cell>          ))}        </SkeletonComponentModal>        <Popup          v-model:show={forms.showPopup}          position="bottom"          round          closeable          class={styles.popup}>          <DetailModal detail={forms.detail} />        </Popup>      </div>    );  }});
 |