deason 1 年之前
父節點
當前提交
12fcede283

+ 8 - 0
src/main/java/cn/com/qmth/examcloud/tool/controller/IndexController.java

@@ -75,4 +75,12 @@ public class IndexController extends BaseController {
         return "admin/batchCreateUser";
     }
 
+    /**
+     * 批量导入考生
+     */
+    @GetMapping(value = "/admin/batchImportExamStudent")
+    public String batchImportExamStudent() {
+        return "admin/batchImportExamStudent";
+    }
+
 }

+ 4 - 1
src/main/java/cn/com/qmth/examcloud/tool/enums/TaskType.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.tool.enums;
 
 import cn.com.qmth.examcloud.tool.service.TaskService;
+import cn.com.qmth.examcloud.tool.service.batch_import_exam_student.BatchImportExamStudentTask;
 import cn.com.qmth.examcloud.tool.service.batch_update_user.BatchCreateUserTask;
 import cn.com.qmth.examcloud.tool.service.config_exam_paper.ConfigExamPaperTask;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.CreateRandomPaperTemplateTask;
@@ -20,7 +21,9 @@ public enum TaskType {
 
     CREATE_RANDOM_PAPER_TEMPLATE("批量创建随机抽卷模板", CreateRandomPaperTemplateTask.class),
 
-    BATCH_CREATE_USER("批量创建用户", BatchCreateUserTask.class);
+    BATCH_CREATE_USER("批量创建用户", BatchCreateUserTask.class),
+
+    BATCH_IMPORT_EXAM_STUDENT("批量导入考生", BatchImportExamStudentTask.class);
 
     TaskType(String description, Class<? extends TaskService> impl) {
         this.description = description;

+ 40 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/batch_import_exam_student/BatchImportExamStudentTask.java

@@ -0,0 +1,40 @@
+package cn.com.qmth.examcloud.tool.service.batch_import_exam_student;
+
+import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
+import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
+import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
+import cn.com.qmth.examcloud.tool.utils.StatusException;
+import cn.com.qmth.examcloud.tool.vo.user.User;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class BatchImportExamStudentTask implements TaskService {
+
+    private final static Logger log = LoggerFactory.getLogger(BatchImportExamStudentTask.class);
+
+    @Autowired
+    private SysProperty sysProperty;
+
+    @Autowired
+    private CommonService commonService;
+
+    @Override
+    public void start(TaskEntity task) {
+        User user = LoginSessionManager.getLoginSession(task.getUserToken());
+        if (user == null) {
+            throw new StatusException("用户未登录!");
+        }
+
+        this.execute(user, task);
+    }
+
+    private void execute(User loginUser, TaskEntity task) {
+        log.info("todo...");
+    }
+
+}

+ 103 - 0
src/main/resources/templates/admin/batchImportExamStudent.ftlh

@@ -0,0 +1,103 @@
+<#assign base=request.contextPath>
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+    <#include "../layout/header.ftlh"/>
+</head>
+
+<body>
+<div id="myVue">
+    <el-container>
+        <#include "../layout/topMenu.ftlh"/>
+
+        <el-main>
+            <el-row>
+                <el-col :span="8" :offset="8">
+                    <h3 style="text-align: center">批量导入考生</h3>
+
+                    <el-form label-position="right" label-width="100px" :model="curForm" ref="curForm" :rules="rules">
+                        <el-form-item label=" " prop="filePath">
+                            <el-upload action="${base}/upload"
+                                       accept=".xlsx"
+                                       limit="1"
+                                       :on-success="handleSuccess"
+                                       :on-remove="handleRemove"
+                                       drag>
+                                <i class="el-icon-upload"></i>
+                                <div class="el-upload__text">将文件拖到此处,或 <em>点击上传!</em></div>
+                                <div class="el-upload__tip" slot="tip">只能上传.xlsx文件!
+                                    <a style="color: #409EFF;cursor: pointer;" @click="downloadTemplate()">下载模板</a>
+                                </div>
+                            </el-upload>
+                        </el-form-item>
+
+                        <el-form-item>
+                            <el-button type="primary" @click="doSubmit" round>确 认</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-main>
+    </el-container>
+</div>
+
+<script>
+    new Vue({
+        el: '#myVue',
+        data: {
+            curForm: {
+                filePath: null,
+            },
+            rules: {
+                filePath: [
+                    {required: true, message: '请选择文件!', trigger: 'blur'}
+                ]
+            }
+        },
+        methods: {
+            doSubmit() {
+                this.$refs.curForm.validate((valid) => {
+                    if (!valid) {
+                        return false;
+                    }
+
+                    let req = {
+                        type: "BATCH_IMPORT_EXAM_STUDENT",
+                        params: JSON.stringify(this.curForm)
+                    };
+
+                    let url = "${base}/api/task/add";
+                    axios.post(url, req).then((response) => {
+                        this.$notify({
+                            message: "保存成功!",
+                            type: "success",
+                        });
+
+                        window.location.href = '${base}/admin/taskList';
+                    }).catch((error) => {
+                        this.$notify({
+                            message: error.response.data.message,
+                            type: "error",
+                        });
+                    });
+                });
+            },
+            handleSuccess(response) {
+                console.log("上传成功!", response);
+                this.curForm.filePath = response;
+            },
+            handleRemove(file) {
+                console.log("移除文件!", file);
+                this.curForm.filePath = null;
+            },
+            downloadTemplate() {
+                this.$notify({
+                    message: "施工中。。。",
+                    type: "error",
+                });
+            }
+        }
+    });
+</script>
+</body>
+</html>

+ 7 - 0
src/main/resources/templates/admin/workspace.ftlh

@@ -55,6 +55,13 @@
                             </el-link>
                         </el-card>
                     </el-col>
+                    <el-col :span="8">
+                        <el-card shadow="hover">
+                            <el-link href="${base}/admin/batchImportExamStudent" class="f20">
+                                <i class="el-icon-s-operation"></i> 批量导入考生
+                            </el-link>
+                        </el-card>
+                    </el-col>
                 </el-row>
             </div>
         </el-main>