import {
  NButton,
  NSpace,
  NImage,
  NScrollbar,
  NSpin,
  NModal,
  NTooltip
} from 'naive-ui';
import { defineComponent, onMounted, ref } from 'vue';
import { getTrainingStudentDetail } from '../api';
import styles from '../index.module.less';
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 iconComment from '../images/icon-comment.png';
import commentTitle from '../images/comment-title.png';
import { evaluateDifficult } from '/src/utils/contants';
import dayjs from 'dayjs';
import CommentWork from '../../studentList/modals/comment-work';
import WorkItem from '../work-item';
import { modalClickMask } from '/src/state';
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 typeFormat = (trainingType: string, configJson: any) => {
      let tList: string[] = [];

      if (trainingType === 'EVALUATION') {
        tList = [
          `${evaluateDifficult[configJson.evaluateDifficult]}`,
          `${configJson.practiceChapterBegin || 0}-${
            configJson.practiceChapterEnd || 0
          }小节`,
          `速度${configJson.evaluateSpeed || 0}`,
          `${configJson.trainingTimes}分达标`
        ];
        // console.log('configJson.evaluateDifficult--', tList);
      } else {
        tList = [
          `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`,
          `速度${configJson.practiceSpeed || 0}`,
          `${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,
            fileList: (item.fileJsonList && item.fileJsonList[0]) || {},
            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.fileExpireDay || 0 > 0) && (
            <div class={styles.expireDateTip}>
              <i class={styles.expireDateIcon}></i>
              <span>
                作业截止{studnetInfo.value.fileExpireDay || 0}
                天后，学生上传的文件将过期，请及时查看
              </span>
            </div>
          )}

          <NScrollbar style="max-height:400px;" trigger="none">
            <div class={styles.workList}>
              {studnetInfo.value.studentLessonTrainingDetails.map(
                (item: any) => (
                  <WorkItem
                    item={{
                      ...item,
                      studentName: studnetInfo.value.studentName
                    }}
                  />
                )
              )}
            </div>
          </NScrollbar>

          {studnetInfo.value.expireFlag ? (
            <div class={styles.commentSection}>
              <div class={styles.commentTitle}>
                <h3>
                  <i class={styles.iconComment}></i>
                  <i class={styles.myText}></i>
                </h3>
                {/* {studnetInfo.value.expireFlag ? ( */}
                <NButton
                  text
                  onClick={() => (showModalMask.value = true)}
                  class={styles.commentBtnGroup}>
                  <div class={styles.text}>
                    <i></i>

                    {studnetInfo.value.comment ? '修改点评' : '点评作业'}
                  </div>
                </NButton>
                {/* ) : (
                <NTooltip showArrow={false}>
                  {{
                    trigger: () => (
                      <NButton
                        disabled
                        text
                        onClick={() => (showModalMask.value = true)}
                        class={styles.commentBtnGroup}>
                        <div class={styles.text}>
                          <i></i>

                          {studnetInfo.value.comment ? '修改点评' : '点评作业'}
                        </div>
                      </NButton>
                    ),
                    default: '作业截止后可点评作业'
                  }}
                </NTooltip>
              )} */}
              </div>
              {studnetInfo.value.comment ? (
                <div class={styles.commentContent}>
                  {studnetInfo.value.comment}
                </div>
              ) : (
                <div class={[styles.commentContent, styles.commentTip]}>
                  您目前还没有点评该作业喔，快来写评语吧～
                </div>
              )}
            </div>
          ) : null}

          <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
          maskClosable={modalClickMask}
          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>
    );
  }
});
