chenken 6 سال پیش
والد
کامیت
235a9ff322

+ 1 - 4
src/modules/marking/views/tp_main.vue

@@ -97,10 +97,7 @@ img {
       <template v-if="this.examType == 'OFFLINE'">
         <el-tab-pane label="标答" name="second">
           <div id="answer-source" v-if="this.examType == 'OFFLINE'">
-            <div
-              style="float: right;margin-right: 20px;"
-              class="no-print"
-            >
+            <div style="float: right;margin-right: 20px;" class="no-print">
               <el-button size="small" type="success" @click="printAnswer();">
                 打印
               </el-button>

+ 169 - 0
src/modules/oe/component/commonForm.vue

@@ -0,0 +1,169 @@
+<template>
+  <el-form :model="form" label-width="80px">
+    <el-col :span="8">
+      <el-form-item label="考试批次">
+        <el-select
+          v-model="form.examId"
+          filterable
+          remote
+          :remote-method="getExams"
+          @change="getCourses"
+          clearable
+          @clear="getExams"
+          placeholder="请选择考试批次"
+        >
+          <el-option
+            v-for="item in examList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-col>
+    <el-col :span="8">
+      <el-form-item label="学习中心">
+        <el-select
+          v-model="form.orgId"
+          filterable
+          remote
+          :remote-method="getOrgs"
+          @change="getCourses"
+          clearable
+          @clear="getOrgs"
+          placeholder="全部"
+        >
+          <el-option
+            v-for="item in orgList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-col>
+    <el-col :span="8">
+      <el-form-item label="课程">
+        <el-select v-model="form.courseId" clearable placeholder="全部">
+          <el-option
+            v-for="item in courseList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-col>
+    <el-col :span="8">
+      <el-form-item label="课程层次">
+        <el-select
+          v-model="form.courseLevel"
+          clearable
+          placeholder="请选择课程层次"
+        >
+          <el-option
+            v-for="item in courseLevels"
+            :key="item.code"
+            :label="item.name"
+            :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.studentName" placeholder="全部"> </el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="8">
+      <el-form-item label="身份证号">
+        <el-input v-model="form.identityNumber" placeholder="全部"> </el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="8">
+      <el-form-item label="学号">
+        <el-input v-model="form.studentCode" placeholder="全部"> </el-input>
+      </el-form-item>
+    </el-col>
+    <slot></slot>
+  </el-form>
+</template>
+<script>
+import { courseLevels } from "../constants/constants";
+import { mapState } from "vuex";
+export default {
+  props: ["form"],
+  data() {
+    return {
+      examList: [],
+      courseList: [],
+      orgList: [],
+      courseLevels: courseLevels
+    };
+  },
+  computed: {
+    ...mapState({ user: state => state.user })
+  },
+  methods: {
+    getExams(examName) {
+      if (!examName) {
+        examName = "";
+      }
+      this.$http
+        .get("/api/ecs_exam_work/exam/queryByNameLike", {
+          params: {
+            name: examName,
+            examTypes: "ONLINE#OFFLINE"
+          }
+        })
+        .then(response => {
+          this.examList = response.data;
+        });
+    },
+    getOrgs(orgName) {
+      if (!orgName) {
+        orgName = "";
+      }
+      var rootOrgId = this.user.rootOrgId;
+      this.$http
+        .get("/api/ecs_core/org/query", {
+          params: {
+            name: orgName,
+            rootOrgId: rootOrgId,
+            enable: true
+          }
+        })
+        .then(response => {
+          this.orgList = response.data;
+        });
+    },
+    getCourses() {
+      this.form.courseId = "";
+      this.courseList = [];
+      var examId = this.form.examId;
+      var orgId = this.form.orgId;
+      if (!examId) {
+        return false;
+      }
+      this.$http
+        .get("/api/ecs_oe_admin/exam/student/findCoursesByExamIdAndOrgId", {
+          params: {
+            examId: examId,
+            orgId: orgId
+          }
+        })
+        .then(response => {
+          this.courseList = response.data;
+        });
+    }
+  },
+  created() {
+    this.getExams("");
+    this.getOrgs("");
+  }
+};
+</script>

+ 22 - 0
src/modules/oe/constants/constants.js

@@ -0,0 +1,22 @@
+export const courseLevels = [
+  { code: "GQZ", name: "高起专" },
+  { code: "GQB", name: "高起本" },
+  { code: "ZSB", name: "专升本" }
+];
+export const auditExplainList = [
+  { name: "CHEAT", desc: "作弊" },
+  { name: "NOT_ONESELF", desc: "他人替考" },
+  { name: "NOT_ONESELF_OF_PHOTO", desc: "相片替考" },
+  { name: "ACTION_FAILURE", desc: "指定动作失败" },
+  { name: "BATCH_PASS", desc: "批量审核通过" },
+  { name: "BATCH_NOTPASS", desc: "批量审核不通过" },
+  { name: "OTHER", desc: "其他" }
+];
+export const disciplineTypeList = [
+  { name: "CHEAT", desc: "作弊" },
+  { name: "NOT_ONESELF", desc: "他人替考" },
+  { name: "NOT_ONESELF_OF_PHOTO", desc: "相片替考" },
+  { name: "ACTION_FAILURE", desc: "指定动作失败" },
+  { name: "BATCH_NOTPASS", desc: "批量审核不通过" },
+  { name: "OTHER", desc: "其他" }
+];

+ 9 - 0
src/modules/oe/routes/routes.js

@@ -0,0 +1,9 @@
+import absent from "../views/absent.vue";
+
+export default [
+  {
+    path: "/oe/absent",
+    name: "absent",
+    component: absent
+  }
+];

+ 173 - 0
src/modules/oe/views/absent.vue

@@ -0,0 +1,173 @@
+<template>
+  <el-container>
+    <el-header> <div class="header-title">缺考登记</div> </el-header>
+    <el-main>
+      <commonFormVue :form="form">&nbsp;</commonFormVue>
+      <el-row>
+        <el-col :span="24">
+          <el-button @click="search" size="medium" type="primary"
+            >查询</el-button
+          >
+          <el-button
+            v-show="!exportLoading"
+            @click="exportData"
+            type="primary"
+            size="medium"
+            plain
+            >批量导出</el-button
+          >
+          <el-button :loading="true" v-show="exportLoading"
+            >导出数据中...</el-button
+          >
+        </el-col>
+      </el-row>
+
+      <el-table
+        v-loading="tableLoading"
+        element-loading-text="数据加载中"
+        height="300px"
+        :data="tableData"
+        border
+      >
+        <el-table-column type="index" label="序号"> </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="orgName">
+        </el-table-column>
+        <el-table-column sortable label="考点" prop="examSiteName">
+        </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>
+      <div class="block">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page.sync="currentPage1"
+          :page-size="pageSize"
+          layout="total, prev, pager, next"
+          :total="total"
+        >
+        </el-pagination>
+      </div>
+    </el-main>
+  </el-container>
+</template>
+<script>
+import { courseLevels } from "../constants/constants";
+import { mapState } from "vuex";
+import commonFormVue from "../component/commonForm.vue";
+export default {
+  components: { commonFormVue },
+  data() {
+    return {
+      pageSize: 10,
+      total: 0,
+      tableLoading: false,
+      exportLoading: false,
+      form: {
+        examRecordDataId: null,
+        hasStranger: null,
+        courseId: null,
+        courseLevel: null,
+        examId: null,
+        examRecordId: null,
+        faceSuccessPercentLower: null,
+        faceSuccessPercentUpper: null,
+        identityNumber: null,
+        orgId: null,
+        studentCode: null,
+        studentName: null,
+        isWarn: null,
+        pageNo: 1,
+        pageSize: "10",
+        rootOrgId: "",
+        auditStatus: null
+      },
+      currentPage1: 1,
+      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/unfinished/list", this.form)
+        .then(response => {
+          if (response.data) {
+            this.tableData = response.data.content;
+            this.total = response.data.totalElements;
+          } else {
+            this.tableData = [];
+          }
+          this.tableLoading = false;
+        });
+    },
+    exportData() {
+      if (!this.form.examId) {
+        this.$notify({
+          title: "警告",
+          message: "请选择考试批次",
+          type: "warning",
+          duration: 1000
+        });
+        return false;
+      }
+      this.exportLoading = true;
+      this.$http
+        .get("/api/ecs_oe_admin/exam/student/unfinished/list/export", {
+          params: {
+            query: this.form
+          },
+          responseType: "arraybuffer"
+        })
+        .then(response => {
+          if (response.data) {
+            var blob = new Blob([response.data], {
+              type:
+                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+            });
+            var url = URL.createObjectURL(blob);
+            var a = document.createElement("a");
+            a.href = url;
+            a.download = "缺考登记.xlsx";
+            a.target = "_blank";
+            a.click();
+            URL.revokeObjectURL(url);
+          }
+          this.exportLoading = false;
+        });
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`);
+    },
+    handleCurrentChange(val) {
+      console.log(`当前页: ${val}`);
+    }
+  },
+  created() {}
+};
+</script>
+<style scope>
+.header-title {
+  text-align: left;
+}
+</style>

+ 5 - 7
src/modules/portal/views/Home.vue

@@ -74,13 +74,11 @@
       </el-aside>
       <el-container>
         <el-main>
-            <div class="content-wrapper">
-                <section class="content">
-                    <div class="row">
-                        <router-view></router-view>
-                    </div>
-                </section>
-            </div>
+          <div class="content-wrapper">
+            <section class="content">
+              <div class="row"><router-view></router-view></div>
+            </section>
+          </div>
         </el-main>
         <el-footer>&copy; 启明泰和 2018</el-footer>
       </el-container>

+ 2 - 1
src/router.js

@@ -2,12 +2,13 @@ import Vue from "vue";
 import Router from "vue-router";
 import PortalRoutes from "./modules/portal/routes/routes";
 import MarklRoutes from "./modules/marking/routes/routes";
+import OeRoutes from "./modules/oe/routes/routes";
 
 Vue.use(Router);
 
 let router = new Router({
   mode: "history",
-  routes: [...PortalRoutes,...MarklRoutes]
+  routes: [...PortalRoutes, ...MarklRoutes, ...OeRoutes]
 });
 
 // router.beforeEach((to, from, next) => {