Ver Fonte

page md

zhangjie há 3 anos atrás
pai
commit
2c12f728fd

+ 19 - 19
public/index.html

@@ -1,25 +1,25 @@
 <!DOCTYPE html>
 <html>
-  <head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width,initial-scale=1.0,
+
+<head>
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1.0,
     maximum-scale=1.0,minimum-scale=1.0, user-scalable=no"" />
     <meta name=" renderer" content="webkit|ie-comp|ie-stand" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
-    <title><%= htmlWebpackPlugin.options.title %></title>
-  </head>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+  <meta name="apple-mobile-web-app-capable" content="yes" />
+  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
+  <title>教研分析</title>
+</head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but 教研分析 doesn't work properly without JavaScript
+      enabled. Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
 
-  <body>
-    <noscript>
-      <strong
-        >We're sorry but 管理后台 doesn't work properly without JavaScript
-        enabled. Please enable it to continue.</strong
-      >
-    </noscript>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
 </html>

+ 0 - 27
public/report.html

@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8" />
-    <meta
-      name="viewport"
-      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
-    />
-    <meta name="apple-mobile-web-app-capable" content="yes" />
-    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-    <meta name="renderer" content="webkit|ie-comp|ie-stand" />
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
-    <title><%= htmlWebpackPlugin.options.title %></title>
-  </head>
-
-  <body>
-    <noscript>
-      <strong
-        >We're sorry but report doesn't work properly without JavaScript
-        enabled. Please enable it to continue.</strong
-      >
-    </noscript>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>

BIN
src/assets/images/login-theme.png


+ 27 - 0
src/assets/styles/login.scss

@@ -11,6 +11,22 @@
   background-size: cover;
   overflow: auto;
 }
+.login-footer {
+  position: absolute;
+  width: 100%;
+  bottom: 0;
+  padding: 10px;
+  color: $--color-text-gray;
+  text-align: center;
+
+  a {
+    margin: 0 5px;
+
+    &:hover {
+      color: $--color-primary;
+    }
+  }
+}
 
 .login-box {
   position: absolute;
@@ -31,6 +47,17 @@
   background-image: url(../images/login-theme.png);
   background-size: 100% 100%;
   float: left;
+  position: relative;
+
+  > h2 {
+    position: absolute;
+    width: 100%;
+    top: 60px;
+    left: 0;
+    text-align: center;
+    font-size: 25px;
+    color: #fff;
+  }
 }
 .login-body {
   margin-left: 420px;

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

@@ -63,6 +63,25 @@ export const deleteOrganization = id => {
   return $post("/api/admin/sys/org/remove", { id });
 };
 
+// data-init-manage
+export const dataInitList = datas => {
+  return $postParam("/api/admin/sys/org/list", datas);
+};
+
+// analysis-course-manage
+export const analysisBatchList = datas => {
+  return $postParam("/api/admin/sys/org/list", datas);
+};
+export const analysisBatchQuery = datas => {
+  return $postParam("/api/admin/sys/org/list", datas);
+};
+export const updateAnalysisBatch = datas => {
+  return $post("/api/admin/sys/org/save", datas);
+};
+export const deleteAnalysisBatch = ids => {
+  return $post("/api/admin/sys/org/list", { ids });
+};
+
 // common
 export const uploadFile = datas => {
   return $post("/api/admin/common/file/upload", datas);

+ 119 - 0
src/modules/base/components/ModifyAnalysisBatch.vue

@@ -0,0 +1,119 @@
+<template>
+  <el-dialog
+    class="modify-analysis-batch"
+    :visible.sync="modalIsShow"
+    :title="title"
+    top="10vh"
+    width="540px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @opened="visibleChange"
+  >
+    <div class="part-box part-box-pad part-box-border">
+      <el-form
+        ref="modalFormComp"
+        :model="modalForm"
+        :rules="rules"
+        label-width="100px"
+      >
+        <el-form-item prop="name" label="批次名称:">
+          <el-input
+            style="width:100%;"
+            v-model.trim="modalForm.name"
+            placeholder="请输入批次名称"
+            clearable
+          ></el-input>
+        </el-form-item>
+      </el-form>
+    </div>
+    <div slot="footer">
+      <el-button type="primary" :disabled="isSubmit" @click="submit"
+        >确认</el-button
+      >
+      <el-button type="danger" @click="cancel" plain>取消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { updateAnalysisBatch } from "../api";
+
+const initModalForm = {
+  id: null,
+  name: ""
+};
+
+export default {
+  name: "modify-analysis-batch",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  computed: {
+    isEdit() {
+      return !!this.instance.id;
+    },
+    title() {
+      return (this.isEdit ? "编辑" : "新增") + "分析批次";
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false,
+      modalForm: {},
+      rules: {
+        name: [
+          {
+            required: true,
+            message: "请输入批次名称",
+            trigger: "change"
+          },
+          {
+            max: 100,
+            message: "批次名称不能超过100",
+            trigger: "change"
+          }
+        ]
+      }
+    };
+  },
+  methods: {
+    async visibleChange() {
+      if (this.instance.id) {
+        this.modalForm = this.$objAssign(initModalForm, this.instance);
+      } else {
+        this.modalForm = { ...initModalForm };
+      }
+      this.$nextTick(() => {
+        this.$refs.modalFormComp.clearValidate();
+      });
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async submit() {
+      const valid = await this.$refs.modalFormComp.validate().catch(() => {});
+      if (!valid) return;
+
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      const datas = { ...this.modalForm };
+      const data = await updateAnalysisBatch(datas).catch(() => {});
+      this.isSubmit = false;
+      if (!data) return;
+
+      this.$emit("modified");
+      this.cancel();
+    }
+  }
+};
+</script>

+ 166 - 0
src/modules/base/components/ModifyAnalysisBatchPaper.vue

@@ -0,0 +1,166 @@
+<template>
+  <el-dialog
+    class="modify-analysis-batch"
+    :visible.sync="modalIsShow"
+    :title="title"
+    top="0px"
+    width="80%"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @opened="visibleChange"
+  >
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="55px" inline>
+        <el-form-item label="学期:">
+          <semester-select v-model="filter.semester"></semester-select>
+        </el-form-item>
+        <el-form-item label="考试:">
+          <exam-select
+            v-model="filter.examId"
+            :semester="filter.semester"
+          ></exam-select>
+        </el-form-item>
+        <el-form-item label="课程:">
+          <course-select
+            v-model="filter.courseCode"
+            :exam-id="filter.examId"
+            inspect
+          ></course-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button type="danger" :loading="loading" @click="toBatchDelete"
+          >批量删除</el-button
+        >
+        <el-button type="primary" @click="toAdd">添加分析试卷</el-button>
+      </div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table
+        ref="TableList"
+        :data="tasks"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column prop="semester" label="学期"></el-table-column>
+        <el-table-column prop="examName" label="考试"> </el-table-column>
+        <el-table-column prop="courseCode" label="课程(代码)" min-width="120">
+          <span slot-scope="scope">
+            {{ scope.row.courseName }}({{ scope.row.courseCode }})
+          </span>
+        </el-table-column>
+        <el-table-column prop="paperNumber" label="试卷编号"> </el-table-column>
+        <el-table-column prop="paperType" label="试卷类型"> </el-table-column>
+        <el-table-column prop="teachName" label="命题老师"> </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="160px"
+          align="center"
+        >
+          <template slot-scope="scope">
+            <el-button
+              class="btn-danger"
+              type="text"
+              :disabled="loading"
+              @click="toDelete(scope.row)"
+              >删除</el-button
+            >
+          </template>
+        </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 slot="footer"></div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  name: "modify-analysis-batch-paper",
+  data() {
+    return {
+      modalIsShow: false,
+      filter: {
+        semester: "",
+        examId: "",
+        courseCode: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      tasks: [],
+      curTask: {},
+      multipleSelection: [],
+      loading: false
+    };
+  },
+  computed: {
+    title() {
+      return `分析课程管理-${this.instance.name}`;
+    }
+  },
+  methods: {
+    async getList() {
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await dataInitList(datas);
+      this.tasks = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    toAdd() {},
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(item => item.id);
+    },
+    async toBatchDelete() {
+      if (!this.multipleSelection.length) {
+        this.$message.error("请选择要删除的批次!");
+        return;
+      }
+
+      const confirm = await this.$confirm(`确定要删除选中的批次吗?`, "提示", {
+        type: "warning"
+      }).catch(() => {});
+      if (confirm !== "confirm") return;
+
+      await deleteAnalysisBatch(this.multipleSelection);
+      this.$message.success("删除成功!");
+      this.deletePageLastItem();
+    },
+    async toDelete(row) {
+      const confirm = await this.$confirm(
+        `确定要删除批次【${row.name}】吗?`,
+        "提示",
+        {
+          type: "warning"
+        }
+      ).catch(() => {});
+      if (confirm !== "confirm") return;
+
+      await deleteAnalysisBatch([row.id]);
+      this.$message.success("删除成功!");
+      this.deletePageLastItem();
+    }
+  }
+};
+</script>

+ 41 - 0
src/modules/base/components/ModifyBaseConfig.vue

@@ -0,0 +1,41 @@
+<template>
+  <el-dialog
+    class="Modify-base-config"
+    :visible.sync="modalIsShow"
+    title="基础配置"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    fullscreen
+    @opened="visibleChange"
+  ></el-dialog>
+</template>
+
+<script>
+export default {
+  name: "Modify-base-config",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false
+    };
+  },
+  methods: {
+    visibleChange() {},
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    }
+  }
+};
+</script>

+ 176 - 0
src/modules/base/components/SelectAnalysisPaper.vue

@@ -0,0 +1,176 @@
+<template>
+  <el-dialog
+    class="select-analysis-paper"
+    :visible.sync="modalIsShow"
+    title="选择分析试卷"
+    top="0px"
+    width="80%"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @opened="visibleChange"
+  >
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="55px" inline>
+        <el-form-item label="学期:">
+          <semester-select v-model="filter.semester"></semester-select>
+        </el-form-item>
+        <el-form-item label="考试:">
+          <exam-select
+            v-model="filter.examId"
+            :semester="filter.semester"
+          ></exam-select>
+        </el-form-item>
+        <el-form-item label="课程:">
+          <course-select
+            v-model="filter.courseCode"
+            :exam-id="filter.examId"
+            inspect
+          ></course-select>
+        </el-form-item>
+        <el-form-item>
+          <el-input
+            v-model="filter.name"
+            placeholder="请输入命题老师姓名"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button type="danger" :loading="loading" @click="toBatchDelete"
+          >批量删除</el-button
+        >
+        <el-button type="primary" @click="toAdd">添加分析试卷</el-button>
+      </div>
+    </div>
+
+    <div class="mb-4 tab-btns">
+      <el-button
+        v-for="tab in tabs"
+        :key="tab.val"
+        size="medium"
+        :type="curTab == tab.val ? 'primary' : 'default'"
+        @click="selectMenu(tab.val)"
+        >{{ tab.name }}
+        <span v-if="curTab === 'selected'">({{ selectedPapers.length }})</span>
+      </el-button>
+    </div>
+
+    <div v-if="curTab === 'query'" class="part-box part-box-pad">
+      <el-table
+        ref="TableList"
+        :data="dataList"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column prop="semester" label="学期"></el-table-column>
+        <el-table-column prop="examName" label="考试"> </el-table-column>
+        <el-table-column prop="courseCode" label="课程(代码)" min-width="120">
+          <span slot-scope="scope">
+            {{ scope.row.courseName }}({{ scope.row.courseCode }})
+          </span>
+        </el-table-column>
+        <el-table-column prop="collegeName" label="开课学院"> </el-table-column>
+        <el-table-column prop="teachName" label="命题老师"> </el-table-column>
+        <el-table-column prop="paperNumber" label="试卷编号"> </el-table-column>
+        <el-table-column prop="paperType" 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 v-else class="part-box part-box-pad">
+      <el-table ref="TableList" :data="selectedPapers">
+        <el-table-column prop="semester" label="学期"></el-table-column>
+        <el-table-column prop="examName" label="考试"> </el-table-column>
+        <el-table-column prop="courseCode" label="课程(代码)" min-width="120">
+          <span slot-scope="scope">
+            {{ scope.row.courseName }}({{ scope.row.courseCode }})
+          </span>
+        </el-table-column>
+        <el-table-column prop="collegeName" label="开课学院"> </el-table-column>
+        <el-table-column prop="teachName" label="命题老师"> </el-table-column>
+        <el-table-column prop="paperNumber" label="试卷编号"> </el-table-column>
+        <el-table-column prop="paperType" label="试卷类型"> </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="160px"
+          align="center"
+        >
+          <template slot-scope="scope">
+            <el-button
+              class="btn-danger"
+              type="text"
+              @click="toDelete(scope.row)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  name: "select-analysis-paper",
+  data() {
+    return {
+      modalIsShow: false,
+      curTab: "query",
+      tabs: [
+        {
+          name: "列表",
+          val: "query"
+        },
+        {
+          name: "已选",
+          val: "selected"
+        }
+      ],
+      dataList: [],
+      selectedPapers: [],
+      selectedPaperIds: []
+    };
+  },
+  methods: {
+    selectMenu(tab) {
+      this.curTab = tab;
+    },
+    toDelete(row) {
+      this.selectedPapers = this.selectedPapers.filter(
+        item => item.id !== row.id
+      );
+      this.updateSelectedIds();
+    },
+    updateSelectedIds() {
+      this.selectedPaperIds = this.selectedPapers.map(item => item.id);
+    },
+    handleSelectionChange(val) {
+      const seletedIds = val.map(item => item.id);
+      this.dataList.forEach(item => {
+        const isSelected = seletedIds.includes(item.id);
+        if (isSelected) {
+          if (this.selectedPaperIds.includes(item.id)) return;
+          this.selectedPapers.push({ ...item });
+        } else {
+          if (!this.selectedPaperIds.includes(item.id)) return;
+          const pos = this.selectedPapers.findIndex(p => p.id === item.id);
+          this.selectedPapers.splice(pos, 1);
+        }
+      });
+      this.updateSelectedIds();
+    }
+  }
+};
+</script>

+ 191 - 0
src/modules/base/views/AnalysisBatchManage.vue

@@ -0,0 +1,191 @@
+<template>
+  <div class="analysis-batch-manage">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
+        <el-form-item label="分析批次:">
+          <el-select
+            v-model="filter.batchId"
+            placeholder="请选择分析批次"
+            clearable
+          >
+            <el-option
+              v-for="item in batchs"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button type="danger" :loading="loading" @click="toBatchDelete"
+          >批量删除</el-button
+        >
+        <el-button type="primary" @click="toAdd">新建分析批次</el-button>
+      </div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table
+        ref="TableList"
+        :data="tasks"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+          type="selection"
+          width="55"
+          align="center"
+        ></el-table-column>
+        <el-table-column prop="batchName" label="分析批次"></el-table-column>
+        <el-table-column prop="status" label="状态"> </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="240px"
+          align="center"
+        >
+          <template slot-scope="scope">
+            <el-button
+              class="btn-primary"
+              type="text"
+              :disabled="loading"
+              @click="toAddCourse(scope.row)"
+              >添加分析试卷</el-button
+            >
+            <el-button
+              class="btn-primary"
+              type="text"
+              :disabled="loading"
+              @click="toCalc(scope.row)"
+              >开始计算</el-button
+            >
+            <el-button
+              class="btn-danger"
+              type="text"
+              :disabled="loading"
+              @click="toDelete(scope.row)"
+              >删除</el-button
+            >
+          </template>
+        </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>
+
+    <!-- ModifyAnalysisBatch -->
+    <modify-analysis-batch
+      ref="ModifyAnalysisBatch"
+      :instance="curTask"
+      @modified="getList"
+    ></modify-analysis-batch>
+  </div>
+</template>
+
+<script>
+import {
+  analysisBatchList,
+  analysisBatchQuery,
+  deleteAnalysisBatch
+} from "../api";
+
+import ModifyAnalysisBatch from "../components/ModifyAnalysisBatch.vue";
+
+export default {
+  name: "analysis-batch-manage",
+  components: { ModifyAnalysisBatch },
+  data() {
+    return {
+      filter: {
+        batchId: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      tasks: [],
+      curTask: {},
+      batchs: [],
+      loading: false,
+      multipleSelection: []
+    };
+  },
+  mounted() {
+    this.getBatchs();
+    this.toPage(1);
+  },
+  methods: {
+    async getBatchs() {
+      const res = await analysisBatchQuery();
+      this.batchs = res || [];
+    },
+    async getList() {
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await analysisBatchList(datas);
+      this.tasks = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.multipleSelection = [];
+      this.current = page;
+      this.getList();
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(item => item.id);
+    },
+    async toBatchDelete() {
+      if (!this.multipleSelection.length) {
+        this.$message.error("请选择要删除的批次!");
+        return;
+      }
+
+      const confirm = await this.$confirm(`确定要删除选中的批次吗?`, "提示", {
+        type: "warning"
+      }).catch(() => {});
+      if (confirm !== "confirm") return;
+
+      await deleteAnalysisBatch(this.multipleSelection);
+      this.$message.success("删除成功!");
+      this.deletePageLastItem();
+    },
+    toAdd() {
+      this.curTask = {};
+      this.$refs.ModifyAnalysisBatch.open();
+    },
+    toAddCourse(row) {
+      console.log(row);
+    },
+    toCalc(row) {
+      console.log(row);
+    },
+    async toDelete(row) {
+      const confirm = await this.$confirm(
+        `确定要删除批次【${row.name}】吗?`,
+        "提示",
+        {
+          type: "warning"
+        }
+      ).catch(() => {});
+      if (confirm !== "confirm") return;
+
+      await deleteAnalysisBatch([row.id]);
+      this.$message.success("删除成功!");
+      this.deletePageLastItem();
+    }
+  }
+};
+</script>

+ 130 - 0
src/modules/base/views/DataInitManage.vue

@@ -0,0 +1,130 @@
+<template>
+  <div class="data-init-manage">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="55px" inline>
+        <el-form-item label="学期:">
+          <semester-select v-model="filter.semester"></semester-select>
+        </el-form-item>
+        <el-form-item label="考试:">
+          <exam-select
+            v-model="filter.examId"
+            :semester="filter.semester"
+          ></exam-select>
+        </el-form-item>
+        <el-form-item label="课程:">
+          <course-select
+            v-model="filter.courseCode"
+            :exam-id="filter.examId"
+            inspect
+          ></course-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="toPage(1)">查询</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action"></div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table ref="TableList" :data="tasks">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="50"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column prop="semester" label="学期"></el-table-column>
+        <el-table-column prop="examName" label="考试"> </el-table-column>
+        <el-table-column prop="courseCode" label="课程(代码)" min-width="120">
+          <span slot-scope="scope">
+            {{ scope.row.courseName }}({{ scope.row.courseCode }})
+          </span>
+        </el-table-column>
+        <el-table-column prop="status" label="状态"> </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="160px"
+          align="center"
+        >
+          <template slot-scope="scope">
+            <el-button
+              v-if="scope.row.hasReportFile"
+              class="btn-primary"
+              type="text"
+              :disabled="loading"
+              @click="toConfig(scope.row)"
+              >基础配置</el-button
+            >
+            <el-button
+              v-if="scope.row.resetCreatePdf"
+              class="btn-primary"
+              type="text"
+              :disabled="loading"
+              @click="toAssignScore(scope.row)"
+              >赋分管理</el-button
+            >
+          </template>
+        </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 { dataInitList } from "../api";
+
+export default {
+  name: "data-init-manage",
+  data() {
+    return {
+      filter: {
+        semester: "",
+        examId: "",
+        courseCode: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      tasks: [],
+      curTask: {},
+      loading: false
+    };
+  },
+  mounted() {
+    this.toPage(1);
+  },
+  methods: {
+    async getList() {
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await dataInitList(datas);
+      this.tasks = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    toConfig(row) {
+      console.log(row);
+    },
+    async toAssignScore(row) {
+      console.log(row);
+    }
+  }
+};
+</script>

+ 2 - 2
src/modules/login/views/Login.vue

@@ -1,10 +1,10 @@
 <template>
   <div class="login login-box">
-    <div class="login-theme"><h2>知学知考</h2></div>
+    <div class="login-theme"><h2>知学知考-教研分析</h2></div>
     <div class="login-body" @keyup.enter="submit('loginForm')">
       <div class="login-title">
         <img v-if="schoolLogo" :src="schoolLogo" alt="学校logo" />
-        <h1 v-else>知学知考</h1>
+        <h1 v-else>知学知考-教研分析</h1>
       </div>
       <div class="login-form">
         <el-form

+ 5 - 1
src/router.js

@@ -25,8 +25,12 @@ Router.prototype.push = function push(location, onResolve, onReject) {
 
 Vue.use(Router);
 
+// history:
+// location / {
+//   try_files $uri $uri/ /index.html;
+// }
 let router = new Router({
-  // mode: "history",
+  mode: "history",
   routes: [
     {
       path: "/",