<template>
  <el-container>
    <el-main>
      <commonFormVue :form="form" :getExamCondition="getExamCondition">
        <el-col :span="8">
          <el-form-item label="考试ID">
            <el-input v-model="form.examRecordDataId"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="需要审核">
            <el-select v-model="form.isWarn" clearable placeholder="全部">
              <el-option value="true" label="是"></el-option>
              <el-option value="false" label="否"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="陌生人脸">
            <el-select v-model="form.hasStranger" clearable placeholder="全部">
              <el-option value="true" label="有"></el-option>
              <el-option value="false" label="无"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="人脸识别成功率">
            <el-row>
              <el-col :span="10">
                <el-input
                  size="mini"
                  v-model="form.faceSuccessPercentLower"
                  label="下限"
                ></el-input>
              </el-col>
              <el-col :span="2">&nbsp;</el-col>
              <el-col :span="10">
                <el-input
                  size="mini"
                  v-model="form.faceSuccessPercentUpper"
                  label="上限"
                ></el-input>
              </el-col>
            </el-row>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="人脸真实性比率">
            <el-row>
              <el-col :span="10">
                <el-input
                  size="mini"
                  v-model="form.livenessSuccessPercentLower"
                  label="下限"
                ></el-input>
              </el-col>
              <el-col :span="2">&nbsp;</el-col>
              <el-col :span="10">
                <el-input
                  size="mini"
                  v-model="form.livenessSuccessPercentUpper"
                  label="上限"
                ></el-input>
              </el-col>
            </el-row>
          </el-form-item>
        </el-col>
      </commonFormVue>
      <el-row>
        <el-col :span="24">
          <el-button @click="search" size="medium" type="primary"
            >查询</el-button
          >
        </el-col>
      </el-row>
      <el-row v-show="currentPagePrivileges.PANEING_BATCHAUDIT">
        <el-col :span="24" style="text-align: right;">
          <el-button-group>
            <el-button
              type="primary"
              :disabled="batchAuditBtnDisabled"
              @click="batchAudit('pass');"
              >通过</el-button
            >
            <el-button
              type="primary"
              :disabled="batchAuditBtnDisabled"
              @click="batchAudit('nopass');"
              >不通过</el-button
            >
          </el-button-group>
        </el-col>
      </el-row>
      <el-row class="margin-top-10">
        <el-col :span="24">
          <el-table
            v-loading="tableLoading"
            element-loading-text="数据加载中"
            ref="multipleTable"
            @selection-change="handleSelectionChange"
            :data="tableData"
            border
          >
            <el-table-column
              type="selection"
              width="55"
              :selectable="selectable"
            ></el-table-column>
            <el-table-column sortable label="考试ID">
              <template slot-scope="scope">
                <el-button
                  v-show="currentPagePrivileges.SNAPSHOT_DETAILS"
                  @click="gotoCaptureDetail(scope.row.dataId);"
                  type="text"
                  >{{ scope.row.dataId }}
                </el-button>
                <span v-show="!currentPagePrivileges.SNAPSHOT_DETAILS">
                  {{ scope.row.dataId }}
                </span>
              </template>
            </el-table-column>
            <el-table-column
              sortable
              label="姓名"
              prop="studentName"
            ></el-table-column>
            <el-table-column
              sortable
              label="身份证号"
              prop="identityNumber"
            ></el-table-column>
            <el-table-column
              sortable
              label="学号"
              prop="studentCode"
            ></el-table-column>
            <el-table-column
              sortable
              label="学习中心"
              prop="orgName"
            ></el-table-column>
            <el-table-column
              sortable
              label="课程"
              prop="courseName"
            ></el-table-column>
            <el-table-column
              sortable
              label="课程层次"
              prop="courseLevel"
            ></el-table-column>
            <el-table-column
              sortable
              label="校验次数"
              prop="faceTotalCount"
            ></el-table-column>
            <el-table-column
              sortable
              label="成功次数"
              prop="faceSuccessCount"
            ></el-table-column>
            <el-table-column
              sortable
              label="陌生人记录"
              prop="faceStrangerCount"
            ></el-table-column>
            <el-table-column
              sortable
              label="人脸识别成功率(%)"
              prop="faceSuccessPercent"
            ></el-table-column>
            <el-table-column
              sortable
              label="人脸真实性比率(%)"
              prop="baiduFaceLivenessSuccessPercent"
            ></el-table-column>
            <el-table-column
              label="操作"
              v-if="currentPagePrivileges.PENDING_OPERATE"
            >
              <template slot-scope="scope">
                <el-button
                  v-if="scope.row.isWarn"
                  size="mini"
                  type="success"
                  icon="el-icon-success"
                  @click="auditPass(scope.row.dataId);"
                  >通过</el-button
                >
                <el-button
                  v-if="scope.row.isWarn"
                  size="mini"
                  type="danger"
                  icon="el-icon-error"
                  @click="openAuditDialog(scope.row.dataId);"
                  >不通过</el-button
                >
              </template>
            </el-table-column>
          </el-table>
          <div class="block">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page.sync="form.pageNo"
              :page-sizes="[10, 30, 50, 100]"
              :page-size="form.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="total"
            ></el-pagination>
          </div>
        </el-col>
      </el-row>
      <el-dialog title="审核" :visible.sync="dialogFormVisible">
        <auditVue :auditForm="auditForm">
          <div class="dialog-footer">
            <el-button @click="dialogFormVisible = false;">取 消</el-button>
            <el-button type="primary" @click="doAudit">确 定</el-button>
          </div>
        </auditVue>
      </el-dialog>
    </el-main>
  </el-container>
</template>
<script>
import { mapState } from "vuex";
import pagePrivilege from "../mixin/pagePrivilege.js";
import commonFormVue from "../component/commonForm.vue";
import auditVue from "../component/audit.vue";

export default {
  mixins: [pagePrivilege],
  components: { commonFormVue, auditVue },
  data() {
    return {
      total: 0,
      tableLoading: false,
      exportLoading: false,
      dialogFormVisible: false,
      form: {
        examRecordDataId: null,
        hasStranger: null,
        courseId: null,
        courseLevel: null,
        examId: null,
        examRecordId: null,
        faceSuccessPercentLower: null,
        faceSuccessPercentUpper: null,
        livenessSuccessPercentLower: null,
        livenessSuccessPercentUpper: null,
        identityNumber: null,
        orgId: null,
        studentCode: null,
        studentName: null,
        isWarn: null,
        pageNo: 1,
        pageSize: 10
      },
      auditForm: {
        examRecordDataId: null,
        disciplineType: "",
        disciplineDetail: "",
        isPass: null
      },
      getExamCondition: {
        params: {
          name: "",
          examTypes: "ONLINE",
          propertyKeys: "IS_FACE_ENABLE"
        },
        filterCondition: "IS_FACE_ENABLE"
      },
      tableData: [],
      multipleSelection: [],
      batchAuditBtnDisabled: true,
      currentPagePrivileges: {
        PANEING_BATCHAUDIT: false,
        PENDING_OPERATE: false,
        SNAPSHOT_DETAILS: false
      }
    };
  },
  computed: {
    ...mapState({ user: state => state.user })
  },
  methods: {
    search() {
      if (!this.form.examId) {
        this.$notify({
          title: "警告",
          message: "请选择考试批次",
          type: "warning",
          duration: 1000
        });
        return false;
      }
      this.tableLoading = true;
      var params = this.form;
      this.$http
        .post("/api/ecs_oe_admin/exam/record/waiting/audit/list", this.form)
        .then(response => {
          if (response.data) {
            this.tableData = response.data.content;
            this.total = response.data.totalElements;
          } else {
            this.tableData = [];
          }
          this.tableLoading = false;
          this.$router.push({
            path: "/oe/awaitingAudit?" + new URLSearchParams(params)
          });
        });
    },
    selectable(row) {
      return row.isWarn;
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    /**
     * pagesize改变时触发
     */
    handleSizeChange(val) {
      this.form.pageSize = val;
      this.search();
    },
    /**
     * 当前页改变时触发
     */
    handleCurrentChange(val) {
      this.form.pageNo = val;
      this.search();
    },
    batchAudit(operate) {
      var isPass = operate == "pass" ? true : false;
      this.$confirm("确定执行?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          var examRecordDataIds = [];
          for (var i = 0; i < this.multipleSelection.length; i++) {
            examRecordDataIds.push(this.multipleSelection[i].dataId);
          }
          var param = new URLSearchParams({
            examRecordDataIds: examRecordDataIds,
            isPass: isPass
          });
          this.$http
            .post("/api/ecs_oe_admin/exam/audit/batch/audit", param)
            .then(() => {
              this.$notify({
                title: "成功",
                message: "操作成功",
                type: "success"
              });
              this.search();
            });
        })
        .catch(() => {});
    },
    openAuditDialog(examRecordDataId) {
      this.dialogFormVisible = true;
      this.auditForm = {
        examRecordDataId: examRecordDataId,
        disciplineType: "",
        disciplineDetail: "",
        isPass: false
      };
    },
    doAudit() {
      var param = new URLSearchParams(this.auditForm);
      this.$http
        .post("/api/ecs_oe_admin/exam/audit/single/audit", param)
        .then(() => {
          this.$notify({
            title: "成功",
            message: "操作成功",
            type: "success"
          });
          this.dialogFormVisible = false;
          this.search();
        });
    },
    /**
     * 审核通过
     */
    auditPass(examRecordDataId) {
      var auditParams = {
        examRecordDataId: examRecordDataId,
        isPass: true
      };
      var param = new URLSearchParams(auditParams);
      this.$http
        .post("/api/ecs_oe_admin/exam/audit/single/audit", param)
        .then(() => {
          this.search();
          this.$notify({
            title: "成功",
            message: "操作成功",
            type: "success"
          });
        });
    },
    gotoCaptureDetail(examRecordDataId) {
      this.$router.push({ path: "/oe/captureDetail/" + examRecordDataId });
    }
  },
  watch: {
    multipleSelection: function() {
      this.batchAuditBtnDisabled = !(this.multipleSelection.length > 0);
    }
  },
  created() {
    var formData = this.$route.query;
    if (formData && formData.examId) {
      for (var attr in formData) {
        var value = formData[attr];
        if (value && value != "null") {
          if (!isNaN(value)) {
            if (~~value == value) {
              value = parseInt(value);
            } else {
              value = parseFloat(value);
            }
          }
          this.form[attr] = value;
        }
      }
      this.search();
    }
  }
};
</script>
<style scoped>
.el-row {
  position: static !important;
}
.margin-top-10 {
  margin-top: 10px;
}
</style>
