Explorar el Código

提交网考页面

chenken hace 6 años
padre
commit
2700e7cd73

+ 24 - 1
src/modules/oe/routes/routes.js

@@ -1,6 +1,9 @@
 import absent from "../views/absent.vue";
 import awaitingAudit from "../views/awaitingAudit.vue";
-
+import alreadyAudited from "../views/alreadyAudited.vue";
+import reexamine from "../views/reexamine.vue";
+import illegalityNameList from "../views/illegalityNameList.vue";
+import scoreStatistics from "../views/scoreStatistics.vue";
 export default [
   {
     path: "/oe/absent",
@@ -11,5 +14,25 @@ export default [
     path: "/oe/awaitingAudit",
     name: "awaitingAudit",
     component: awaitingAudit
+  },
+  {
+    path: "/oe/alreadyAudited",
+    name: "alreadyAudited",
+    component: alreadyAudited
+  },
+  {
+    path: "/oe/reexamine",
+    name: "reexamine",
+    component: reexamine
+  },
+  {
+    path: "/oe/illegalityNameList",
+    name: "illegalityNameList",
+    component: illegalityNameList
+  },
+  {
+    path: "/oe/scoreStatistics",
+    name: "scoreStatistics",
+    component: scoreStatistics
   }
 ];

+ 211 - 0
src/modules/oe/views/alreadyAudited.vue

@@ -0,0 +1,211 @@
+<template>
+  <el-container>
+    <el-header> <div class="header-title">监考已审</div> </el-header>
+    <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.status" clearable placeholder="全部">
+              <el-option value="PASS" label="通过"></el-option>
+              <el-option value="UN_PASS" label="不通过"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="审核说明">
+            <el-select
+              v-model="form.disciplineType"
+              clearable
+              placeholder="全部"
+            >
+              <el-option
+                v-for="item in auditExplainList"
+                :key="item.name"
+                :label="item.desc"
+                :value="item.code"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="审核人">
+            <el-input v-model="form.auditUserName" placeholder="审核人">
+            </el-input>
+          </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 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 sortable label="考试ID" prop="examRecordDataId">
+            </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="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="examOrder">
+            </el-table-column>
+            <el-table-column sortable label="审核说明" prop="disciplineType">
+            </el-table-column>
+            <el-table-column sortable label="审核结果" prop="status">
+            </el-table-column>
+            <el-table-column sortable label="审核人" prop="auditUserName">
+            </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-main>
+  </el-container>
+</template>
+<script>
+import { mapState } from "vuex";
+import commonFormVue from "../component/commonForm.vue";
+import { auditExplainList } from "../constants/constants";
+export default {
+  components: { commonFormVue },
+  data() {
+    return {
+      auditExplainList: auditExplainList,
+      total: 0,
+      tableLoading: false,
+      form: {
+        examRecordDataId: null,
+        hasStranger: null,
+        courseId: null,
+        courseLevel: null,
+        examId: null,
+        faceSuccessPercentLower: null,
+        faceSuccessPercentUpper: null,
+        identityNumber: null,
+        orgId: null,
+        studentCode: null,
+        studentName: null,
+        isWarn: null,
+        pageNo: 1,
+        pageSize: "10",
+        disciplineType: "",
+        auditUserName: "",
+        status: ""
+      },
+
+      getExamCondition: {
+        params: {
+          name: "",
+          examTypes: "ONLINE",
+          propertyKeys: "IS_FACE_ENABLE"
+        },
+        filterCondition: "IS_FACE_ENABLE"
+      },
+      tableData: []
+    };
+  },
+  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;
+      this.$http
+        .post("/api/ecs_oe_admin/exam/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;
+        });
+    },
+    selectable(row) {
+      return row.isWarn;
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    /**
+     * pagesize改变时触发
+     */
+    handleSizeChange(val) {
+      this.form.pageSize = val;
+      this.search();
+    },
+    /**
+     * 当前页改变时触发
+     */
+    handleCurrentChange() {
+      this.search();
+    }
+  },
+  created() {}
+};
+</script>
+<style scope>
+.el-row {
+  position: static !important;
+}
+.margin-top-10 {
+  margin-top: 10px;
+}
+</style>

+ 185 - 0
src/modules/oe/views/illegalityNameList.vue

@@ -0,0 +1,185 @@
+<template>
+  <el-container>
+    <el-header> <div class="header-title">违纪名单</div> </el-header>
+    <el-main>
+      <commonFormVue :form="form" :getExamCondition="getExamCondition">
+        <el-col :span="8">
+          <el-form-item label="违纪说明">
+            <el-select
+              v-model="form.disciplineType"
+              clearable
+              placeholder="全部"
+            >
+              <el-option
+                v-for="item in disciplineTypeList"
+                :key="item.name"
+                :label="item.desc"
+                :value="item.code"
+              >
+              </el-option>
+            </el-select>
+          </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 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 sortable label="考试ID" prop="examRecordId">
+            </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="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="disciplineType">
+            </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-main>
+  </el-container>
+</template>
+<script>
+import { mapState } from "vuex";
+import commonFormVue from "../component/commonForm.vue";
+import { disciplineTypeList } from "../constants/constants";
+export default {
+  components: { commonFormVue },
+  data() {
+    return {
+      disciplineTypeList: disciplineTypeList,
+      total: 0,
+      tableLoading: 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
+      },
+
+      getExamCondition: {
+        params: {
+          name: "",
+          examTypes: "ONLINE"
+        },
+        filterCondition: ""
+      },
+      tableData: []
+    };
+  },
+  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;
+      this.$http
+        .post("/api/ecs_oe_admin/exam/audit/discipline/list", this.form)
+        .then(response => {
+          if (response.data) {
+            this.tableData = response.data.content;
+            this.total = response.data.totalElements;
+          } else {
+            this.tableData = [];
+          }
+          this.tableLoading = false;
+        });
+    },
+    selectable(row) {
+      return row.isWarn;
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    /**
+     * pagesize改变时触发
+     */
+    handleSizeChange(val) {
+      this.form.pageSize = val;
+      this.search();
+    },
+    /**
+     * 当前页改变时触发
+     */
+    handleCurrentChange() {
+      this.search();
+    }
+  },
+  created() {}
+};
+</script>
+<style scope>
+.el-row {
+  position: static !important;
+}
+.margin-top-10 {
+  margin-top: 10px;
+}
+</style>

+ 155 - 0
src/modules/oe/views/reexamine.vue

@@ -0,0 +1,155 @@
+<template>
+  <el-container>
+    <el-header> <div class="header-title">设置重考</div> </el-header>
+    <el-main>
+      <commonFormVue :form="form" :getExamCondition="getExamCondition">
+      </commonFormVue>
+      <el-row>
+        <el-col :span="24">
+          <el-button @click="search" size="medium" type="primary"
+            >查询</el-button
+          >
+        </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 sortable label="学习中心" prop="orgName">
+            </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="courseName">
+            </el-table-column>
+            <el-table-column sortable label="课程层次" prop="courseLevel">
+            </el-table-column>
+            <el-table-column label="操作">
+              <template>
+                <el-button size="mini" type="success" icon="el-icon-success"
+                  >设置重考</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-main>
+  </el-container>
+</template>
+<script>
+import { mapState } from "vuex";
+import commonFormVue from "../component/commonForm.vue";
+export default {
+  components: { commonFormVue },
+  data() {
+    return {
+      total: 0,
+      tableLoading: 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
+      },
+
+      getExamCondition: {
+        params: {
+          name: "",
+          examTypes: "ONLINE"
+        },
+        filterCondition: ""
+      },
+      tableData: []
+    };
+  },
+  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;
+      this.$http
+        .post("/api/ecs_oe_admin/exam/student/reexamine/list", this.form)
+        .then(response => {
+          if (response.data) {
+            this.tableData = response.data.content;
+            this.total = response.data.totalElements;
+          } else {
+            this.tableData = [];
+          }
+          this.tableLoading = false;
+        });
+    },
+    selectable(row) {
+      return row.isWarn;
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    /**
+     * pagesize改变时触发
+     */
+    handleSizeChange(val) {
+      this.form.pageSize = val;
+      this.search();
+    },
+    /**
+     * 当前页改变时触发
+     */
+    handleCurrentChange() {
+      this.search();
+    }
+  },
+  created() {}
+};
+</script>
+<style scope>
+.el-row {
+  position: static !important;
+}
+.margin-top-10 {
+  margin-top: 10px;
+}
+</style>

+ 172 - 0
src/modules/oe/views/scoreStatistics.vue

@@ -0,0 +1,172 @@
+<template>
+  <el-container>
+    <el-header> <div class="header-title">违纪名单</div> </el-header>
+    <el-main>
+      <commonFormVue :form="form" :getExamCondition="getExamCondition">
+        <el-col :span="8">
+          <el-form-item label="是否缺考">
+            <el-select v-model="form.finished" clearable placeholder="全部">
+              <el-option value="false" label="是"></el-option>
+              <el-option value="true" label="否"></el-option>
+            </el-select>
+          </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 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 sortable label="学习中心" prop="orgName">
+            </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="courseNameAndCode">
+            </el-table-column>
+            <el-table-column sortable label="课程层次" prop="courseLevel">
+            </el-table-column>
+            <el-table-column sortable label="年级" prop="grade">
+            </el-table-column>
+            <el-table-column sortable label="专业" prop="specialtyName">
+            </el-table-column>
+            <el-table-column sortable label="违纪次数" prop="disciplineCount">
+            </el-table-column>
+            <el-table-column sortable label="正常交卷次数" prop="submitCount">
+            </el-table-column>
+            <el-table-column sortable label="剩余考试次数" prop="leftExamTimes">
+            </el-table-column>
+            <el-table-column sortable label="是否缺考" prop="isAbsent">
+            </el-table-column>
+            <el-table-column sortable label="最终成绩" prop="finalExamScore">
+            </el-table-column>
+            <el-table-column sortable label="成绩统计时间" prop="startTime">
+            </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-main>
+  </el-container>
+</template>
+<script>
+import { mapState } from "vuex";
+import commonFormVue from "../component/commonForm.vue";
+import { disciplineTypeList } from "../constants/constants";
+export default {
+  components: { commonFormVue },
+  data() {
+    return {
+      disciplineTypeList: disciplineTypeList,
+      total: 0,
+      tableLoading: 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,
+        finished: ""
+      },
+
+      getExamCondition: {
+        params: {
+          name: "",
+          examTypes: "ONLINE"
+        },
+        filterCondition: ""
+      },
+      tableData: []
+    };
+  },
+  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;
+      this.$http
+        .post("/api/ecs_oe_admin/exam/score/statistic/list", this.form)
+        .then(response => {
+          if (response.data) {
+            this.tableData = response.data.content;
+            this.total = response.data.totalElements;
+          } else {
+            this.tableData = [];
+          }
+          this.tableLoading = false;
+        });
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    /**
+     * pagesize改变时触发
+     */
+    handleSizeChange(val) {
+      this.form.pageSize = val;
+      this.search();
+    },
+    /**
+     * 当前页改变时触发
+     */
+    handleCurrentChange() {
+      this.search();
+    }
+  },
+  created() {}
+};
+</script>
+<style scope>
+.el-row {
+  position: static !important;
+}
+.margin-top-10 {
+  margin-top: 10px;
+}
+</style>