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/applyexam/index.vue | 1736 +++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 1,073 insertions(+), 663 deletions(-)

diff --git a/src/views/applyexam/index.vue b/src/views/applyexam/index.vue
index c7a6fc3..bf9a8f8 100644
--- a/src/views/applyexam/index.vue
+++ b/src/views/applyexam/index.vue
@@ -6,30 +6,30 @@
  * menu-name 报名考试
  */
 <template>
-    <el-row class="morpheus-box-apply-exam">
-        <el-col :span="24" class="hasButOne">
-            <el-card>
-                <div class="exam-card-body">
-
-                    <avue-crud v-model="obj"
-                               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-del="questionBankRowDel">
-
-                        <!-- 自定义按钮 -->
-                        <!-- <template slot="menuLeft">
+  <el-row class="morpheus-box-apply-exam">
+    <el-col :span="24" class="hasButOne">
+      <el-card>
+        <div class="exam-card-body">
+          <avue-crud
+            v-model="obj"
+            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-del="questionBankRowDel"
+          >
+            <!-- 自定义按钮 -->
+            <!-- <template slot="menuLeft">
                             <el-button type="danger"
                                        size="mini"
                                        icon="el-icon-delete"
@@ -50,682 +50,1092 @@
                             </el-button>
                         </template> -->
 
-                        <!-- <template slot="menuLeft">
+            <!-- <template slot="menuLeft">
                             <el-button type="danger"
                                        size="small"
                                        icon="el-icon-delete"
                                        @click="questionBankHandleDelete">删 除
                             </el-button>
                         </template> -->
+            <!-- 自定义按钮 -->
+            <template slot="menuLeft">
+              <el-button
+                type="primary"
+                size="small"
+                plain
+                icon="el-icon-folder-checked"
+                @click="handleBatchExam"
+                v-if="permission.applyexam_exam"
+                >生成考试
+              </el-button>
+              <!-- v-if="examPersission" -->
+              <el-button
+                type="primary"
+                size="small"
+                plain
+                icon="el-icon-folder-checked"
+                v-if="permission.applyexam_import"
+               @click="handleImport"
+                >批量报名
+              </el-button>
+            </template>
 
-                        <template slot-scope="{ type,row }" slot="menu">
-                            <el-button
-                            :type="type"
-                            size="small"
-                            icon="el-icon-refresh-left"
-                            :disabled="row.applyStatus==4"
-                            @click="handleCancel(row)"
-                            >取消报名
-                            </el-button>
-                            <el-button
-                            style="display:none"
-                            :type="type"
-                            size="small"
-                            icon="el-icon-folder-checked"
-                            :disabled="row.applyStatus==4"
-                            @click="handleAudit(row)"
-                            >审核
-                            </el-button>
-                            <el-button
-                            :type="type"
-                            size="small"
-                            icon="el-icon-receiving"
-                            :disabled="row.applyStatus==4"
-                            @click="handlePrint(row)"
-                            >准考证打印
-                            </el-button>
-                        </template>
+            <template slot-scope="{ type, row }" slot="menu">
+              <el-button
+                :type="type"
+                size="small"
+                icon="el-icon-refresh-left"
+                v-if="permission.applyexam_cancel"
+                :disabled="row.isApply == 2"
+                @click="handleCancel(row)"
+                >取消报名
+              </el-button>
+              <el-button
+                style="display: none"
+                :type="type"
+                size="small"
+                icon="el-icon-folder-checked"
+                :disabled="row.applyStatus == 4"
+                @click="handleAudit(row)"
+                >审核
+              </el-button>
+              <el-button
+                :type="type"
+                size="small"
+                icon="el-icon-receiving"
+                v-if="permission.applyexam_print && row.candidateNo!=''"
+                @click="handlePrint(row)"
+                >准考证打印
+              </el-button>
+            </template>
 
-                    </avue-crud>
+            <template slot-scope="{ row }" slot="age">
+              {{ row.age == -1 ? "" : row.age }}
+            </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>
+          <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-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-card>
-        </el-col>
-    </el-row>
+          <el-dialog
+            title="考试生成"
+            append-to-body
+            :visible.sync="dialogExamFormVisible"
+            width="900px"
+            @close="closeDialog"
+          >
+            <avue-form
+              ref="formExamApply"
+              v-model="examApply"
+              :option="optionExamApply"
+              @reset-change="emptytChange"
+              @submit="submitExamApply"
+            ></avue-form>
+          </el-dialog>
+        </div>
+      </el-card>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
-
 import {
-    getApplyList,
-    addApply,
-    updateApply,
-    remove
+  getApplyList,
+  addApply,
+  cancelApply,
+  remove,
+  addExam,
 } from "@/api/examapi/applyexam";
-import { mapState } from 'vuex'
-
-
+import { mapState } from "vuex";
+import { mapGetters } from "vuex";
+import { getRoleDetail } from "@/api/system/role";
 var DIC = {
-    applyStatus: [{
-        label: '已报名',
-        value: 2
-    }, {
-        label: '已取消',
-        value: 4
-    }]
-}
-
-
+  applyStatus: [
+    {
+      label: "已报名",
+      value: 2,
+    },
+    {
+      label: "已取消",
+      value: 4,
+    },
+  ],
+};
 
 export default {
-    data () {
-
-        return {
-            dialogFormVisible:false,
-            Audit:{},
-            optionAudit:{
-                height: "auto",
-                calcHeight: 30,
-                dialogWidth: 1000,
-                tip: false,
-                searchShow: true,
-                searchMenuSpan: 6,
-                border: false,
-                index: true,
-                stripe: true,
-                viewBtn: true,
-                addBtn: true,
-                selection: true,
-                excelBtn: false,
-                menuWidth: 230,
-                dialogClickModal: false,
-                column: [
-                    {
-                        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: 2
-                            },
-                            {
-                                label: "不通过",
-                                value: 3
-                            }
-                        ]
-                    },
-                    {
-                        label: "审核明细",
-                        span: 24,
-                        type: "textarea",
-                        prop: "auditDetail"
-                    }
-                ],
+  data() {
+    return {
+      dialogFormVisible: false,
+      dialogExamFormVisible: false,
+      examPersission: false,
+      applyExport: false,
+      excelBox: false,
+      Audit: {},
+      excelForm: {},
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data",
             },
-            questionBankOption: {
-                // 操作栏多余按钮去除
-                delBtn: false,
-                editBtn: false,
-                addBtn: true,
-                selection: true,
-                menu: true,
-                // 导出按钮
-                // excelBtn: true,
-                viewBtn: false,
-
-                // title: '题库',
-
-                align: 'center',
-                height: 'auto',
-                calcHeight: 80,
-                tip: false,
-                searchShow: true,
-                searchMenuSpan: 4,
-                index: true,
-                indexLabel: '#',
-                //dialogType: 'drawer',
-                dialogClickModal: false,
-                //tree 默认展开
-                defaultExpandAll:true,
-                // 操作栏宽度
-                menuWidth: 200,
-
-                column: [
-                    {
-                        label: "保安姓名",
-                        prop: "userId",
-                        type: 'tree',
-                        dicUrl: '',
-                        search: true,
-                        hide:true,
-                        slot: true,
-                        searchSpan:5,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: true,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: true,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        props: {
-                            label: "title",
-                            value: "id",
-                        },
-                        rules: [{
-                            required: true,
-                            message: "请选择保安姓名",
-                            trigger: "blur"
-                        }],
-                        width:80
-                    },
-                    {
-                        label: "保安姓名",
-                        prop: "name",
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: false,
-                        // 表单编辑时是否可见
-                        editDisplay: false,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        viewDisplay:true,
-                        props: {
-                            label: "title",
-                            value: "id",
-                        },
-                        rules: [{
-                            required: true,
-                            message: "请选择保安姓名",
-                            trigger: "blur"
-                        }]
-                    },
-                    {
-                        label: "考试名称",
-                        prop: "examName",
-                        type: 'tree',
-                        dicUrl: '/api/exampaper/page-tree?examType=1',
-                        // search: true,
-                        slot: true,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: true,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: true,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        props: {
-                            label: "examName",
-                            value: "id",
-                        },
-                        rules: [{
-                            required: true,
-                            message: "请选择试卷名称",
-                            trigger: "blur"
-                        }],
-                        width: 220
-                    },
-                    {
-                        label: "所属公司",
-                        prop: "deptName",
-                        search: true,
-                        slot: true,
-                        searchSpan:5,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: true,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        rules: [{
-                            required: true,
-                            message: "请选择所属公司",
-                            trigger: "blur"
-                        }],
-                        width: 220
-                    },
-                    {
-                        label: "准考证号",
-                        prop: "candidateNo",
-                        slot: true,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: false,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        rules: [{
-                            required: true,
-                            message: "请选择准考证号",
-                            trigger: "blur"
-                        }],
-                        width: 100
-                    },
-                    {
-                        label: "身份证号",
-                        prop: "idCardNo",
-                        slot: true,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: false,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        rules: [{
-                            required: true,
-                            message: "请选择准考证号",
-                            trigger: "blur"
-                        }],
-                        width: 150
-                    },
-                    {
-                        label: "报考证件",
-                        prop: "applyCard", 
-                        slot: true,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: false,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        rules: [{
-                            required: true,
-                            message: "请选择准考证号",
-                            trigger: "blur"
-                        }],
-                    },
-                    // {
-                    //     label: "试卷分数",
-                    //     prop: "paperScore",
-                    //     slot: true,
-                    //     // 表单新增时是否禁止
-                    //     addDisabled: false,
-                    //     // 表单新增时是否可见
-                    //     addDisplay: false,
-                    //     // 表单新增时是否为查看模式
-                    //     addDetail: false,
-                    //     // 表单编辑时是否禁止
-                    //     editDisabled: true,
-                    //     // 表单编辑时是否可见
-                    //     editDisplay: true,
-                    //     // 表单编辑时是否为查看模式
-                    //     editDetail: false
-                    // },
-                    {
-                        label: "报名时间",
-                        prop: "applyTime",
-                        type: "datetime",
-                        // span: 24,
-                        format: 'yyyy-MM-dd HH:mm:ss',
-                        valueFormat: 'yyyy-MM-dd HH:mm:ss',
-                        // 表单新增时是否禁止
-                        addDisabled: true,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: true,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        value: (new Date().getFullYear() + '-' + (new Date().getMonth() + 1 < 10
-                            ? "0" + (new Date().getMonth() + 1)
-                            : new Date().getMonth() + 1) + '-' + (new Date().getDate() < 10
-                                ? "0" + new Date().getDate()
-                                : new Date().getDate()) + ' ' + (new Date().getHours() < 10
-                                    ? "0" + new Date().getHours()
-                                    : new Date().getHours()) + ':' + (new Date().getMinutes() < 10
-                                        ? "0" + new Date().getMinutes()
-                                        : new Date().getMinutes()) + ':' + (new Date().getSeconds() < 10
-                                            ? "0" + new Date().getSeconds()
-                                            : new Date().getSeconds())),
-
-                        width: 150
-                    },
-                    {
-                        label: "考试时间",
-                        prop: "examTime",
-                        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: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        width: 150
-                    },{
-                        label: "报名状态",
-                        prop: "applyStatus", 
-                        slot: true,
-                        searchSpan:5,
-                        // 表单新增时是否禁止
-                        addDisabled: false,
-                        // 表单新增时是否可见
-                        addDisplay: false,
-                        // 表单新增时是否为查看模式
-                        addDetail: false,
-                        // 表单编辑时是否禁止
-                        editDisabled: false,
-                        // 表单编辑时是否可见
-                        editDisplay: true,
-                        // 表单编辑时是否为查看模式
-                        editDetail: false,
-                        dicData:DIC.applyStatus,
-                        search:true,
-                        type:"select"
-                    },
-                    // {
-                    //     label: "审核状态",
-                    //     prop: "examinationType", 
-                    //     slot: true,
-                    //     searchSpan:5,
-                    //     // 表单新增时是否禁止
-                    //     addDisabled: false,
-                    //     // 表单新增时是否可见
-                    //     addDisplay: false,
-                    //     // 表单新增时是否为查看模式
-                    //     addDetail: false,
-                    //     // 表单编辑时是否禁止
-                    //     editDisabled: false,
-                    //     // 表单编辑时是否可见
-                    //     editDisplay: true,
-                    //     // 表单编辑时是否为查看模式
-                    //     editDetail: false,
-                    //     dicData:[
-                    //         {
-                    //             label: '待审核',
-                    //             value: "1"
-                    //         },
-                    //         {
-                    //             label: '审核通过',
-                    //             value: "2"
-                    //         },
-                    //         {
-                    //             label: '审核不通过',
-                    //             value: "3"
-                    //         }
-                    //         ],
-                    //     search:true,
-                    //     type:"select"
-                    // },
-                ]
-            },
-            questionBankSearch: {},
-            questionBankLoading: true,
-            questionBankData: [
-
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/apply/import-apply",
+          },
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
+          },
+        ],
+      },
+      optionAudit: {
+        height: "auto",
+        calcHeight: 30,
+        dialogWidth: 1000,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true, //liu
+        index: true,
+        stripe: true,
+        viewBtn: true,
+        addBtn: true,
+        selection: true,
+        excelBtn: false,
+        menuWidth: 230,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "审核状态",
+            search: true,
+            searchSpan: 5,
+            span: 24,
+            prop: "auditStatus",
+            slot: true,
+            editDisplay: false,
+            addDisplay: false,
+            type: "select",
+            rules: [
+              {
+                required: true,
+                message: "请选择审核类型",
+                trigger: "blur",
+              },
             ],
-            questionBankPage: {
-                pageSize: 10,
-                currentPage: 1,
-                total: 16
+            dicData: [
+              {
+                label: "审核通过",
+                value: 2,
+              },
+              {
+                label: "不通过",
+                value: 3,
+              },
+            ],
+          },
+          {
+            label: "审核明细",
+            span: 24,
+            type: "textarea",
+            prop: "auditDetail",
+          },
+        ],
+      },
+      optionExamApply: {
+        height: "auto",
+        filterBtn: true,
+        calcHeight: 30,
+        dialogWidth: 950,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true, //liu
+        index: true,
+        stripe: true,
+        viewBtn: true,
+        selection: true,
+        excelBtn: false,
+        menuWidth: 380,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "考试人数",
+            prop: "number",
+            type: 'number',
+            span: 12,
+            precision:0,
+            step:50,
+            mock:{
+              type:'number',
+              max:1000,
+              min:0,
+              precision:0
             },
-            questionBankQuery: {},
-            questionBankSelectionList: [],
+            rules: [
+              {
+                required: true,
+                message: "请输入考试人数",
+                trigger: "blur",
+              },
+            ],
+            minRows: 0,
+            maxRows: 1000,
+            value:50,
+          },
+          {
+            label: "序号开始",
+            prop: "serialStart",
+            span: 6,
+            value:1,
+            mock:{
+              type:'number',
+              max:1000,
+              min:1,
+              precision:0
+            },
+            minRows: 1,
+            maxRows: 1000,
+            type:"number",
+            rules: [
+              {
+                required: true,
+                message: "请输入序号",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "序号结束",
+            prop: "serialEnd",
+            span: 6,
+            value:50,
+            mock:{
+              type:'number',
+              max:1000,
+              min:1,
+              precision:0
+            },
+            minRows: 1,
+            maxRows: 1000,
+            type:"number",
+            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: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择考试时间",
+                trigger: "blur",
+              },
+            ],
+            span: 12,
+          },
+          {
+            label: "截止时间",
+            prop: "endTime",
+            type: "datetime",
+            format: "yyyy-MM-dd HH:mm",
+            valueFormat: "yyyy-MM-dd HH:mm",
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择考试时间",
+                trigger: "blur",
+              },
+            ],
+            span: 12,
+          },
+        ],
+      },
+      questionBankOption: {
+        // 操作栏多余按钮去除
+        delBtn: false,
+        editBtn: false,
+        addBtn: false,
+        selection: false,
+        menu: true,
+        // 导出按钮
+        // excelBtn: true,
+        viewBtn: true,
+
+        // title: '题库',
+
+        align: "center",
+        height: "auto",
+        calcHeight: 80,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 4,
+        index: true,
+        indexLabel: "#",
+        //dialogType: 'drawer',
+        dialogClickModal: false,
+        //tree 默认展开
+        defaultExpandAll: true,
+        // 操作栏宽度
+        menuWidth: 250,
+
+        column: [
+          {
+            label: "保安姓名",
+            prop: "userId",
+            type: "tree",
+            dicUrl: "",
+            hide: true,
+            slot: true,
+            searchSpan: 4,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            viewDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            viewDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            props: {
+              label: "title",
+              value: "id",
+            },
+            rules: [
+              {
+                required: true,
+                message: "请选择保安姓名",
+                trigger: "blur",
+              },
+            ],
+            width: 80,
+          },
+          {
+            label: "保安姓名",
+            prop: "realName",
+            searchSpan: 4,
+            search: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            viewDisplay: true,
+            props: {
+              label: "title",
+              value: "id",
+            },
+            rules: [
+              {
+                required: true,
+                message: "请选择保安姓名",
+                trigger: "blur",
+              },
+            ],
+          },
+          {
+            label: "年龄",
+            prop: "age",
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            viewDisplay: true,
+          },
+          // {
+          //   label: "考试名称",
+          //   prop: "examName",
+          //   type: "tree",
+          //   dicUrl: "/api/exampaper/page-tree?examType=1",
+          //   // search: true,
+          //   slot: true,
+          //   // 表单新增时是否禁止
+          //   addDisabled: false,
+          //   // 表单新增时是否可见
+          //   addDisplay: true,
+          //   // 表单新增时是否为查看模式
+          //   addDetail: false,
+          //   // 表单编辑时是否禁止
+          //   editDisabled: true,
+          //   // 表单编辑时是否可见
+          //   editDisplay: true,
+          //   // 表单编辑时是否为查看模式
+          //   editDetail: false,
+          //   props: {
+          //     label: "examName",
+          //     value: "id",
+          //   },
+          //   rules: [
+          //     {
+          //       required: true,
+          //       message: "请选择试卷名称",
+          //       trigger: "blur",
+          //     },
+          //   ],
+          //   width: 220,
+          // },
+          {
+            label: "所属公司",
+            prop: "deptName",
+            search: true,
+            slot: true,
+            searchSpan: 6,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择所属公司",
+                trigger: "blur",
+              },
+            ],
+            width: 220,
+          },
+          {
+            label: "准考证号",
+            prop: "candidateNo",
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择准考证号",
+                trigger: "blur",
+              },
+            ],
+            width: 100,
+          },
+          {
+            label: "身份证号",
+            prop: "idCardNo",
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择准考证号",
+                trigger: "blur",
+              },
+            ],
+            width: 150,
+          },
+          {
+            label: "报考证件",
+            prop: "applyCard",
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请选择准考证号",
+                trigger: "blur",
+              },
+            ],
+          },
+          // {
+          //     label: "试卷分数",
+          //     prop: "paperScore",
+          //     slot: true,
+          //     // 表单新增时是否禁止
+          //     addDisabled: false,
+          //     // 表单新增时是否可见
+          //     addDisplay: false,
+          //     // 表单新增时是否为查看模式
+          //     addDetail: false,
+          //     // 表单编辑时是否禁止
+          //     editDisabled: true,
+          //     // 表单编辑时是否可见
+          //     editDisplay: true,
+          //     // 表单编辑时是否为查看模式
+          //     editDetail: false
+          // },
+          {
+            label: "报名时间",
+            prop: "applyTime",
+            type: "datetime",
+            // span: 24,
+            format: "yyyy-MM-dd HH:mm:ss",
+            valueFormat: "yyyy-MM-dd HH:mm:ss",
+            // 表单新增时是否禁止
+            addDisabled: true,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            value:
+              new Date().getFullYear() +
+              "-" +
+              (new Date().getMonth() + 1 < 10
+                ? "0" + (new Date().getMonth() + 1)
+                : new Date().getMonth() + 1) +
+              "-" +
+              (new Date().getDate() < 10
+                ? "0" + new Date().getDate()
+                : new Date().getDate()) +
+              " " +
+              (new Date().getHours() < 10
+                ? "0" + new Date().getHours()
+                : new Date().getHours()) +
+              ":" +
+              (new Date().getMinutes() < 10
+                ? "0" + new Date().getMinutes()
+                : new Date().getMinutes()) +
+              ":" +
+              (new Date().getSeconds() < 10
+                ? "0" + new Date().getSeconds()
+                : new Date().getSeconds()),
+
+            width: 150,
+          },
+          // {
+          //   label: "考试时间",
+          //   prop: "examTime",
+          //   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: true,
+          //   // 表单编辑时是否为查看模式
+          //   editDetail: false,
+          //   width: 150,
+          // },
+
+          // {
+          //   label: "审查状态",
+          //   prop: "examinationType",
+          //   slot: true,
+          //   searchSpan: 5,
+          //   // 表单新增时是否禁止
+          //   addDisabled: false,
+          //   // 表单新增时是否可见
+          //   addDisplay: false,
+          //   // 表单新增时是否为查看模式
+          //   addDetail: false,
+          //   // 表单编辑时是否禁止
+          //   editDisabled: false,
+          //   // 表单编辑时是否可见
+          //   editDisplay: true,
+          //   // 表单编辑时是否为查看模式
+          //   editDetail: false,
+          //   dicData: [
+          //     {
+          //       label: "正常",
+          //       value: "1",
+          //     },
+          //     {
+          //       label: "异常",
+          //       value: "2",
+          //     },
+          //   ],
+          //   search: true,
+          //   type: "select",
+          // },
+          // {
+          //   label: "审查明细",
+          //   prop: "examinationMx",
+          //   slot: true,
+          //   // 表单新增时是否禁止
+          //   addDisabled: false,
+          //   // 表单新增时是否可见
+          //   addDisplay: false,
+          //   // 表单新增时是否为查看模式
+          //   addDetail: false,
+          //   // 表单编辑时是否禁止
+          //   editDisabled: false,
+          //   // 表单编辑时是否可见
+          //   editDisplay: true,
+          //   // 表单编辑时是否为查看模式
+          //   editDetail: false,
+          //   overHidden: true,
+          //   width: 150,
+          // },
+          //   {
+          //     label: "报名状态",
+          //     search: true,
+          //     type: "select",
+          //     searchSpan: 4,
+          //     prop: "applyStatus",
+          //     searchValue: 2,
+          //     dicData: [{
+          //             label: '全部',
+          //             value: 0,
+          //         },
+          //         {
+          //             label: '已报名',
+          //             value: 2,
+          //         },
+          //         {
+          //             label: '已取消',
+          //             value: 4,
+          //         }
+          //     ],
+          //     props: {
+          //         label: "label",
+          //         value: "value"
+          //     },
+          //     editDisplay: false,
+          //     addDisplay: false,
+          //     width: 100,
+          // },
+        ],
+      },
+      questionBankSearch: {},
+      questionBankLoading: true,
+      questionBankData: [],
+      questionBankPage: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 16,
+      },
+      questionBankQuery: {},
+      questionBankSelectionList: [],
+    };
+  },
+
+  watch: {
+    "form.examname": {
+      // form是表单或者表格绑定的数据集,v-model='form'
+      handler(val) {
+        if (val) {
+          //地址截取,从县/区开始截取,并且取从县区第一个出现的位置开始
+          var address = val.formattedAddress.toString();
+          if (address.search("县") != -1) {
+            this.form.address = address.substring(
+              address.indexOf("县") + 1,
+              address.length
+            );
+          }
+          if (address.search("区") != -1) {
+            this.form.address = address.substring(
+              address.indexOf("区") + 1,
+              address.length
+            );
+          }
         }
+      },
+      immediate: true,
+    },
+  },
+  created() {
+    console.log(this.userInfo);
+
+    if (this.userInfo.role_name.indexOf("ksxtadmin") != -1) {
+      this.examPersission = true;
+    }
+
+    this.questionBankSearch['applyStatus'] = 2;
+  },
+  mounted() {},
+  computed: {
+    ...mapState({
+      userInfo: (state) => state.user.userInfo,
+    }),
+    ...mapGetters(["userInfo", "permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(null, false),
+        viewBtn: this.vaildData(this.permission.applyexam_view, false),
+        delBtn: this.vaildData(null, false),
+        editBtn: this.vaildData(null, false),
+      };
+    },
+    ids() {
+      let ids = [];
+      this.questionBankSelectionList.forEach((ele) => {
+        ids.push(ele.id);
+      });
+      return ids.join(",");
+    },
+  },
+  methods: {
+    //准考证查看
+    handlePrint(row) {
+      var obj = row;
+      obj["name"] = "准考证信息";
+      this.$router.push({
+        path: `/applyexam/papers`,
+        query: obj,
+      });
+    },
+    questionBankOnLoad(page, params = {}) {
+      params = this.questionBankSearch;
+      this.questionBankLoading = false;
+      this.loading = true;
+      //判断角色,如果是保安公司管理员或保安,只能查看当前公司的报名信息
+      var that = this;
+      //获取当前登录人员的角色信息
+      var roleIds = this.userInfo.role_id.split(",");
+      roleIds.forEach((roleId) => {
+        getRoleDetail(roleId).then((res) => {
+            var roleAlias = res.data.data.roleAlias;
+            if (
+              roleAlias == "保安公司管理员" ||
+              roleAlias == "保安"
+            ) {
+              //如果是保安公司管理员
+              params["deptId"] = that.userInfo.dept_id;
+            }
+            getApplyList(
+              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;
     },
 
-    watch: {
-        "form.examname": {
-            // form是表单或者表格绑定的数据集,v-model='form'
-            handler (val) {
-                if (val) {
-                    //地址截取,从县/区开始截取,并且取从县区第一个出现的位置开始
-                    var address = val.formattedAddress.toString();
-                    if (address.search("县") != -1) {
-                        this.form.address = address.substring(
-                            address.indexOf("县") + 1,
-                            address.length
-                        );
-                    }
-                    if (address.search("区") != -1) {
-                        this.form.address = address.substring(
-                            address.indexOf("区") + 1,
-                            address.length
-                        );
-                    }
-                }
-            },
-            immediate: true,
+    // 新增
+    questionBankRowSave(row, done, loading) {
+      // debugger;
+      addApply({
+        userId: row.userId,
+        examId: row.examName,
+        applyTime: row.applyTime,
+      }).then(
+        (res) => {
+          this.questionBankOnLoad(this.questionBankPage);
+          if (res.data.data == 201) {
+            this.$message({
+              type: "warning",
+              message: "已报名,不能重复报名",
+            });
+          } else if (res.data.data == 201) {
+            this.$message({
+              type: "warning",
+              message: "报名失败",
+            });
+          } else {
+            this.$message({
+              type: "success",
+              message: "报名成功",
+            });
+          }
+          done();
         },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
     },
-    created () {
 
-      console.log(this.userInfo)
-
-      if (this.userInfo.role_name.indexOf('ksxtadmin') != -1) {
-
-        this.questionBankOption.column[0].dicUrl = "/api/blade-system/dept/lazy-tree-user?parentId="
-      } else {
-        this.questionBankOption.column[0].dicUrl = "/api/blade-system/dept/lazy-tree-user?parentId=" + this.userInfo.dept_id
-
+    //生成考试弹窗
+    handleBatchExam() {
+      this.dialogExamFormVisible = true;
+      if (this.questionBankSelectionList.length === 0) {
+        this.ids = "";
+      }
+    },
+    //生成考试
+    submitExamApply(row, done, loading) {
+      var that = this;
+      row.startTime = row.startTime + ":00";
+      row.endTime = row.endTime + ":00";
+      if(row.number!=((row.serialEnd-row.serialStart)+1)){
+          this.$message({
+            type: "error",
+            message: "考试人数与序号不匹配!",
+          });
+         done();
+         return;
       }
 
-
+      var s = new Date(row.startTime);
+      var e = new Date(row.endTime);
+      if(s>e){
+        this.$message({
+            type: "error",
+            message: "截止时间不能早于考试考试开始时间!",
+          });
+         done();
+         return;
+      }
+      addExam(Object.assign(row, this.questionBankSearch)).then(
+        () => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+          that.$refs.formExamApply.resetFields();
+          that.dialogExamFormVisible = false;
+          done();
+        },
+        (error) => {
+          window.console.log(error);
+          loading();
+        }
+      );
     },
-    mounted () {
-
-
+    //关闭窗口清除数据
+    closeDialog() {
+      this.$refs.formExamApply.resetFields();
     },
-    computed: {
-        ...mapState({
-            userInfo: state => state.user.userInfo
-        }),
-        ids () {
-            let ids = [];
-            this.questionBankSelectionList.forEach(ele => {
-                ids.push(ele.id);
-            });
-            return ids.join(",");
-        },
+
+    questionBankRowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          return remove(row.id);
+        })
+        .then(() => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
     },
-    methods: {
-        //准考证查看
-        handlePrint(row) {
-            var obj = row;
-            obj["name"] = "准考证信息";
-            this.$router.push({
-                path: `/applyexam/papers`,
-                query: obj,
-            });
-        },
-        questionBankOnLoad (page, params = {}) {
-            this.questionBankLoading = false;
-            getApplyList(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;
-        },
 
-        // 新增
-        questionBankRowSave (row, done, loading) {
-            // debugger;
-            addApply({ userId: row.userId, examId: row.examName, applyTime: row.applyTime }).then((res) => {
-                this.questionBankOnLoad(this.questionBankPage);
-                if(res.data.data==201){
-                    this.$message({
-                    type: "warning",
-                    message:"已报名,不能重复报名",
-                    });
-                }else if(res.data.data==201){
-                    this.$message({
-                    type: "warning",
-                    message:"报名失败",
-                    });
-                }else{
-                    this.$message({
-                    type: "success",
-                    message:"报名成功",
-                    });
-                }
-                done();
-            }, error => {
-                window.console.log(error);
-                loading();
-            });
-        },
+    //取消报名
+    handleCancel(row) {
+      this.$confirm("确定取消报名?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          row.applyStatus = 4;
+          return cancelApply(row);
+        })
+        .then(() => {
+          this.questionBankOnLoad(this.questionBankPage);
+          this.$message({
+            type: "success",
+            message: "操作成功!",
+          });
+        });
+    },
 
-        questionBankRowDel (row) {
-            this.$confirm("确定将选择数据删除?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning"
-            })
-                .then(() => {
-                    return remove(row.id);
-                })
-                .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;
+    },
 
-        //取消报名
-        handleCancel(row){
-            this.$confirm("确定取消报名?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning"
-            })
-                .then(() => {
-                    row.applyStatus = 4;
-                    return updateApply(row);
-                })
-                .then(() => {
-                    this.questionBankOnLoad(this.questionBankPage);
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!"
-                    });
-                });
-        },
+    handleImport() {
+      this.excelBox = true;
+    },
 
-        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;
-        },
-    }
-}
+    handleTemplate() {
+      window.open(`/api/apply/export-template`);
+    },
+    uploadAfter(res, done, loading, column) {
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
+    },
+
+    refreshChange() {
+      this.questionBankOnLoad(this.page, this.query);
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>

--
Gitblit v1.9.3