保安服务企业管理项目备份
zhongrj
2023-11-06 1cde4a2b16b7067f551393c3e712b101694d411f
重置考试按钮
4 files modified
939 ■■■■■ changed files
src/api/examapi/performance.js 10 ●●●●● patch | view | raw | blame | history
src/api/trainExam/trainExam.js 3 ●●●● patch | view | raw | blame | history
src/views/flow/model.vue 431 ●●●●● patch | view | raw | blame | history
src/views/trainExam/performance.vue 495 ●●●●● patch | view | raw | blame | history
src/api/examapi/performance.js
@@ -52,4 +52,14 @@
        method: 'get',
        params: {}
    })
}
export const reselfExamScore = (scoreId) => {
    return request({
        url: '/api/examScore/refreshTrainExamInfo',
        method: 'post',
        data: {
            scoreId
        }
    })
}
src/api/trainExam/trainExam.js
@@ -70,4 +70,5 @@
            id,
        }
    })
}
}
src/views/flow/model.vue
@@ -1,119 +1,138 @@
<template>
  <basic-container>
    <avue-crud :option="option"
               :table-loading="loading"
               :data="data"
               ref="crud"
               v-model="form"
               :page.sync="page"
               @search-change="searchChange"
               @search-reset="searchReset"
               @selection-change="selectionChange"
               @current-change="currentChange"
               @size-change="sizeChange"
               @refresh-change="refreshChange"
               @on-load="onLoad">
  <basic-container
    :class="[$store.state.control.windowWidth >= 1024 ? 'oneRowSearch' : '']"
  >
    <avue-crud
      :option="option"
      :table-loading="loading"
      :data="data"
      ref="crud"
      v-model="form"
      :page.sync="page"
      @search-change="searchChange"
      @search-reset="searchReset"
      @selection-change="selectionChange"
      @current-change="currentChange"
      @size-change="sizeChange"
      @refresh-change="refreshChange"
      @on-load="onLoad"
    >
      <template slot="menuLeft">
        <el-button type="primary"
                   size="mini"
                   icon="el-icon-circle-plus"
                   v-if="permission.flow_model_create"
                   plain
                   @click="handleCreate">创 建
        <el-button
          type="primary"
          size="small"
          icon="el-icon-circle-plus"
          v-if="permission.flow_model_create"
          plain
          @click="handleCreate"
          >创 建
        </el-button>
        <el-button
                   size="mini"
                   icon="el-icon-delete"
                   v-if="permission.flow_model_delete"
                   plain
                   @click="handleDelete">删 除
          type="danger"
          size="small"
          icon="el-icon-delete"
          v-if="permission.flow_model_delete"
          plain
          @click="handleDelete"
          >删 除
        </el-button>
      </template>
      <template slot-scope="scope"
                slot="menu">
        <el-button type="text"
                   size="mini"
                   icon="el-icon-setting"
                   v-if="permission.flow_model_update"
                   @click.stop="handleUpdate(scope.row,scope.index)">配置
      <template slot-scope="scope" slot="menu">
        <el-button
          type="text"
          size="small"
          v-if="permission.flow_model_update"
          plain
          class="none-border"
          @click.stop="handleUpdate(scope.row, scope.index)"
          >配置
        </el-button>
        <el-button type="text"
                   size="mini"
                   icon="el-icon-upload2"
                   v-if="permission.flow_model_deploy"
                   @click.stop="handleDeploy(scope.row,scope.index)">部署
        <el-button
          type="text"
          size="small"
          v-if="permission.flow_model_deploy"
          plain
          class="none-border"
          @click.stop="handleDeploy(scope.row, scope.index)"
          >部署
        </el-button>
        <el-button type="text"
                   size="mini"
                   icon="el-icon-delete"
                   v-if="permission.flow_model_delete"
                   @click.stop="handleSlotDelete(scope.row,scope.index)">删除
        <el-button
          type="text"
          size="small"
          v-if="permission.flow_model_download"
          plain
          class="none-border"
          @click.stop="handleDownload(scope.row, scope.index)"
          >下载
        </el-button>
        <el-button
          type="text"
          size="small"
          v-if="permission.flow_model_delete"
          plain
          class="none-border"
          @click.stop="handleSlotDelete(scope.row, scope.index)"
          >删除
        </el-button>
      </template>
      <template slot-scope="{row}"
                slot="version">
      <template slot-scope="{ row }" slot="version">
        <el-tag>v{{ row.version }}</el-tag>
      </template>
    </avue-crud>
    <el-dialog title="流程配置"
               append-to-body
               destroy-on-close
               :visible.sync="flowBox"
               :close-on-press-escape="false"
               :fullscreen="true"
               :before-close="handleNutflowClose"
               custom-class="wf-dialog">
      <wf-design-base v-if="nutflowOption.step === 1"
                      class="animated fadeIn"
                      style="height: calc(100vh - 108px);"
                      ref="wf-design"
                      :options="nutflowOption.step1"></wf-design-base>
      <wf-design-base v-if="nutflowOption.step === 2"
                      class="animated fadeIn"
                      style="height: calc(100vh - 108px);"
                      ref="wf-design-view"
                      :options="nutflowOption.step2"></wf-design-base>
      <span slot="footer"
            class="avue-dialog__footer">
        <el-button size="small"
                   @click="handleNutflowClose(() => {}, true)">取 消</el-button>
        <el-button v-if="nutflowOption.step === 1"
                   size="small"
                   @click="handleStep(1)">下 一 步</el-button>
        <el-button v-if="nutflowOption.step === 2"
                   size="small"
                   @click="handleStep(-1)">上 一 步</el-button>
        <el-button v-if="nutflowOption.step === 2"
                   size="small"
                   type="primary"
                   @click="handleSubmitModel">确 定</el-button>
    <el-dialog
      title="流程配置"
      append-to-body
      :visible.sync="flowBox"
      :fullscreen="true"
    >
      <iframe
        :src="flowUrl"
        width="100%"
        height="700"
        title="流程设计器"
        frameBorder="no"
        border="0"
        marginWidth="0"
        marginHeight="0"
        scrolling="no"
        allowTransparency="yes"
      >
      </iframe>
      <span slot="footer" class="dialog-footer">
        <el-button @click="flowBox = false">取 消</el-button>
        <el-button type="primary" @click="handleRefresh">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="流程部署"
               append-to-body
               :visible.sync="deployBox"
               width="20%">
      <avue-form ref="form"
                 :option="optionDeploy"
                 v-model="form"
                 @submit="handleSubmit"/>
      <span slot="footer"
            class="dialog-footer">
    <el-dialog
      title="流程部署"
      append-to-body
      :visible.sync="deployBox"
      width="20%"
    >
      <avue-form
        ref="form"
        :option="optionDeploy"
        v-model="form"
        @submit="handleSubmit"
      />
      <span slot="footer" class="dialog-footer">
        <el-button @click="deployBox = false">取 消</el-button>
        <el-button type="primary"
                   @click="handleDoDeploy"
                   :loading="deployLoading">确 定</el-button>
        <el-button
          type="primary"
          @click="handleDoDeploy"
          :loading="deployLoading"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </basic-container>
</template>
<script>
import {mapGetters} from "vuex";
import {modelList, removeModel, deployModel, submitModel, detail} from "@/api/flow/flow";
import {flowCategory} from "@/util/flow";
import { mapGetters } from "vuex";
import website from "@/config/website";
import { modelList, removeModel, deployModel } from "@/api/flow/flow";
import { flowCategory } from "@/util/flow";
export default {
  data() {
@@ -128,18 +147,20 @@
            dicUrl: "/api/blade-system/dict/dictionary?code=flow",
            props: {
              label: "dictValue",
              value: "dictKey"
              value: "dictKey",
            },
            dataType: "number",
            slot: true,
            prop: "categoryValue",
            search: true,
            span: 24,
            rules: [{
              required: true,
              message: "请选择流程类型",
              trigger: "blur"
            }]
            rules: [
              {
                required: true,
                message: "请选择流程类型",
                trigger: "blur",
              },
            ],
          },
          {
            label: "流程模式",
@@ -148,46 +169,46 @@
            dicData: [
              {
                label: "通用流程",
                value: 1
                value: 1,
              },
              {
                label: "定制流程",
                value: 2
              }
                value: 2,
              },
            ],
            value: 1,
            span: 24,
            rules: [
              {
                required: true,
                message: '请选择流程模式',
                trigger: 'blur'
              }
                message: "请选择流程模式",
                trigger: "blur",
              },
            ],
          },
          {
            label: "所属租户",
            label: "所属保安单位",
            prop: "tenantId",
            type: "tree",
            multiple: true,
            dicUrl: "/api/blade-system/tenant/select",
            props: {
              label: "tenantName",
              value: "tenantId"
              value: "tenantId",
            },
            display: false,
            span: 24,
            rules: [
              {
                required: true,
                message: '请选择所属租户',
                trigger: 'blur'
              }
                message: "请选择所属保安单位",
                trigger: "blur",
              },
            ],
          },
        ],
      },
      selectionId: '',
      selectionId: "",
      selectionList: [],
      query: {},
      loading: true,
@@ -195,12 +216,14 @@
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      deployBox: false,
      flowBox: false,
      flowUrl: "",
      option: {
        height: 'auto',
        height: "auto",
        calcHeight: 30,
        tip: false,
        searchShow: true,
@@ -213,150 +236,79 @@
        viewBtn: false,
        delBtn: false,
        dialogWidth: 900,
        menuWidth: 250,
        menuWidth: 150,
        dialogClickModal: false,
        size: 'mini',
        searchSize: 'mini',
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: '模型主键',
            prop: 'id',
            label: "模型主键",
            prop: "id",
          },
          {
            label: '模型标识',
            prop: 'modelKey',
            label: "模型标识",
            prop: "modelKey",
            search: true,
            overHidden: true
            width: 150,
          },
          {
            label: '模型名称',
            prop: 'name',
            label: "模型名称",
            prop: "name",
            search: true,
            overHidden: true
            width: 150,
          },
          {
            label: '流程版本',
            prop: 'version',
            label: "流程版本",
            prop: "version",
            slot: true,
            overHidden: true
            width: 80,
          },
          {
            label: '创建时间',
            prop: 'created',
            overHidden: true
            label: "创建时间",
            prop: "created",
            width: 165,
          },
          {
            label: '更新时间',
            prop: 'lastUpdated',
            overHidden: true
            label: "更新时间",
            prop: "lastUpdated",
            width: 165,
          },
        ]
        ],
      },
      data: [],
      nutflowOption: {
        process: {},
        step: 1,
        step1: {
          toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'],
        },
        step2: {
          mode: 'view',
          simulation: true,
          minimap: true,
        }
      }
    };
  },
  watch: {
    'form.flowMode'() {
      this.$refs.form.option.column.filter(item => {
    "form.flowMode"() {
      this.$refs.form.option.column.filter((item) => {
        if (item.prop === "tenantId") {
          item.display = this.form.flowMode === 2;
        }
      });
    }
    },
  },
  computed: {
    ...mapGetters(["permission"]),
    ids() {
      let ids = [];
      this.selectionList.forEach(ele => {
      this.selectionList.forEach((ele) => {
        ids.push(ele.id);
      });
      return ids.join(",");
    }
  },
  created(){
      console.log(this.nutflowOption,454545445545)
    },
  },
  methods: {
    handleSubmitModel() {
      const registry = this.$refs['wf-design-view'].getElementRegistry().getAll()
      const {businessObject} = registry[0]
      const {id, name, documentation} = businessObject
      const description = (documentation && documentation.length > 0) ? documentation[0].text : null
      const params = {
        ...this.nutflowOption.process,
        modelKey: id,
        name,
        description,
        modelEditorXml: this.nutflowOption.process.xml
      }
      submitModel(params).then(() => {
        this.$message.success("操作成功")
        this.handleNutflowClose()
        this.onLoad(this.page, this.query)
      })
    },
    handleStep(step) {
      if (step === 1) { // 下一步
        this.$refs['wf-design'].getData('xml').then(data => {
          this.$set(this.nutflowOption.step1, 'xml', data)
          this.$set(this.nutflowOption.step2, 'xml', data)
          this.$set(this.nutflowOption.process, 'xml', data)
          this.$set(this.nutflowOption, 'step', 2)
        })
      } else this.$set(this.nutflowOption, 'step', 1)
    },
    handleNutflowClose(done, flag) {
      const initOption = {
        process: {},
        step: 1,
        step1: {
          toolbar: ['open', 'create', 'fit', 'zoom-in', 'zoom-out', 'undo', 'redo', 'import', 'preview'],
        },
        step2: {
          mode: 'view',
          simulation: true,
          minimap: true,
        }
      }
      if (done || flag) {
        this.$confirm('确定要关闭吗?关闭未保存的修改都会丢失。', '警告', {
          type: 'warning'
        }).then(() => {
          this.$set(this, 'nutflowOption', initOption)
          if (typeof done == 'function') done()
          this.flowBox = false
        }).catch(() => {
        })
      } else {
        this.$set(this, 'nutflowOption', initOption)
        this.flowBox = false
      }
    },
    handleSubmit(form, done) {
      this.deployLoading = true;
      deployModel({
        modelId: this.selectionId,
        category: flowCategory(form.categoryValue),
        tenantIds: form.tenantId.join(",")
      }).then(res => {
        tenantIds: form.tenantId.join(","),
      }).then((res) => {
        const data = res.data;
        if (data.success) {
          this.$message({
            type: "success",
            message: data.msg
            message: data.msg,
          });
          done();
          this.$refs.form.resetForm();
@@ -367,10 +319,10 @@
          this.deployLoading = false;
          this.$message({
            type: "warn",
            message: data.msg
            message: data.msg,
          });
        }
      })
      });
    },
    searchReset() {
      this.query = {};
@@ -397,7 +349,7 @@
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return removeModel(this.ids);
@@ -405,23 +357,19 @@
        .then(() => {
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
          this.onLoad(this.page);
        });
    },
    handleCreate() {
      this.flowUrl = `${website.flowDesignUrl}/index.html`;
      this.flowBox = true;
    },
    handleUpdate(row) {
      detail({id: row.id}).then(res => {
        const data = res.data.data
        const {modelEditorXml} = data
        this.$set(this.nutflowOption.step1, 'xml', modelEditorXml)
        this.$set(this.nutflowOption, 'process', data)
        this.flowBox = true;
      })
      this.flowUrl = `${website.flowDesignUrl}/index.html#/editor/${row.id}`;
      this.flowBox = true;
    },
    handleDeploy(row) {
      this.deployBox = true;
@@ -430,11 +378,14 @@
    handleDoDeploy() {
      this.$refs.form.submit();
    },
    handleDownload(row) {
      window.open(`${website.flowDesignUrl}/app/rest/models/${row.id}/bpmn20`);
    },
    handleSlotDelete(row) {
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return removeModel(row.id);
@@ -442,11 +393,15 @@
        .then(() => {
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
          this.onLoad(this.page);
        });
    },
    handleRefresh() {
      this.flowBox = false;
      this.onLoad(this.page);
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
@@ -459,27 +414,25 @@
    },
    onLoad(page, params = {}) {
      this.loading = true;
      modelList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
      modelList(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
        this.loading = false;
        this.selectionClear();
      });
    }
  }
    },
  },
};
</script>
<style lang="scss">
.wf-dialog {
  .el-dialog__body {
    padding: 5px;
  }
  .avue-dialog__footer {
    text-align: center;
  }
<style>
.none-border {
  border: 0;
  background-color: transparent !important;
}
</style>
src/views/trainExam/performance.vue
@@ -1,17 +1,33 @@
/* * @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>
  <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">
  <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>
@@ -24,14 +40,14 @@
      <template slot-scope="{ row }" slot="qualified">
        {{
          row.qualified == ""
          ? ""
          : row.qualified == 0
            ? ""
            : row.qualified == 0
            ? "合格"
            : row.qualified == 1
              ? "不合格"
              : row.qualified == 3
                ? "缺考,成绩无效"
                : ""
            ? "不合格"
            : row.qualified == 3
            ? "缺考,成绩无效"
            : ""
        }}
      </template>
@@ -49,36 +65,109 @@
                                       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
          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
          type="warning"
          size="small"
          plain
          icon="el-icon-download"
          v-if="permission.trainExam_performance_export"
          @click="handleExport"
          >成绩导出
        </el-button>
        <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.trainExam_performance_delete"
          @click="handleDelete">删 除
        <el-button
          type="danger"
          size="small"
          plain
          icon="el-icon-delete"
          v-if="permission.trainExam_performance_delete"
          @click="handleDelete"
          >删 除
        </el-button>
        <el-button type="primary" size="small" plain v-if="permission.trainExam_performance_paper_apply"
          style="display: none;" icon="el-icon-collection-tag" @click="handleSecurityPaperApply">证书制证申请
        <el-button
          type="primary"
          size="small"
          plain
          v-if="permission.trainExam_performance_paper_apply"
          style="display: none"
          icon="el-icon-collection-tag"
          @click="handleSecurityPaperApply"
          >证书制证申请
        </el-button>
        <el-button type="primary" size="small" plain v-if="permission.trainExam_performance_worker_paper_apply"
          style="display: none;" icon="el-icon-collection-tag" @click="handleWorkerPaperApply">上岗证制证申请
        <el-button
          type="primary"
          size="small"
          plain
          v-if="permission.trainExam_performance_worker_paper_apply"
          style="display: none"
          icon="el-icon-collection-tag"
          @click="handleWorkerPaperApply"
          >上岗证制证申请
        </el-button>
      </template>
      <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>
        <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
          v-show="row.theoryGrade < 60 && row.theoryGrade != null && row.theoryGrade != '' && row.theoryGrade > -1"
          icon="el-icon-refresh"
          @click="reself(row)"
          :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">
      <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
    <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>
@@ -87,9 +176,17 @@
      </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">
    <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"
@@ -225,7 +322,13 @@
            <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
          ref="form"
          :option="option"
          v-model="form"
          @reset-change="emptytChange"
          @submit="submit"
        >
        </avue-form>
      </div>
    </el-dialog>
@@ -236,7 +339,12 @@
      :modal-append-to-body="false"
    > -->
    <div class="dialogVisiblezhengjian" v-if="dialogVisiblezhengjian">
      <baoanz :data="baoanzdata" :close="1" @close="closezhengjian" :closePrint="1"></baoanz>
      <baoanz
        :data="baoanzdata"
        :close="1"
        @close="closezhengjian"
        :closePrint="1"
      ></baoanz>
    </div>
  </basic-container>
</template>
@@ -249,20 +357,21 @@
  updateAbsent,
  updateGrade,
  remove,
  getNowDate
  getNowDate,
  reselfExamScore,
} from "@/api/examapi/performance";
import { mapGetters } from "vuex";
import { getRoleDetail } from "@/api/system/role";
import {
  securityApply,
  add
  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
    baoanz,
  },
  data() {
    var validatePass = (rule, value, callback) => {
@@ -322,9 +431,9 @@
              {
                required: true,
                message: "请输入考试名称",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "姓名",
@@ -335,9 +444,9 @@
              {
                required: true,
                message: "请输入姓名",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "身份证号",
@@ -348,9 +457,9 @@
              {
                required: true,
                message: "请输入身份证号",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "准考证号",
@@ -361,9 +470,9 @@
              {
                required: false,
                message: "请输入准考证号",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "原理论成绩",
@@ -374,9 +483,9 @@
              {
                required: false,
                message: "请输入原理论成绩",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "修改考试成绩",
@@ -386,9 +495,9 @@
              {
                required: true,
                message: "请输入修改考试成绩",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "实操成绩",
@@ -400,22 +509,22 @@
              {
                required: false,
                message: "请输入实操成绩",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            dicData: [
              {
                label: "合格",
                value: 0
                value: 0,
              },
              {
                label: "不合格",
                value: 1
                value: 1,
              },
              {
                label: "暂未录实操成绩",
                value: 2
              }
                value: 2,
              },
            ],
          },
          // {
@@ -443,18 +552,18 @@
            tip: "只能上传jpg/png文件,最多上传5张",
            propsHttp: {
              res: "data",
              url: "url"
              url: "url",
            },
            action: "/api/blade-resource/oss/endpoint/put-files"
            action: "/api/blade-resource/oss/endpoint/put-files",
          },
          {
            label: "修改理由",
            labelWidth: 110,
            span: 24,
            type: "textarea",
            prop: "editReason"
          }
        ]
            prop: "editReason",
          },
        ],
      },
      form: {},
      limit: 5,
@@ -463,8 +572,8 @@
      disabled: false,
      rules: {
        editGrades: [
          { validator: validatePass2, required: true, trigger: "blur" }
        ]
          { validator: validatePass2, required: true, trigger: "blur" },
        ],
      },
      gradeForm: {
        id: null,
@@ -477,13 +586,13 @@
        allGrade: "",
        editGrades: "",
        editReason: "",
        fileList: []
        fileList: [],
      },
      gradeBoxVisible: false,
      dialogVisiblezhengjian: false,
      baoanzdata: {},
      obj: {
        name: "张三"
        name: "张三",
      },
      excelBox: false,
      questionBankOption: {
@@ -497,7 +606,7 @@
        viewBtn: false,
        selection: true,
        reserveSelection: true,
        selectable: row => {
        selectable: (row) => {
          if (row.isExam == 3) {
            return false;
          } else {
@@ -545,7 +654,7 @@
            editDisplay: false,
            // 表单编辑时是否为查看模式
            editDetail: false,
            viewDisplay: false
            viewDisplay: false,
          },
          {
            label: "考试时间",
@@ -572,10 +681,10 @@
              {
                required: true,
                message: "请输入试卷名称",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            overHidden: true
            overHidden: true,
          },
          {
            label: "姓名",
@@ -603,10 +712,10 @@
              {
                required: true,
                message: "请输入试卷名称",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            width: 80
            width: 80,
            // overHidden:true,
          },
          {
@@ -631,10 +740,10 @@
              {
                required: true,
                message: "请输入保安姓名",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            width: 140
            width: 140,
          },
          {
            label: "准考证号",
@@ -659,10 +768,10 @@
              {
                required: true,
                message: "请输入保安姓名",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            width: 110
            width: 110,
          },
          {
            label: "照片",
@@ -674,7 +783,7 @@
            // 表单编辑时是否可见
            editDisplay: false,
            // 表单编辑时是否为查看模式
            editDetail: false
            editDetail: false,
          },
          {
            label: "从业单位",
@@ -697,11 +806,11 @@
              {
                required: true,
                message: "请输入从业单位",
                trigger: "blur"
              }
                trigger: "blur",
              },
            ],
            width: 180,
            overHidden: true
            overHidden: true,
          },
          {
            label: "考试开始时间",
@@ -723,7 +832,7 @@
            // 表单编辑时是否可见
            editDisplay: true,
            // 表单编辑时是否为查看模式
            editDetail: false
            editDetail: false,
          },
          {
            label: "考试结束时间",
@@ -745,7 +854,7 @@
            // 表单编辑时是否可见
            editDisplay: true,
            // 表单编辑时是否为查看模式
            editDetail: false
            editDetail: false,
          },
          {
            label: "考试状态",
@@ -758,20 +867,20 @@
            dicData: [
              {
                label: "发布成绩",
                value: 2
                value: 2,
              },
              {
                label: "考试中",
                value: 3
                value: 3,
              },
              {
                label: "纸质考试",
                value: 5
                value: 5,
              },
              {
                label: "缺考",
                value: 4
              }
                value: 4,
              },
            ],
            // 表单新增时是否禁止
            addDisabled: false,
@@ -789,9 +898,9 @@
              {
                required: true,
                message: "请输入考试名称",
                trigger: "blur"
              }
            ]
                trigger: "blur",
              },
            ],
          },
          {
            label: "理论成绩",
@@ -810,7 +919,7 @@
            editDisplay: true,
            // 表单编辑时是否为查看模式
            editDetail: false,
            width: 95
            width: 95,
          },
          {
            label: "实操成绩",
@@ -834,12 +943,12 @@
            dicData: [
              {
                label: "合格",
                value: 0
                value: 0,
              },
              {
                label: "不合格",
                value: 1
              }
                value: 1,
              },
            ],
          },
          // {
@@ -873,20 +982,20 @@
            dicData: [
              {
                label: "合格",
                value: 0
                value: 0,
              },
              {
                label: "不合格",
                value: 1
                value: 1,
              },
              {
                label: "暂未录实操成绩",
                value: 2
                value: 2,
              },
              {
                label: "缺考,成绩无效",
                value: 3
              }
                value: 3,
              },
            ],
            // 表单新增时是否禁止
            addDisabled: false,
@@ -901,7 +1010,7 @@
            viewDetail: false,
            viewDisplay: false,
            // 表单编辑时是否为查看模式
            editDetail: false
            editDetail: false,
          },
          {
            label: "是否合格",
@@ -913,20 +1022,20 @@
            dicData: [
              {
                label: "合格",
                value: 0
                value: 0,
              },
              {
                label: "不合格",
                value: 1
                value: 1,
              },
              {
                label: "暂未录实操成绩",
                value: 2
                value: 2,
              },
              {
                label: "缺考,成绩无效",
                value: 3
              }
                value: 3,
              },
            ],
            // 表单新增时是否禁止
            addDisabled: false,
@@ -939,7 +1048,7 @@
            // 表单编辑时是否可见
            editDisplay: true,
            // 表单编辑时是否为查看模式
            editDetail: false
            editDetail: false,
          },
          // {
          //   label: "是否制证",
@@ -991,19 +1100,19 @@
            dicData: [
              {
                label: "全部",
                value: 3
                value: 3,
              },
              {
                label: "有",
                value: 1
                value: 1,
              },
              {
                label: "无",
                value: 2
              }
            ]
          }
        ]
                value: 2,
              },
            ],
          },
        ],
      },
      questionBankSearch: {},
      questionBankLoading: true,
@@ -1014,7 +1123,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      selectionList: [],
@@ -1032,10 +1141,10 @@
            loadText: "模板上传中,请稍等",
            span: 24,
            propsHttp: {
              res: "data"
              res: "data",
            },
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/examScore/import-examScore"
            action: "/api/examScore/import-examScore",
          },
          // {
          //     label: "数据覆盖",
@@ -1067,14 +1176,14 @@
            label: "模板下载",
            prop: "excelTemplate",
            formslot: true,
            span: 24
          }
        ]
            span: 24,
          },
        ],
      },
      choiceList: []
      choiceList: [],
    };
  },
  created() { },
  created() {},
  mounted() {
    this.$store.commit("setWindowSizeHeightAdd");
  },
@@ -1082,7 +1191,7 @@
    ...mapGetters(["userInfo", "permission"]),
    ids() {
      let ids = [];
      this.questionBankSelectionList.forEach(ele => {
      this.questionBankSelectionList.forEach((ele) => {
        ids.push(ele.id);
      });
      return ids.join(",");
@@ -1102,11 +1211,31 @@
        excelBtn: this.vaildData(
          this.permission.trainExam_performance_export,
          false
        )
        ),
      };
    }
    },
  },
  methods: {
    // 考试重置
    reself({id}) {
      reselfExamScore(id).then((res) => {
          if (res.data.success == true) {
            this.$message({
              showClose: true,
              message: "重置成功",
              type: "success",
            });
            this.questionBankOnLoad(this.questionBankPage);
          } else {
            this.$message({
              showClose: true,
              message: "重置错误!请联系管理员",
              type: "warning",
            });
          }
        });
    },
    // 批量删除
    handleDelete() {
      if (this.questionBankSelectionList.length === 0) {
@@ -1116,7 +1245,7 @@
      this.$confirm("确定将选择考试成绩删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      })
        .then(() => {
          return remove(this.ids);
@@ -1125,7 +1254,7 @@
          this.questionBankOnLoad(this.questionBankPage);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          this.$refs.crud.toggleSelection();
        });
@@ -1140,13 +1269,13 @@
          that.$refs.form.resetFields();
          that.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          that.gradeBoxVisible = false;
          done();
        },
        error => {
        (error) => {
          window.console.log(error);
          done();
        }
@@ -1160,10 +1289,10 @@
      const form = new FormData();
      // 文件对象
      form.append("file", file);
      putFile(form).then(res => {
      putFile(form).then((res) => {
        that.gradeForm.fileList.push({
          name: res.data.data.name,
          url: res.data.data.url
          url: res.data.data.url,
        });
        // console.log(that.gradeForm.fileList, 365441);
      });
@@ -1196,7 +1325,7 @@
      this.choiceList = [];
      for (let k in list) {
        this.choiceList.push({
          id: list[k].userId
          id: list[k].userId,
        });
      }
    },
@@ -1211,7 +1340,7 @@
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
          type: "warning",
        }
      )
        .then(() => {
@@ -1226,7 +1355,7 @@
          const data = {
            ids: str,
            createUser: this.userInfo.user_id,
            type: 2
            type: 2,
          };
          return securityApply(data);
        })
@@ -1234,7 +1363,7 @@
          this.$refs.questionBankCrud.toggleSelection();
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
        });
    },
@@ -1246,12 +1375,12 @@
      }
      this.$confirm(
        "共选择上岗证制证申请人数" +
        this.choiceList.length +
        "人,确定申请制证?",
          this.choiceList.length +
          "人,确定申请制证?",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
          type: "warning",
        }
      )
        .then(() => {
@@ -1266,7 +1395,7 @@
          const data = {
            ids: str,
            createUser: this.userInfo.user_id,
            type: 1
            type: 1,
          };
          return securityApply(data);
        })
@@ -1274,7 +1403,7 @@
          this.$refs.questionBankCrud.toggleSelection();
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
        });
    },
@@ -1284,7 +1413,7 @@
        $sex: row.sex == 1 ? "男" : "女",
        securitynumber: row.securityNumber,
        paperTime: row.paperTime,
        avatar: row.avatar
        avatar: row.avatar,
      };
      this.dialogVisiblezhengjian = true;
    },
@@ -1328,8 +1457,8 @@
      var that = this;
      //获取当前登录人员的角色信息
      var roleIds = this.userInfo.role_id.split(",");
      roleIds.forEach(roleId => {
        getRoleDetail(roleId).then(res => {
      roleIds.forEach((roleId) => {
        getRoleDetail(roleId).then((res) => {
          var roleAlias = res.data.data.roleAlias;
          if (roleAlias == "保安公司管理员" || roleAlias == "保安") {
            //如果是保安公司管理员
@@ -1351,10 +1480,10 @@
            page.currentPage,
            page.pageSize,
            Object.assign(params, this.questionBankQuery)
          ).then(res => {
          ).then((res) => {
            const data = res.data.data;
            data.records.forEach(item => {
            data.records.forEach((item) => {
              if (item.isPaper == null || item.isPaper == -1) {
                item.isPaper = "";
              }
@@ -1386,23 +1515,23 @@
      this.$confirm("当前保安员已制证,确定要继续申请制证?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      }).then(() => {
        const data = {
          createUser: this.userInfo.user_id,
          type: 2,
          userId: row.userId
          userId: row.userId,
        };
        add(data).then(
          () => {
            this.questionBankOnLoad(this.questionBankPage);
            this.$message({
              type: "success",
              message: "操作成功!"
              message: "操作成功!",
            });
            done();
          },
          error => {
          (error) => {
            window.console.log(error);
            loading();
          }
@@ -1414,7 +1543,7 @@
      this.$confirm("确定缺考标记?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      }).then(() => {
        row.qualified = 3;
        updateAbsent(row).then(
@@ -1422,11 +1551,11 @@
            this.questionBankOnLoad(this.questionBankPage);
            this.$message({
              type: "success",
              message: "操作成功!"
              message: "操作成功!",
            });
            done();
          },
          error => {
          (error) => {
            window.console.log(error);
            loading();
          }
@@ -1443,7 +1572,7 @@
      //得到时间戳
      var longtime = new Date(endTime).getTime();
      // console.log(longtime,123466);
      getNowDate().then(res => {
      getNowDate().then((res) => {
        var num = 24 * 3600 * 1000;
        if (this.userInfo.role_name == "培训公司管理员") {
          // if (res.data.data - longtime <= num) {
@@ -1456,7 +1585,7 @@
            securityName: row.securityName,
            theoryGrade: row.theoryGrade,
            learnGrade: row.learnGrade,
            allGrade: row.allGrade
            allGrade: row.allGrade,
          };
          this.gradeBoxVisible = true;
          // } else {
@@ -1476,7 +1605,7 @@
            securityName: row.securityName,
            theoryGrade: row.theoryGrade,
            learnGrade: row.learnGrade,
            allGrade: row.allGrade
            allGrade: row.allGrade,
          };
          this.gradeBoxVisible = true;
        }
@@ -1485,7 +1614,7 @@
    uploadGrade(formName) {
      var that = this;
      this.$refs[formName].validate(valid => {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          var obj = {};
          obj.oldScore = this.gradeForm.theoryGrade;
@@ -1499,12 +1628,12 @@
              that.questionBankOnLoad(that.questionBankPage);
              that.$message({
                type: "success",
                message: "操作成功!"
                message: "操作成功!",
              });
              that.gradeBoxVisible = false;
            },
            error => {
            (error) => {
              window.console.log(error);
            }
          );
@@ -1522,7 +1651,7 @@
      this.choiceList = [];
      for (let k in list) {
        this.choiceList.push({
          id: list[k].userId
          id: list[k].userId,
        });
      }
    },
@@ -1547,17 +1676,17 @@
        theoryGrade: row.theoryGrade,
        learnGrade: row.learnGrade,
        examId: row.examId,
        id: row.id
        id: row.id,
      }).then(
        () => {
          this.questionBankOnLoad(this.questionBankPage);
          this.$message({
            type: "success",
            message: "操作成功!"
            message: "操作成功!",
          });
          done();
        },
        error => {
        (error) => {
          window.console.log(error);
          loading();
        }
@@ -1565,7 +1694,8 @@
    },
    handleTemplate() {
      window.open(
        `/api/examScore/export-template?${this.website.tokenHeader
        `/api/examScore/export-template?${
          this.website.tokenHeader
        }=${getToken()}&`
      );
    },
@@ -1590,7 +1720,7 @@
      this.$confirm("是否导出成绩数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
        type: "warning",
      }).then(() => {
        //获取查询条件
        // console.log(this.questionBankSearch, 456);
@@ -1603,7 +1733,7 @@
          securityName: this.questionBankSearch.securityName,
          examName: this.questionBankSearch.examName,
          isAvatar: this.questionBankSearch.isAvatar,
          isPaper: this.questionBankSearch.isPaper
          isPaper: this.questionBankSearch.isPaper,
        };
        //导出
        if (
@@ -1622,12 +1752,13 @@
        //序列号url形式,用&拼接
        data = Qs.stringify(data);
        window.open(
          `/api/examScore/export-examScore?${this.website.tokenHeader
          `/api/examScore/export-examScore?${
            this.website.tokenHeader
          }=${getToken()}&` + data
        );
      });
    }
  }
    },
  },
};
</script>