<template>
  <div class="app-container">
    <el-form
      ref="queryForm"
      size="small"
      :inline="true"
      v-show="showSearch"
      label-width="90px"
    >
      <el-form-item label="所属幼儿园" prop="categoryName" v-if="showyey">
        <el-button
          @click="kindergartenshow = true"
          v-if="kindergartenName == '请选择幼儿园'"
          style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
          >{{ kindergartenName }}</el-button
        >
        <el-button
          @click="kindergartenshow = true"
          style="width: 250px; text-align: left; height: 32px"
          v-else
          >{{ kindergartenName }}</el-button
        >
      </el-form-item>

      <el-form-item label="所属批次" prop="categoryName" label-width="70px">
        <el-button
          @click="batchCodeshowclick"
          style="width: 250px; text-align: left; height: 32px; color: #c0c4cc"
          v-if="batchCodeName == '请选择批次'"
          >{{ batchCodeName }}</el-button
        >
        <el-button
          @click="batchCodeshowclick"
          style="width: 250px; text-align: left; height: 32px"
          v-else
          >{{ batchCodeName }}</el-button
        >
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
    </el-row>

    <!-- //批次 -->
    <el-dialog
      width="590px"
      title="选择批次"
      :visible.sync="batchCodeshow"
      append-to-body
      style="margin-top: 20px"
      :before-close="batchCodecancel"
    >
      <el-table :data="testScorelist" align="center" style="margin-top: 0px">
        <el-table-column label="请选择" width="100" align="center">
          <template slot-scope="scope">
            <el-button
              type="primary"
              style="width: 20px; height: 20px"
              v-if="batchCodeId == scope.row.id"
              circle
              @click="batchCodeclick(scope.row)"
            ></el-button>
            <el-button
              v-else
              style="width: 15px; height: 15px"
              circle
              @click="batchCodeclick(scope.row)"
            ></el-button>
          </template>
        </el-table-column>
        <el-table-column
          property="batchCode"
          label="批次编号"
          width="200"
          align="center"
        />
        <el-table-column
          property="batchName"
          label="批次名称"
          width="200"
          align="center"
        />
      </el-table>
      <pagination
        v-show="total4 > 0"
        :total="total4"
        :page.sync="testqueryParams.pageNum"
        :limit.sync="testqueryParams.pageSize"
        @pagination="testScore"
      />
    </el-dialog>

    <!-- //幼儿园 -->
    <el-dialog
      width="850px"
      title="选择所属幼儿园"
      :visible.sync="kindergartenshow"
      append-to-body
      :before-close="kindergartencancel"
    >
      <el-table :data="kindergartenList">
        <el-table-column label="请选择" width="70" align="center">
          <template slot-scope="scope">
            <el-button
              type="primary"
              style="width: 15px; height: 15px"
              circle
              @click="kindergartenNameclick(scope.row)"
              v-if="kindergartenId == scope.row.id"
            ></el-button>

            <el-button
              v-else
              style="width: 15px; height: 15px"
              circle
              @click="kindergartenNameclick(scope.row)"
            ></el-button>
          </template>
        </el-table-column>

        <el-table-column
          property="kindergartenName"
          label="幼儿园名字"
          width="150"
          align="center"
        >
        </el-table-column>
        <el-table-column
          property="kindergartenAddress"
          label="幼儿园地址"
          width="150"
          align="center"
        >
        </el-table-column>
        <el-table-column
          label="幼儿园所在组织"
          align="center"
          prop="organizeName"
          width="150"
        >
        </el-table-column>
        <el-table-column
          property="contacts"
          label="联系人"
          width="150"
          align="center"
        >
        </el-table-column>
        <el-table-column
          property="phone"
          label="联系电话"
          width="150"
          align="center"
        >
        </el-table-column>
      </el-table>
      <pagination
        v-show="total1 > 0"
        :total="total1"
        :page.sync="kqueryParams.pageNum"
        :limit.sync="kqueryParams.pageSize"
        @pagination="getList"
      />
    </el-dialog>

    <el-row v-show="itemshow">
      <div style="display: flex">
        <div style="width: 50%">
          <div
            id="main"
            style="width: 500px; height: 300px; margin: 0 auto"
          ></div>
          <div
            id="main2"
            style="width: 500px; height: 300px; margin: 0 auto"
          ></div>
          <div
            id="main3"
            style="width: 500px; height: 300px; margin: 0 auto"
          ></div>
        </div>
        <div style="width: 50%; margin-top: 50px">
          <el-table
            ref="singleTable"
            :data="studentlist"
            highlight-current-row
            style="margin: 0 auto; width: 530px"
          >
            <el-table-column
              type="index"
              width="130"
              label="排名"
              align="center"
            >
            </el-table-column>
            <el-table-column
              property="studentName"
              label="姓名"
              width="130"
              align="center"
            >
            </el-table-column>
            <el-table-column
              property="className"
              label="班级"
              width="130"
              align="center"
            >
            </el-table-column>
            <el-table-column
              property="itemFraction"
              label="分数"
              width="140"
              align="center"
            >
            </el-table-column>
          </el-table>
        </div>
      </div>
    </el-row>
    <el-row :gutter="20" v-if="itemshow2">
      <el-col :span="24" :offset="0">
        <el-card>
          <div slot="header" style="text-align: center">
            <img style="width: 40px" src="@/icons/笑脸.png" alt="" />

            <div><!-- card title -->该幼儿园此批次暂无数据</div>
          </div>
          <!-- card body -->
        </el-card>
      </el-col>
    </el-row>
  </div>
</template>
<script>
import * as echarts from "echarts";
import {
  listKindergartenInfo,
  tKindergartenInfo,
} from "@/api/system/kindergartenInfo";
import { getRoleInfo, testScoreBatch } from "@/api/system/quality";
import { StudentList, ClassList } from "@/api/system/survey";

export default {
  name: "KindergartenPhysicalTest",
  components: {},
  data() {
    return {
      itemshow: false,
      itemshow2: false,
      showyey: true,
      total1: 0,
      total4: 0,

      //遮罩层
      kindergartenshow: false,
      batchCodeshow: false,
      // 显示搜索条件
      showSearch: true,
      // 表单参数
      form: {},
      //班级类型
      kindergartenType: "kindergarten_type",
      type: {},
      type2: {},
      //幼儿园查询参数
      kqueryParams: {
        pageNum: 1,
        pageSize: 10,
        organizeId: null,
        kindergartenName: null,
        kindergartenAddress: null,
        kindergartenType: null,
        phone: null,
        contacts: null,
      },
      //幼儿园list
      kindergartenList: [],
      //幼儿园名字
      kindergartenName: "请选择幼儿园",
      //幼儿园ID
      kindergartenId: "",
      //批次名称
      batchCodeName: "请选择批次",
      //批次ID
      batchCodeId: "",
      //批次list
      testScorelist: [],
      //批次编号
      testqueryParams: {
        pageNum: 1,
        pageSize: 10,
      },
      studentlist: [],
      //查询传值
      classqueryParams: {
        kindergartenId: "",
        batchCode: "",
        pageNum: 1,
        pageSize: 10,
        // kindergartenId: "12",
        // batchCode: "PC202208030005",
      },
      studentlistqueryParams: {
        kindergartenId: "",
        batchCode: "",
        pageNum: 1,
        pageSize: 10,
        // kindergartenId: "1",
        // batchCode: "PC202208030005",
      },
      LARGECLASS: "LARGE_CLASS",
      MIDDLECLASS: "MIDDLE_CLASS",
      SMALLCLASS: "SMALL_CLASS",
      yclassname1: [],
      yclassname2: [],
      yclassname3: [],
      classscore1: [],
      classscore2: [],
      classscore3: [],
    };
  },
  mounted() {},
  created() {
    this.getList();
    // this.StudentListinfo();
    // this.ClassListinfo();
  },
  methods: {
    ClassListinfo() {
      ClassList(this.classqueryParams).then((res) => {
        console.log(res.rows.length);
        if (res.rows.length == 0) {
          this.itemshow2 = true;
          this.itemshow = false;
          console.log(
            this.yclassname1,
            this.yclassname2,
            this.yclassname3,
            this.classscore1,
            this.classscore2,
            this.classscore3
          );
          console.log(this.itemshow2);
        } else {
          this.$nextTick((e) => {
            this.yclassname1 = [];
            this.yclassname2 = [];
            this.yclassname3 = [];
            this.classscore1 = [];
            this.classscore2 = [];
            this.classscore3 = [];

            console.log(2);
            res.rows.forEach((e) => {
              if (e.classType == this.LARGECLASS) {
                this.yclassname1.push(e.className);
                if (
                  e.itemScoreAll == "" ||
                  !e.itemScoreAll ||
                  e.itemScoreAll == null
                ) {
                  this.classscore1.push(0);
                } else {
                  this.classscore1.push(e.itemScoreAll);
                }
              } else if (e.classType == this.MIDDLECLASS) {
                this.yclassname2.push(e.className);
                if (
                  e.itemScoreAll == "" ||
                  !e.itemScoreAll ||
                  e.itemScoreAll == null
                ) {
                  this.classscore2.push(0);
                } else {
                  this.classscore2.push(e.itemScoreAll);
                }
              } else if (e.classType == this.SMALLCLASS) {
                s;
                this.yclassname3.push(e.className);
                if (
                  e.itemScoreAll == "" ||
                  !e.itemScoreAll ||
                  e.itemScoreAll == null
                ) {
                  this.classscore3.push(0);
                } else {
                  this.classscore3.push(e.itemScoreAll);
                }
              }
            });
            console.log(this.yclassname3, this.yclassname2);
            if (this.yclassname1.length != 0) {
              var myChart = echarts.init(document.getElementById("main"));
            }
            if (this.yclassname2.length != 0) {
              var myChart2 = echarts.init(document.getElementById("main2"));
            }
            if (this.yclassname3.length != 0) {
              var myChart3 = echarts.init(document.getElementById("main3"));
            }
            var myChart = echarts.init(document.getElementById("main"));
            var myChart2 = echarts.init(document.getElementById("main2"));
            var myChart3 = echarts.init(document.getElementById("main3"));
            var app = {};

            var option;
            var option2;
            var option3;
            const posList = [
              "left",
              "right",
              "top",
              "bottom",
              "inside",
              "insideTop",
              "insideLeft",
              "insideRight",
              "insideBottom",
              "insideTopLeft",
              "insideTopRight",
              "insideBottomLeft",
              "insideBottomRight",
            ];
            app.configParameters = {
              rotate: {
                min: 0,
                max: 90,
              },
              align: {
                options: {
                  left: "left",
                  center: "center",
                  right: "right",
                },
              },
              verticalAlign: {
                options: {
                  top: "top",
                  middle: "middle",
                  bottom: "bottom",
                },
              },
              position: {
                options: posList.reduce(function (map, pos) {
                  map[pos] = pos;
                  return map;
                }, {}),
              },
              distance: {
                min: 0,
                max: 100,
              },
            };
            app.config = {
              rotate: 0,
              align: "center",
              verticalAlign: "middle",
              position: "top",
              distance: 15,
              onChange: function () {
                const labelOption = {
                  rotate: app.config.rotate,
                  align: app.config.align,
                  verticalAlign: app.config.verticalAlign,
                  position: app.config.position,
                  distance: app.config.distance,
                };
                myChart.setOption({
                  series: [
                    {
                      label: labelOption,
                    },
                    {
                      label: labelOption,
                    },
                    {
                      label: labelOption,
                    },
                    {
                      label: labelOption,
                    },
                  ],
                });
              },
            };
            const labelOption = {
              show: true,
              position: app.config.position,
              distance: app.config.distance,
              align: app.config.align,
              verticalAlign: app.config.verticalAlign,
              rotate: app.config.rotate,
              formatter: "{c}",
              fontSize: 16,
              rich: {
                name: {},
              },
            };
            option = {
              tooltip: {
                trigger: "axis",
                axisPointer: {
                  type: "shadow",
                },
              },
              legend: {},
              xAxis: [
                {
                  type: "category",
                  axisTick: { show: false },
                  data: this.yclassname1,
                },
              ],
              yAxis: [
                {
                  type: "value",
                },
              ],
              series: [
                {
                  type: "bar",
                  barGap: 0,
                  color: "#00B050",
                  label: labelOption,
                  emphasis: {
                    focus: "series",
                  },
                  data: this.classscore1,
                },
              ],
            };
            option2 = {
              tooltip: {
                trigger: "axis",
                axisPointer: {
                  type: "shadow",
                },
              },
              legend: {},
              xAxis: [
                {
                  type: "category",
                  axisTick: { show: false },
                  data: this.yclassname2,
                },
              ],
              yAxis: [
                {
                  type: "value",
                },
              ],
              series: [
                {
                  type: "bar",
                  barGap: 0,
                  color: "#00B050",
                  label: labelOption,
                  emphasis: {
                    focus: "series",
                  },
                  data: this.classscore2,
                },
              ],
            };
            option3 = {
              tooltip: {
                trigger: "axis",
                axisPointer: {
                  type: "shadow",
                },
              },
              legend: {},
              xAxis: [
                {
                  type: "category",
                  axisTick: { show: false },
                  data: this.yclassname3,
                },
              ],
              yAxis: [
                {
                  type: "value",
                },
              ],
              series: [
                {
                  type: "bar",
                  barGap: 0,
                  color: "#00B050",
                  label: labelOption,
                  emphasis: {
                    focus: "series",
                  },
                  data: this.classscore3,
                },
              ],
            };

            if (this.yclassname1.length != 0) {
              option && myChart.setOption(option);
            }
            if (this.yclassname2.length != 0) {
              option2 && myChart2.setOption(option2);
            }
            if (this.yclassname3.length != 0) {
              option3 && myChart3.setOption(option3);
            }

            // option && myChart.setOption(option);
            // option2 && myChart2.setOption(option2);
            // option3 && myChart3.setOption(option3);
            this.itemshow = true;
            this.itemshow2 = false;
          });
        }
      });
    },
    StudentListinfo() {
      StudentList(this.studentlistqueryParams).then((res) => {
        if (res.rows.length == 0) {
          this.itemshow2 = true;
          this.itemshow = false;
        } else {
          this.studentlist = res.rows;
          this.itemshow2 = false;
          this.itemshow = true;
        }
      });
    },
    //点击批次左边
    batchCodeclick(row) {
      this.batchCodeName = row.batchName;
      this.batchCodeId = row.id;
      this.classqueryParams.batchCode = row.batchCode;
      this.studentlistqueryParams.batchCode = row.batchCode;
      this.batchCodeshow = false;
      this.StudentListinfo();
      this.ClassListinfo();
    },
    //点击批次
    batchCodeshowclick() {
      if (
        this.classqueryParams.kindergartenId == "" ||
        this.classqueryParams.kindergartenId == null
      ) {
        this.$message.error("请先选择幼儿园");
      } else {
        this.testScore();
        this.batchCodeshow = true;
      }
    },
    //批次
    testScore() {
      testScoreBatch(this.testqueryParams).then((res) => {
        this.testScorelist = res.rows;
        this.total4 = res.total;
      });
    },
    //批次关闭
    batchCodecancel() {
      this.batchCodeshow = false;
    },
    //幼儿园关闭
    kindergartencancel() {
      this.kindergartenshow = false;
    },
    //幼儿园左侧点击
    kindergartenNameclick(row) {
      this.classqueryParams.kindergartenId = row.id;
      this.studentlistqueryParams.kindergartenId = row.id;
      this.kindergartenName = row.kindergartenName;
      this.kindergartenId = row.id;
      if (
        this.studentlistqueryParams.batchCode != "" &&
        this.classqueryParams.batchCode != ""
      ) {
        this.StudentListinfo();
        this.ClassListinfo();
      }
      this.kindergartenshow = false;
    },

    getList() {
      tKindergartenInfo(this.kindergartenType).then((res) => {
        this.type = res.data[0];
        this.type2 = res.data[1];
      });
      //用户权限
      getRoleInfo().then((res) => {
        console.log(res);
        this.studentlistqueryParams.kindergartenId = res.data.kindergartenId;
        this.classqueryParams.kindergartenId = res.data.kindergartenId;

        var user = res.data.roleKeys;
        console.log(user);
        if (user.includes("enchou")) {
          this.showyey = false;
          return;
        } else if (user.includes("teacher")) {
          this.showyey = false;
          return;
        } else if (user.includes("parent")) {
          this.showyey = false;
          return;
        }
      });
      //获取幼儿园list
      listKindergartenInfo(this.kqueryParams).then((response) => {
        this.kindergartenList = response.rows;
        this.total1 = response.total;
        // console.log(this.kindergartenList);
      });
    },
    // 表单重置
    reset() {
      this.form = {};
      this.resetForm("form");
    },
  },
};
</script>
<style scoped='scss'>
::v-deep .el-card__header {
  border: none;
}
</style>
