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