Administrator
2021-08-13 afbf287f31db7e14f7fc890f2674f281fdbef3bd
报名考试修改
14 files modified
1412 ■■■■ changed files
public/papers.html 1 ●●●● patch | view | raw | blame | history
public/papersApply.html 1 ●●●● patch | view | raw | blame | history
public/securityPrint.html 2 ●●● patch | view | raw | blame | history
src/api/examapi/examination.js 61 ●●●●● patch | view | raw | blame | history
src/api/trainingRegistration/trainingRegistration.js 14 ●●●●● patch | view | raw | blame | history
src/views/applydetailed/index.vue 2 ●●● patch | view | raw | blame | history
src/views/exam/startexam.vue 1 ●●●● patch | view | raw | blame | history
src/views/securityEquipment/equipments.vue 6 ●●●● patch | view | raw | blame | history
src/views/securityUnit/index.vue 3 ●●●● patch | view | raw | blame | history
src/views/trainApply/index.vue 78 ●●●●● patch | view | raw | blame | history
src/views/trainExam/data.js 294 ●●●● patch | view | raw | blame | history
src/views/trainExam/index.vue 686 ●●●● patch | view | raw | blame | history
src/views/trainingRegistration/data.js 70 ●●●●● patch | view | raw | blame | history
src/views/trainingRegistration/index.vue 193 ●●●●● patch | view | raw | blame | history
public/papers.html
@@ -121,6 +121,7 @@
            var examType = JSON.parse(getData("data")).examType;
            // console.log(JSON.parse(getData("data")), 111);
            // axios.get('http://223.82.109.183:2080/apply/getApplyInfo?id=' + id + "&applyExamType=" + examType).then(function(res) {
            axios.get('http://localhost:81/apply/getApplyInfo?id=' + id + "&applyExamType=" + examType).then(function(res) {
                var data = res.data.data;
                var str = `<span class="title">${data.examName}</span>
public/papersApply.html
@@ -77,6 +77,7 @@
            var name = JSON.parse(getData("data")).name;
            // console.log(JSON.parse(getData("data")), 111);
            // axios.get('http://223.82.109.183:2080/apply/getApplyDetailList?examId=' + id).then(function(res) {
            axios.get('http://localhost:81/apply/getApplyDetailList?examId=' + id).then(function(res) {
                var data = res.data;
                var list = data.applyList;
public/securityPrint.html
@@ -199,7 +199,7 @@
        var securityName = JSON.parse(getData("data")).securityName;
        // console.log(JSON.parse(getData("data")), 111);
        axios.get('http://localhost:81/apply/userDetail?id=' + id).then(function(res) {
        axios.get('http://223.82.109.183:2080/apply/userDetail?id=' + id).then(function(res) {
            var data = res.data.data;
            var str = `<div id="table1"></div>
            <div id="table">
src/api/examapi/examination.js
@@ -1,39 +1,48 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
  return request({
    url: '/api/exampaper/page',
    method: 'get',
    params: {
      ...params,
      current,
      size
    }
  })
    return request({
        url: '/api/exampaper/page',
        method: 'get',
        params: {
            ...params,
            current,
            size
        }
    })
}
export const remove = (ids) => {
  return request({
    url: '/api/exampaper/remove',
    method: 'post',
    params: {
      ids,
    }
  })
    return request({
        url: '/api/exampaper/remove',
        method: 'post',
        params: {
            ids,
        }
    })
}
export const add = (row) => {
  return request({
    url: '/api/exampaper/submit',
    method: 'post',
    data: row
  })
    return request({
        url: '/api/exampaper/submit',
        method: 'post',
        data: row
    })
}
export const update = (row) => {
  return request({
    url: '/api/exampaper/update',
    method: 'post',
    data: row
  })
    return request({
        url: '/api/exampaper/update',
        method: 'post',
        data: row
    })
}
export const updateAudit = (row) => {
    return request({
        url: '/api/exampaper/update-audit',
        method: 'post',
        data: row
    })
}
src/api/trainingRegistration/trainingRegistration.js
@@ -54,4 +54,18 @@
            ids,
        }
    })
}
export const addExam = (ids, examTime, startTime, endTime) => {
    return request({
        url: '/api/trainingRegistration/batchExam',
        method: 'post',
        params: {
            ids,
            examTime,
            startTime,
            endTime
        }
    })
}
src/views/applydetailed/index.vue
@@ -36,7 +36,7 @@
                plain
                icon="el-icon-download"
                @click="handleExport"
                >清册生成
                >清册打印
              </el-button>
              <el-button
                style="display:none"
src/views/exam/startexam.vue
@@ -338,6 +338,7 @@
  methods: {
    questionBankOnLoad(page, params = {}) {
      this.questionBankLoading = false;
      params['examType'] = 1;
      getList(
        page.currentPage,
        page.pageSize,
src/views/securityEquipment/equipments.vue
@@ -36,7 +36,7 @@
        </template>
      </avue-crud>
      <el-dialog
        title="题库导入"
        title="装备附件批量导入"
        append-to-body
        :visible.sync="excelBox"
        width="555px"
@@ -81,7 +81,7 @@
              res: "data",
            },
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/examSubjectChoices/import-examSubject",
            action: "/api/equipage/import-equipage",
          },
          {
            label: "模板下载",
@@ -135,7 +135,7 @@
      done();
    },
    handleTemplate() {
      window.open(`/api/examSubjectChoices/export-template`);
      window.open(`/api/equipage/export-template`);
    },
    sizeChange(val) {
      this.page1.currentPage = 1;
src/views/securityUnit/index.vue
@@ -19,6 +19,7 @@
      >
        <template slot-scope="{ type, size, row }" slot="menu">
          <el-button
            style="display:none"
            :size="size"
            :type="type"
            @click="handleUploadPage(row)"
@@ -285,7 +286,7 @@
        searchSize: "mini",
        searchMenuSpan: 6,
        height: 583,
        menuWidth: 290,
        menuWidth: 160,
        align: "center",
        selection: true,
        column: column,
src/views/trainApply/index.vue
@@ -31,6 +31,7 @@
                        <!-- 自定义按钮 -->
                        <template slot="menuLeft">
                            <el-button
                                style="display:none"
                                type="warning"
                                size="small"
                                plain
@@ -39,12 +40,21 @@
                                >导出
                            </el-button>
                            <el-button
                                 style="display:none"
                                type="success"
                                size="small"
                                plain
                                icon="el-icon-upload2"
                                @click="handleImport"
                                >导入
                            </el-button>
                            <el-button
                                type="warning"
                                size="small"
                                plain
                                icon="el-icon-download"
                                @click="handleExport"
                                >清册打印
                            </el-button>
                        </template>
@@ -142,7 +152,7 @@
                        prop: "userId",
                        type: 'tree',
                        dicUrl: '',
                        search: true,
                        hide:true,
                        slot: true,
                        // 表单新增时是否禁止
@@ -174,6 +184,7 @@
                        addDisabled: false,
                        // 表单新增时是否可见
                        addDisplay: false,
                        search: true,
                        // 表单新增时是否为查看模式
                        addDetail: false,
                        // 表单编辑时是否禁止
@@ -385,26 +396,27 @@
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        width: 160
                    },{
                        label: "报名状态",
                        prop: "cancel",
                        slot: true,
                        // 表单新增时是否禁止
                        addDisabled: false,
                        // 表单新增时是否可见
                        addDisplay: false,
                        // 表单新增时是否为查看模式
                        addDetail: false,
                        // 表单编辑时是否禁止
                        editDisabled: false,
                        // 表单编辑时是否可见
                        editDisplay: true,
                        // 表单编辑时是否为查看模式
                        editDetail: false,
                        dicData:DIC.cancel,
                        search:true,
                        type:"select"
                    },
                    // {
                    //     label: "报名状态",
                    //     prop: "cancel",
                    //     slot: true,
                    //     // 表单新增时是否禁止
                    //     addDisabled: false,
                    //     // 表单新增时是否可见
                    //     addDisplay: false,
                    //     // 表单新增时是否为查看模式
                    //     addDetail: false,
                    //     // 表单编辑时是否禁止
                    //     editDisabled: false,
                    //     // 表单编辑时是否可见
                    //     editDisplay: true,
                    //     // 表单编辑时是否为查看模式
                    //     editDetail: false,
                    //     dicData:DIC.cancel,
                    //     search:true,
                    //     type:"select"
                    // },
                ]
            },
            questionBankSearch: {},
@@ -620,17 +632,27 @@
                    this.$refs.questionBankCrud.toggleSelection();
                });
        },
        //导出数据
        //清册生成
        handleExport() {
            this.$confirm("是否导出清册数据?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                window.open(`/api/trainingRegistration/export-apply?examId=${this.$route.query.id}`);
            var obj ={};
            obj["name"] = "报名清册信息";
            obj["examId"] = this.$route.query.id;
            this.$router.push({
                path: `/applydetailed/papers`,
                query: obj,
            });
        },
        //导出数据
        // handleExport() {
        //     this.$confirm("是否导出清册数据?", "提示", {
        //         confirmButtonText: "确定",
        //         cancelButtonText: "取消",
        //         type: "warning",
        //     }).then(() => {
        //         window.open(`/api/trainingRegistration/export-apply?examId=${this.$route.query.id}`);
        //     });
        // },
        handleImport() {
            this.excelBox = true;
        },
src/views/trainExam/data.js
@@ -1,160 +1,164 @@
export var infoColumn = [{
    label: "申请单位名称",
        label: "申请单位名称",
    prop: "deptId",
    type: "tree",
    dicUrl: "/api/blade-system/dept/lazy-tree-type?deptCategory=3&parentId=1418458374477549569",
    width: 180,
    hide: true,
    viewDisplay: false,
    props: {
        label: "title",
        value: "id"
    },
    rules: [{
        required: true,
        message: "请选择申请单位名称",
        trigger: "blur"
    }]
}, {
    label: "申请单位名称",
    prop: "deptName",
    type: "select",
    dicUrl: "/api/blade-system/dept/tree",
    width: 180,
    editDisplay: false,
    addDisplay: false
},
{
    label: "考试名称",
    searchSpan: 4,
    width: 180,
    prop: "trainExamName",
    search: true,
},
{
    label: "开始时间",
    prop: "startTime",
    type: "datetime",
    format: "yyyy-MM-dd HH:mm:ss",
    valueFormat: "yyyy-MM-dd HH:mm:ss",
    width: 180,
    rules: [{
        required: true,
        message: "请选择开始时间",
        trigger: "blur"
    }]
},
{
    label: "结束时间",
    prop: "endTime",
    type: "datetime",
    width: 180,
    format: "yyyy-MM-dd HH:mm:ss",
    valueFormat: "yyyy-MM-dd HH:mm:ss",
    rules: [{
        required: true,
        message: "请选择结束时间",
        trigger: "click"
    }]
},
{
    label: "申请时间",
    prop: "createTime",
    type: "datetime",
    width: 180,
    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: 180,
    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
        prop: "deptId",
        type: "tree",
        dicUrl: "/api/blade-system/dept/lazy-tree-type?deptCategory=3&parentId=1418458374477549569",
        width: 180,
        hide: true,
        viewDisplay: false,
        props: {
            label: "title",
            value: "id"
        },
        rules: [{
            required: true,
            message: "请选择申请单位名称",
            trigger: "blur"
        }]
    }, {
        label: "申请单位名称",
        prop: "deptName",
        type: "select",
        dicUrl: "/api/blade-system/dept/tree",
        width: 180,
        editDisplay: false,
        addDisplay: false
    },
    {
        label: "不通过",
        value: 2
        label: "考试名称",
        searchSpan: 4,
        width: 180,
        prop: "trainExamName",
        search: true,
    },
    {
        label: "开始时间",
        prop: "startTime",
        type: "datetime",
        format: "yyyy-MM-dd HH:mm:ss",
        valueFormat: "yyyy-MM-dd HH:mm:ss",
        width: 180,
        rules: [{
            required: true,
            message: "请选择开始时间",
            trigger: "blur"
        }]
    },
    {
        label: "待审核",
        value: 3
        label: "结束时间",
        prop: "endTime",
        type: "datetime",
        width: 180,
        format: "yyyy-MM-dd HH:mm:ss",
        valueFormat: "yyyy-MM-dd HH:mm:ss",
        rules: [{
            required: true,
            message: "请选择结束时间",
            trigger: "click"
        }]
    },
    {
        label: "申请时间",
        prop: "createTime",
        type: "datetime",
        width: 180,
        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: 180,
        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"
    }
    ]
},
{
    label: "审核明细",
    editDisplay: false,
    addDisplay: false,
    prop: "auditDetail"
}
]
export var auditColumn = [{
    label: "审核状态",
    search: true,
    searchSpan: 5,
    span: 24,
    prop: "auditStatus",
    slot: true,
    editDisplay: false,
    addDisplay: false,
    type: "select",
    rules: [{
        required: true,
        message: "请选择审核类型",
        trigger: "blur"
    }],
    dicData: [{
        label: "审核通过",
        value: 1
        label: "审核状态",
        search: true,
        searchSpan: 5,
        span: 24,
        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: "不通过",
        value: 2
        label: "审核明细",
        span: 24,
        type: "textarea",
        prop: "auditDetail"
    }
    ]
},
{
    label: "审核明细",
    span: 24,
    type: "textarea",
    prop: "auditDetail"
}
]
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>
src/views/trainingRegistration/data.js
@@ -69,20 +69,32 @@
        editDisplay: false,
        addDisplay: false,
        width: 160
    },
    {
        label: "电话",
        prop: "phone",
        // hide: true,
    }, {
        label: "准考证号",
        prop: "candidateNo",
        rules: [{
            required: true,
            message: "请输入电话",
            message: "请输入准考证号",
            trigger: "blur"
        }],
        editDisplay: false,
        addDisplay: false,
        width: 110,
    }, {
        width: 160
    },
    // {
    //     label: "电话",
    //     prop: "phone",
    //     // hide: true,
    //     rules: [{
    //         required: true,
    //         message: "请输入电话",
    //         trigger: "blur"
    //     }],
    //     editDisplay: false,
    //     addDisplay: false,
    //     width: 110,
    // },
    {
        label: "单位名称",
        prop: "deptId",
        // width: 70,
@@ -115,30 +127,28 @@
            trigger: "blur"
        }],
    },
    // {
    //     label: "考试名称",
    //     prop: "trainExamId",
    //     dicUrl: "/api/trainExam/page-tree?deptId={{key}}",
    //     props: {
    //         label: "trainExamName",
    //         value: "id"
    //     },
    // },
    {
        label: "报名状态",
        prop: "cancel",
        // search: true,
        dicData: DIC1,
        props: {
            label: "label",
            value: "value"
        },
        editDisplay: false,
        addDisplay: false,
        searchSpan: 4,
        width: 100,
        label: "考试名称",
        prop: "trainExamName"
    },
    {
        label: "考试证件",
        prop: "applyCard"
    },
    // {
    //     label: "报名状态",
    //     prop: "cancel",
    //     // search: true,
    //     dicData: DIC1,
    //     props: {
    //         label: "label",
    //         value: "value"
    //     },
    //     editDisplay: false,
    //     addDisplay: false,
    //     searchSpan: 4,
    //     width: 100,
    // },
    //  {
    //     label: "确认截止时间",
    //     prop: "remainingTime",
src/views/trainingRegistration/index.vue
@@ -40,6 +40,14 @@
          
          >考试申请
        </el-button>
        <el-button
          type="primary"
          size="small"
          plain
          icon="el-icon-folder-checked"
          @click="handleImport"
          >清册导入
        </el-button>
      </template>
      <template slot-scope="{ type, size, row }" slot="menu">
        <el-button
@@ -50,6 +58,14 @@
          >取消报名</el-button
        >
        <el-button
          :type="type"
          size="small"
          icon="el-icon-receiving"
          :disabled="row.candidateNo==''"
          @click="handlePrint(row)"
          >准考证打印
        </el-button>
        <el-button
          icon="el-icon-folder-checked"
          style="display: none"
          @click="affirmApply(row)"
@@ -59,6 +75,42 @@
        >
      </template>
    </avue-crud>
    <el-dialog
        title="清册数据导入"
        append-to-body
        :visible.sync="excelBox"
        width="555px"
        >
        <avue-form
            :option="excelOption"
            v-model="excelForm"
            :upload-after="uploadAfter"
        >
            <template slot="excelTemplate">
            <el-button type="primary" @click="handleTemplate">
                点击下载<i class="el-icon-download el-icon--right"></i>
            </el-button>
            </template>
        </avue-form>
    </el-dialog>
    <el-dialog
      title="考试申请"
      append-to-body
      :visible.sync="dialogExamFormVisible"
      width="1000px"
      @close='closeDialog'
    >
      <avue-form
        ref="formExamApply"
        v-model="examApply"
        :option="optionExamApply"
        @reset-change="emptytChange"
        @submit="submitExamApply"
      ></avue-form>
    </el-dialog>
  </basic-container>
</template>
@@ -69,13 +121,90 @@
  adddata,
  update,
  remove,
  cancelTrain
  cancelTrain,
  addExam
} from "@/api/trainingRegistration/trainingRegistration";
export default {
  data() {
    return {
      loading: true,
      excelBox:false,
      dialogExamFormVisible:false,
      optionExamApply: {
        height: "auto",
        filterBtn: true,
        calcHeight: 30,
        dialogWidth: 950,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        border: false,
        index: true,
        stripe: true,
        viewBtn: true,
        selection: true,
        excelBtn: false,
        menuWidth: 380,
        dialogClickModal: false,
        column: [
          {
            label: "考试时间",
            prop: "examTime",
            type: "daterange",
            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,
            rules: [
              {
                required: true,
                message: "请选择考试时间",
                trigger: "blur",
              },
            ],
            span: 24,
          },
        ],
      },
      excelForm: {},
      excelOption: {
          submitBtn: false,
          emptyBtn: false,
          column: [
          {
              label: "模板上传",
              prop: "excelFile",
              type: "upload",
              drag: true,
              loadText: "模板上传中,请稍等",
              span: 24,
              propsHttp: {
              res: "data",
              },
              tip: "请上传 .xls,.xlsx 标准格式文件",
              action: "/api/trainingRegistration/import-trainingRegistration",
          },
          {
              label: "模板下载",
              prop: "excelTemplate",
              formslot: true,
              span: 24,
          },
          ],
      },
      selectionList: [],
      page: {
        pageSize: 10,
@@ -92,7 +221,7 @@
        height: 583,
        index: true,
        labelWidth: "120",
        menuWidth: 100,
        menuWidth: 200,
        align: "center",
        selection: true,
        column: column,
@@ -112,6 +241,15 @@
    },
  },
  methods: {
    //准考证查看
    handlePrint(row) {
        var obj = row;
        obj["name"] = "准考证信息";
        this.$router.push({
            path: `/applyexam/papers`,
            query: obj,
        });
    },
    sizeChange(val) {
      this.page1.currentPage = 1;
      this.page1.pageSize = val;
@@ -287,6 +425,57 @@
        this.loading = false;
      });
    },
    handleImport() {
      this.excelBox = true;
    },
    handleTemplate() {
        window.open(
            `/api/trainingRegistration/export-template`
        );
    },
    uploadAfter(res, done, loading, column) {
        window.console.log(column);
        this.excelBox = false;
        this.refreshChange();
        done();
    },
    //生成考试弹窗
    handleBatchExam(){
      this.dialogExamFormVisible = true;
      if (this.selectionList.length === 0) {
        this.ids = "";
      }
    },
    //生成考试
    submitExamApply(row, done, loading){
      var that = this;
      var startTime = row.examTime[0];
      var endTime = row.examTime[1];
      var examTime = JSON.stringify(row.examTime);
      console.log(this.ids,111);
      addExam(this.ids, examTime, startTime, endTime).then(
        () => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
          that.$refs.formExamApply.resetFields();
          that.dialogExamFormVisible = false;
          done();
        },
        (error) => {
          window.console.log(error);
          loading();
        }
      );
    },
    //关闭窗口清除数据
    closeDialog(){
      this.$refs.formExamApply.resetFields();
    },
  },
  mounted() {
    // this.Ourdata = data;