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