From c4e67a8942e514b65ab41bb19781d50576c15725 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Fri, 24 Sep 2021 19:56:52 +0800
Subject: [PATCH] 用户
---
src/views/trainExam/index.vue | 730 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 556 insertions(+), 174 deletions(-)
diff --git a/src/views/trainExam/index.vue b/src/views/trainExam/index.vue
index 4aa7515..7227509 100644
--- a/src/views/trainExam/index.vue
+++ b/src/views/trainExam/index.vue
@@ -1,142 +1,590 @@
+/*
+ * @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
+ style="display:none"
+ 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"
+ v-if="permission.trainExam_trainPapers"
+ @click="startExam(row)"
+ >报名清册
+ </el-button>
+ <el-button
+ type="text"
+ size="mini"
+ icon="el-icon-folder-checked"
+ v-if="permission.trainExam_check"
+ @click="handleAudit(row)"
+ >审核
+ </el-button>
+ <el-button
+ type="text"
+ size="mini"
+ icon="el-icon-folder-checked"
+ v-if="permission.trainExam_index_examScoreViews"
+ @click="examScoreViews(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,
+ add,
remove,
update,
updateAudit,
- add,
- getDetail,
-} from "@/api/trainExam/trainExam";
+} from "@/api/examapi/examination";
+import { auditColumn } from "./data";
import { mapGetters } from "vuex";
-
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,
tip: false,
searchShow: true,
searchMenuSpan: 6,
- border: false,
+ border: true, //liu
index: true,
stripe: true,
- viewBtn: true,
- addBtn: true,
+ viewBtn: false,
+ addBtn: false,
+ editBtn: false,
selection: true,
excelBtn: false,
menuWidth: 230,
dialogClickModal: false,
column: auditColumn,
},
- option: {
+ questionBankOption: {
+ // 操作栏多余按钮去除
+ delBtn: false,
+ editBtn: false,
+ addBtn: false,
+ selection: true,
+ menu: true,
+ // 导出按钮
+ excelBtn: false,
+ viewBtn: false,
+
+ // title: '题库',
+
+ align: "center",
height: "auto",
- calcHeight: 30,
- dialogWidth: 1000,
+ calcHeight: 80,
tip: false,
searchShow: true,
- searchMenuSpan: 6,
- border: false,
+ searchMenuSpan: 4,
index: true,
- stripe: true,
- viewBtn: true,
- addBtn: true,
- selection: true,
- excelBtn: false,
- menuWidth: 230,
- labelWidth: "120",
+ indexLabel: "序号",
+ //dialogType: 'drawer',
dialogClickModal: false,
- column: infoColumn,
+ // 操作栏宽度
+ menuWidth: 280,
+
+ labelWidth: 140,
+
+ column: [
+ {
+ label: "考试名称",
+ prop: "examName",
+ search: true,
+ 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: "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",
+ // span: 24,
+ 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: 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,
+ hide:true,
+ // 表单新增时是否禁止
+ addDisabled: false,
+ // 表单新增时是否可见
+ addDisplay: true,
+ // 表单新增时是否为查看模式
+ addDetail: false,
+ // 表单编辑时是否禁止
+ editDisabled: false,
+ // 表单编辑时是否可见
+ editDisplay: true,
+ // 表单编辑时是否为查看模式
+ editDetail: false,
+ width: 150,
+ },
+ {
+ label: "报名人数",
+ prop: "num",
+ type: "textarea",
+ span: 24,
+ slot: true,
+ // 表单新增时是否禁止
+ addDisabled: false,
+ // 表单新增时是否可见
+ addDisplay: true,
+ // 表单新增时是否为查看模式
+ addDetail: false,
+ // 表单编辑时是否禁止
+ editDisabled: false,
+ // 表单编辑时是否可见
+ editDisplay: true,
+ // 表单编辑时是否为查看模式
+ editDetail: false,
+ width: 150,
+ },
+ {
+ label: "申请时间",
+ prop: "creatorDate",
+ 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: [],
};
},
+ 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(",");
},
+ ...mapGetters(["userInfo", "permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(null, false),
+ viewBtn: this.vaildData(null, false),
+ delBtn: this.vaildData(null, false),
+ editBtn: this.vaildData(null, false),
+ };
+ },
},
- 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,
+ });
+ }
+ },
+ 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.onLoad(this.page);
+ this.questionBankOnLoad(this.questionBankPage);
this.$message({
type: "success",
message: "操作成功!",
@@ -149,10 +597,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.startTime + ":00";
+ // 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 +619,7 @@
}
);
},
- rowDel(row) {
+ questionBankRowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
@@ -175,32 +629,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 +650,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