From bbf280df7b1c602e8c0055b83db924e683e0f9be Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 18 Jan 2022 16:18:39 +0800
Subject: [PATCH] 考试申请管理路由修改

---
 src/views/trainExam/examStatistics.vue |  628 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/router/views/index.js              |    2 
 2 files changed, 629 insertions(+), 1 deletions(-)

diff --git a/src/router/views/index.js b/src/router/views/index.js
index 96a6ffb..db9f024 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -961,7 +961,7 @@
                 import ( /* webpackChunkName: "views" */ '@/views/trainExam/index')
         }, {
             path: 'query',
-            name: '培训申请查询',
+            name: '培训申请管理',
             meta: {
                 i18n: 'index',
             },
diff --git a/src/views/trainExam/examStatistics.vue b/src/views/trainExam/examStatistics.vue
new file mode 100644
index 0000000..672e33f
--- /dev/null
+++ b/src/views/trainExam/examStatistics.vue
@@ -0,0 +1,628 @@
+/*
+ * @Author: zhongrj
+ * @Date: 2022-01-18
+ * menu-name 考试统计查询
+ */
+<template>
+  <el-row class="morpheus-box-paper">
+    <el-col :span="24">
+      <el-card>
+        <div
+          :class="[
+            'exam-card-body',
+            $store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '',
+          ]"
+        >
+          <avue-crud
+            v-model="form"
+            class="company-box"
+            :option="questionBankOption"
+            :search.sync="questionBankSearch"
+            :table-loading="questionBankLoading"
+            :data="questionBankData"
+            ref="questionBankCrud"
+            :page.sync="questionBankPage"
+            @on-load="questionBankOnLoad"
+            :before-open="beforeOpen"
+            @selection-change="questionBankSelectionChange"
+            @search-change="questionBankSearchChange"
+            @search-reset="questionBankSearchReset"
+            @current-change="questionBankCurrentChange"
+            @size-change="questionBankSizeChange"
+            @row-save="questionBankRowSave"
+            @row-update="questionBankRowUpdate"
+            @row-del="questionBankRowDel"
+          >
+            <template slot-scope="{ row }" slot="auditStatus">
+              <el-tag class="dtype">
+                {{
+                  row.auditStatus == 1
+                    ? "审核通过"
+                    : row.auditStatus == 2
+                    ? "审核不通过"
+                    : "待审核"
+                }}
+                <i class="zc" v-if="row.auditStatus == 1"></i>
+                <i class="yj" v-if="row.auditStatus == 2"></i>
+                <i class="gz" v-if="row.auditStatus == 3"></i>
+              </el-tag>
+            </template>
+            <template slot="menuLeft">
+              <!--图例 components-->
+              <span>
+                <Legend :datas="datalistLIU"></Legend>
+              </span>
+            </template>
+
+            <template slot-scope="{ row }" slot="menu">
+              <el-button
+                type="text"
+                size="mini"
+                icon="el-icon-collection"
+                class="start-kaoshi"
+                v-if="permission.trainExam_trainPapers"
+                @click="startExam(row)"
+                >报名清册
+              </el-button>
+              <el-button
+                type="text"
+                size="mini"
+                icon="el-icon-search"
+                v-if="permission.trainExam_index_examScoreViews"
+                @click="examScoreViews(row)"
+                >成绩查看
+              </el-button>
+            </template>
+          </avue-crud>
+        </div>
+      </el-card>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+import {
+  getList,
+  add,
+  remove,
+  update,
+  updateAudit,
+  applyConfirm,
+} from "@/api/examapi/examination";
+import { mapGetters } from "vuex";
+import Legend from "@/components/liu-legend/Legend";
+export default {
+  components: {
+    Legend,
+  },
+  data() {
+    return {
+      form: {},
+      //legend-liu数据
+      datalistLIU: [
+        {
+          color: "#29C093",
+          text: "审核通过",
+        },
+        {
+          color: "#F34A4A",
+          text: "审核不通过",
+        },
+        {
+          color: "#F48F57",
+          text: "待审核",
+        },
+      ],
+      questionBankOption: {
+        // 操作栏多余按钮去除
+        delBtn: false,
+        editBtn: true,
+        addBtn: false,
+        menu: true,
+        // 导出按钮
+        excelBtn: false,
+        viewBtn: false,
+        // title: '题库',
+        align: "center",
+        height: "auto",
+        calcHeight: 80,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 4,
+        index: true,
+        indexLabel: "序号",
+        dialogClickModal: false,
+        // 操作栏宽度
+        menuWidth: 320,
+        labelWidth: 140,
+        ...this.$store.state.control.clearOtherBut,
+        column: [
+          {
+            label: "培训学校名称",
+            prop: "deptName",
+            slot: true,
+            search:true,
+            searchSpan:5,
+            searchLabelWidth:110,
+            // 表单新增时是否禁止
+            addDisabled: true,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            // hide: true,
+            display: false,
+            overHidden: true,
+          },
+          {
+            label: "考试时间",
+            prop: "examTime",
+            type: "date",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            search:true,
+            searchSpan:4,
+            hide: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择考试时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "考试时间",
+            prop: "startTime",
+            type: "datetime",
+            format: "yyyy-MM-dd HH:mm",
+            valueFormat: "yyyy-MM-dd HH:mm",
+            hide: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择考试时间",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "考试开始时间",
+            prop: "startTime",
+            type: "datetime",
+            format: "yyyy-MM-dd HH:mm",
+            valueFormat: "yyyy-MM-dd HH:mm",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 120,
+          },
+          {
+            label: "考试开始截止时间",
+            prop: "endTime",
+            type: "datetime",
+            // span: 24,
+            format: "yyyy-MM-dd HH:mm",
+            valueFormat: "yyyy-MM-dd HH:mm",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 120,
+          },
+          {
+            label: "报名人数",
+            prop: "num",
+            type: "textarea",
+            span: 24,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 70,
+          },
+          {
+            label: "考试人数",
+            prop: "examNum",
+            type: "textarea",
+            span: 24,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 70,
+          },
+          {
+            label: "审核状态",
+            search: true,
+            searchSpan: 4,
+            prop: "auditStatus",
+            slot: true,
+            editDisplay: false,
+            addDisplay: false,
+            type: "select",
+            rules: [
+              {
+                required: true,
+                message: "请选择审核类型",
+                trigger: "blur",
+              },
+            ],
+            dicData: [
+              {
+                label: "审核通过",
+                value: 1,
+              },
+              {
+                label: "不通过",
+                value: 2,
+              },
+              {
+                label: "待审核",
+                value: 3,
+              },
+            ],
+            width: 110,
+          },
+        ],
+      },
+      questionBankSearch: {},
+      questionBankLoading: true,
+      questionBankData: [],
+      questionBankPage: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 16,
+        ...this.$store.state.control.changePageSize,
+      },
+      questionBankQuery: {},
+      questionBankSelectionList: [],
+    };
+  },
+  mounted() {},
+  computed: {
+    ids() {
+      let ids = [];
+      this.questionBankSelectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+    ...mapGetters(["userInfo", "permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(null, false),
+        viewBtn: this.vaildData(this.permission.trainExam_edit, false),
+        delBtn: this.vaildData(null, false),
+        editBtn: this.vaildData(null, false),
+      };
+    },
+  },
+  watch: {},
+  methods: {
+    questionBankOnLoad(page, params = {}) {
+      this.questionBankLoading = false;
+      params["examType"] = 2;
+      //如果是培训公司管理员,则只能看到当前培训公司申请的考试
+      if (this.userInfo.role_name == "培训公司管理员") {
+        params["deptId"] = this.userInfo.dept_id;
+      }
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.questionBankQuery)
+      ).then((res) => {
+        const data = res.data.data;
+        this.questionBankPage.total = data.total;
+        this.questionBankData = data.records;
+        this.questionBankLoading = false;
+        this.questionBankSelectionClear();
+      });
+    },
+    questionBankSelectionClear() {
+      this.questionBankSelectionList = [];
+      this.$refs.questionBankCrud.toggleSelection();
+    },
+    questionBankSelectionChange(list) {
+      this.questionBankSelectionList = list;
+    },
+    questionBankSearchChange(params, done) {
+      this.questionBankQuery = params;
+      this.questionBankPage.currentPage = 1;
+      this.questionBankOnLoad(this.questionBankPage, params);
+      done();
+    },
+    questionBankSearchReset() {
+      this.questionBankQuery = {};
+      this.questionBankOnLoad(this.questionBankPage);
+    },
+    questionBankCurrentChange(currentPage) {
+      this.questionBankPage.currentPage = currentPage;
+    },
+    questionBankSizeChange(pageSize) {
+      this.questionBankPage.pageSize = pageSize;
+    },
+    //审核
+    submit(row, done, loading) {
+      updateAudit(row).then(
+        () => {
+          this.dialogFormVisible = false;
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+     beforeOpen(done, type) {
+      if(this.userInfo.role_name=="培训公司管理员"){
+         if (["edit"].includes(type)) {
+            if(this.form.auditStatus==1){
+              this.$message({
+                type: "warning",
+                message: "当前考试申请已审核通过,无法再修改考试申请信息!",
+              });
+              return;
+            }
+          }
+      }
+      done();
+    },
+    startExam(row) {
+      //正式考试
+      if (row.examType == 1) {
+        this.$router.push({
+          path: `/applydetailed`,
+          query: row,
+        });
+      }
+
+      //模拟考试
+      if (row.examType == 2) {
+        this.$router.push({
+          path: `/trainApply`,
+          query: row,
+        });
+      }
+    },
+    examScoreViews(row) {
+      //模拟考试
+      if (row.examType == 2) {
+        this.$router.push({
+          path: `/trainExam/singleperformance`,
+          query: row,
+        });
+      }
+    },
+    // 新增
+    questionBankRowSave(row, done, loading) {
+      row.startTime = row.startTime + ":00";
+      row["examType"] = 2;
+      // row.endTime = row.examTime[1];
+      // row.examTime = JSON.stringify(row.examTime);
+      add(row).then(
+        () => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+    questionBankRowUpdate(row, index, done, loading) {
+      // if (Array.isArray(row.examTime) != true) {
+      //   row.examTime = row.examTime.split(",");
+      // }
+      const data = {
+        id: row.id,
+        startTime: row.startTime + ":00",
+        endTime: row.endTime + ":00",
+      };
+      // row.startTime = row.startTime + ":00";
+      // row.endTime = row.endTime + ":00";
+      // row.endTime = row.examTime[1];
+      // row.examTime = JSON.stringify(row.examTime);
+      update(data).then(
+        () => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          done();
+        },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
+    },
+    questionBankRowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id);
+        })
+        .then(() => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
+    },
+    handleConfirm(row) {
+      this.$confirm("已确认当前考试申请人员名单无误?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          row["confirmUser"] = this.userInfo.Id;
+          return applyConfirm(row);
+        })
+        .then(() => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
+    },
+    questionBankHandleDelete() {
+      if (this.questionBankSelectionList.length === 0) {
+        this.$message.warning("请选择至少一条数据");
+        return;
+      }
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(this.ids);
+        })
+        .then(() => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          this.$refs.questionBankCrud.toggleSelection();
+        });
+    },
+    handleAudit(row) {
+      this.dialogFormVisible = true;
+      this.Audit = row;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dtype {
+  width: 100%;
+  padding-left: 0px;
+}
+
+.dx {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 6px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #dfdfdf;
+}
+.zc {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 4px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #29c093;
+}
+.yj {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 4px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f34a4a;
+}
+.gz {
+  position: absolute;
+  top: 50%;
+  margin-top: -5px;
+  margin-left: 4px;
+  width: 10px;
+  height: 10px;
+  border-radius: 30%;
+  background: #f48f57;
+}
+</style>

--
Gitblit v1.9.3