|  | @@ -1,238 +1,239 @@
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  NButton,
 | 
	
		
			
				|  |  | -  NSpace,
 | 
	
		
			
				|  |  | -  useMessage,
 | 
	
		
			
				|  |  | -  NForm,
 | 
	
		
			
				|  |  | -  NFormItem,
 | 
	
		
			
				|  |  | -  NSelect,
 | 
	
		
			
				|  |  | -  NImage,
 | 
	
		
			
				|  |  | -  NScrollbar,
 | 
	
		
			
				|  |  | -  NSpin,
 | 
	
		
			
				|  |  | -  NModal
 | 
	
		
			
				|  |  | -} from 'naive-ui';
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | -import { getTrainingStudentDetail } from '../api';
 | 
	
		
			
				|  |  | -import styles from '../index.module.less';
 | 
	
		
			
				|  |  | -import TrainType from '@/views/attend-class/model/train-type';
 | 
	
		
			
				|  |  | -import defultHeade from '@/components/layout/images/teacherIcon.png';
 | 
	
		
			
				|  |  | -import noSub from '../images/nosub.png';
 | 
	
		
			
				|  |  | -import qualified from '../images/qualified.png';
 | 
	
		
			
				|  |  | -import unqualified from '../images/unqualified.png';
 | 
	
		
			
				|  |  | -import { evaluateDifficult } from '/src/utils/contants';
 | 
	
		
			
				|  |  | -import dayjs from 'dayjs';
 | 
	
		
			
				|  |  | -import CommentWork from '../../studentList/modals/comment-work';
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  props: {
 | 
	
		
			
				|  |  | -    activeRow: {
 | 
	
		
			
				|  |  | -      type: Object,
 | 
	
		
			
				|  |  | -      default: () => ({ studentLessonTrainingId: '' })
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    total: {
 | 
	
		
			
				|  |  | -      type: Number,
 | 
	
		
			
				|  |  | -      default: 0
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    current: {
 | 
	
		
			
				|  |  | -      type: Number,
 | 
	
		
			
				|  |  | -      default: 0
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  name: 'TrainingDetails',
 | 
	
		
			
				|  |  | -  emits: ['close', 'next', 'pre'],
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  setup(props, { emit, expose }) {
 | 
	
		
			
				|  |  | -    const loading = ref(false);
 | 
	
		
			
				|  |  | -    const studnetInfo = ref({
 | 
	
		
			
				|  |  | -      studentName: '',
 | 
	
		
			
				|  |  | -      submitTime: '',
 | 
	
		
			
				|  |  | -      trainingStatus: '',
 | 
	
		
			
				|  |  | -      studentAvatar: '',
 | 
	
		
			
				|  |  | -      studentLessonTrainingDetails: [] as any
 | 
	
		
			
				|  |  | -    } as any);
 | 
	
		
			
				|  |  | -    const showModalMask = ref(false);
 | 
	
		
			
				|  |  | -    const message = useMessage();
 | 
	
		
			
				|  |  | -    const foemsRef = ref();
 | 
	
		
			
				|  |  | -    const typeFormat = (trainingType: string, configJson: any) => {
 | 
	
		
			
				|  |  | -      let tList: string[] = [];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (trainingType === 'EVALUATION') {
 | 
	
		
			
				|  |  | -        tList = [
 | 
	
		
			
				|  |  | -          `${evaluateDifficult[configJson.evaluateDifficult]}`,
 | 
	
		
			
				|  |  | -          configJson.practiceChapterBegin || configJson.practiceChapterEnd
 | 
	
		
			
				|  |  | -            ? `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`
 | 
	
		
			
				|  |  | -            : '全部小节',
 | 
	
		
			
				|  |  | -          // `速度${configJson.evaluateSpeed}`,
 | 
	
		
			
				|  |  | -          `${configJson.trainingTimes}分合格`
 | 
	
		
			
				|  |  | -        ];
 | 
	
		
			
				|  |  | -        // console.log('configJson.evaluateDifficult--', tList);
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        tList = [
 | 
	
		
			
				|  |  | -          `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`,
 | 
	
		
			
				|  |  | -          `速度${configJson.practiceSpeed}`,
 | 
	
		
			
				|  |  | -          `${configJson.trainingTimes}分钟`
 | 
	
		
			
				|  |  | -        ];
 | 
	
		
			
				|  |  | -        // console.log('configJson.evaluateDifficult', tList);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return tList;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    const getTrainingDetail = async (id: any) => {
 | 
	
		
			
				|  |  | -      loading.value = true;
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        const res = await getTrainingStudentDetail({
 | 
	
		
			
				|  |  | -          studentLessonTrainingId: id
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        const arr = res.data.studentLessonTrainingDetails.map((item: any) => {
 | 
	
		
			
				|  |  | -          const tList = typeFormat(
 | 
	
		
			
				|  |  | -            item.trainingType,
 | 
	
		
			
				|  |  | -            JSON.parse(item.trainingContent)
 | 
	
		
			
				|  |  | -          );
 | 
	
		
			
				|  |  | -          return {
 | 
	
		
			
				|  |  | -            ...item,
 | 
	
		
			
				|  |  | -            coverImg: item.titleImg,
 | 
	
		
			
				|  |  | -            allTimes: JSON.parse(item.trainingContent).trainingTimes,
 | 
	
		
			
				|  |  | -            typeList: tList || []
 | 
	
		
			
				|  |  | -          };
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        studnetInfo.value = {
 | 
	
		
			
				|  |  | -          ...res.data,
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          studentLessonTrainingDetails: arr
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -      } catch (e) {
 | 
	
		
			
				|  |  | -        console.log(e);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      loading.value = false;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    expose({ getTrainingDetail });
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | -      getTrainingDetail(props.activeRow.studentLessonTrainingId);
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <div class={[styles.trainingDetails]}>
 | 
	
		
			
				|  |  | -        <NSpin show={loading.value}>
 | 
	
		
			
				|  |  | -          <div class={styles.studentList}>
 | 
	
		
			
				|  |  | -            <div class={styles.studentHeaderWrap}>
 | 
	
		
			
				|  |  | -              <div class={styles.studentHeader}>
 | 
	
		
			
				|  |  | -                <div class={styles.studentHeaderBorder}>
 | 
	
		
			
				|  |  | -                  <NImage
 | 
	
		
			
				|  |  | -                    class={styles.studentHeaderImg}
 | 
	
		
			
				|  |  | -                    src={
 | 
	
		
			
				|  |  | -                      studnetInfo.value.studentAvatar
 | 
	
		
			
				|  |  | -                        ? studnetInfo.value.studentAvatar
 | 
	
		
			
				|  |  | -                        : defultHeade
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    previewDisabled></NImage>
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -              <div class={styles.workafterInfo}>
 | 
	
		
			
				|  |  | -                <h4>
 | 
	
		
			
				|  |  | -                  {studnetInfo.value.studentName}{' '}
 | 
	
		
			
				|  |  | -                  <div class={styles.workafterInfoDot}>学生</div>
 | 
	
		
			
				|  |  | -                </h4>
 | 
	
		
			
				|  |  | -                <p>
 | 
	
		
			
				|  |  | -                  提交时间:
 | 
	
		
			
				|  |  | -                  {studnetInfo.value.submitTime
 | 
	
		
			
				|  |  | -                    ? dayjs(new Date(studnetInfo.value.submitTime)).format(
 | 
	
		
			
				|  |  | -                        'YYYY-MM-DD'
 | 
	
		
			
				|  |  | -                      )
 | 
	
		
			
				|  |  | -                    : '--'}
 | 
	
		
			
				|  |  | -                </p>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -            {studnetInfo.value.trainingStatus == 'UNSUBMITTED' ? (
 | 
	
		
			
				|  |  | -              <NImage
 | 
	
		
			
				|  |  | -                previewDisabled
 | 
	
		
			
				|  |  | -                class={styles.workStatus}
 | 
	
		
			
				|  |  | -                src={noSub}></NImage>
 | 
	
		
			
				|  |  | -            ) : null}
 | 
	
		
			
				|  |  | -            {studnetInfo.value.trainingStatus == 'SUBMITTED' ? (
 | 
	
		
			
				|  |  | -              <NImage
 | 
	
		
			
				|  |  | -                previewDisabled
 | 
	
		
			
				|  |  | -                class={styles.workStatus}
 | 
	
		
			
				|  |  | -                src={unqualified}></NImage>
 | 
	
		
			
				|  |  | -            ) : null}
 | 
	
		
			
				|  |  | -            {studnetInfo.value.trainingStatus == 'TARGET' ? (
 | 
	
		
			
				|  |  | -              <NImage
 | 
	
		
			
				|  |  | -                previewDisabled
 | 
	
		
			
				|  |  | -                class={styles.workStatus}
 | 
	
		
			
				|  |  | -                src={qualified}></NImage>
 | 
	
		
			
				|  |  | -            ) : null}
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          {studnetInfo.value.trainingStatus !== 'UNSUBMITTED' && (
 | 
	
		
			
				|  |  | -            <NButton
 | 
	
		
			
				|  |  | -              onClick={() => (showModalMask.value = true)}
 | 
	
		
			
				|  |  | -              class={styles.commentBtnGroup}>
 | 
	
		
			
				|  |  | -              <div class={styles.text}>
 | 
	
		
			
				|  |  | -                <i class={studnetInfo.value.comment && styles.look}></i>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                {studnetInfo.value.comment ? '查看评语' : '点评作业'}
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            </NButton>
 | 
	
		
			
				|  |  | -          )}
 | 
	
		
			
				|  |  | -          <NScrollbar style="max-height:400px" trigger="none">
 | 
	
		
			
				|  |  | -            <div class={styles.workList}>
 | 
	
		
			
				|  |  | -              {studnetInfo.value.studentLessonTrainingDetails.map(
 | 
	
		
			
				|  |  | -                (item: any) => (
 | 
	
		
			
				|  |  | -                  <TrainType
 | 
	
		
			
				|  |  | -                    style={{ marginBottom: '20px' }}
 | 
	
		
			
				|  |  | -                    isDisabled={true}
 | 
	
		
			
				|  |  | -                    isDelete={false}
 | 
	
		
			
				|  |  | -                    item={item}></TrainType>
 | 
	
		
			
				|  |  | -                )
 | 
	
		
			
				|  |  | -              )}
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -          </NScrollbar>
 | 
	
		
			
				|  |  | -          <NSpace
 | 
	
		
			
				|  |  | -            class={[styles.btnGroups, styles.nextWrap]}
 | 
	
		
			
				|  |  | -            justify="space-between">
 | 
	
		
			
				|  |  | -            <div class={styles.allTotal}>
 | 
	
		
			
				|  |  | -              {props.current}/{props.total}名学生
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -            <div>
 | 
	
		
			
				|  |  | -              <NSpace>
 | 
	
		
			
				|  |  | -                <NButton
 | 
	
		
			
				|  |  | -                  disabled={props.current <= 1}
 | 
	
		
			
				|  |  | -                  round
 | 
	
		
			
				|  |  | -                  type="primary"
 | 
	
		
			
				|  |  | -                  onClick={() => {
 | 
	
		
			
				|  |  | -                    emit('pre');
 | 
	
		
			
				|  |  | -                  }}>
 | 
	
		
			
				|  |  | -                  上一名
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -                <NButton
 | 
	
		
			
				|  |  | -                  disabled={props.current >= props.total}
 | 
	
		
			
				|  |  | -                  round
 | 
	
		
			
				|  |  | -                  type="primary"
 | 
	
		
			
				|  |  | -                  onClick={() => {
 | 
	
		
			
				|  |  | -                    emit('next');
 | 
	
		
			
				|  |  | -                  }}>
 | 
	
		
			
				|  |  | -                  下一名
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -              </NSpace>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -          </NSpace>
 | 
	
		
			
				|  |  | -        </NSpin>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <NModal v-model:show={showModalMask.value}>
 | 
	
		
			
				|  |  | -          <CommentWork
 | 
	
		
			
				|  |  | -            comment={studnetInfo.value.comment}
 | 
	
		
			
				|  |  | -            workInfo={{
 | 
	
		
			
				|  |  | -              isLook: studnetInfo.value.comment ? true : false,
 | 
	
		
			
				|  |  | -              studentAvatar: studnetInfo.value.studentAvatar,
 | 
	
		
			
				|  |  | -              studentName: studnetInfo.value.studentName,
 | 
	
		
			
				|  |  | -              submitTime: studnetInfo.value.submitTime,
 | 
	
		
			
				|  |  | -              studentLessonTrainingId: studnetInfo.value.studentLessonTrainingId
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -            onClose={() => (showModalMask.value = false)}
 | 
	
		
			
				|  |  | -            onConfrim={() => {
 | 
	
		
			
				|  |  | -              getTrainingDetail(props.activeRow.studentLessonTrainingId);
 | 
	
		
			
				|  |  | -              showModalMask.value = false;
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  NButton,
 | 
	
		
			
				|  |  | +  NSpace,
 | 
	
		
			
				|  |  | +  useMessage,
 | 
	
		
			
				|  |  | +  NForm,
 | 
	
		
			
				|  |  | +  NFormItem,
 | 
	
		
			
				|  |  | +  NSelect,
 | 
	
		
			
				|  |  | +  NImage,
 | 
	
		
			
				|  |  | +  NScrollbar,
 | 
	
		
			
				|  |  | +  NSpin,
 | 
	
		
			
				|  |  | +  NModal
 | 
	
		
			
				|  |  | +} from 'naive-ui';
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | +import { getTrainingStudentDetail } from '../api';
 | 
	
		
			
				|  |  | +import styles from '../index.module.less';
 | 
	
		
			
				|  |  | +import TrainType from '@/views/attend-class/model/train-type';
 | 
	
		
			
				|  |  | +import defultHeade from '@/components/layout/images/teacherIcon.png';
 | 
	
		
			
				|  |  | +import noSub from '../images/nosub.png';
 | 
	
		
			
				|  |  | +import qualified from '../images/qualified.png';
 | 
	
		
			
				|  |  | +import unqualified from '../images/unqualified.png';
 | 
	
		
			
				|  |  | +import { evaluateDifficult } from '/src/utils/contants';
 | 
	
		
			
				|  |  | +import dayjs from 'dayjs';
 | 
	
		
			
				|  |  | +import CommentWork from '../../studentList/modals/comment-work';
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    activeRow: {
 | 
	
		
			
				|  |  | +      type: Object,
 | 
	
		
			
				|  |  | +      default: () => ({ studentLessonTrainingId: '' })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    total: {
 | 
	
		
			
				|  |  | +      type: Number,
 | 
	
		
			
				|  |  | +      default: 0
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    current: {
 | 
	
		
			
				|  |  | +      type: Number,
 | 
	
		
			
				|  |  | +      default: 0
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  name: 'TrainingDetails',
 | 
	
		
			
				|  |  | +  emits: ['close', 'next', 'pre'],
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  setup(props, { emit, expose }) {
 | 
	
		
			
				|  |  | +    const loading = ref(false);
 | 
	
		
			
				|  |  | +    const studnetInfo = ref({
 | 
	
		
			
				|  |  | +      studentName: '',
 | 
	
		
			
				|  |  | +      submitTime: '',
 | 
	
		
			
				|  |  | +      trainingStatus: '',
 | 
	
		
			
				|  |  | +      studentAvatar: '',
 | 
	
		
			
				|  |  | +      studentLessonTrainingDetails: [] as any
 | 
	
		
			
				|  |  | +    } as any);
 | 
	
		
			
				|  |  | +    const showModalMask = ref(false);
 | 
	
		
			
				|  |  | +    const message = useMessage();
 | 
	
		
			
				|  |  | +    const foemsRef = ref();
 | 
	
		
			
				|  |  | +    const typeFormat = (trainingType: string, configJson: any) => {
 | 
	
		
			
				|  |  | +      let tList: string[] = [];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (trainingType === 'EVALUATION') {
 | 
	
		
			
				|  |  | +        tList = [
 | 
	
		
			
				|  |  | +          `${evaluateDifficult[configJson.evaluateDifficult]}`,
 | 
	
		
			
				|  |  | +          configJson.practiceChapterBegin || configJson.practiceChapterEnd
 | 
	
		
			
				|  |  | +            ? `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`
 | 
	
		
			
				|  |  | +            : '全部小节',
 | 
	
		
			
				|  |  | +          // `速度${configJson.evaluateSpeed}`,
 | 
	
		
			
				|  |  | +          `${configJson.trainingTimes}分合格`
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +        // console.log('configJson.evaluateDifficult--', tList);
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        tList = [
 | 
	
		
			
				|  |  | +          `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`,
 | 
	
		
			
				|  |  | +          `速度${configJson.practiceSpeed}`,
 | 
	
		
			
				|  |  | +          `${configJson.trainingTimes}分钟`
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +        // console.log('configJson.evaluateDifficult', tList);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return tList;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const getTrainingDetail = async (id: any) => {
 | 
	
		
			
				|  |  | +      loading.value = true;
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const res = await getTrainingStudentDetail({
 | 
	
		
			
				|  |  | +          studentLessonTrainingId: id
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        const arr = res.data.studentLessonTrainingDetails.map((item: any) => {
 | 
	
		
			
				|  |  | +          const tList = typeFormat(
 | 
	
		
			
				|  |  | +            item.trainingType,
 | 
	
		
			
				|  |  | +            JSON.parse(item.trainingContent)
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +          return {
 | 
	
		
			
				|  |  | +            ...item,
 | 
	
		
			
				|  |  | +            coverImg: item.titleImg,
 | 
	
		
			
				|  |  | +            allTimes: JSON.parse(item.trainingContent).trainingTimes,
 | 
	
		
			
				|  |  | +            typeList: tList || []
 | 
	
		
			
				|  |  | +          };
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        studnetInfo.value = {
 | 
	
		
			
				|  |  | +          ...res.data,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          studentLessonTrainingDetails: arr
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        console.log(e);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      loading.value = false;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    expose({ getTrainingDetail });
 | 
	
		
			
				|  |  | +    onMounted(() => {
 | 
	
		
			
				|  |  | +      getTrainingDetail(props.activeRow.studentLessonTrainingId);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <div class={[styles.trainingDetails]}>
 | 
	
		
			
				|  |  | +        <NSpin show={loading.value}>
 | 
	
		
			
				|  |  | +          <div class={styles.studentList}>
 | 
	
		
			
				|  |  | +            <div class={styles.studentHeaderWrap}>
 | 
	
		
			
				|  |  | +              <div class={styles.studentHeader}>
 | 
	
		
			
				|  |  | +                <div class={styles.studentHeaderBorder}>
 | 
	
		
			
				|  |  | +                  <NImage
 | 
	
		
			
				|  |  | +                    class={styles.studentHeaderImg}
 | 
	
		
			
				|  |  | +                    src={
 | 
	
		
			
				|  |  | +                      studnetInfo.value.studentAvatar
 | 
	
		
			
				|  |  | +                        ? studnetInfo.value.studentAvatar
 | 
	
		
			
				|  |  | +                        : defultHeade
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    previewDisabled></NImage>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +              <div class={styles.workafterInfo}>
 | 
	
		
			
				|  |  | +                <h4>
 | 
	
		
			
				|  |  | +                  {studnetInfo.value.studentName}{' '}
 | 
	
		
			
				|  |  | +                  <div class={styles.workafterInfoDot}>学生</div>
 | 
	
		
			
				|  |  | +                </h4>
 | 
	
		
			
				|  |  | +                <p>
 | 
	
		
			
				|  |  | +                  提交时间:
 | 
	
		
			
				|  |  | +                  {studnetInfo.value.submitTime
 | 
	
		
			
				|  |  | +                    ? dayjs(new Date(studnetInfo.value.submitTime)).format(
 | 
	
		
			
				|  |  | +                        'YYYY-MM-DD'
 | 
	
		
			
				|  |  | +                      )
 | 
	
		
			
				|  |  | +                    : '--'}
 | 
	
		
			
				|  |  | +                </p>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            {studnetInfo.value.trainingStatus == 'UNSUBMITTED' ? (
 | 
	
		
			
				|  |  | +              <NImage
 | 
	
		
			
				|  |  | +                previewDisabled
 | 
	
		
			
				|  |  | +                class={styles.workStatus}
 | 
	
		
			
				|  |  | +                src={noSub}></NImage>
 | 
	
		
			
				|  |  | +            ) : null}
 | 
	
		
			
				|  |  | +            {studnetInfo.value.trainingStatus == 'SUBMITTED' ? (
 | 
	
		
			
				|  |  | +              <NImage
 | 
	
		
			
				|  |  | +                previewDisabled
 | 
	
		
			
				|  |  | +                class={styles.workStatus}
 | 
	
		
			
				|  |  | +                src={unqualified}></NImage>
 | 
	
		
			
				|  |  | +            ) : null}
 | 
	
		
			
				|  |  | +            {studnetInfo.value.trainingStatus == 'TARGET' ? (
 | 
	
		
			
				|  |  | +              <NImage
 | 
	
		
			
				|  |  | +                previewDisabled
 | 
	
		
			
				|  |  | +                class={styles.workStatus}
 | 
	
		
			
				|  |  | +                src={qualified}></NImage>
 | 
	
		
			
				|  |  | +            ) : null}
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          {studnetInfo.value.trainingStatus !== 'UNSUBMITTED' && (
 | 
	
		
			
				|  |  | +            <NButton
 | 
	
		
			
				|  |  | +              onClick={() => (showModalMask.value = true)}
 | 
	
		
			
				|  |  | +              class={styles.commentBtnGroup}>
 | 
	
		
			
				|  |  | +              <div class={styles.text}>
 | 
	
		
			
				|  |  | +                <i class={studnetInfo.value.comment && styles.look}></i>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                {studnetInfo.value.comment ? '查看评语' : '点评作业'}
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </NButton>
 | 
	
		
			
				|  |  | +          )}
 | 
	
		
			
				|  |  | +          <NScrollbar style="max-height:400px" trigger="none">
 | 
	
		
			
				|  |  | +            <div class={styles.workList}>
 | 
	
		
			
				|  |  | +              {studnetInfo.value.studentLessonTrainingDetails.map(
 | 
	
		
			
				|  |  | +                (item: any) => (
 | 
	
		
			
				|  |  | +                  <TrainType
 | 
	
		
			
				|  |  | +                    style={{ marginBottom: '20px' }}
 | 
	
		
			
				|  |  | +                    isDisabled={true}
 | 
	
		
			
				|  |  | +                    isDelete={false}
 | 
	
		
			
				|  |  | +                    isCLassWork={false}
 | 
	
		
			
				|  |  | +                    item={item}></TrainType>
 | 
	
		
			
				|  |  | +                )
 | 
	
		
			
				|  |  | +              )}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </NScrollbar>
 | 
	
		
			
				|  |  | +          <NSpace
 | 
	
		
			
				|  |  | +            class={[styles.btnGroups, styles.nextWrap]}
 | 
	
		
			
				|  |  | +            justify="space-between">
 | 
	
		
			
				|  |  | +            <div class={styles.allTotal}>
 | 
	
		
			
				|  |  | +              {props.current}/{props.total}名学生
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              <NSpace>
 | 
	
		
			
				|  |  | +                <NButton
 | 
	
		
			
				|  |  | +                  disabled={props.current <= 1}
 | 
	
		
			
				|  |  | +                  round
 | 
	
		
			
				|  |  | +                  type="primary"
 | 
	
		
			
				|  |  | +                  onClick={() => {
 | 
	
		
			
				|  |  | +                    emit('pre');
 | 
	
		
			
				|  |  | +                  }}>
 | 
	
		
			
				|  |  | +                  上一名
 | 
	
		
			
				|  |  | +                </NButton>
 | 
	
		
			
				|  |  | +                <NButton
 | 
	
		
			
				|  |  | +                  disabled={props.current >= props.total}
 | 
	
		
			
				|  |  | +                  round
 | 
	
		
			
				|  |  | +                  type="primary"
 | 
	
		
			
				|  |  | +                  onClick={() => {
 | 
	
		
			
				|  |  | +                    emit('next');
 | 
	
		
			
				|  |  | +                  }}>
 | 
	
		
			
				|  |  | +                  下一名
 | 
	
		
			
				|  |  | +                </NButton>
 | 
	
		
			
				|  |  | +              </NSpace>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </NSpace>
 | 
	
		
			
				|  |  | +        </NSpin>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <NModal v-model:show={showModalMask.value}>
 | 
	
		
			
				|  |  | +          <CommentWork
 | 
	
		
			
				|  |  | +            comment={studnetInfo.value.comment}
 | 
	
		
			
				|  |  | +            workInfo={{
 | 
	
		
			
				|  |  | +              isLook: studnetInfo.value.comment ? true : false,
 | 
	
		
			
				|  |  | +              studentAvatar: studnetInfo.value.studentAvatar,
 | 
	
		
			
				|  |  | +              studentName: studnetInfo.value.studentName,
 | 
	
		
			
				|  |  | +              submitTime: studnetInfo.value.submitTime,
 | 
	
		
			
				|  |  | +              studentLessonTrainingId: studnetInfo.value.studentLessonTrainingId
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            onClose={() => (showModalMask.value = false)}
 | 
	
		
			
				|  |  | +            onConfrim={() => {
 | 
	
		
			
				|  |  | +              getTrainingDetail(props.activeRow.studentLessonTrainingId);
 | 
	
		
			
				|  |  | +              showModalMask.value = false;
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |