Administrator
2022-04-11 79d9fc857559982b00b68b2d709807bdc4cd286f
src/views/trainApply/index.vue
@@ -2,114 +2,132 @@
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: liu
 * @Last Modified time: 2021-10-26 15:33:54
 * @Last Modified time: 2021-11-30 10:23:40
 * menu-name 报名考试
 */
<template>
  <el-row class="morpheus-box-apply-exam-1">
    <el-col :span="24" class="hasButOne">
      <el-card>
        <div class="exam-card-body">
          <avue-crud
            v-model="obj"
            class="company-box"
            :option="questionBankOption"
            :search.sync="questionBankSearch"
            :table-loading="questionBankLoading"
            :data="questionBankData"
            ref="questionBankCrud"
            :page.sync="questionBankPage"
            @on-load="questionBankOnLoad"
            @selection-change="questionBankSelectionChange"
            @search-change="questionBankSearchChange"
            @search-reset="questionBankSearchReset"
            @current-change="questionBankCurrentChange"
            @size-change="questionBankSizeChange"
            @row-save="questionBankRowSave"
            @row-del="questionBankRowDel"
          >
            <!-- 自定义按钮 -->
            <template slot="menuLeft">
              <el-button
                style="display: none"
                type="warning"
                size="small"
                plain
                icon="el-icon-download"
                @click="handleExport"
                >导出
              </el-button>
              <el-button
                type="warning"
                size="small"
                plain
                icon="el-icon-receiving"
                @click="handleExport"
                >清册打印
              </el-button>
              <el-button
                type="success"
                size="small"
                plain
                v-if="false"
                icon="el-icon-download"
                @click="handleImport"
                >清册导入
              </el-button>
            </template>
  <!-- class="exam-card-body" -->
  <basic-container
    :class="[
      $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"
      ref="questionBankCrud"
      :page.sync="questionBankPage"
      @on-load="questionBankOnLoad"
      @selection-change="questionBankSelectionChange"
      @search-change="questionBankSearchChange"
      @search-reset="questionBankSearchReset"
      @current-change="questionBankCurrentChange"
      @size-change="questionBankSizeChange"
      @row-save="questionBankRowSave"
      @row-del="questionBankRowDel"
      :row-style="rowStyle"
    >
      <!-- 自定义按钮 -->
      <template slot="menuLeft">
        <el-button
          style="display: none"
          type="warning"
          size="small"
          plain
          icon="el-icon-download"
          @click="handleExport"
          >导出
        </el-button>
        <el-button
          type="warning"
          size="small"
          plain
          icon="el-icon-receiving"
          @click="handleExport"
          >清册打印
        </el-button>
        <el-button
          type="success"
          size="small"
          plain
          v-if="false"
          icon="el-icon-download"
          @click="handleImport"
          >清册导入
        </el-button>
        <el-button
          type="warning"
          size="small"
          plain
          icon="el-icon-download"
          @click="handleApplyInfoExport"
          >报名清册信息导出
        </el-button>
      </template>
            <template slot-scope="{ type, row }" slot="menu">
              <el-button
                :type="type"
                size="small"
                icon="el-icon-receiving"
                :disabled="row.candidateNo == '' || row.cancel == 2"
                @click="handlePrint(row)"
                >准考证打印
              </el-button>
              <el-button
                :type="type"
                size="small"
                icon="el-icon-refresh-left"
                :disabled="
                  row.cancel == 2 || row.isExam == 2 || row.isExam == 3
                "
                @click="revoke(row)"
                >取消报名
              </el-button>
              <el-button
                :type="type"
                size="small"
                icon="el-icon-circle-check"
                :disabled="row.auditStatus == 1"
                @click="auditSucess(row)"
                >审核通过
              </el-button>
            </template>
          </avue-crud>
      <template slot-scope="{ type, row }" slot="menu">
        <el-button
          :type="type"
          size="small"
          icon="el-icon-receiving"
          :disabled="
            row.candidateNo == '' || row.cancel == 2 || row.auditStatus == 2
          "
          @click="handlePrint(row)"
          >准考证打印
        </el-button>
        <el-button
          :type="type"
          size="small"
          icon="el-icon-refresh-left"
          :disabled="row.cancel == 2 || row.isExam == 2 || row.isExam == 3"
          @click="revoke(row)"
          >取消报名
        </el-button>
        <el-button
          style="display: none"
          :type="type"
          size="small"
          icon="el-icon-circle-check"
          :disabled="row.auditStatus == 1"
          @click="auditSucess(row)"
          >审核通过
        </el-button>
        <el-button
          v-if="row.vipStatus != 1 && permission.exam_vip"
          icon="el-icon-folder-checked"
          @click="usesVipConfirm(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"
            >
              <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>
    <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>
  </basic-container>
</template>
<script>
@@ -117,11 +135,15 @@
  getdata,
  adddata,
  cancelTrainAudit,
  cancelTrain,
  auditSucess,
  remove,
  vipSign,
} from "@/api/trainingRegistration/trainingRegistration";
import Qs from "qs";
import { getToken } from "@/util/auth";
import { mapState } from "vuex";
import { mapGetters } from "vuex";
var DIC = {
  cancel: [
@@ -165,8 +187,8 @@
        //dialogType: 'drawer',
        dialogClickModal: false,
        // 操作栏宽度
        menuWidth: 200,
        menuWidth: 280,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "保安姓名",
@@ -208,6 +230,7 @@
            // 表单新增时是否可见
            addDisplay: false,
            search: true,
            searchSpan: 3,
            // 表单新增时是否为查看模式
            addDetail: false,
            // 表单编辑时是否禁止
@@ -259,12 +282,14 @@
                trigger: "blur",
              },
            ],
            width: 220,
            width: 180,
            overHidden: true,
          },
          {
            label: "所属公司",
            label: "所属企业",
            prop: "deptName",
            search: true,
            searchSpan: 5,
            slot: true,
            // 表单新增时是否禁止
            addDisabled: false,
@@ -281,11 +306,12 @@
            rules: [
              {
                required: true,
                message: "请选择所属公司",
                message: "请选择所属企业",
                trigger: "blur",
              },
            ],
            width: 220,
            width: 200,
            overHidden: true,
          },
          {
            label: "报名状态",
@@ -294,8 +320,11 @@
            search: true,
            hide: true,
            searchSpan: 4,
            searchValue: 1,
            dicData: [
              {
                label: "全部",
                value: 0,
              },
              {
                label: "已报名",
                value: 1,
@@ -354,7 +383,7 @@
                trigger: "blur",
              },
            ],
            width: 200,
            width: 150,
          },
          {
            label: "报考证件",
@@ -469,7 +498,6 @@
            type: "select",
            searchSpan: 4,
            prop: "auditStatus",
            searchValue: 4,
            dicData: [
              {
                label: "全部",
@@ -500,26 +528,70 @@
            addDisplay: false,
            width: 100,
          },
          // {
          //     label: "报名状态",
          //     prop: "cancel",
          //     slot: true,
          //     // 表单新增时是否禁止
          //     addDisabled: false,
          //     // 表单新增时是否可见
          {
            label: "考试状态",
            search: true,
            type: "select",
            searchSpan: 4,
            prop: "isExam",
            dicData: [
              {
                label: "全部",
                value: 0,
              },
              {
                label: "未考试",
                value: 1,
              },
              {
                label: "考试结束",
                value: 2,
              },
              {
                label: "考试中",
                value: 3,
              },
              {
                label: "缺考",
                value: 4,
              },
            ],
            props: {
              label: "label",
              value: "value",
            },
            editDisplay: false,
            addDisplay: false,
            width: 100,
          },
          //   {
          //     label: "缴费状态",
          //     search: true,
          //     type: "select",
          //     searchSpan: 4,
          //     prop: "vipStatus",
          //     dicData: [
          //         {
          //             label: '全部',
          //             value: 0,
          //         },
          //         {
          //             label: '已缴费',
          //             value: 1,
          //         },
          //         {
          //             label: '未缴费',
          //             value: 2,
          //         }
          //     ],
          //     props: {
          //         label: "label",
          //         value: "value"
          //     },
          //     editDisplay: false,
          //     addDisplay: false,
          //     // 表单新增时是否为查看模式
          //     addDetail: false,
          //     // 表单编辑时是否禁止
          //     editDisabled: false,
          //     // 表单编辑时是否可见
          //     editDisplay: true,
          //     // 表单编辑时是否为查看模式
          //     editDetail: false,
          //     dicData:DIC.cancel,
          //     search:true,
          //     type:"select"
          // },
          //     width: 100,
          //   },
        ],
      },
      questionBankSearch: {},
@@ -529,6 +601,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 16,
        ...this.$store.state.control.changePageSize,
      },
      questionBankQuery: {},
      questionBankSelectionList: [],
@@ -598,8 +671,9 @@
        "/api/blade-system/dept/lazy-tree-user?parentId=" +
        this.userInfo.dept_id;
    }
    this.questionBankSearch["cancel"] = 1;
    this.questionBankSearch["auditStatus"] = 0;
    // this.questionBankSearch["cancel"] = 1;
    // this.questionBankSearch["auditStatus"] = 0;
    // this.questionBankSearch["isExam"] = 1;
  },
  mounted() {
    var flag = false,
@@ -617,6 +691,7 @@
    if (i > 1) {
      this.$store.state.tags.tagList.splice(ind, 1);
    }
    this.$store.commit("setWindowSizeHeightAdd");
  },
  computed: {
    ...mapState({
@@ -629,12 +704,61 @@
      });
      return ids.join(",");
    },
    ...mapGetters(["userInfo", "permission"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.notice_add, false),
        viewBtn: this.vaildData(this.permission.notice_view, false),
        delBtn: this.vaildData(this.permission.notice_delete, false),
        editBtn: this.vaildData(this.permission.notice_edit, false),
      };
    },
  },
  methods: {
    //报名信息导出
    handleApplyInfoExport() {
      this.$confirm("是否导出考试报名信息数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        //获取查询条件
        // const { releaseTimeRange } = this.questionBankSearch;
        // if (releaseTimeRange) {
        //   this.questionBankSearch["startTime"] = releaseTimeRange[0];
        //   this.questionBankSearch["endTime"] = releaseTimeRange[1];
        // }
        var data = {
          cancel: this.questionBankSearch.cancel,
          auditStatus: this.questionBankSearch.auditStatus,
          deptName: this.questionBankSearch.deptName,
          isExam: this.questionBankSearch.isExam,
          realName: this.questionBankSearch.realName,
        };
        data["examId"] = this.$route.query.id;
        //序列号url形式,用&拼接
        data = Qs.stringify(data);
        window.open(
          `/api/trainingRegistration/export-apply-info?${
            this.website.tokenHeader
          }=${getToken()}&` + data
        );
      });
    },
    //行样式调整
    rowStyle({ row, column, rowIndex }) {
      if (row.auditStatus == "2") {
        return {
          color: "#ff2727",
        };
      }
    },
    //准考证查看
    handlePrint(row) {
      var obj = row;
      obj["name"] = "准考证信息";
      obj["token"] = getToken();
      // var data = Qs.stringify(obj);
      this.$router.push({
        path: `/applyexam/papers`,
        query: obj,
@@ -654,6 +778,7 @@
        this.questionBankData = data.records;
        this.questionBankLoading = false;
        this.questionBankSelectionClear();
        this.$store.commit("setWindowSizeHeightAdd");
      });
    },
    questionBankSelectionClear() {
@@ -687,7 +812,7 @@
        type: "warning",
      }).then(() => {
        row.cancel = 2;
        cancelTrainAudit(row).then(
        cancelTrain(row).then(
          () => {
            this.onLoad(this.page);
            this.$message({
@@ -727,7 +852,28 @@
        );
      });
    },
    usesVipConfirm(row) {
      this.$confirm("确定将选择当前人员确认已缴费?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          var data = {
            id: row.id,
            userId: row.userId,
            vipStatus: 1,
          };
          return vipSign(data);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        });
    },
    // 新增
    questionBankRowSave(row, done, loading) {
      adddata({
@@ -795,22 +941,12 @@
      var obj = {};
      obj["name"] = "报名清册信息";
      obj["examId"] = this.$route.query.id;
      obj["token"] = getToken();
      this.$router.push({
        path: `/applydetailed/papers`,
        query: obj,
      });
    },
    //导出数据
    // handleExport() {
    //     this.$confirm("是否导出清册数据?", "提示", {
    //         confirmButtonText: "确定",
    //         cancelButtonText: "取消",
    //         type: "warning",
    //     }).then(() => {
    //         window.open(`/api/trainingRegistration/export-apply?examId=${this.$route.query.id}`);
    //     });
    // },
    handleImport() {
      this.excelBox = true;
    },