From afbf287f31db7e14f7fc890f2674f281fdbef3bd Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Fri, 13 Aug 2021 08:43:00 +0800
Subject: [PATCH] 报名考试修改

---
 src/views/trainExam/index.vue |  686 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 508 insertions(+), 178 deletions(-)

diff --git a/src/views/trainExam/index.vue b/src/views/trainExam/index.vue
index 4aa7515..bae15c3 100644
--- a/src/views/trainExam/index.vue
+++ b/src/views/trainExam/index.vue
@@ -1,77 +1,134 @@
+/*
+ * @Author: Morpheus
+ * @Date: 2021-07-05 16:31:54
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2021-07-18 17:09:52
+ * menu-name 考试管理
+ */
 <template>
-  <basic-container class="hasButOne">
-    <avue-crud
-      :option="option"
-      :table-loading="loading"
-      :data="data"
-      :page.sync="page"
-      ref="crud"
-      @row-del="rowDel"
-      v-model="form"
-      :permission="permissionList"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      :before-open="beforeOpen"
-      @filter="filterChange"
-      @search-change="searchChange"
-      @search-reset="searchReset"
-      @selection-change="selectionChange"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
-      @on-load="onLoad"
-    >
-      <template slot-scope="{ type,row }" slot="menu">
-        <el-button
-          :type="type"
-          size="small"
-          icon="el-icon-folder-checked"
-          @click="handleAudit(row)"
-          >审核
-        </el-button>
-      </template>
-    </avue-crud>
+  <el-row class="morpheus-box-paper">
+    <el-col :span="24">
+      <el-card>
+        <div class="exam-card-body">
+          <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"
+            @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="menuLeft">
+                            <el-button type="danger"
+                                       size="mini"
+                                       icon="el-icon-delete"
+                                       plain
+                                       @click="handleDelete">新增
+                            </el-button>
+                            <el-button type="danger"
+                                       size="mini"
+                                       icon="el-icon-delete"
+                                       plain
+                                       @click="handleDelete">删除
+                            </el-button>
+                            <el-button type="danger"
+                                       size="mini"
+                                       icon="el-icon-delete"
+                                       plain
+                                       @click="handleDelete">导出
+                            </el-button>
+                        </template> -->
 
-    <el-dialog title="考试申请审核" 
-      :visible.sync="dialogFormVisible" 
-      modal-append-to-body='false'
-      append-to-body='true'
-      :close-on-click-model="true">
-      <avue-form ref="formAudit" v-model="Audit" :option="optionAudit" @reset-change="emptytChange" @submit="submit"></avue-form>
-    </el-dialog>
-  </basic-container>
+            <template slot="menuLeft">
+              <el-button
+                type="danger"
+                size="small"
+                icon="el-icon-delete"
+                @click="questionBankHandleDelete"
+                >删 除
+              </el-button>
+            </template>
+
+            <template slot-scope="{ row }" slot="examStatus">
+              <el-tag>{{ row.examStatus == 0 ? "已发布" : "草稿" }}</el-tag>
+            </template>
+
+            <template slot-scope="{ row }" slot="menu">
+              <el-button
+                type="text"
+                size="mini"
+                icon="el-icon-collection"
+                class="start-kaoshi"
+                @click="startExam(row)"
+                >报名清册
+              </el-button>
+              <el-button
+                type="text"
+                size="mini"
+                icon="el-icon-folder-checked"
+                @click="handleAudit(row)"
+                >审核
+              </el-button>
+            </template>
+          </avue-crud>
+
+          <el-dialog
+            title="考试申请审核"
+            :visible.sync="dialogFormVisible"
+            modal-append-to-body="false"
+            append-to-body="true"
+            :close-on-click-model="true"
+          >
+            <avue-form
+              ref="formAudit"
+              v-model="Audit"
+              :option="optionAudit"
+              @reset-change="emptytChange"
+              @submit="submit"
+            ></avue-form>
+          </el-dialog>
+        </div>
+      </el-card>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
-import { infoColumn,auditColumn } from "./data";
-import {
-  getList,
-  remove,
-  update,
-  updateAudit,
-  add,
-  getDetail,
-} from "@/api/trainExam/trainExam";
-import { mapGetters } from "vuex";
-
+import { getList, add, remove, update,updateAudit } from "@/api/examapi/examination";
+import { auditColumn } from "./data";
 export default {
   data() {
+    var validatePass = (rule, value, callback) => {
+      console.log(value);
+      if (value == undefined || value == "") {
+        callback(new Error("请输入分数"));
+        return;
+      } else if (value !== "" && isNaN(value) == true) {
+        callback(new Error("请输入数字"));
+      } else if (value <= 0) {
+        callback(new Error("分数设置请大于0"));
+      } else {
+        callback();
+      }
+    };
+
     return {
       form: {},
-      Audit:{},
-      query: {},
-      loading: true,
-      deptCategory: "",
-      deptId: "",
-      userId: "",
+      Audit: {},
       dialogFormVisible: false,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      selectionList: [],
-      optionAudit:{
+      optionAudit: {
         height: "auto",
         calcHeight: 30,
         dialogWidth: 1000,
@@ -89,54 +146,393 @@
         dialogClickModal: false,
         column: auditColumn,
       },
-      option: {
-        height: "auto",
-        calcHeight: 30,
-        dialogWidth: 1000,
-        tip: false,
-        searchShow: true,
-        searchMenuSpan: 6,
-        border: false,
-        index: true,
-        stripe: true,
-        viewBtn: true,
+      questionBankOption: {
+        // 操作栏多余按钮去除
+        delBtn: true,
+        editBtn: true,
         addBtn: true,
         selection: true,
+        menu: true,
+        // 导出按钮
         excelBtn: false,
-        menuWidth: 230,
-        labelWidth: "120",
+        viewBtn: true,
+
+        // title: '题库',
+
+        align: "center",
+        height: "auto",
+        calcHeight: 80,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 4,
+        index: true,
+        indexLabel: "序号",
+        //dialogType: 'drawer',
         dialogClickModal: false,
-        column: infoColumn,
+        // 操作栏宽度
+        menuWidth: 280,
+
+        labelWidth: 140,
+
+        column: [
+          {
+            label: "考试名称",
+            prop: "examName",
+            search: true,
+            searchSpan: 4,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请输入试卷名称",
+                trigger: "blur",
+              },
+            ],
+            width:200,
+          },
+          // {
+          //     label: "试卷分数",
+          //     prop: "totalScore",
+          //     slot: true,
+          //     // 表单新增时是否禁止
+          //     addDisabled: false,
+          //     // 表单新增时是否可见
+          //     addDisplay: true,
+          //     // 表单新增时是否为查看模式
+          //     addDetail: false,
+          //     // 表单编辑时是否禁止
+          //     editDisabled: false,
+          //     // 表单编辑时是否可见
+          //     editDisplay: true,
+          //     // 表单编辑时是否为查看模式
+          //     editDetail: false,
+
+          //     rules: [{ validator: validatePass, required: true, trigger: 'blur' }],
+          //     width: 100
+          // },
+          {
+            label: "考试时间",
+            prop: "examTime",
+            type: "daterange",
+            // span: 24,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            startPlaceholder: "考试开始时间",
+            endPlaceholder: "考试结束时间",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            // display: false,
+            hide: true,
+            rules: [
+              {
+                required: true,
+                message: "请选择考试时间",
+                trigger: "blur",
+              },
+            ],
+            width: 160,
+          },
+          {
+            label: "考试开始时间",
+            prop: "startTime",
+            type: "datetime",
+            // span: 24,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 160,
+          },
+          {
+            label: "考试结束时间",
+            prop: "endTime",
+            type: "datetime",
+            // span: 24,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 160,
+          },
+          {
+            label: "创建人",
+            prop: "creator",
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: true,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            hide: true,
+            display: false,
+          },
+          {
+            label: "备注",
+            prop: "remark",
+            span: 24,
+            hide:true,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+          },
+          {
+            label: "注意事项",
+            prop: "examAttention",
+            type: "textarea",
+            span: 24,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            width: 150,
+          },
+          {
+            label: "申请时间",
+            prop: "createTime",
+            type: "datetime",
+            width: 160,
+            editDisplay: false,
+            addDisplay: false,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            rules: [
+              {
+                required: true,
+                message: "请选择结束时间",
+                trigger: "click",
+              },
+            ],
+          },
+          {
+            label: "审核时间",
+            prop: "auditTime",
+            type: "datetime",
+            width: 160,
+            editDisplay: false,
+            addDisplay: false,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            rules: [
+              {
+                required: true,
+                message: "请选择结束时间",
+                trigger: "click",
+              },
+            ],
+          },
+          {
+            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,
+              },
+            ],
+          },
+          {
+            label: "审核明细",
+            editDisplay: false,
+            addDisplay: false,
+            prop: "auditDetail",
+          },
+        ],
       },
-      data: [],
+      questionBankSearch: {},
+      questionBankLoading: true,
+      questionBankData: [],
+      questionBankPage: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 16,
+      },
+      questionBankQuery: {},
+      questionBankSelectionList: [],
     };
   },
+  created() {},
+  mounted() {},
   computed: {
-    ...mapGetters(["permission"]),
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.notice_add, false),
-        viewBtn: this.vaildData(this.permission.notice_view, false),
-        delBtn: this.vaildData(null, false),
-        editBtn: this.vaildData(this.permission.notice_edit, false),
-      };
-    },
     ids() {
       let ids = [];
-      this.selectionList.forEach((ele) => {
+      this.questionBankSelectionList.forEach((ele) => {
         ids.push(ele.id);
       });
       return ids.join(",");
     },
   },
-  mounted() {},
+  watch: {},
   methods: {
-    rowSave(row, done, loading) {
-      row.category = 1;
-      row.deptId = this.deptId;
+    questionBankOnLoad(page, params = {}) {
+      this.questionBankLoading = false;
+      params["examType"] = 2;
+      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();
+        }
+      );
+    },
+    startExam(row) {
+      //正式考试
+      if (row.examType == 1) {
+        this.$router.push({
+          path: `/applydetailed`,
+          query: row,
+        });
+      }
+
+      //模拟考试
+      if (row.examType == 2) {
+        this.$router.push({
+          path: `/trainApply`,
+          query: row,
+        });
+      }
+    },
+    // 新增
+    questionBankRowSave(row, done, loading) {
+      row.startTime = row.examTime[0];
+      row.endTime = row.examTime[1];
+      row.examTime = JSON.stringify(row.examTime);
       add(row).then(
         () => {
-          this.onLoad(this.page);
+          this.questionBankOnLoad(this.questionBankPage);
           this.$message({
             type: "success",
             message: "操作成功!",
@@ -149,10 +545,16 @@
         }
       );
     },
-    rowUpdate(row, index, done, loading) {
+    questionBankRowUpdate(row, index, done, loading) {
+      if (Array.isArray(row.examTime) != true) {
+        row.examTime = row.examTime.split(",");
+      }
+      row.startTime = row.examTime[0];
+      row.endTime = row.examTime[1];
+      row.examTime = JSON.stringify(row.examTime);
       update(row).then(
         () => {
-          this.onLoad(this.page);
+          this.questionBankOnLoad(this.questionBankPage);
           this.$message({
             type: "success",
             message: "操作成功!",
@@ -165,7 +567,7 @@
         }
       );
     },
-    rowDel(row) {
+    questionBankRowDel(row) {
       this.$confirm("确定将选择数据删除?", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -175,32 +577,15 @@
           return remove(row.id);
         })
         .then(() => {
-          this.onLoad(this.page);
+          this.questionBankOnLoad(this.questionBankPage);
           this.$message({
             type: "success",
             message: "操作成功!",
           });
         });
     },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
+    questionBankHandleDelete() {
+      if (this.questionBankSelectionList.length === 0) {
         this.$message.warning("请选择至少一条数据");
         return;
       }
@@ -213,76 +598,21 @@
           return remove(this.ids);
         })
         .then(() => {
-          this.onLoad(this.page);
+          this.questionBankOnLoad(this.questionBankPage);
           this.$message({
             type: "success",
             message: "操作成功!",
           });
-          this.$refs.crud.toggleSelection();
+          this.$refs.questionBankCrud.toggleSelection();
         });
     },
-    //审核
-    submit(row,done,loading){
-      updateAudit(row).then(
-        () => {
-          this.dialogFormVisible = false;
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    handleAudit(row){
-        this.dialogFormVisible = true;
-        this.Audit = row;
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.deptId = JSON.parse(
-        window.localStorage.getItem("saber-userInfo")
-      ).content.dept_id;
-
-      this.userId = JSON.parse(
-        window.localStorage.getItem("saber-userInfo")
-      ).content.user_id;
-
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, params).then(
-            (res) => {
-            const data = res.data.data;
-            this.page.total = data.total;
-            this.data = data.records;
-            this.loading = false;
-            this.selectionClear();
-            }
-        );
+    handleAudit(row) {
+      this.dialogFormVisible = true;
+      this.Audit = row;
     },
   },
 };
 </script>
 
-<style>
+<style lang="scss" scoped>
 </style>

--
Gitblit v1.9.3