zhangjie %!s(int64=3) %!d(string=hai) anos
pai
achega
83308805ca

+ 265 - 258
src/modules/exam/api.js

@@ -1,258 +1,265 @@
-import { $postParam, $post } from "@/plugins/axios";
-
-// other
-// 试卷编号模糊查询
-export const pageNumberQuery = datas => {
-  return $postParam("/api/admin/exam/task/paper_number_query", datas);
-};
-// 命题老师模糊查询
-export const questionTeatherQuery = datas => {
-  return $postParam("/api/admin/exam/task/user_query", datas);
-};
-// 教研室查询
-export const teachingRoomList = datas => {
-  // TODO:
-  return $postParam("/api/admin/exam/task/room_query", datas);
-};
-
-// 待办任务-------------->
-// 命题任务待办
-export const waitExamTaskListPage = datas => {
-  return $postParam("/api/admin/work/exam/task/ready", datas);
-};
-export const waitExamTaskCount = () => {
-  return $postParam("/api/admin/work/exam/task/ready_count", {});
-};
-// 命题分配待办
-export const waitExamTaskNewListPage = datas => {
-  return $postParam("/api/admin/work/exam/task/new", datas);
-};
-export const waitExamTaskNewCount = () => {
-  return $postParam("/api/admin/work/exam/task/new_count", {});
-};
-// 入库审核待办
-export const waitTaskReviewListPage = datas => {
-  return $postParam("/api/admin/work/exam/task/submit", datas);
-};
-export const waitTaskReviewCount = () => {
-  return $postParam("/api/admin/work/exam/task/submit_count", {});
-};
-// 阅卷代办
-export const stmmsTaskListPage = datas => {
-  return $postParam("/api/admin/work/structure/task/ready", datas);
-};
-export const stmmsTaskCount = () => {
-  return $postParam("/api/admin/work/structure/task/ready_count", {});
-};
-
-// exam-task-manage
-export const examTaskListPage = datas => {
-  return $postParam("/api/admin/exam/task/list", datas);
-};
-export const updateExamTask = datas => {
-  return $post("/api/admin/exam/task/save", datas);
-};
-export const updatExamTaskTeacher = ({ id, userId }) => {
-  return $post("/api/admin/exam/task/assign_user", { id, userId });
-};
-export const ableExamTask = ({ id, enable }) => {
-  return $post("/api/admin/exam/task/enable", { id, enable });
-};
-export const batchAddExamTask = datas => {
-  return $post("/api/admin/exam/task/save_batch", datas);
-};
-export const taskApplyAuditHistory = flowId => {
-  return $postParam("/api/admin/exam/task/review_list", { flowId });
-};
-export const taskApplySubmitHistory = examTaskId => {
-  return $postParam("/api/admin/flow/task/approver/submit/list", {
-    examTaskId
-  });
-};
-export const taskApplyExamObject = paperNumber => {
-  return $postParam("/api/admin/exam/task/find_exam_object", { paperNumber });
-};
-export const examTaskApproveForm = examTaskId => {
-  return $postParam("/api/admin/exam/task/find_approve_form_json", {
-    examTaskId
-  });
-};
-export const downloadExamTaskApproveForm = ({ examTaskId, htmlContent }) => {
-  return $post(
-    "/api/admin/exam/task/find_approve_form_pdf",
-    {
-      examTaskId,
-      htmlContent
-    },
-    { responseType: "blob" }
-  );
-};
-export const examTaskGetOne = examTaskId => {
-  return $postParam("/api/admin/exam/task/exam_task_get_one", {
-    examTaskId
-  });
-};
-
-// task-apply-manage
-export const taskApplyListPage = datas => {
-  return $postParam("/api/admin/exam/task/apply_list", datas);
-};
-export const taskApplyDetail = (examTaskId, source = "") => {
-  return $postParam("/api/admin/exam/task/apply_get_one", {
-    examTaskId,
-    source
-  });
-};
-export const updateTaskApply = datas => {
-  return $post("/api/admin/exam/task/apply_save", datas);
-};
-export const cancelOrRestartTaskApply = ({ id, status }) => {
-  return $post("/api/admin/exam/task/apply_status", { id, status });
-};
-// exam-flow
-export const taskAllFlowSetups = flowId => {
-  return $postParam("/api/admin/flow/task/all", { flowId });
-};
-export const taskAllApproverPeople = ({ taskId, courseCode }) => {
-  return $postParam("/api/admin/flow/task/approver/people_all", {
-    taskId,
-    courseCode
-  });
-};
-
-export const taskAllApproverExchangePeople = ({ taskId, realName }) => {
-  return $postParam("/api/admin/flow/task/approver/exchange/people", {
-    taskId,
-    realName
-  });
-};
-export const taskApproverNextPeople = ({ taskId, courseCode }) => {
-  return $postParam("/api/admin/flow/task/approver/next/people", {
-    taskId,
-    courseCode
-  });
-};
-// 命题老师创建命题任务
-export const teacherCreateTaskApply = datas => {
-  return $post("/api/admin/exam/task/save_task_apply", datas);
-};
-export const teacherSubmitTaskApply = datas => {
-  return $post("/api/admin/exam/task/submit_task_apply", datas);
-};
-export const teacherCancelTaskApply = examTaskId => {
-  return $postParam("/api/admin/exam/task/remove_task_apply", { examTaskId });
-};
-export const switchCardCreateMethod = examTaskId => {
-  return $postParam("/api/admin/exam/task/switch_card", { examTaskId });
-};
-
-// task-review-manage
-export const taskReviewUnauditedListPage = datas => {
-  return $postParam("/api/admin/exam/task/review_list_unaudited", datas);
-};
-export const taskReviewAuditedListPage = datas => {
-  return $postParam("/api/admin/exam/task/review_list_audited", datas);
-};
-export const taskAuditApply = datas => {
-  return $post("/api/admin/exam/task/apply_resave", datas);
-};
-export const batchUpdateTaskReview = datas => {
-  return $post("/api/admin/exam/task/review_save_batch", datas);
-};
-export const reviewSampleDataExport = datas => {
-  return $post("/api/admin/exam/task/review_export", datas);
-};
-// task-paper-manage
-export const taskPaperListPage = datas => {
-  return $postParam("/api/admin/exam/task/paper_list", datas);
-};
-export const ableTaskPaper = ({ id, enable }) => {
-  return $post("/api/admin/exam/task/paper_enable", { id, enable });
-};
-export const taskPaperApplyEdit = datas => {
-  return $post("/api/admin/exam/task/paper_update", datas);
-};
-export const downloadPaper = examTaskId => {
-  return $postParam(
-    "/api/admin/exam/task/paper_download",
-    { examTaskId },
-    { responseType: "blob" }
-  );
-};
-export const paperAndCardBatchExport = datas => {
-  return $postParam("/api/admin/exam/task/paper_card_download_pdf", datas);
-};
-// publish-print-task
-export const listTaskPrint = datas => {
-  return $postParam("/api/admin/exam/task/list_task_print", datas);
-};
-export const createTaskPrint = datas => {
-  return $post("/api/admin/exam/task/save_task_print", datas);
-};
-export const removeTaskPrint = examTaskPrintId => {
-  return $postParam("/api/admin/exam/task/remove_task_print", {
-    examTaskPrintId
-  });
-};
-export const listTaskPrintStudent = datas => {
-  return $postParam("/api/admin/exam/task/list_task_print_student", datas);
-};
-export const submitTaskPrint = datas => {
-  return $post("/api/admin/exam/task/submit_task_print", datas);
-};
-
-// 班级查询
-export const listTaskPrintClass = datas => {
-  return $postParam("/api/admin/exam/task/list_task_print_class", datas);
-};
-export const listTaskApplyClass = datas => {
-  return $postParam("/api/admin/exam/task/list_task_apply_class", datas);
-};
-// 印刷室查询
-export const listTaskPrintHouse = datas => {
-  return $postParam("/api/admin/exam/task/list_task_print_house", datas);
-};
-
-// card
-export const cardForSelectList = datas => {
-  return $postParam("/api/admin/exam/card/select_card_list", datas);
-};
-
-// data-manage ie-task-manage
-export const dataTaskList = datas => {
-  return $postParam("/api/admin/data/task/query", datas);
-};
-export const taskResetPdf = id => {
-  return $postParam("/api/admin/data/task/reset_create_pdf", { id });
-};
-export const removeDataTask = ({ ids, type }) => {
-  // TODO:
-  return $post("/api/admin/data/task/query11", { ids, type });
-};
-
-// statistics-manage
-export const statisticsList = datas => {
-  return $postParam("/api/admin/statistics/list", datas);
-};
-export const statisticsDelete = ids => {
-  return $post("/api/admin/statistics/delete", { ids });
-};
-export const statisticsFreshen = datas => {
-  return $postParam("/api/admin/statistics/freshen", datas);
-};
-// download-manage
-export const dataDownloadList = datas => {
-  return $postParam("/api/admin/data/download/page", datas);
-};
-export const dataDownloadDetail = id => {
-  return $postParam(
-    "/api/admin/data/download/download_one",
-    { id },
-    {
-      responseType: "blob"
-    }
-  );
-};
-export const dataBatchDownload = datas => {
-  return $post("/api/admin/data/download/download_batch", datas);
-};
+import { $postParam, $post } from "@/plugins/axios";
+
+// other
+// 试卷编号模糊查询
+export const pageNumberQuery = datas => {
+  return $postParam("/api/admin/exam/task/paper_number_query", datas);
+};
+// 命题老师模糊查询
+export const questionTeatherQuery = datas => {
+  return $postParam("/api/admin/exam/task/user_query", datas);
+};
+// 教研室查询
+export const teachingRoomList = datas => {
+  // TODO:
+  return $postParam("/api/admin/exam/task/room_query", datas);
+};
+
+// 待办任务-------------->
+// 命题任务待办
+export const waitExamTaskListPage = datas => {
+  return $postParam("/api/admin/work/exam/task/ready", datas);
+};
+export const waitExamTaskCount = () => {
+  return $postParam("/api/admin/work/exam/task/ready_count", {});
+};
+// 命题分配待办
+export const waitExamTaskNewListPage = datas => {
+  return $postParam("/api/admin/work/exam/task/new", datas);
+};
+export const waitExamTaskNewCount = () => {
+  return $postParam("/api/admin/work/exam/task/new_count", {});
+};
+// 入库审核待办
+export const waitTaskReviewListPage = datas => {
+  return $postParam("/api/admin/work/exam/task/submit", datas);
+};
+export const waitTaskReviewCount = () => {
+  return $postParam("/api/admin/work/exam/task/submit_count", {});
+};
+// 阅卷待办
+export const stmmsTaskListPage = datas => {
+  return $postParam("/api/admin/work/structure/task/ready", datas);
+};
+export const stmmsTaskCount = () => {
+  return $postParam("/api/admin/work/structure/task/ready_count", {});
+};
+// 教研待办
+export const analysisTaskListPage = datas => {
+  return $postParam("/api/admin/work/grade/task/ready", datas);
+};
+export const analysisTaskCount = () => {
+  return $postParam("/api/admin/work/grade/task/ready_count", {});
+};
+
+// exam-task-manage
+export const examTaskListPage = datas => {
+  return $postParam("/api/admin/exam/task/list", datas);
+};
+export const updateExamTask = datas => {
+  return $post("/api/admin/exam/task/save", datas);
+};
+export const updatExamTaskTeacher = ({ id, userId }) => {
+  return $post("/api/admin/exam/task/assign_user", { id, userId });
+};
+export const ableExamTask = ({ id, enable }) => {
+  return $post("/api/admin/exam/task/enable", { id, enable });
+};
+export const batchAddExamTask = datas => {
+  return $post("/api/admin/exam/task/save_batch", datas);
+};
+export const taskApplyAuditHistory = flowId => {
+  return $postParam("/api/admin/exam/task/review_list", { flowId });
+};
+export const taskApplySubmitHistory = examTaskId => {
+  return $postParam("/api/admin/flow/task/approver/submit/list", {
+    examTaskId
+  });
+};
+export const taskApplyExamObject = paperNumber => {
+  return $postParam("/api/admin/exam/task/find_exam_object", { paperNumber });
+};
+export const examTaskApproveForm = examTaskId => {
+  return $postParam("/api/admin/exam/task/find_approve_form_json", {
+    examTaskId
+  });
+};
+export const downloadExamTaskApproveForm = ({ examTaskId, htmlContent }) => {
+  return $post(
+    "/api/admin/exam/task/find_approve_form_pdf",
+    {
+      examTaskId,
+      htmlContent
+    },
+    { responseType: "blob" }
+  );
+};
+export const examTaskGetOne = examTaskId => {
+  return $postParam("/api/admin/exam/task/exam_task_get_one", {
+    examTaskId
+  });
+};
+
+// task-apply-manage
+export const taskApplyListPage = datas => {
+  return $postParam("/api/admin/exam/task/apply_list", datas);
+};
+export const taskApplyDetail = (examTaskId, source = "") => {
+  return $postParam("/api/admin/exam/task/apply_get_one", {
+    examTaskId,
+    source
+  });
+};
+export const updateTaskApply = datas => {
+  return $post("/api/admin/exam/task/apply_save", datas);
+};
+export const cancelOrRestartTaskApply = ({ id, status }) => {
+  return $post("/api/admin/exam/task/apply_status", { id, status });
+};
+// exam-flow
+export const taskAllFlowSetups = flowId => {
+  return $postParam("/api/admin/flow/task/all", { flowId });
+};
+export const taskAllApproverPeople = ({ taskId, courseCode }) => {
+  return $postParam("/api/admin/flow/task/approver/people_all", {
+    taskId,
+    courseCode
+  });
+};
+
+export const taskAllApproverExchangePeople = ({ taskId, realName }) => {
+  return $postParam("/api/admin/flow/task/approver/exchange/people", {
+    taskId,
+    realName
+  });
+};
+export const taskApproverNextPeople = ({ taskId, courseCode }) => {
+  return $postParam("/api/admin/flow/task/approver/next/people", {
+    taskId,
+    courseCode
+  });
+};
+// 命题老师创建命题任务
+export const teacherCreateTaskApply = datas => {
+  return $post("/api/admin/exam/task/save_task_apply", datas);
+};
+export const teacherSubmitTaskApply = datas => {
+  return $post("/api/admin/exam/task/submit_task_apply", datas);
+};
+export const teacherCancelTaskApply = examTaskId => {
+  return $postParam("/api/admin/exam/task/remove_task_apply", { examTaskId });
+};
+export const switchCardCreateMethod = examTaskId => {
+  return $postParam("/api/admin/exam/task/switch_card", { examTaskId });
+};
+
+// task-review-manage
+export const taskReviewUnauditedListPage = datas => {
+  return $postParam("/api/admin/exam/task/review_list_unaudited", datas);
+};
+export const taskReviewAuditedListPage = datas => {
+  return $postParam("/api/admin/exam/task/review_list_audited", datas);
+};
+export const taskAuditApply = datas => {
+  return $post("/api/admin/exam/task/apply_resave", datas);
+};
+export const batchUpdateTaskReview = datas => {
+  return $post("/api/admin/exam/task/review_save_batch", datas);
+};
+export const reviewSampleDataExport = datas => {
+  return $post("/api/admin/exam/task/review_export", datas);
+};
+// task-paper-manage
+export const taskPaperListPage = datas => {
+  return $postParam("/api/admin/exam/task/paper_list", datas);
+};
+export const ableTaskPaper = ({ id, enable }) => {
+  return $post("/api/admin/exam/task/paper_enable", { id, enable });
+};
+export const taskPaperApplyEdit = datas => {
+  return $post("/api/admin/exam/task/paper_update", datas);
+};
+export const downloadPaper = examTaskId => {
+  return $postParam(
+    "/api/admin/exam/task/paper_download",
+    { examTaskId },
+    { responseType: "blob" }
+  );
+};
+export const paperAndCardBatchExport = datas => {
+  return $postParam("/api/admin/exam/task/paper_card_download_pdf", datas);
+};
+// publish-print-task
+export const listTaskPrint = datas => {
+  return $postParam("/api/admin/exam/task/list_task_print", datas);
+};
+export const createTaskPrint = datas => {
+  return $post("/api/admin/exam/task/save_task_print", datas);
+};
+export const removeTaskPrint = examTaskPrintId => {
+  return $postParam("/api/admin/exam/task/remove_task_print", {
+    examTaskPrintId
+  });
+};
+export const listTaskPrintStudent = datas => {
+  return $postParam("/api/admin/exam/task/list_task_print_student", datas);
+};
+export const submitTaskPrint = datas => {
+  return $post("/api/admin/exam/task/submit_task_print", datas);
+};
+
+// 班级查询
+export const listTaskPrintClass = datas => {
+  return $postParam("/api/admin/exam/task/list_task_print_class", datas);
+};
+export const listTaskApplyClass = datas => {
+  return $postParam("/api/admin/exam/task/list_task_apply_class", datas);
+};
+// 印刷室查询
+export const listTaskPrintHouse = datas => {
+  return $postParam("/api/admin/exam/task/list_task_print_house", datas);
+};
+
+// card
+export const cardForSelectList = datas => {
+  return $postParam("/api/admin/exam/card/select_card_list", datas);
+};
+
+// data-manage ie-task-manage
+export const dataTaskList = datas => {
+  return $postParam("/api/admin/data/task/query", datas);
+};
+export const taskResetPdf = id => {
+  return $postParam("/api/admin/data/task/reset_create_pdf", { id });
+};
+export const removeDataTask = ({ ids, type }) => {
+  // TODO:
+  return $post("/api/admin/data/task/query11", { ids, type });
+};
+
+// statistics-manage
+export const statisticsList = datas => {
+  return $postParam("/api/admin/statistics/list", datas);
+};
+export const statisticsDelete = ids => {
+  return $post("/api/admin/statistics/delete", { ids });
+};
+export const statisticsFreshen = datas => {
+  return $postParam("/api/admin/statistics/freshen", datas);
+};
+// download-manage
+export const dataDownloadList = datas => {
+  return $postParam("/api/admin/data/download/page", datas);
+};
+export const dataDownloadDetail = id => {
+  return $postParam(
+    "/api/admin/data/download/download_one",
+    { id },
+    {
+      responseType: "blob"
+    }
+  );
+};
+export const dataBatchDownload = datas => {
+  return $post("/api/admin/data/download/download_batch", datas);
+};

+ 94 - 0
src/modules/exam/components/WaitTaskAnalysis.vue

@@ -0,0 +1,94 @@
+<template>
+  <div class="wait-task-analysis">
+    <div class="part-box part-box-pad">
+      <el-table ref="TableList" :data="dataList">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="50"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column prop="semesterName" 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 class-name="action-column" label="操作" width="100">
+          <template slot-scope="scope">
+            <el-button class="btn-primary" type="text" @click="toDo(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>
+
+    <!-- ModifyBaseConfig -->
+    <modify-base-config
+      ref="ModifyBaseConfig"
+      :instance="curTask"
+    ></modify-base-config>
+  </div>
+</template>
+
+<script>
+import { mapMutations, mapActions } from "vuex";
+import { analysisTaskListPage } from "../api";
+import ModifyBaseConfig from "../../analysis/components/ModifyBaseConfig.vue";
+
+export default {
+  name: "wait-task-analysis",
+  components: { ModifyBaseConfig },
+  data() {
+    return {
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      dataList: [],
+      curTask: {}
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    ...mapMutations("exam", ["updateWaitTask"]),
+    ...mapActions("exam", ["updateWaitTaskCount"]),
+    async getList() {
+      const datas = {
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await analysisTaskListPage(datas);
+      this.dataList = data.records;
+      this.total = data.total;
+      this.updateWaitTask({ analysis: this.total });
+    },
+    toPage(page) {
+      this.current = page;
+      this.getList();
+    },
+    toDo(task) {
+      this.curTask = { ...task };
+      this.$refs.ModifyBaseConfig.open();
+    },
+    taskModified() {
+      this.getList();
+      this.updateWaitTaskCount();
+    }
+  }
+};
+</script>

+ 82 - 77
src/modules/exam/store.js

@@ -1,77 +1,82 @@
-import { waitExamTaskCount, stmmsTaskCount } from "./api";
-import { calcSum } from "@/plugins/utils";
-
-const state = {
-  waitTaskCount: 0,
-  waitTask: {
-    flow: 0,
-    stmms: 0
-  },
-  // createExamAndPrintTask
-  infoExamTask: {},
-  infoExamTaskDetail: {},
-  infoExamPrintPlan: {},
-  infoPrintTask: {}
-};
-
-const mutations = {
-  setWaitTaskCount(state, waitTaskCount) {
-    state.waitTaskCount = waitTaskCount;
-  },
-  setWaitTask(state, waitTask) {
-    state.waitTask = waitTask;
-  },
-  updateWaitTask(state, data) {
-    const waitTask = Object.assign({}, state.waitTask, data);
-    state.waitTask = waitTask;
-    const count = calcSum(Object.values(state.waitTask));
-    state.waitTaskCount = count;
-  },
-  // createExamAndPrintTask
-  updateTaskInfo(state, data) {
-    Object.entries(data).forEach(([key, val]) => {
-      state[key] = Object.assign({}, state[key], val);
-    });
-  },
-  resetTaskInfo(state) {
-    state.infoExamTask = {};
-    state.infoExamTaskDetail = {};
-    state.infoExamPrintPlan = {};
-    state.infoPrintTask = {};
-  }
-};
-
-const actions = {
-  async updateWaitTaskCount({ commit }) {
-    const task = [
-      {
-        type: "flow",
-        func: waitExamTaskCount
-      },
-      {
-        type: "stmms",
-        func: stmmsTaskCount
-      }
-    ];
-    let countAll = task.map(item => item.func());
-    const counts = await Promise.all(countAll).catch(() => {});
-
-    if (!counts) return;
-
-    let waitTask = {};
-    counts.forEach((count, index) => {
-      waitTask[task[index].type] = count;
-    });
-    commit("setWaitTask", waitTask);
-
-    const count = calcSum(counts || [0]);
-    commit("setWaitTaskCount", count || 0);
-  }
-};
-
-export default {
-  namespaced: true,
-  state,
-  mutations,
-  actions
-};
+import { waitExamTaskCount, stmmsTaskCount, analysisTaskCount } from "./api";
+import { calcSum } from "@/plugins/utils";
+
+const state = {
+  waitTaskCount: 0,
+  waitTask: {
+    flow: 0,
+    stmms: 0,
+    analysis: 0
+  },
+  // createExamAndPrintTask
+  infoExamTask: {},
+  infoExamTaskDetail: {},
+  infoExamPrintPlan: {},
+  infoPrintTask: {}
+};
+
+const mutations = {
+  setWaitTaskCount(state, waitTaskCount) {
+    state.waitTaskCount = waitTaskCount;
+  },
+  setWaitTask(state, waitTask) {
+    state.waitTask = waitTask;
+  },
+  updateWaitTask(state, data) {
+    const waitTask = Object.assign({}, state.waitTask, data);
+    state.waitTask = waitTask;
+    const count = calcSum(Object.values(state.waitTask));
+    state.waitTaskCount = count;
+  },
+  // createExamAndPrintTask
+  updateTaskInfo(state, data) {
+    Object.entries(data).forEach(([key, val]) => {
+      state[key] = Object.assign({}, state[key], val);
+    });
+  },
+  resetTaskInfo(state) {
+    state.infoExamTask = {};
+    state.infoExamTaskDetail = {};
+    state.infoExamPrintPlan = {};
+    state.infoPrintTask = {};
+  }
+};
+
+const actions = {
+  async updateWaitTaskCount({ commit }) {
+    const task = [
+      {
+        type: "flow",
+        func: waitExamTaskCount
+      },
+      {
+        type: "stmms",
+        func: stmmsTaskCount
+      },
+      {
+        type: "analysis",
+        func: analysisTaskCount
+      }
+    ];
+    let countAll = task.map(item => item.func());
+    const counts = await Promise.all(countAll).catch(() => {});
+
+    if (!counts) return;
+
+    let waitTask = {};
+    counts.forEach((count, index) => {
+      waitTask[task[index].type] = count;
+    });
+    commit("setWaitTask", waitTask);
+
+    const count = calcSum(counts);
+    commit("setWaitTaskCount", count || 0);
+  }
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+};

+ 68 - 63
src/modules/exam/views/WaitTask.vue

@@ -1,63 +1,68 @@
-<template>
-  <div class="wait-task">
-    <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="waitTask[tab.val]">({{ waitTask[tab.val] }})</span>
-      </el-button>
-    </div>
-
-    <component :is="compName"></component>
-  </div>
-</template>
-
-<script>
-import WaitTaskFlow from "../components/WaitTaskFlow";
-import WaitTaskStmms from "../components/WaitTaskStmms";
-import { mapState } from "vuex";
-
-export default {
-  name: "wait-task",
-  components: { WaitTaskFlow, WaitTaskStmms },
-  data() {
-    return {
-      curTab: "flow",
-      tabs: [
-        {
-          name: "流程待办",
-          val: "flow"
-        },
-        {
-          name: "阅卷待办",
-          val: "stmms"
-        }
-      ]
-    };
-  },
-  computed: {
-    ...mapState("exam", ["waitTask"]),
-    compName() {
-      return `wait-task-${this.curTab}`;
-    }
-  },
-  methods: {
-    selectMenu(tab) {
-      this.curTab = tab;
-    }
-  },
-  beforeRouteEnter(to, from, next) {
-    if (from.name === "CardEdit") {
-      next(vm => {
-        vm.tab = "flow";
-      });
-    } else {
-      next();
-    }
-  }
-};
-</script>
+<template>
+  <div class="wait-task">
+    <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="waitTask[tab.val]">({{ waitTask[tab.val] }})</span>
+      </el-button>
+    </div>
+
+    <component :is="compName"></component>
+  </div>
+</template>
+
+<script>
+import WaitTaskFlow from "../components/WaitTaskFlow";
+import WaitTaskStmms from "../components/WaitTaskStmms";
+import WaitTaskAnalysis from "../components/WaitTaskAnalysis";
+import { mapState } from "vuex";
+
+export default {
+  name: "wait-task",
+  components: { WaitTaskFlow, WaitTaskStmms, WaitTaskAnalysis },
+  data() {
+    return {
+      curTab: "flow",
+      tabs: [
+        {
+          name: "流程待办",
+          val: "flow"
+        },
+        {
+          name: "阅卷待办",
+          val: "stmms"
+        },
+        {
+          name: "教研待办",
+          val: "analysis"
+        }
+      ]
+    };
+  },
+  computed: {
+    ...mapState("exam", ["waitTask"]),
+    compName() {
+      return `wait-task-${this.curTab}`;
+    }
+  },
+  methods: {
+    selectMenu(tab) {
+      this.curTab = tab;
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    if (from.name === "CardEdit") {
+      next(vm => {
+        vm.tab = "flow";
+      });
+    } else {
+      next();
+    }
+  }
+};
+</script>