<template>
  <el-dialog
    class="page-struct-dialog"
    :visible.sync="modalIsShow"
    title="题卡结构"
    top="10vh"
    width="600px"
    :close-on-click-modal="false"
    :close-on-press-escape="false"
    append-to-body
    @open="visibleChange"
  >
    <el-table :data="structData">
      <el-table-column
        prop="topicNo"
        label="大题号"
        width="80"
      ></el-table-column>
      <el-table-column prop="topicName" label="大题名称"></el-table-column>
      <el-table-column prop="questionsCount" label="小题数" width="80">
        <span slot-scope="scope">{{ scope.row.questionsCount || "--" }}</span>
      </el-table-column>
    </el-table>

    <div slot="footer"></div>
  </el-dialog>
</template>

<script>
import { mapState } from "vuex";

export default {
  name: "PageStructDialog",
  data() {
    return {
      modalIsShow: false,
      structData: [],
    };
  },
  computed: {
    ...mapState("card", ["topics"]),
  },
  methods: {
    visibleChange() {
      let structData = [];
      let curTopicId = 0;
      this.topics.forEach((topic) => {
        if (!topic.parent) return;

        if (curTopicId !== topic.parent.id) {
          curTopicId = topic.parent.id;
          let questionsCount = 0;
          if (topic.type === "COMPOSITION") {
            questionsCount = 1;
          } else {
            questionsCount = topic.parent.questionsCount;
          }
          let data = {
            topicNo: topic.parent.topicNo,
            topicName: topic.parent.topicName,
            questionsCount,
          };
          structData.push(data);
        }
      });

      this.structData = structData;
    },
    cancel() {
      this.modalIsShow = false;
    },
    open() {
      this.modalIsShow = true;
    },
  },
};
</script>
