From 8c6cf205affbbc8ada74f00a7ca25ebca867e9ed Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Mon, 27 Sep 2021 11:44:44 +0800
Subject: [PATCH] 图表颜色

---
 src/views/applyexam/index.vue |  460 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 322 insertions(+), 138 deletions(-)

diff --git a/src/views/applyexam/index.vue b/src/views/applyexam/index.vue
index 2472e7d..bf9a8f8 100644
--- a/src/views/applyexam/index.vue
+++ b/src/views/applyexam/index.vue
@@ -65,16 +65,18 @@
                 plain
                 icon="el-icon-folder-checked"
                 @click="handleBatchExam"
-                v-if="examPersission"
+                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>
 
@@ -83,6 +85,7 @@
                 :type="type"
                 size="small"
                 icon="el-icon-refresh-left"
+                v-if="permission.applyexam_cancel"
                 :disabled="row.isApply == 2"
                 @click="handleCancel(row)"
                 >取消报名
@@ -100,10 +103,14 @@
                 :type="type"
                 size="small"
                 icon="el-icon-receiving"
-                :disabled="row.applyStatus == 4"
+                v-if="permission.applyexam_print && row.candidateNo!=''"
                 @click="handlePrint(row)"
                 >准考证打印
               </el-button>
+            </template>
+
+            <template slot-scope="{ row }" slot="age">
+              {{ row.age == -1 ? "" : row.age }}
             </template>
           </avue-crud>
 
@@ -121,35 +128,33 @@
               @reset-change="emptytChange"
               @submit="submit"
             ></avue-form>
-
           </el-dialog>
 
           <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>
+            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'
+            width="900px"
+            @close="closeDialog"
           >
             <avue-form
               ref="formExamApply"
@@ -169,12 +174,13 @@
 import {
   getApplyList,
   addApply,
-  updateApply,
+  cancelApply,
   remove,
-  addExam
+  addExam,
 } from "@/api/examapi/applyexam";
 import { mapState } from "vuex";
-
+import { mapGetters } from "vuex";
+import { getRoleDetail } from "@/api/system/role";
 var DIC = {
   applyStatus: [
     {
@@ -193,35 +199,35 @@
     return {
       dialogFormVisible: false,
       dialogExamFormVisible: false,
-      examPersission:false,
-      applyExport:false,
-      excelBox:false,
+      examPersission: false,
+      applyExport: false,
+      excelBox: false,
       Audit: {},
       excelForm: {},
       excelOption: {
-          submitBtn: false,
-          emptyBtn: false,
-          column: [
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
           {
-              label: "模板上传",
-              prop: "excelFile",
-              type: "upload",
-              drag: true,
-              loadText: "模板上传中,请稍等",
-              span: 24,
-              propsHttp: {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
               res: "data",
-              },
-              tip: "请上传 .xls,.xlsx 标准格式文件",
-              action: "/api/apply/import-apply",
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/apply/import-apply",
           },
           {
-              label: "模板下载",
-              prop: "excelTemplate",
-              formslot: true,
-              span: 24,
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24,
           },
-          ],
+        ],
       },
       optionAudit: {
         height: "auto",
@@ -230,7 +236,7 @@
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
-        border: false,
+        border: true, //liu
         index: true,
         stripe: true,
         viewBtn: true,
@@ -284,7 +290,7 @@
         tip: false,
         searchShow: true,
         searchMenuSpan: 6,
-        border: false,
+        border: true, //liu
         index: true,
         stripe: true,
         viewBtn: true,
@@ -294,13 +300,79 @@
         dialogClickModal: false,
         column: [
           {
+            label: "考试人数",
+            prop: "number",
+            type: 'number',
+            span: 12,
+            precision:0,
+            step:50,
+            mock:{
+              type:'number',
+              max:1000,
+              min:0,
+              precision:0
+            },
+            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: "examTime",
-            type: "daterange",
-            format: "yyyy-MM-dd HH:mm:ss",
-            valueFormat: "yyyy-MM-dd HH:mm:ss",
-            startPlaceholder: "考试开始时间",
-            endPlaceholder: "考试结束时间",
+            prop: "startTime",
+            type: "datetime",
+            format: "yyyy-MM-dd HH:mm",
+            valueFormat: "yyyy-MM-dd HH:mm",
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
@@ -320,7 +392,34 @@
                 trigger: "blur",
               },
             ],
-            span: 24,
+            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,
           },
         ],
       },
@@ -329,7 +428,7 @@
         delBtn: false,
         editBtn: false,
         addBtn: false,
-        selection: true,
+        selection: false,
         menu: true,
         // 导出按钮
         // excelBtn: true,
@@ -350,7 +449,7 @@
         //tree 默认展开
         defaultExpandAll: true,
         // 操作栏宽度
-        menuWidth: 300,
+        menuWidth: 250,
 
         column: [
           {
@@ -419,37 +518,55 @@
             ],
           },
           {
-            label: "考试名称",
-            prop: "examName",
-            type: "tree",
-            dicUrl: "/api/exampaper/page-tree?examType=1",
-            // search: true,
+            label: "年龄",
+            prop: "age",
             slot: true,
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
-            addDisplay: true,
+            addDisplay: false,
             // 表单新增时是否为查看模式
             addDetail: false,
             // 表单编辑时是否禁止
-            editDisabled: true,
+            editDisabled: false,
             // 表单编辑时是否可见
-            editDisplay: true,
+            editDisplay: false,
             // 表单编辑时是否为查看模式
             editDetail: false,
-            props: {
-              label: "examName",
-              value: "id",
-            },
-            rules: [
-              {
-                required: true,
-                message: "请选择试卷名称",
-                trigger: "blur",
-              },
-            ],
-            width: 220,
+            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",
@@ -633,11 +750,12 @@
           //   editDetail: false,
           //   width: 150,
           // },
+
           // {
-          //   label: "报名状态",
-          //   prop: "applyStatus",
+          //   label: "审查状态",
+          //   prop: "examinationType",
           //   slot: true,
-          //   searchSpan: 4,
+          //   searchSpan: 5,
           //   // 表单新增时是否禁止
           //   addDisabled: false,
           //   // 表单新增时是否可见
@@ -650,43 +768,65 @@
           //   editDisplay: true,
           //   // 表单编辑时是否为查看模式
           //   editDetail: false,
-          //   dicData: DIC.applyStatus,
+          //   dicData: [
+          //     {
+          //       label: "正常",
+          //       value: "1",
+          //     },
+          //     {
+          //       label: "异常",
+          //       value: "2",
+          //     },
+          //   ],
           //   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: "审查明细",
+          //   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: 2,
           //         },
           //         {
-          //             label: '审核不通过',
-          //             value: "3"
+          //             label: '已取消',
+          //             value: 4,
           //         }
-          //         ],
-          //     search:true,
-          //     type:"select"
+          //     ],
+          //     props: {
+          //         label: "label",
+          //         value: "value"
+          //     },
+          //     editDisplay: false,
+          //     addDisplay: false,
+          //     width: 100,
           // },
         ],
       },
@@ -731,14 +871,25 @@
     console.log(this.userInfo);
 
     if (this.userInfo.role_name.indexOf("ksxtadmin") != -1) {
-        this.examPersission = true;
+      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) => {
@@ -758,18 +909,36 @@
       });
     },
     questionBankOnLoad(page, params = {}) {
+      params = this.questionBankSearch;
       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();
-      });
+      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 = [];
@@ -831,20 +1000,37 @@
     },
 
     //生成考试弹窗
-    handleBatchExam(){
+    handleBatchExam() {
       this.dialogExamFormVisible = true;
       if (this.questionBankSelectionList.length === 0) {
         this.ids = "";
       }
     },
     //生成考试
-    submitExamApply(row, done, loading){
+    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(
+      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({
@@ -862,7 +1048,7 @@
       );
     },
     //关闭窗口清除数据
-    closeDialog(){
+    closeDialog() {
       this.$refs.formExamApply.resetFields();
     },
 
@@ -893,7 +1079,7 @@
       })
         .then(() => {
           row.applyStatus = 4;
-          return updateApply(row);
+          return cancelApply(row);
         })
         .then(() => {
           this.questionBankOnLoad(this.questionBankPage);
@@ -936,19 +1122,17 @@
     },
 
     handleTemplate() {
-        window.open(
-            `/api/apply/export-template`
-        );
+      window.open(`/api/apply/export-template`);
     },
     uploadAfter(res, done, loading, column) {
-        window.console.log(column);
-        this.excelBox = false;
-        this.refreshChange();
-        done();
+      window.console.log(column);
+      this.excelBox = false;
+      this.refreshChange();
+      done();
     },
 
     refreshChange() {
-        this.questionBankOnLoad(this.page, this.query);
+      this.questionBankOnLoad(this.page, this.query);
     },
   },
 };

--
Gitblit v1.9.3