zhangjie 10 сар өмнө
parent
commit
84cf0ce192

+ 6 - 0
src/assets/styles/element-ui-costom.scss

@@ -673,3 +673,9 @@
     }
     }
   }
   }
 }
 }
+
+.el-input-number {
+  .el-input__inner {
+    text-align: left;
+  }
+}

+ 10 - 0
src/modules/base/api.js

@@ -216,6 +216,16 @@ export const saveFileType = (datas) => {
 export const deleteFileType = (id) => {
 export const deleteFileType = (id) => {
   return $postParam("/api/admin/basic/semester/delete", { id });
   return $postParam("/api/admin/basic/semester/delete", { id });
 };
 };
+
+// scan statistics
+export const scanStatisticsListQuery = (datas) => {
+  return $postParam("/api/admin/basic/exam/page", datas);
+};
+export const exportScanStatistics = (datas) => {
+  return $post("/api/admin/auth/export/device/info", datas, {
+    responseType: "blob",
+  });
+};
 // common
 // common
 export const uploadFile = (datas) => {
 export const uploadFile = (datas) => {
   return $post("/api/admin/common/file/upload", datas);
   return $post("/api/admin/common/file/upload", datas);

+ 18 - 0
src/modules/base/router.js

@@ -3,6 +3,9 @@ import OrganizationManage from "./views/OrganizationManage.vue";
 import RoleManage from "./views/RoleManage.vue";
 import RoleManage from "./views/RoleManage.vue";
 import UserManage from "./views/UserManage.vue";
 import UserManage from "./views/UserManage.vue";
 import SystemSetting from "./views/SystemSetting.vue";
 import SystemSetting from "./views/SystemSetting.vue";
+import FieldManage from "./views/FieldManage.vue";
+import FileTypeManage from "./views/FileTypeManage.vue";
+import ScanStatistics from "./views/ScanStatistics.vue";
 
 
 // dict
 // dict
 import StudentManage from "./views/StudentManage.vue";
 import StudentManage from "./views/StudentManage.vue";
@@ -45,4 +48,19 @@ export default [
     name: "ExamManage",
     name: "ExamManage",
     component: ExamManage,
     component: ExamManage,
   },
   },
+  {
+    path: "/base/field-manage",
+    name: "FieldManage",
+    component: FieldManage,
+  },
+  {
+    path: "/base/file-type-manage",
+    name: "FileTypeManage",
+    component: FileTypeManage,
+  },
+  {
+    path: "/base/scan-statistics",
+    name: "ScanStatistics",
+    component: ScanStatistics,
+  },
 ];
 ];

+ 147 - 0
src/modules/base/views/ScanStatistics.vue

@@ -0,0 +1,147 @@
+<template>
+  <div class="scan-statistics">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
+        <template v-if="checkPrivilege('condition', 'condition')">
+          <el-form-item label="日期:">
+            <el-date-picker
+              v-model="createTime"
+              type="daterange"
+              :picker-options="pickerOptions"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              value-format="timestamp"
+              align="right"
+              unlink-panels
+            >
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="扫描员:">
+            <el-input
+              style="width: 180px"
+              v-model.trim="filter.scanUser"
+              placeholder="扫描员"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </template>
+
+        <el-form-item label-width="0px">
+          <el-button
+            v-if="checkPrivilege('button', 'select')"
+            type="primary"
+            @click="toPage(1)"
+            >查询</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button
+          v-if="checkPrivilege('button', 'export')"
+          type="primary"
+          :loading="downloading"
+          @click="toExport"
+          >导出</el-button
+        >
+      </div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table ref="TableList" :data="dataList">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="70"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column prop="scanUserName" label="扫描员"></el-table-column>
+        <el-table-column
+          prop="scanUserName"
+          label="扫描图片(张)"
+        ></el-table-column>
+        <el-table-column
+          prop="scanUserName"
+          label="扫描学生数"
+        ></el-table-column>
+        <el-table-column prop="scanUserName" label="扫描日期"></el-table-column>
+      </el-table>
+      <div class="part-page">
+        <el-pagination
+          background
+          layout="total,prev, pager, next"
+          :current-page="current"
+          :total="total"
+          :page-size="size"
+          @current-change="toPage"
+        >
+        </el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { scanStatisticsListQuery, exportScanStatistics } from "../api";
+import { downloadByApi } from "@/plugins/download";
+import pickerOptions from "@/constants/datePickerOptions";
+
+export default {
+  name: "scan-statistics",
+  data() {
+    return {
+      filter: {
+        startTime: "",
+        endTime: "",
+        scanUser: "",
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      dataList: [],
+      downloading: false,
+      // date-picker
+      createTime: [],
+      pickerOptions,
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    async getList() {
+      if (!this.checkPrivilege("list", "list")) return;
+
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size,
+      };
+      if (this.createTime) {
+        datas.startTime = this.createTime[0];
+        datas.endTime = this.createTime[1];
+      }
+      const data = await scanStatisticsListQuery(datas);
+      this.dataList = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    async toExport() {
+      if (this.downloading) return;
+      this.downloading = true;
+
+      const res = await downloadByApi(() => {
+        return exportScanStatistics(this.filter);
+      }).catch((e) => {
+        this.$message.error(e || "下载失败,请重新尝试!");
+      });
+      this.downloading = false;
+
+      if (!res) return;
+      this.$message.success("下载成功!");
+    },
+  },
+};
+</script>