From 79d9fc857559982b00b68b2d709807bdc4cd286f Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 11 Apr 2022 10:58:17 +0800
Subject: [PATCH] minio 地址修改

---
 src/views/trainExam/performance.vue | 1509 +++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 1,276 insertions(+), 233 deletions(-)

diff --git a/src/views/trainExam/performance.vue b/src/views/trainExam/performance.vue
index dc7adac..f53f93c 100644
--- a/src/views/trainExam/performance.vue
+++ b/src/views/trainExam/performance.vue
@@ -1,114 +1,359 @@
-/*
- * @Author: Morpheus
- * @Date: 2021-07-05 16:31:54
- * @Last Modified by: Morpheus
- * @Last Modified time: 2021-07-18 19:44:47
- * menu-name 成绩管理
- */
+/* * @Author: Morpheus * @Date: 2021-07-05 16:31:54 * @Last Modified by: liu *
+@Last Modified time: 2021-11-27 10:20:19 * menu-name 成绩管理 */
 <template>
-  <el-row class="morpheus-box">
-    <el-col :span="24" class="recruitmentManagement">
-      <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"
-            :permission="permissionList"
-            ref="questionBankCrud"
-            :page.sync="questionBankPage"
-            @on-load="questionBankOnLoad"
-            @selection-change="questionBankSelectionChange"
-            @search-change="questionBankSearchChange"
-            @search-reset="questionBankSearchReset"
-            @current-change="questionBankCurrentChange"
-            @size-change="questionBankSizeChange"
-            @row-update="questionBankRowUpdate"
-          >
-            <template slot-scope="{ row }" slot="theoryGrade">
-              {{ row.theoryGrade == -1 ? "" : row.theoryGrade }}
-            </template>
-             <template slot-scope="{ row }" slot="learnGrade">
-              {{ row.learnGrade == -1 ? "暂未录入" : row.learnGrade }}
-            </template>
-            <template slot-scope="{ row }" slot="allGrade">
-              {{ row.allGrade == -1 ? "" : row.allGrade }}
-            </template>
-            <template slot-scope="{ row }" slot="qualified">
-              {{ row.qualified == -1 ? "" : row.qualified==0?"合格":row.qualified==1?"不合格":row.qualified==3?"缺考,成绩无效":'' }}
-            </template>
+  <basic-container
+    :class="[
+      'exam-card-body',
+      $store.state.control.screenSize == 1366 ? 'smallSize' : 'normalSize',
+      $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : ''
+    ]"
+  >
+    <avue-crud
+      v-model="obj"
+      class="company-box tablesss"
+      :option="questionBankOption"
+      :search.sync="questionBankSearch"
+      :table-loading="questionBankLoading"
+      :data="questionBankData"
+      :permission="permissionList"
+      ref="questionBankCrud"
+      :page.sync="questionBankPage"
+      @sort-change="sortChange"
+      @on-load="questionBankOnLoad"
+      @selection-change="questionBankSelectionChange"
+      @search-change="questionBankSearchChange"
+      @search-reset="questionBankSearchReset"
+      @current-change="questionBankCurrentChange"
+      @size-change="questionBankSizeChange"
+      @row-update="questionBankRowUpdate"
+      @refresh-change="refreshChange"
+    >
+      <template slot-scope="{ row }" slot="theoryGrade">
+        {{ row.theoryGrade }}
+      </template>
+      <template slot-scope="{ row }" slot="learnGrade">
+        {{ row.learnGrade == "" ? "暂未录入" : row.learnGrade }}
+      </template>
+      <template slot-scope="{ row }" slot="allGrade">
+        {{ row.allGrade == -1 ? "" : row.allGrade }}
+      </template>
+      <template slot-scope="{ row }" slot="qualified">
+        {{
+          row.qualified == ""
+            ? ""
+            : row.qualified == 0
+            ? "合格"
+            : row.qualified == 1
+            ? "不合格"
+            : row.qualified == 3
+            ? "缺考,成绩无效"
+            : ""
+        }}
+      </template>
 
-            <!-- 自定义按钮 -->
-            <template slot="menuLeft">
-              <!-- <el-button type="danger"
+      <!-- 自定义按钮 -->
+      <template slot="menuLeft">
+        <!-- <el-button type="danger"
                                        size="mini"
                                        icon="el-icon-delete"
                                        plain
                                        @click="handleDelete">新增
                             </el-button> -->
-              <!-- <el-button type="danger"
+        <!-- <el-button type="danger"
                                        size="mini"
                                        icon="el-icon-delete"
                                        plain
                                        @click="handleDelete">删除
                             </el-button> -->
-              <el-button
-                type="success"
-                size="small"
-                plain
-                icon="el-icon-upload2"
-                v-if="permission.trainExam_performance_import"
-                @click="handleImport"
-                >实操成绩导入
-              </el-button>
-            </template>
+        <el-button
+          type="success"
+          size="small"
+          plain
+          icon="el-icon-upload2"
+          v-if="permission.trainExam_performance_import"
+          @click="handleImport"
+          >实操成绩导入
+        </el-button>
+        <el-button
+          type="warning"
+          size="small"
+          plain
+          icon="el-icon-download"
+          v-if="permission.trainExam_performance_export"
+          @click="handleExport"
+          >成绩导出
+        </el-button>
+        <el-button
+          type="primary"
+          size="small"
+          plain
+          v-if="permission.trainExam_performance_paper_apply"
+          icon="el-icon-collection-tag"
+          @click="handleSecurityPaperApply"
+          >证书制证申请
+        </el-button>
+        <el-button
+          type="primary"
+          size="small"
+          plain
+          v-if="permission.trainExam_performance_worker_paper_apply"
+          icon="el-icon-collection-tag"
+          @click="handleWorkerPaperApply"
+          >上岗证制证申请
+        </el-button>
+      </template>
 
-            <template slot-scope="{ type, size, row }" slot="menu">
-                <el-button
-                  icon="el-icon-s-flag"
-                  @click="absent(row)"
-                  :size="size"
-                  :type="type"
-                  >缺考标记</el-button
-                >
-            </template>
-          </avue-crud>
+      <template slot-scope="{ type, size, row }" slot="menu">
+        <el-button
+          style="display: none"
+          icon="el-icon-s-flag"
+          @click="absent(row)"
+          :size="size"
+          :type="type"
+          >缺考标记</el-button
+        >
+        <el-button
+          icon="el-icon-s-promotion"
+          @click="openzhengjian(row)"
+          :disabled="row.qualified != 0"
+          :size="size"
+          :type="type"
+          >查看证件</el-button
+        >
+        <el-button
+          icon="el-icon-edit"
+          @click="modifiedGrades(row)"
+          :size="size"
+          :type="type"
+          >申请修改成绩</el-button
+        >
+        <el-button
+          icon="el-icon-edit"
+          v-if="row.isPaper == 6"
+          @click="securityPaperApply(row)"
+          :size="size"
+          :type="type"
+          >补证申请</el-button
+        >
+      </template>
+    </avue-crud>
 
-          <el-dialog
-            title="实操成绩导入"
-            append-to-body
-            :visible.sync="excelBox"
-            width="555px"
+    <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="申请修改成绩"
+      :visible.sync="gradeBoxVisible"
+      width="width"
+      :modal="true"
+      :modal-append-to-body="true"
+      :append-to-body="true"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :before-close="dialogBeforeClose"
+    >
+      <div>
+        <!-- <el-form
+          ref="gradeForm"
+          :model="gradeForm"
+          :rules="rules"
+          label-width="80px"
+          label-position="left"
+        >
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="考试名称" label-width="108px">
+                <el-input v-model="gradeForm.examName" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="姓名" label-width="108px">
+                <el-input v-model="gradeForm.securityName" disabled></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="身份证号" label-width="108px">
+                <el-input v-model="gradeForm.account" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="准考证号" label-width="108px">
+                <el-input v-model="gradeForm.candidateNo" disabled></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="原理论成绩" label-width="108px">
+                <el-input v-model="gradeForm.theoryGrade" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="修改考试成绩"
+                label-width="108px"
+                prop="editGrades"
+              >
+                <el-input
+                  v-model.number="gradeForm.editGrades"
+                  autocomplete="off"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item label="实操成绩" label-width="108px">
+                <el-input v-model="gradeForm.learnGrade" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="总成绩" label-width="108px">
+                <el-input v-model="gradeForm.allGrade" disabled></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+
+          <el-form-item
+            prop="businessLicense"
+            label="笔试答题图片"
+            label-width="108px"
           >
-            <avue-form
-              :option="excelOption"
-              v-model="excelForm"
-              :upload-after="uploadAfter"
+            <el-upload
+              list-type="picture-card"
+              action=""
+              :show-file-list="true"
+              :file-list="gradeForm.fileList"
+              :limit="limit"
+              :auto-upload="true"
+              :http-request="httpRequest"
             >
-              <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>
-        </div>
-      </el-card>
-    </el-col>
-  </el-row>
+              <i class="el-icon-plus"></i>
+              <div slot="file" slot-scope="{ file }">
+                <img
+                  class="el-upload-list__item-thumbnail"
+                  :src="file.url"
+                  alt=""
+                />
+                <span class="el-upload-list__item-actions">
+                  <span
+                    class="el-upload-list__item-preview"
+                    @click="handlePictureCardPreview(file)"
+                  >
+                    <i class="el-icon-zoom-in"></i>
+                  </span>
+                  <span
+                    v-if="!disabled"
+                    class="el-upload-list__item-delete"
+                    @click="handleRemove(file)"
+                  >
+                    <i class="el-icon-delete"></i>
+                  </span>
+                </span>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                请上传笔试答题图片,只能上传jpg/png文件,最多上传5张图片
+              </div>
+            </el-upload>
+            <el-dialog :visible.sync="dialogVisible" 
+              :modal="true"
+              :modal-append-to-body="true"
+              :append-to-body="true"
+              :close-on-click-modal="false"
+              :close-on-press-escape="false">
+              <img width="100%" :src="dialogImageUrl" alt="">
+            </el-dialog>
+          </el-form-item>
+
+          <el-form-item label="修改理由" label-width="108px">
+            <el-input
+              type="textarea"
+              :rows="3"
+              placeholder="请输入修改理由"
+              resize="none"
+              v-model="gradeForm.editReason"
+            ></el-input>
+          </el-form-item>
+
+          <el-form-item style="text-align: center" label-width="0">
+            <el-button type="primary" @click="uploadGrade('gradeForm')"
+              >确 定</el-button
+            >
+            <el-button @click="gradeBoxVisible = false">取 消</el-button>
+          </el-form-item>
+        </el-form> -->
+        <avue-form
+          ref="form"
+          :option="option"
+          v-model="form"
+          @reset-change="emptytChange"
+          @submit="submit"
+        >
+        </avue-form>
+      </div>
+    </el-dialog>
+
+    <!-- <el-dialog
+      title="打印证件"
+      :visible.sync="dialogVisiblezhengjian"
+      :modal-append-to-body="false"
+    > -->
+    <div class="dialogVisiblezhengjian" v-if="dialogVisiblezhengjian">
+      <baoanz
+        :data="baoanzdata"
+        :close="1"
+        @close="closezhengjian"
+        :closePrint="1"
+      ></baoanz>
+    </div>
+  </basic-container>
 </template>
 
 <script>
-import { getList, update,updateAbsent } from "@/api/examapi/performance";
+import baoanz from "../securityGuard/baoanz.vue";
+import {
+  getList,
+  update,
+  updateAbsent,
+  updateGrade,
+  getNowDate
+} from "@/api/examapi/performance";
 import { mapGetters } from "vuex";
 import { getRoleDetail } from "@/api/system/role";
+import {
+  securityApply,
+  add
+} from "@/api/accreditationRecords/accreditationRecords";
+import Qs from "qs";
+import { getToken } from "@/util/auth";
+import { putFile, removeFile } from "@/api/resource/oss";
 export default {
+  components: {
+    baoanz
+  },
   data() {
     var validatePass = (rule, value, callback) => {
-      console.log(value);
       if (value == undefined || value == "") {
         callback(new Error("请输入实操成绩"));
         return;
@@ -122,10 +367,196 @@
         callback();
       }
     };
+    var validatePass2 = (rule, value, callback) => {
+      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 if (value > 100) {
+        callback(new Error("分数设置请小于100"));
+      } else {
+        callback();
+      }
+    };
 
     return {
+      option: {
+        height: "auto",
+        calcHeight: 30,
+        dialogWidth: 1000,
+        tip: false,
+        searchShow: true,
+        searchMenuSpan: 6,
+        border: true,
+        index: true,
+        stripe: true,
+        viewBtn: false,
+        addBtn: false,
+        editBtn: false,
+        selection: true,
+        excelBtn: false,
+        menuWidth: 230,
+        dialogClickModal: false,
+        column: [
+          {
+            label: "考试名称",
+            prop: "examName",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入考试名称",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "姓名",
+            prop: "securityName",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入姓名",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "身份证号",
+            prop: "account",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: true,
+                message: "请输入身份证号",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "准考证号",
+            prop: "candidateNo",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: false,
+                message: "请输入准考证号",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "原理论成绩",
+            prop: "theoryGrade",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: false,
+                message: "请输入原理论成绩",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "修改考试成绩",
+            prop: "newScore",
+            labelWidth: 110,
+            rules: [
+              {
+                required: true,
+                message: "请输入修改考试成绩",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "实操成绩",
+            prop: "learnGrade",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: false,
+                message: "请输入实操成绩",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "总成绩",
+            prop: "allGrade",
+            labelWidth: 110,
+            disabled: true,
+            rules: [
+              {
+                required: false,
+                message: "请输入总成绩",
+                trigger: "blur"
+              }
+            ]
+          },
+          {
+            label: "笔试答题图片",
+            prop: "url",
+            labelWidth: 110,
+            type: "upload",
+            dataType: "string",
+            span: 24,
+            limit: 5,
+            listType: "picture-card",
+            tip: "只能上传jpg/png文件,最多上传5张",
+            propsHttp: {
+              res: "data",
+              url: "url"
+            },
+            action: "/api/blade-resource/oss/endpoint/put-files"
+          },
+          {
+            label: "修改理由",
+            labelWidth: 110,
+            span: 24,
+            type: "textarea",
+            prop: "editReason"
+          }
+        ]
+      },
+      form: {},
+      limit: 5,
+      dialogImageUrl: "",
+      dialogVisible: false,
+      disabled: false,
+      rules: {
+        editGrades: [
+          { validator: validatePass2, required: true, trigger: "blur" }
+        ]
+      },
+      gradeForm: {
+        id: null,
+        examName: "",
+        securityName: "",
+        account: "",
+        candidateNo: "",
+        theoryGrade: "",
+        learnGrade: "",
+        allGrade: "",
+        editGrades: "",
+        editReason: "",
+        fileList: []
+      },
+      gradeBoxVisible: false,
+      dialogVisiblezhengjian: false,
+      baoanzdata: {},
       obj: {
-        name: "张三",
+        name: "张三"
       },
       excelBox: false,
       questionBankOption: {
@@ -133,16 +564,24 @@
         delBtn: false,
         editBtn: true,
         addBtn: false,
-        selection: false,
         // 导出按钮
-        excelBtn: true,
-        excelBtnText: "成绩导出",
-        viewBtn: true,
+        // excelBtn: true,
+        // excelBtnText: "成绩导出",
+        viewBtn: false,
+        selection: true,
+        reserveSelection: true,
+        selectable: row => {
+          if (row.qualified != "0" || row.isPaper == 6) {
+            return false;
+          } else {
+            return true;
+          }
+        },
         // title: '成绩',
         align: "center",
         height: "auto",
         calcHeight: 80,
-        tip: false,
+        tip: true,
         searchShow: true,
         searchMenuSpan: 4,
         index: true,
@@ -151,17 +590,44 @@
         dialogClickModal: false,
         // 操作栏宽度
         menu: true,
-        menuWidth: 136,
+        menuWidth: 330,
         labelWidth: 120,
+        ...this.$store.state.control.clearOtherBut,
 
         column: [
           {
-            label: "考试名称",
-            prop: "examName",
+            label: "考试时间",
+            prop: "examDate",
+            type: "date",
+            hide: true,
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            width: 140,
+            slot: true,
             search: true,
             searchSpan: 4,
-            slot: true,
-            viewDisplay:true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            viewDisplay: false
+          },
+          {
+            label: "考试时间",
+            prop: "startTime",
+            type: "datetime",
+            format: "yyyy-MM-dd",
+            valueFormat: "yyyy-MM-dd",
+            width: 90,
+            viewDisplay: true,
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
@@ -179,14 +645,45 @@
               {
                 required: true,
                 message: "请输入试卷名称",
-                trigger: "blur",
-              },
+                trigger: "blur"
+              }
             ],
-            width:250,
+            overHidden: true
+          },
+          {
+            label: "姓名",
+            prop: "securityName",
+            search: true,
+            searchSpan: 3,
+            slot: true,
+            viewDisplay: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            viewDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            searchLabelWidth: 50,
+            searchSpan: 3,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请输入试卷名称",
+                trigger: "blur"
+              }
+            ],
+            width: 80
             // overHidden:true,
           },
           {
-            label: "用户名",
+            label: "身份证号",
             prop: "account",
             search: true,
             searchSpan: 4,
@@ -207,14 +704,55 @@
               {
                 required: true,
                 message: "请输入保安姓名",
-                trigger: "blur",
-              },
+                trigger: "blur"
+              }
             ],
-             width:160,
+            width: 140
+          },
+          {
+            label: "准考证号",
+            prop: "candidateNo",
+            search: true,
+            searchSpan: 4,
+            hide: true,
+            slot: true,
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false,
+            rules: [
+              {
+                required: true,
+                message: "请输入保安姓名",
+                trigger: "blur"
+              }
+            ],
+            width: 110
+          },
+          {
+            label: "照片",
+            prop: "avatar",
+            type: "upload",
+            listType: "picture-img",
+            width: 60,
+            editDisabled: false,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false
           },
           {
             label: "所属公司",
             prop: "companyName",
+            sortable: true,
             search: true,
             searchSpan: 4,
             // dicUrl: '/api/blade-system/dept/tree',
@@ -239,10 +777,11 @@
               {
                 required: true,
                 message: "请输入所属公司",
-                trigger: "blur",
-              },
+                trigger: "blur"
+              }
             ],
-            width:230,
+            width: 180,
+            overHidden: true
           },
           {
             label: "考试开始时间",
@@ -251,7 +790,7 @@
             // span: 24,
             format: "yyyy-MM-dd HH:mm:ss",
             valueFormat: "yyyy-MM-dd HH:mm:ss",
-            width: 160,
+            width: 140,
             slot: true,
             // 表单新增时是否禁止
             addDisabled: false,
@@ -264,7 +803,7 @@
             // 表单编辑时是否可见
             editDisplay: true,
             // 表单编辑时是否为查看模式
-            editDetail: false,
+            editDetail: false
           },
           {
             label: "考试结束时间",
@@ -273,7 +812,7 @@
             // span: 24,
             format: "yyyy-MM-dd HH:mm:ss",
             valueFormat: "yyyy-MM-dd HH:mm:ss",
-            width: 160,
+            width: 140,
             slot: true,
             // 表单新增时是否禁止
             addDisabled: false,
@@ -286,24 +825,33 @@
             // 表单编辑时是否可见
             editDisplay: true,
             // 表单编辑时是否为查看模式
-            editDetail: false,
+            editDetail: false
           },
           {
-            label: "状态",
+            label: "考试状态",
             prop: "isExam",
             type: "select",
             slot: true,
             search: true,
-            searchSpan: 4,
+            searchSpan: 3,
+            width: 80,
             dicData: [
               {
                 label: "发布成绩",
-                value: 2,
+                value: 2
               },
               {
                 label: "考试中",
-                value: 3,
+                value: 3
               },
+              {
+                label: "纸质考试",
+                value: 5
+              },
+              {
+                label: "缺考",
+                value: 4
+              }
             ],
             // 表单新增时是否禁止
             addDisabled: false,
@@ -321,14 +869,15 @@
               {
                 required: true,
                 message: "请输入考试名称",
-                trigger: "blur",
-              },
-            ],
+                trigger: "blur"
+              }
+            ]
           },
           {
             label: "理论成绩",
             prop: "theoryGrade",
             slot: true,
+            sortable: true,
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
@@ -341,11 +890,13 @@
             editDisplay: true,
             // 表单编辑时是否为查看模式
             editDetail: false,
+            width: 95
           },
           {
             label: "实操成绩",
             prop: "learnGrade",
             slot: true,
+            sortable: true,
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
@@ -358,57 +909,16 @@
             editDisplay: true,
             // 表单编辑时是否为查看模式
             editDetail: false,
+            width: 95,
             rules: [
-              { validator: validatePass, required: true, trigger: "blur" },
-            ],
+              { validator: validatePass, required: true, trigger: "blur" }
+            ]
           },
           {
-              label: "总成绩",
-              prop: "allGrade",
-              slot: true,
-              // 表单新增时是否禁止
-              addDisabled: false,
-              // 表单新增时是否可见
-              addDisplay: true,
-              // 表单新增时是否为查看模式
-              addDetail: false,
-              // 表单编辑时是否禁止
-              editDisabled: true,
-              // 表单编辑时是否可见
-              editDisplay: true,
-              // 表单编辑时是否为查看模式
-              editDetail: false,
-              rules: [{
-                  required: true,
-                  message: "请输入考试名称",
-                  trigger: "blur"
-              }]
-          },
-          {
-            label: "是否合格",
-            prop: "qualified",
-            type: "select",
+            label: "总成绩",
+            prop: "allGrade",
             slot: true,
-            search: true,
-            searchSpan: 4,
-            dicData: [
-              {
-                label: "合格",
-                value: 0,
-              },
-              {
-                label: "不合格",
-                value: 1,
-              },
-              {
-                label: "暂未录实操成绩",
-                value: 2,
-              },
-              {
-                label: "缺考,成绩无效",
-                value: 3,
-              },
-            ],
+            sortable: true,
             // 表单新增时是否禁止
             addDisabled: false,
             // 表单新增时是否可见
@@ -421,23 +931,153 @@
             editDisplay: true,
             // 表单编辑时是否为查看模式
             editDetail: false,
-            rules: [
-              {
-                required: true,
-                message: "请输入考试名称",
-                trigger: "blur",
-              },
-            ],
+            width: 80
           },
-        ],
+          {
+            label: "是否合格",
+            prop: "qualified",
+            type: "select",
+            slot: true,
+            hide: true,
+            search: true,
+            searchSpan: 4,
+            width: 90,
+            dicData: [
+              {
+                label: "合格",
+                value: 0
+              },
+              {
+                label: "不合格",
+                value: 1
+              },
+              {
+                label: "暂未录实操成绩",
+                value: 2
+              },
+              {
+                label: "缺考,成绩无效",
+                value: 3
+              }
+            ],
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: true,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: false,
+            viewDetail: false,
+            viewDisplay: false,
+            // 表单编辑时是否为查看模式
+            editDetail: false
+          },
+          {
+            label: "是否合格",
+            prop: "qualifieds",
+            type: "select",
+            sortable: true,
+            searchSpan: 3,
+            width: 100,
+            dicData: [
+              {
+                label: "合格",
+                value: 0
+              },
+              {
+                label: "不合格",
+                value: 1
+              },
+              {
+                label: "暂未录实操成绩",
+                value: 2
+              },
+              {
+                label: "缺考,成绩无效",
+                value: 3
+              }
+            ],
+            // 表单新增时是否禁止
+            addDisabled: false,
+            // 表单新增时是否可见
+            addDisplay: false,
+            // 表单新增时是否为查看模式
+            addDetail: false,
+            // 表单编辑时是否禁止
+            editDisabled: true,
+            // 表单编辑时是否可见
+            editDisplay: true,
+            // 表单编辑时是否为查看模式
+            editDetail: false
+          },
+          {
+            label: "是否制证",
+            prop: "isPaper",
+            type: "select",
+            search: true,
+            width: 70,
+            searchSpan: 3,
+            addDisplay: false,
+            editDisplay: false,
+            // hide: true,
+            display: false,
+            dicData: [
+              {
+                label: "全部",
+                value: 10
+              },
+              {
+                label: "已制证",
+                value: 6
+              },
+              {
+                label: "未制证",
+                value: 7
+              }
+            ]
+          },
+          {
+            label: "有无照片",
+            prop: "isAvatar",
+            type: "select",
+            search: true,
+            searchLabelWidth: 90,
+            minWidth: 105,
+            searchSpan: 3,
+            addDisplay: false,
+            editDisplay: false,
+            hide: true,
+            display: false,
+            dicData: [
+              {
+                label: "全部",
+                value: 3
+              },
+              {
+                label: "有",
+                value: 1
+              },
+              {
+                label: "无",
+                value: 2
+              }
+            ]
+          }
+        ]
       },
       questionBankSearch: {},
       questionBankLoading: true,
       questionBankData: [],
+      sort: "",
+      sortName: "",
       questionBankPage: {
         pageSize: 10,
         currentPage: 1,
         total: 16,
+        ...this.$store.state.control.changePageSize
       },
       questionBankQuery: {},
       questionBankSelectionList: [],
@@ -454,10 +1094,10 @@
             loadText: "模板上传中,请稍等",
             span: 24,
             propsHttp: {
-              res: "data",
+              res: "data"
             },
             tip: "请上传 .xls,.xlsx 标准格式文件",
-            action: "/api/examScore/import-examScore",
+            action: "/api/examScore/import-examScore"
           },
           // {
           //     label: "数据覆盖",
@@ -489,95 +1129,437 @@
             label: "模板下载",
             prop: "excelTemplate",
             formslot: true,
-            span: 24,
-          },
-        ],
+            span: 24
+          }
+        ]
       },
+      choiceList: []
     };
   },
   created() {},
-  mounted() {},
-  computed:{
+  mounted() {
+    this.$store.commit("setWindowSizeHeightAdd");
+  },
+  computed: {
     ...mapGetters(["userInfo", "permission"]),
     permissionList() {
       return {
         addBtn: this.vaildData(null, false),
-        viewBtn: this.vaildData(this.permission.trainExam_performance_view, false),
+        viewBtn: this.vaildData(
+          this.permission.trainExam_performance_view,
+          false
+        ),
         delBtn: this.vaildData(null, false),
-        editBtn: this.vaildData(this.permission.trainExam_performance_edit, false),
-        excelBtn: this.vaildData(this.permission.trainExam_performance_export, false),
+        editBtn: this.vaildData(
+          this.permission.trainExam_performance_edit,
+          false
+        ),
+        excelBtn: this.vaildData(
+          this.permission.trainExam_performance_export,
+          false
+        )
       };
-    },
+    }
   },
   methods: {
+    //提交考试成绩修改申请
+    submit(row, done, loading) {
+      var that = this;
+      row["createUser"] = this.userInfo.Id;
+      // console.log(row,1234660);
+      updateGrade(row).then(
+        () => {
+          that.$refs.form.resetFields();
+          that.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          that.gradeBoxVisible = false;
+
+          done();
+        },
+        error => {
+          window.console.log(error);
+          done();
+        }
+      );
+    },
+    //自定义上传
+    httpRequest(opt) {
+      var that = this;
+      const file = opt.file;
+      // 根据后台需求数据格式
+      const form = new FormData();
+      // 文件对象
+      form.append("file", file);
+      putFile(form).then(res => {
+        that.gradeForm.fileList.push({
+          name: res.data.data.name,
+          url: res.data.data.url
+        });
+        console.log(that.gradeForm.fileList, 365441);
+      });
+      console.log(that.gradeForm.fileList, 11122222);
+    },
+    //图片展示
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = true;
+    },
+    //图片删除
+    handleRemove(file) {
+      var index = [];
+      //遍历图片集合,获取下标
+      this.gradeForm.fileList.forEach(function(img, i) {
+        if (img.name == file.name) {
+          index.push(i);
+          //存储对象中删除
+          removeFile(img.name);
+        }
+      });
+      // console.log(index,222333);
+      //删除
+      for (var i = 0; i < index.length; i++) {
+        this.gradeForm.fileList.splice(index[i] - i, 1);
+      }
+    },
+    selectionChange(list) {
+      // this.selectionList = list;
+      this.choiceList = [];
+      for (let k in list) {
+        this.choiceList.push({
+          id: list[k].userId
+        });
+      }
+    },
+    //证书制证申请
+    handleSecurityPaperApply() {
+      if (this.choiceList.length === 0) {
+        this.$message.warning("请勾选至少一位持证保安员");
+        return;
+      }
+      this.$confirm(
+        "共选择制证申请人数" + this.choiceList.length + "人,确定申请制证?",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }
+      )
+        .then(() => {
+          let cho = this.choiceList;
+          let str = "";
+          for (let k in cho) {
+            str += cho[k].id;
+            if (k != cho.length - 1) {
+              str += ",";
+            }
+          }
+          const data = {
+            ids: str,
+            createUser: this.userInfo.user_id,
+            type: 2
+          };
+          return securityApply(data);
+        })
+        .then(() => {
+          this.$refs.questionBankCrud.toggleSelection();
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        });
+    },
+    //上岗证制证申请
+    handleWorkerPaperApply() {
+      if (this.choiceList.length === 0) {
+        this.$message.warning("请勾选至少一位持证保安员");
+        return;
+      }
+      this.$confirm(
+        "共选择上岗证制证申请人数" +
+          this.choiceList.length +
+          "人,确定申请制证?",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }
+      )
+        .then(() => {
+          let cho = this.choiceList;
+          let str = "";
+          for (let k in cho) {
+            str += cho[k].id;
+            if (k != cho.length - 1) {
+              str += ",";
+            }
+          }
+          const data = {
+            ids: str,
+            createUser: this.userInfo.user_id,
+            type: 1
+          };
+          return securityApply(data);
+        })
+        .then(() => {
+          this.$refs.questionBankCrud.toggleSelection();
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+        });
+    },
+    openzhengjian(row) {
+      this.baoanzdata = {
+        realName: row.securityName,
+        $sex: row.sex == 1 ? "男" : "女",
+        securitynumber: row.securityNumber,
+        paperTime: row.paperTime,
+        avatar: row.avatar
+      };
+      this.dialogVisiblezhengjian = true;
+    },
+    //关闭dialog
+    dialogBeforeClose(done) {
+      this.gradeForm.fileList = [];
+      done();
+    },
+    closezhengjian() {
+      this.dialogVisiblezhengjian = false;
+    },
+    //排序
+    sortChange(value) {
+      if (value.order == "ascending") {
+        this.sort = "asc";
+      }
+      if (value.order == "descending") {
+        this.sort = "desc";
+      }
+      this.sortName = value.prop;
+      //字段匹配
+      if (value.prop == "theoryGrade") {
+        this.sortName = "theory_grade";
+      }
+      if (value.prop == "learnGrade") {
+        this.sortName = "learn_grade";
+      }
+      if (value.prop == "allGrade") {
+        this.sortName = "all_grade";
+      }
+      if (value.prop == "qualifieds") {
+        this.sortName = "qualified";
+      }
+      if (value.prop == "companyName") {
+        this.sortName = "companyName";
+      }
+      this.questionBankOnLoad(this.questionBankPage);
+    },
     questionBankOnLoad(page, params = {}) {
       //判断角色,如果是保安公司管理员或保安,只能查看当前公司的考试成绩
       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;
-            }
-            if (
-              roleAlias == "培训公司管理员"
-            ) {
-              //如果是培训公司管理员
-              params["trainUnitId"] = that.userInfo.dept_id;
-            }
-            that.questionBankLoading = false;
-            params["examType"] = 2;
-            getList(
-              page.currentPage,
-              page.pageSize,
-              Object.assign(params, this.query)
-            ).then((res) => {
-              const data = res.data.data;
-              that.questionBankPage.total = data.total;
-              that.questionBankData = data.records;
-              that.questionBankLoading = false;
-              that.questionBankSelectionClear();
+      roleIds.forEach(roleId => {
+        getRoleDetail(roleId).then(res => {
+          var roleAlias = res.data.data.roleAlias;
+          if (roleAlias == "保安公司管理员" || roleAlias == "保安") {
+            //如果是保安公司管理员
+            params["deptId"] = that.userInfo.dept_id;
+          }
+          if (roleAlias == "培训公司管理员") {
+            //如果是培训公司管理员
+            params["trainUnitId"] = that.userInfo.dept_id;
+          }
+          that.questionBankLoading = false;
+          params["examType"] = 2;
+          if (this.sort) {
+            params["sort"] = this.sort;
+          }
+          if (this.sortName) {
+            params["sortName"] = this.sortName;
+          }
+          getList(
+            page.currentPage,
+            page.pageSize,
+            Object.assign(params, this.questionBankQuery)
+          ).then(res => {
+            const data = res.data.data;
+
+            data.records.forEach(item => {
+              if (item.isPaper == null || item.isPaper == -1) {
+                item.isPaper = "";
+              }
+              if (item.theoryGrade == null && item.learnGrade == -1) {
+                item.qualified = "";
+              }
+              item.theoryGrade == null
+                ? (item.theoryGrade = "")
+                : item.theoryGrade;
+              item.learnGrade == -1 ? (item.learnGrade = "") : item.learnGrade;
             });
-        })
+            for (let k in data.records) {
+              data.records[k]["qualifieds"] =
+                data.records[k]["qualified"] == -1
+                  ? ""
+                  : data.records[k]["qualified"];
+            }
+            that.questionBankPage.total = data.total;
+            that.questionBankData = data.records;
+            that.questionBankLoading = false;
+            that.$store.commit("setWindowSizeHeightAdd");
+            that.questionBankSelectionClear();
+          });
+        });
       });
-      
     },
-    //缺考标记
-    absent(row, done, loading) {
-      this.$confirm("确定缺考标记?", {
+    //补证申请
+    securityPaperApply(row, done, loading) {
+      this.$confirm("当前保安员已制证,确定要继续申请制证?", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning",
+        type: "warning"
       }).then(() => {
-        row.qualified = 3;
-        updateAbsent(row).then(
+        const data = {
+          createUser: this.userInfo.user_id,
+          type: 2,
+          userId: row.userId
+        };
+        add(data).then(
           () => {
-            this.onLoad(this.page);
+            this.questionBankOnLoad(this.questionBankPage);
             this.$message({
               type: "success",
-              message: "操作成功!",
+              message: "操作成功!"
             });
             done();
           },
-          (error) => {
+          error => {
             window.console.log(error);
             loading();
           }
         );
       });
     },
+    //缺考标记
+    absent(row, done, loading) {
+      this.$confirm("确定缺考标记?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        row.qualified = 3;
+        updateAbsent(row).then(
+          () => {
+            this.questionBankOnLoad(this.questionBankPage);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            done();
+          },
+          error => {
+            window.console.log(error);
+            loading();
+          }
+        );
+      });
+    },
+
+    // 修改考试成绩
+    modifiedGrades(row) {
+      var that = this;
+      //判断时间,获取系统时间,减去考试结束时间,小于24小时则可以申请,超过则提示无法申请
+      var endTime = row.endTime;
+      //必须把日期'-'转为'/'
+      endTime = endTime.replace(/-/g, "/");
+      //得到时间戳
+      var longtime = new Date(endTime).getTime();
+      // console.log(longtime,123466);
+      getNowDate().then(res => {
+        var num = 24 * 3600 * 1000;
+        if (this.userInfo.role_name == "培训公司管理员") {
+          // if (res.data.data - longtime <= num) {
+            this.form = {
+              id: null,
+              examScoreId: row.id,
+              examName: row.examName,
+              candidateNo: row.candidateNo,
+              account: row.account,
+              securityName: row.securityName,
+              theoryGrade: row.theoryGrade,
+              learnGrade: row.learnGrade,
+              allGrade: row.allGrade
+            };
+            this.gradeBoxVisible = true;
+          // } else {
+          //   //提示
+          //   that.$message({
+          //     type: "warning",
+          //     message: "成绩修改申请只能在考试截止时间后的24小内提交!"
+          //   });
+          // }
+        } else {
+          this.form = {
+            id: null,
+            examScoreId: row.id,
+            examName: row.examName,
+            candidateNo: row.candidateNo,
+            account: row.account,
+            securityName: row.securityName,
+            theoryGrade: row.theoryGrade,
+            learnGrade: row.learnGrade,
+            allGrade: row.allGrade
+          };
+          this.gradeBoxVisible = true;
+        }
+      });
+    },
+
+    uploadGrade(formName) {
+      var that = this;
+
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          var obj = {};
+          obj.oldScore = this.gradeForm.theoryGrade;
+          obj.newScore = this.gradeForm.editGrades;
+          obj.applyCause = this.gradeForm.editReason;
+          obj.examScoreId = this.gradeForm.id;
+          obj.createUser = this.userInfo.Id;
+
+          updateGrade(obj).then(
+            () => {
+              that.questionBankOnLoad(that.questionBankPage);
+              that.$message({
+                type: "success",
+                message: "操作成功!"
+              });
+
+              that.gradeBoxVisible = false;
+            },
+            error => {
+              window.console.log(error);
+            }
+          );
+        }
+      });
+    },
+
     questionBankSelectionClear() {
       this.questionBankSelectionList = [];
-      this.$refs.questionBankCrud.toggleSelection();
+      this.sort = "";
+      this.sortName = "";
+      // this.$refs.questionBankCrud.toggleSelection();
     },
     questionBankSelectionChange(list) {
-      this.questionBankSelectionList = list;
+      // this.questionBankSelectionList = list;
+      this.choiceList = [];
+      for (let k in list) {
+        this.choiceList.push({
+          id: list[k].userId
+        });
+      }
     },
     questionBankSearchChange(params, done) {
       this.questionBankQuery = params;
@@ -600,25 +1582,29 @@
       update({
         theoryGrade: row.theoryGrade,
         learnGrade: row.learnGrade,
-        examId:row.examId,
-        id: row.id,
+        examId: row.examId,
+        id: row.id
       }).then(
         () => {
           this.questionBankOnLoad(this.questionBankPage);
           this.$message({
             type: "success",
-            message: "操作成功!",
+            message: "操作成功!"
           });
           done();
         },
-        (error) => {
+        error => {
           window.console.log(error);
           loading();
         }
       );
     },
     handleTemplate() {
-      window.open(`/api/examScore/export-template`);
+      window.open(
+        `/api/examScore/export-template?${
+          this.website.tokenHeader
+        }=${getToken()}&`
+      );
     },
     handleImport() {
       this.excelBox = true;
@@ -626,15 +1612,72 @@
     uploadAfter(res, done, loading, column) {
       window.console.log(column);
       this.excelBox = false;
+      // this.$message({
+      //   type: "success",
+      //   message: "操作成功!",
+      // });
       this.refreshChange();
       done();
     },
     refreshChange() {
-      this.questionBankOnLoad(this.page, this.query);
+      this.questionBankOnLoad(this.questionBankPage, this.questionBankQuery);
     },
-  },
+    //成绩导出
+    handleExport() {
+      this.$confirm("是否导出成绩数据?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        //获取查询条件
+        // console.log(this.questionBankSearch, 456);
+        var data = {
+          account: this.questionBankSearch.account,
+          companyName: this.questionBankSearch.companyName,
+          examDate: this.questionBankSearch.examDate,
+          isExam: this.questionBankSearch.isExam,
+          qualified: this.questionBankSearch.qualified,
+          securityName: this.questionBankSearch.securityName,
+          examName: this.questionBankSearch.examName,
+          isAvatar: this.questionBankSearch.isAvatar,
+          isPaper: this.questionBankSearch.isPaper
+        };
+        //导出
+        if (
+          this.userInfo.role_name == "保安公司管理员" ||
+          this.userInfo.role_name == "保安"
+        ) {
+          //如果是保安公司管理员
+          data["deptId"] = this.userInfo.dept_id;
+        }
+        if (this.userInfo.role_name == "培训公司管理员") {
+          //如果是培训公司管理员
+          data["trainUnitId"] = this.userInfo.dept_id;
+        }
+        data["examType"] = 2;
+        // console.log(data,11225111);
+        //序列号url形式,用&拼接
+        data = Qs.stringify(data);
+        window.open(
+          `/api/examScore/export-examScore?${
+            this.website.tokenHeader
+          }=${getToken()}&` + data
+        );
+      });
+    }
+  }
 };
 </script>
 
 <style lang="scss" scoped>
+.morpheus-box {
+  position: relative;
+}
+.dialogVisiblezhengjian {
+  position: absolute;
+  background-color: #fff;
+  width: 100%;
+  height: 100%;
+  z-index: 10000 !important;
+}
 </style>

--
Gitblit v1.9.3