Administrator
2021-10-19 d56d2182f0f886f748130d39a24d69028e8bd960
成绩管理可以按天导出成绩,保安员批量导入,个人照片批量导入修改
3 files modified
317 ■■■■■ changed files
src/router/axios.js 39 ●●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuard.vue 210 ●●●● patch | view | raw | blame | history
src/views/trainExam/performance.vue 68 ●●●●● patch | view | raw | blame | history
src/router/axios.js
@@ -8,33 +8,34 @@
import axios from 'axios';
import store from '@/store/';
import router from '@/router/router';
import {serialize} from '@/util/util';
import {getToken} from '@/util/auth';
import {Message} from 'element-ui';
import { serialize } from '@/util/util';
import { getToken } from '@/util/auth';
// import { Message } from 'element-ui';
import { MessageBox } from 'element-ui';
import website from '@/config/website';
import {Base64} from 'js-base64';
import { Base64 } from 'js-base64';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
//默认超时时间
axios.defaults.timeout = 10000;
axios.defaults.timeout = 60000;
//返回其他状态码
axios.defaults.validateStatus = function (status) {
  return status >= 200 && status <= 500;
axios.defaults.validateStatus = function(status) {
    return status >= 200 && status <= 500;
};
//跨域请求,允许保存cookie
axios.defaults.withCredentials = true;
// NProgress 配置
NProgress.configure({
  showSpinner: false
    showSpinner: false
});
//http request拦截
axios.interceptors.request.use(config => {
  //开启 progress bar
  NProgress.start();
  const meta = (config.meta || {});
  const isToken = meta.isToken === false;
  config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
            //开启 progress bar
            NProgress.start();
            const meta = (config.meta || {});
            const isToken = meta.isToken === false;
            config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
  //让每个请求携带token
  if (getToken() && !isToken) {
    config.headers[website.tokenHeader] = 'bearer ' + getToken()
@@ -65,10 +66,12 @@
  if (status === 401) store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
  // 如果请求为非200否者默认统一处理
  if (status !== 200) {
    Message({
      message: message,
      type: 'error'
    });
    // Message({
    //   message: message,
    //   type: 'error'
    // });
    MessageBox.alert(message);
    // alert(message);
    return Promise.reject(new Error(message))
  }
  return res;
@@ -77,4 +80,4 @@
  return Promise.reject(new Error(error));
});
export default axios;
export default axios;
src/views/securityGuard/securityGuard.vue
@@ -46,7 +46,7 @@
              icon="el-icon-upload2"
              v-if="permission.securityGuard_import"
              @click="handleImport1"
              >批量导入
              >保安员批量导入
            </el-button>
            <el-button
              type="success"
@@ -311,30 +311,30 @@
export default {
  data() {
    const validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        callback();
      }
    };
    const validatePass2 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.form.password) {
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
      }
    };
    const validatePassNumber = (rule, value, callback) => {
      var test = /^[0-9]*$/gm;
      if (!test.test(value)) {
        callback(new Error("请输入数字"));
      } else {
        callback();
      }
    };
    // const validatePass = (rule, value, callback) => {
    //   if (value === "") {
    //     callback(new Error("请输入密码"));
    //   } else {
    //     callback();
    //   }
    // };
    // const validatePass2 = (rule, value, callback) => {
    //   if (value === "") {
    //     callback(new Error("请再次输入密码"));
    //   } else if (value !== this.form.password) {
    //     callback(new Error("两次输入密码不一致!"));
    //   } else {
    //     callback();
    //   }
    // };
    // const validatePassNumber = (rule, value, callback) => {
    //   var test = /^[0-9]*$/gm;
    //   if (!test.test(value)) {
    //     callback(new Error("请输入数字"));
    //   } else {
    //     callback();
    //   }
    // };
    const validatePassCardid = (rule, value, callback) => {
      var test = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/g;
      if (!test.test(value) && value.length < 17) {
@@ -514,49 +514,6 @@
                ],
              },
              {
                label: "登录账号",
                prop: "account",
                editDisabled: true,
                rules: [
                  {
                    required: true,
                    message: "请输入登录账号",
                    trigger: "blur",
                  },
                ],
                // disabled: true,
              },
              {
                label: "密码",
                prop: "password",
                type: "password",
                hide: true,
                editDisplay: false,
                viewDisplay: false,
                rules: [
                  { required: true, validator: validatePass, trigger: "blur" },
                ],
              },
              {
                label: "确认密码",
                prop: "password2",
                type: "password",
                hide: true,
                editDisplay: false,
                viewDisplay: false,
                rules: [
                  { required: true, validator: validatePass2, trigger: "blur" },
                ],
              },
            ],
          },
          {
            label: "详细信息",
            prop: "detailInfo",
            labelWidth: "110",
            icon: "el-icon-s-order",
            column: [
              {
                label: "姓名",
                prop: "realName",
                rules: [
@@ -572,10 +529,88 @@
                  },
                ],
              },
              // {
              //   label: "登录账号",
              //   prop: "account",
              //   editDisabled: true,
              //   rules: [
              //     {
              //       required: true,
              //       message: "请输入登录账号",
              //       trigger: "blur",
              //     },
              //   ],
              //   // disabled: true,
              // },
              // {
              //   label: "密码",
              //   prop: "password",
              //   type: "password",
              //   hide: true,
              //   editDisplay: false,
              //   viewDisplay: false,
              //   rules: [
              //     { required: true, validator: validatePass, trigger: "blur" },
              //   ],
              // },
              // {
              //   label: "确认密码",
              //   prop: "password2",
              //   type: "password",
              //   hide: true,
              //   editDisplay: false,
              //   viewDisplay: false,
              //   rules: [
              //     { required: true, validator: validatePass2, trigger: "blur" },
              //   ],
              // },
            ],
          },
          {
            label: "详细信息",
            prop: "detailInfo",
            labelWidth: "110",
            icon: "el-icon-s-order",
            column: [
              {
                label: "昵称",
                prop: "name",
                label: "身份证号",
                prop: "cardid",
                hide: true,
                overHidden: true,
                rules: [
                  {
                    required: true,
                    message: "请输入身份证号",
                    trigger: "blur",
                  },
                  {
                    required: true,
                    validator: validatePassCardid,
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "手机号码",
                prop: "phone",
                overHidden: true,
                rules: [
                  {
                    required: true,
                    message: "请输入手机号",
                    trigger: "blur",
                  },
                  {
                    required: true,
                    validator: validatePassPhone,
                    trigger: "blur",
                  },
                ],
              },
              // {
              //   label: "昵称",
              //   prop: "name",
              // },
              {
                label: "个人照片",
                type: "upload",
@@ -647,41 +682,6 @@
                label: "保安员证编号",
                prop: "securitynumber",
                hide: true,
              },
              {
                label: "身份证号",
                prop: "cardid",
                hide: true,
                overHidden: true,
                rules: [
                  {
                    required: true,
                    message: "请输入身份证号",
                    trigger: "blur",
                  },
                  {
                    required: true,
                    validator: validatePassCardid,
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "手机号码",
                prop: "phone",
                overHidden: true,
                rules: [
                  {
                    required: true,
                    message: "请输入手机号",
                    trigger: "blur",
                  },
                  {
                    required: true,
                    validator: validatePassPhone,
                    trigger: "blur",
                  },
                ],
              },
              {
                label: "电子邮箱",
src/views/trainExam/performance.vue
@@ -75,6 +75,15 @@
                @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>
            </template>
            <template slot-scope="{ type, size, row }" slot="menu">
@@ -146,8 +155,8 @@
        addBtn: false,
        selection: false,
        // 导出按钮
        excelBtn: true,
        excelBtnText: "成绩导出",
        // excelBtn: true,
        // excelBtnText: "成绩导出",
        viewBtn: true,
        // title: '成绩',
        align: "center",
@@ -167,10 +176,35 @@
        column: [
          {
            label: "考试时间",
            prop: "examDate",
            type: "date",
            hide: true,
            format: "yyyy-MM-dd",
            valueFormat: "yyyy-MM-dd",
            width: 140,
            slot: true,
            search:true,
            searchSpan:4,
            // 表单新增时是否禁止
            addDisabled: false,
            // 表单新增时是否可见
            addDisplay: false,
            // 表单新增时是否为查看模式
            addDetail: false,
            // 表单编辑时是否禁止
            editDisabled: false,
            // 表单编辑时是否可见
            editDisplay: false,
            // 表单编辑时是否为查看模式
            editDetail: false,
            viewDisplay:false
          },
          {
            label: "考试名称",
            prop: "examName",
            search: true,
            searchSpan: 4,
            // search: true,
            // searchSpan: 4,
            slot: true,
            viewDisplay: true,
            // 表单新增时是否禁止
@@ -474,6 +508,7 @@
              },
            ],
          },
        ],
      },
      questionBankSearch: {},
@@ -680,6 +715,31 @@
    refreshChange() {
      this.questionBankOnLoad(this.questionBankPage, this.questionBankQuery);
    },
    //成绩导出
    handleExport() {
      this.$confirm("是否导出成绩数据?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        //获取查询条件
        console.log(this.questionBankSearch,456);
        //导出
        const account = this.questionBankSearch.account;
        const companyName = this.questionBankSearch.companyName;
        const examDate = this.questionBankSearch.examDate;
        const isExam = this.questionBankSearch.isExam;
        const qualified = this.questionBankSearch.qualified;
        const securityName = this.questionBankSearch.securityName;
        window.open(
          `/api/examScore/export-examScore?examDate=`+ examDate +"&account="+account+
          "&companyName="+companyName+
          "&isExam="+isExam+
          "&qualified="+qualified+
          "&securityName="+securityName
        );
      });
    },
  },
};
</script>