<template>
  <div class="body_edit">
    <el-tabs v-model="activeName">
      <el-tab-pane label="问卷详情" name="questionnaire">
        <el-form ref="form" :rules="rules" class="questionnaireForm" :model="questionnaireForm" label-width="100px">
          <el-form-item label="问卷名称:" prop="name">
            <el-input v-model="questionnaireForm.name" />
          </el-form-item>
          <el-form-item class="editBottomItem">
            <el-button type="primary" @click="onSubmit('form')">保存</el-button>
            <el-button @click="onCancel">取消</el-button>
          </el-form-item>
        </el-form>
      </el-tab-pane>
      <el-tab-pane label="问卷题库" name="question" :disabled="queId ? false : true">
        <el-row :gutter="20" style="padding-top: 20px">
          <el-col :span="12">
            <Question
              v-if="queId"
              ref="Question"
              :que-id="queId"
              @handleAddQuestion="questionId = ''"
              @handleCloseQuestion="questionId = ''"
              @handleEditQuestion="handleEditQuestion"
              @setQuestionTotal="setQuestionTotal"
            />
          </el-col>
          <el-col :span="12">
            <QuestionEdit
              v-if="queId"
              :total="total"
              :question-id="questionId"
              :que-id="queId"
              @handleRefreshQuestion="handleRefreshQuestion"
              @handleEditQuestion="handleEditQuestion"
            />
          </el-col>
        </el-row>
      </el-tab-pane>
    </el-tabs>
  </div>
</template>
<script>
import { saveQuestionnaire, UpdateQuestionnaire, getQuestionnaireDetail } from '@/api/questionnaire'
import Question from '@/components/Question/index.vue'
import QuestionEdit from '@/components/Question/edit.vue'
export default {
  components: {
    Question,
    QuestionEdit
  },
  data() {
    return {
      rules: {
        name: [{ required: true, message: '请输入问卷名称', trigger: 'blur' }]
      },
      questionnaireForm: {
        name: undefined
      },
      queId: undefined,
      activeName: 'questionnaire',
      questionId: '',
      total: 0
    }
  },
  watch: {
    '$route.query.id': {
      handler(val) {
        if (val) {
          // 有值代表是编辑状态 查询详情  没有值就是新增
          this.queId = val
          getQuestionnaireDetail(val).then((res) => {
            this.questionnaireForm = res.data
          })
        }
      },
      immediate: true // 页面加载时就启动
    }
  },
  methods: {
    onCancel() {
      this.$router.go(-1)
    },
    onSubmit(form) {
      this.$refs[form].validate((valid) => {
        if (valid) {
          if (this.queId) {
            const data = { ...this.questionnaireForm }
            UpdateQuestionnaire(data, this.queId).then((res) => {
              this.$message('修改成功')
              this.$router.go(-1)
            })
          } else {
            saveQuestionnaire(this.questionnaireForm).then((res) => {
              this.$message('保存成功')
              this.$router.replace({
                name: 'questionnaireEdit',
                query: { id: res.data.queId }
              })
            })
          }
        } else {
          return false
        }
      })
    },
    handleEditQuestion(val) {
      this.questionId = val
    },
    handleRefreshQuestion() {
      this.$refs.Question.onSearch()
    },
    setQuestionTotal(val) {
      this.total = Number(val)
    }
  }
}
</script>
<style scoped>
.questionnaireForm {
  width: 700px;
}
.editBottomItem > div {
  margin: 0 !important;
  text-align: center;
}
</style>