<template>
  <div v-loading="loading" style="min-height: 500px;">
    <el-form
      v-if="isRender"
      ref="questions"
      size="small"
      :model="questionForm"
    >
      <template>
        <QuestionFormItem
          v-for="question of questions"
          :key="question.Id"
          :question="question"
          :question-form="questionForm"
          :is-system-criterion="isSystemCriterion"
          :reading-task-state="readingTaskState"
          :criterion-id="criterionId"
          :calculation-list="CalculationList"
          @resetFormItemData="resetFormItemData"
          @setFormItemData="setFormItemData"
        />
      </template>
    </el-form>
  </div>

</template>

<script>

import { getTrialReadingQuestion, getCustomQuestionPreview, getCustomTableQuestionPreview, getQuestionCalculateRelation } from '@/api/trials'
import QuestionFormItem from './QuestionFormItem'
export default {
  name: 'QuestionsPreview',
  components: {
    QuestionFormItem
  },
  props: {
    isSystemCriterion: {
      type: Boolean,
      default() { return false }
    },
    criterionId: {
      type: String,
      required: true
    },
    formType: {
      type: Number,
      required: true
    }
  },
  data() {
    return {
      loading: false,
      questions: [],
      questionForm: {},
      publicQuestions: [],
      isRender: false,
      readingTaskState: 0,
      activeName: 0,
      CalculationList: []
    }
  },
  mounted() {
    this.getQuestionCalculateRelation()
    this.getCustomTableQuestionPreview()
  },
  methods: {
    getQuestionCalculateRelation() {
      getQuestionCalculateRelation({
        TrialReadingCriterionId: this.criterionId
      }).then(res => {
        this.CalculationList = res.Result
      })
    },
    getCustomTableQuestionPreview() {
      this.loading = true
      getCustomTableQuestionPreview({
        TrialReadingCriterionId: this.criterionId
      }).then(res => {
        res.Result.SinglePage.map((v) => {
          if (v.Type === 'group' && v.Childrens.length === 0) return
          if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary' && v.Type !== 'table') {
            this.$set(this.questionForm, v.Id, v.Answer)
          }
          if (v.Type === 'table') {
            this.$set(this.questionForm, v.Id, [])
          }
          if (v.Childrens.length > 0) {
            this.setChild(v.Childrens)
          }
        })
        this.questions = res.Result.SinglePage
        this.isRender = true
        this.loading = false
      })
    },
    getQuestions() {
      this.loading = true
      var param = {
        readingQuestionCriterionTrialId: this.criterionId,
        formType: this.formType
      }
      getTrialReadingQuestion(param).then(res => {
        if (res.OtherInfo.FormType === 2) {
          if (res.Result.MultiPage.length > 0) {
            res.Result.MultiPage.map((v) => {
              if (v.Type === 'group' && v.Childrens.length === 0 && i.Type !== 'table') return
              if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary' && i.Type !== 'table') {
                this.$set(this.questionForm, v.Id, v.Answer)
              }
              if (v.Childrens.length > 0) {
                this.setChild(v.Childrens)
              }
            })
            this.questions = res.Result.MultiPage
            this.activeName = res.Result.MultiPage[0].PageName
          }
          if (res.Result.PublicPage.length > 0) {
            res.Result.PublicPage.map((v) => {
              if (v.Type === 'group' && v.Childrens.length === 0 && i.Type !== 'table') return
              if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary' && i.Type !== 'table') {
                this.$set(this.questionForm, v.Id, v.Answer)
              }
              if (v.Childrens.length > 0) {
                this.setChild(v.Childrens)
              }
            })
            this.publicQuestions = res.Result.PublicPage
          }
        } else {
          res.Result.SinglePage.map((v) => {
            if (v.Type === 'group' && v.Childrens.length === 0 && i.Type !== 'table') return
            if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary' && i.Type !== 'table' && i.Type !== 'number') {
              this.$set(this.questionForm, v.Id, v.Answer)
            }
            if (i.Type === 'table') {
              this.$set(this.questionForm, v.Id, [])
            }
            if (i.Type === 'number') {
              this.$set(this.questionForm, v.Id, v.Answer)
            }
            if (v.Childrens.length > 0) {
              this.setChild(v.Childrens)
            }
          })
          this.questions = res.Result.SinglePage
        }
        this.isRender = true
        this.loading = false
      }).catch(() => { this.loading = false })
    },
    setChild(obj) {
      obj.forEach(i => {
        if (i.Type !== 'group' && i.Type !== 'summary' && i.Id && i.Type !== 'table') {
          this.$set(this.questionForm, i.Id, i.Answer)
        }
        if (i.Type === 'table') {
          this.$set(this.questionForm, i.Id, [])
        }
        if (i.Type === 'number') {
          this.$set(this.questionForm, i.Id, i.Answer)
        }
        if (i.Childrens && i.Childrens.length > 0) {
          this.setChild(i.Childrens)
        }
      })
    },
    resetFormItemData(v) {
      this.questionForm[v] = ''
    },
    setFormItemData(obj) {
      this.$set(this.questionForm, obj.key, JSON.parse(JSON.stringify(obj.val)))
    }
  }
}
</script>
<style lang="scss" scoped>
::-webkit-scrollbar {
    width: 7px;
    height: 7px;
  }
  ::-webkit-scrollbar-thumb {
    border-radius: 10px;
    background: #d0d0d0;
  }
.tabContent{
  height:300px;
  overflow-y: auto;

}
</style>
