<template>
  <div class="exam-invigilation">
    <div class="invigilation-analysis">
      <div class="part-box-head">
        <div class="part-box-head-left"><h1>考情监控</h1></div>
        <div class="part-box-head-right" @click="exitFullscreen">
          <i class="icon icon-full-screen"></i>退出全屏
        </div>
      </div>
      <div class="invigilation-summary">
        <div class="invigilation-summary-item">
          <div class="part-box">
            <h5>
              <span>在线(人)</span>
              <el-popover
                placement="top-start"
                width="200"
                trigger="hover"
                content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
              >
                <i class="el-icon-question" slot="reference"></i>
              </el-popover>
            </h5>
            <p>26000</p>
          </div>
        </div>
        <div class="invigilation-summary-item">
          <div class="part-box">
            <h5>
              <span>待考(人)</span>
              <el-popover
                placement="top-start"
                width="200"
                trigger="hover"
                content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
              >
                <i class="el-icon-question" slot="reference"></i>
              </el-popover>
            </h5>
            <p>170</p>
          </div>
        </div>
        <div class="invigilation-summary-item">
          <div class="part-box">
            <h5>
              <span>考试中(人)</span>
              <el-popover
                placement="top-start"
                width="200"
                trigger="hover"
                content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
              >
                <i class="el-icon-question" slot="reference"></i>
              </el-popover>
            </h5>
            <p>2560</p>
          </div>
        </div>
        <div class="invigilation-summary-item">
          <div class="part-box">
            <h5>
              <span>通讯故障(人)</span>
              <el-popover
                placement="top-start"
                width="200"
                trigger="hover"
                content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
              >
                <i class="el-icon-question" slot="reference"></i>
              </el-popover>
            </h5>
            <p>26000</p>
          </div>
        </div>
        <div class="invigilation-summary-item">
          <div class="part-box">
            <h5>
              <span>预警(人)</span>
              <el-popover
                placement="top-start"
                width="200"
                trigger="hover"
                content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
              >
                <i class="el-icon-question" slot="reference"></i>
              </el-popover>
            </h5>
            <p>15</p>
          </div>
        </div>
      </div>
      <div class="invigilation-online part-box">
        <h3 class="invigilation-part-title">
          <span>各机构在线考试人数分布</span>
          <el-popover
            placement="top-start"
            width="200"
            trigger="hover"
            content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
          >
            <i class="el-icon-question" slot="reference"></i>
          </el-popover>
        </h3>
        <echart-render
          :chart-data="onlineData"
          chart-type="bar"
          v-if="chartDataReady"
        ></echart-render>
      </div>
      <div class="invigilation-warning">
        <el-row :gutter="20">
          <el-col :span="12">
            <div class="part-box">
              <h3 class="invigilation-part-title">
                <span>机构预警分布</span>
                <el-popover
                  placement="top-start"
                  width="200"
                  trigger="hover"
                  content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
                >
                  <i class="el-icon-question" slot="reference"></i>
                </el-popover>
              </h3>
              <echart-render
                :chart-data="orgWarningData"
                chart-type="pie"
                v-if="chartDataReady"
              ></echart-render>
            </div>
          </el-col>
          <el-col :span="12">
            <div class="part-box">
              <h3 class="invigilation-part-title">
                <span>预警类型分布</span>
                <el-popover
                  placement="top-start"
                  width="200"
                  trigger="hover"
                  content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
                >
                  <i class="el-icon-question" slot="reference"></i>
                </el-popover>
              </h3>
              <echart-render
                :chart-data="typeWarningData"
                chart-type="pie"
                v-if="chartDataReady"
              ></echart-render>
            </div>
          </el-col>
        </el-row>
      </div>
      <div class="invigilation-trend part-box">
        <h3 class="invigilation-part-title">
          <span>预警时间趋势</span>
          <el-popover
            placement="top-start"
            width="200"
            trigger="hover"
            content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
          >
            <i class="el-icon-question" slot="reference"></i>
          </el-popover>
        </h3>
        <echart-render
          :chart-data="warningTrendData"
          chart-type="line"
          v-if="chartDataReady"
        ></echart-render>
      </div>
      <div class="invigilation-message part-box">
        <h3 class="invigilation-part-title">
          <span>预警消息</span>
          <el-popover
            placement="top-start"
            width="200"
            trigger="hover"
            content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"
          >
            <i class="el-icon-question" slot="reference"></i>
          </el-popover>
        </h3>
        <div class="message-list">
          <div class="message-item">
            <span><i class="el-icon-warning"></i></span>
            <span>2020-7-1 08:23</span>
            <span
              >张三（证件号：1001001）陌生人入境，系统已提示李四（账号：lisi）进行人工干预</span
            >
          </div>
          <div class="message-item">
            <span><i class="el-icon-warning"></i></span>
            <span>2020-7-1 08:23</span>
            <span
              >张三（证件号：1001001）陌生人入境，系统已提示李四（账号：lisi）进行人工干预</span
            >
          </div>
        </div>
      </div>
    </div>
    <div class="invigilation-list">
      <h3>实时监控台</h3>
      <invigilation-student
        v-for="item in students"
        :key="item.examStudentId"
        :data="item"
      ></invigilation-student>
      <div class="invigilation-student invigilation-student-warning">
        <div class="student-video"></div>
        <div class="student-info">
          <h6><span>刘西西</span><i class="icon icon-net-break"></i></h6>
          <p><span>证件号：</span><span>000000000000000008</span></p>
          <p><span>答题进度：</span><span>20%</span></p>
          <div class="student-time">
            <i class="el-icon-alarm-clock"></i>
            <span>50:32:15</span>
          </div>
        </div>
      </div>
      <div class="invigilation-student invigilation-student-netbreak">
        <div class="student-video"></div>
        <div class="student-info">
          <h6><span>刘西西</span><i class="icon icon-net-break"></i></h6>
          <p><span>证件号：</span><span>000000000000000008</span></p>
          <p><span>答题进度：</span><span>20%</span></p>
          <div class="student-time">
            <i class="el-icon-alarm-clock"></i>
            <span>50:32:15</span>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import EchartRender from "../common/EchartRender";
import InvigilationStudent from "../common/InvigilationStudent";

export default {
  name: "exam-invigilation",
  components: { EchartRender, InvigilationStudent },
  data() {
    return {
      onlineData: {
        dataList: [
          {
            name: "数学学院",
            count: 500,
          },
          {
            name: "物理学院",
            count: 700,
          },
          {
            name: "计算机学院",
            count: 300,
          },
          {
            name: "外语学院",
            count: 400,
          },
        ],
        type: "light", // light or dark
      },
      orgWarningData: {
        dataList: [
          {
            name: "数学学院",
            count: 50,
          },
          {
            name: "物理学院",
            count: 5,
          },
          {
            name: "计算机学院",
            count: 20,
          },
          {
            name: "外语学院",
            count: 25,
          },
        ],
        type: "light",
      },
      typeWarningData: {
        dataList: [
          {
            name: "频繁离开座位",
            count: 50,
          },
          {
            name: "身份验证不通过",
            count: 5,
          },
          {
            name: "陌生人入境",
            count: 20,
          },
          {
            name: "疑似：开启虚拟摄像头",
            count: 25,
          },
        ],
        type: "light",
      },
      warningTrendData: {
        dataList: [
          {
            name: "8:00",
            count: 13,
          },
          {
            name: "9:00",
            count: 16,
          },
          {
            name: "10:00",
            count: 20,
          },
          {
            name: "11:00",
            count: 16,
          },
          {
            name: "12:00",
            count: 10,
          },
          {
            name: "13:00",
            count: 16,
          },
          {
            name: "14:00",
            count: 25,
          },
          {
            name: "15:00",
            count: 30,
          },
          {
            name: "16:00",
            count: 22,
          },
          {
            name: "17:00",
            count: 15,
          },
          {
            name: "18:00",
            count: 12,
          },
          {
            name: "19:00",
            count: 20,
          },
        ],
        type: "light",
      },
      chartDataReady: false,
      students: [],
    };
  },
  computed: {
    isFullScreen() {
      return this.$store.state.isFullScreen;
    },
  },
  watch: {
    isFullScreen(val) {
      this.fullScreenChange(val);
    },
  },
  mounted() {
    this.chartDataReady = true;
  },
  methods: {
    exitFullscreen() {
      const exitFullscreen =
        document.exitFullscreen ||
        document.mozCancelFullScreen ||
        document.webkitCancelFullScreen;

      exitFullscreen.call(document);
    },
    checkDocIsFullscreen() {
      return (
        document.fullscreenElement ||
        document.msFullscreenElement ||
        document.mozFullscreenElement ||
        document.webkitFullscreenElement
      );
    },
    fullScreenChange(isFullScreen) {
      this.chartDataReady = false;
      this.$nextTick(() => {
        const colorType = isFullScreen ? "dark" : "light";
        this.onlineData.type = colorType;
        this.orgWarningData.type = colorType;
        this.typeWarningData.type = colorType;
        this.warningTrendData.type = colorType;
        this.chartDataReady = true;
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.exam-invigilation {
  position: relative;
  padding-right: 310px;
  .part-box-head-right {
    display: none;
  }
  .part-box {
    position: relative;
  }
  .invigilation-part-title {
    position: absolute;
    top: 20px;
    left: 20px;
    font-size: 16px;
    font-weight: 500;
    z-index: 9;
  }
  .el-icon-question {
    margin-left: 5px;
    color: #bdc8da;
  }
}
.invigilation-list {
  position: absolute;
  top: 0;
  right: 0;
  width: 280px;
  height: 100%;
  background: #fff;
  border-radius: 6px;
  padding: 20px;
  z-index: 9;
  overflow-y: auto;
  overflow-x: hidden;

  > h3 {
    font-size: 18px;
    font-weight: 600;
    line-height: 25px;
    margin-bottom: 20px;
  }
}
.invigilation-analysis {
  .part-box-head-left h1 {
    line-height: 25px;
  }
}
.invigilation-summary {
  margin: 0 -10px;
  font-size: 0;

  &-item {
    display: inline-block;
    vertical-align: top;
    width: 20%;
    padding: 0 10px;
    font-size: 14px;

    h5 {
      font-size: 14px;
      height: 20px;
      color: #626a82;
      margin: 0;
    }
    p {
      font-size: 32px;
      line-height: 51px;
      font-weight: 600;
      color: #202b4b;
      margin: 0;
    }

    &:first-child {
      .part-box {
        background-color: #3a93fb;
      }
      h5 {
        color: #fff;
      }
      p {
        color: #fff;
        font-weight: 900;
        font-size: 36px;
      }
    }
  }
}
.invigilation-online {
  height: 360px;
}
.invigilation-warning {
  .part-box {
    height: 282px;
    padding-top: 50px;
    padding-bottom: 10px;
  }
}
.invigilation-trend {
  height: 327px;
}
.invigilation-message {
  min-height: 160px;
  padding-top: 70px;
  .message-item {
    margin-bottom: 15px;

    span {
      display: inline-block;
      vertical-align: middle;
      line-height: 20px;

      &:first-child {
        color: #fe5863;
      }

      &:nth-of-type(2) {
        margin: 0 20px 0 12px;
        color: #8c94ac;
      }
    }
  }
}
</style>
<style lang="scss">
// fullscreen style
.app-fullscreen {
  .part-box {
    background: #2d325a;
  }

  .exam-invigilation {
    margin: -30px;
    padding-right: 280px;
    color: #fff;
    .part-box-head-right {
      display: block;
      cursor: pointer;
      color: #737aae;
      > i {
        margin-right: 8px;
        margin-top: -2px;
      }
    }
    .part-box-head-left > h1 {
      color: #fff;
    }
    .el-icon-question {
      color: #737aae;
    }
  }
  .invigilation-analysis {
    padding: 30px;
    background: #25294a;
  }
  .invigilation-list {
    background: #202442;
    border-radius: 0;
    .invigilation-student {
      background: #2d325a;
      border-radius: 10px;
    }
    .student-info {
      .student-time {
        background: #353c70;
      }
      > p {
        color: #737aae;
      }
    }
  }
  .invigilation-summary {
    &-item {
      h5 {
        color: #737aae;
      }
      p {
        color: #fff;
      }

      &:first-child {
        .el-icon-question {
          color: #fff;
        }
      }
    }
  }
}
</style>
