Administrator
2022-06-15 47a0f58d4334939b08a55b9356f94de23c8b1367
src/views/securityGuard/securityGuard.vue
@@ -155,6 +155,15 @@
              @click="handleExport"
              >导出
            </el-button>
            <el-button
              type="success"
              size="small"
              plain
              icon="el-icon-upload2"
              v-if="permission.securityGuard_import_admin"
              @click="handleImport3"
              >保安员批量导入-制证
            </el-button>
          </template>
          <template slot-scope="{ type, size, row }" slot="menu">
@@ -169,19 +178,29 @@
                  icon="el-icon-view"
                  :size="size"
                  :type="type"
                  v-if="permission.securityGuard_view"
                  @click.stop="rowClick(row)"
                  >查看
                </el-button>
                <br />
                <br v-if="permission.securityGuard_view" />
                <!-- <el-button
                  icon="el-icon-scissors"
                  :size="size"
                  :type="type"
                  v-if="permission.securityGuard_edit && row.status != 2"
                  @click="$refs.crud.rowEdit(row, index)"
                  >编辑
                </el-button>
                <br v-if="permission.securityGuard_edit && row.status != 2" /> -->
                <el-button
                  icon="el-icon-scissors"
                  :size="size"
                  :type="type"
                  v-if="permission.securityGuard_delete && row.status != 2"
                  @click="$refs.crud.rowEdit(row, index)"
                  >编辑
                  @click="accountUpdate(row)"
                  v-if="permission.securityGuard_edit && row.status != 2"
                  >账号修改
                </el-button>
                <br v-if="permission.securityGuard_delete && row.status != 2" />
                <br v-if="permission.securityGuard_edit && row.status != 2" />
                <el-button
                  icon="el-icon-close"
                  :size="size"
@@ -216,6 +235,15 @@
                  v-if="permission.securityGuard_check"
                  @click.stop="rowCheck(row)"
                  >异常
                </el-button>
                <br v-if="permission.securityGuard_check" />
                <el-button
                  icon="el-icon-money"
                  :size="size"
                  :type="type"
                  v-if="permission.securityGuard_check_apply"
                  @click.stop="rowCheckApply(row)"
                  >证件核实申请
                </el-button>
                <!-- <br />
                <el-button
@@ -306,7 +334,7 @@
          </template>
          <!-- 自定义新增和编辑中的指纹信息 -->
          <!-- src="http://223.82.109.183:2081/zhba/upload/picture/85004574ae23472da37350b918960206.png" -->
          <!-- src="http://61.131.136.25:2081/zhba/upload/picture/85004574ae23472da37350b918960206.png" -->
          <template slot-scope="{ type, disabled }" slot="fingerprintForm">
            <div class="zhiwenMain">
              <!-- <img class="zhiwenImgs" :src="zhiwenImg" alt="" />
@@ -329,6 +357,26 @@
            </div>
          </template>
        </avue-crud>
        <el-dialog
          title="账号修改"
          :visible.sync="accountVisible"
          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"
        >
            <avue-form
              ref="formAccount"
              :option="optionAccount"
              v-model="formAccount"
              @reset-change="emptytChangeAccount"
              @submit="submit"
            >
            </avue-form>
        </el-dialog>
        <el-dialog
          title="用户角色配置"
          append-to-body
@@ -420,6 +468,24 @@
          </avue-form>
        </el-dialog>
        <el-dialog
          title="保安员导入-制证"
          append-to-body
          :visible.sync="excelBox3"
          width="555px"
        >
          <avue-form
            :option="excelOption3"
            v-model="excelForm3"
            :upload-after="uploadAfter3"
          >
            <template slot="excelTemplate">
              <el-button type="primary" @click="handleTemplate3">
                点击下载<i class="el-icon-download el-icon--right"></i>
              </el-button>
            </template>
          </avue-form>
        </el-dialog>
        <el-dialog
          title="个人照片批量上传"
          append-to-body
          :visible.sync="excelBox2"
@@ -431,6 +497,28 @@
            :upload-after="uploadAfter2"
          >
          </avue-form>
        </el-dialog>
        <el-dialog
          title="证件核实申请"
          :visible.sync="securityCheckApplyvisible"
          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>
            <avue-form
              ref="formSecurityCheckApply"
              :option="optionSecurityCheckApply"
              v-model="formSecurityCheckApply"
              @reset-change="emptytChange"
              @submit="submitSecurityCheckApply"
            >
            </avue-form>
          </div>
        </el-dialog>
        <div style="position: fixed; top: 9999px; width: 100%; height: 100%">
          <div class="certificate_box" id="certificateDom">
@@ -493,7 +581,7 @@
      >
      <!-- <div style="font-size: 14px">连接身份证设备失败</div> -->
      <!-- v-show="haveSEL == 'noDrive'" -->
      <!-- href="http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar" -->
      <!-- href="http://61.131.136.25:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar" -->
      <!-- <a href="javascript;">未安装身份证驱动,点击下载</a> -->
    </div>
  </el-row>
@@ -509,6 +597,8 @@
  update,
  updatePlatform,
  securitySave,
  updateAccount,
  securitySaves,
  grant,
  resetPassword,
  getUserPractitionersInfo,
@@ -517,6 +607,7 @@
  checkAccountByUser
} from "@/api/system/user";
import { securityApply } from "@/api/accreditationRecords/accreditationRecords";
import { add } from "@/api/securityapplyRecord/securityapplyRecord";
import { getList } from "@/api/securityGuard/securityGuard";
import { getDeptLazyTree } from "@/api/system/dept";
import { getInformationDetails } from "@/api/securityUnit/securityUnit";
@@ -671,44 +762,6 @@
      } else {
        callback(new Error("身份证错误"));
      }
      // console.log(oldy, oldm, oldd, year - oldy, mouth, day);
      // var test =
      //   /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
      // if (!test.test(value)) {
      //   callback(new Error("请输入正确身份证号码"));
      // } else {
      //   // //加入校验18岁到60岁的
      //   // oldy = +value.slice(6, 10);
      //   // oldm = +value.slice(10, 12);
      //   // oldd = +value.slice(12, 14);
      //   // ok =
      //   //   year - oldy < 18 || year - oldy > 60
      //   //     ? false
      //   //     : year - oldy == 18
      //   //     ? mouth < oldm
      //   //       ? false
      //   //       : mouth > oldm
      //   //       ? true
      //   //       : day < oldd
      //   //       ? false
      //   //       : true
      //   //     : year - oldy == 60
      //   //     ? mouth < oldm
      //   //       ? true
      //   //       : mouth > oldm
      //   //       ? false
      //   //       : day <= oldd
      //   //       ? false
      //   //       : true
      //   //     : true;
      //   // if (ok) {
      //   callback();
      //   // } else {
      //   //   // callback(new Error("根据国家要求,需在18岁至60岁"));
      //   //   callback(new Error("年龄不符"));
      // }
      // }
    };
    const validatePassPhone = (rule, value, callback) => {
      var test = /^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])\d{8}$/g;
@@ -718,12 +771,7 @@
        callback();
      }
    };
    // let table = document.getElementsByClassName("tablesss");
    // let heard = table[0].getElementsByClassName("avue-crud__search");
    // let usNum =
    //   this.windowWidth <= 1376 && this.windowHeight <= 778 ? 170 : 332;
    // // that.option.height = +h - (+heard[0].clientHeight + 332);
    // let optionHeight = +this.windowHeight - (+heard[0].clientHeight + +usNum);
    return {
      startTimecc: null,
      sort: "",
@@ -754,6 +802,7 @@
      certificateYear: null,
      certificateMonth: null,
      certificateFlag: false,
      accountVisible:false,
      certificateObj: {
        realName: "",
        securitynumber: "",
@@ -763,7 +812,9 @@
      securityid: "",
      excelBox1: false,
      excelBox2: false,
      excelBox3: false,
      isSecurity: true,
      securityCheckApplyvisible: false,
      excelForm1: {},
      excelOption1: {
        submitBtn: false,
@@ -790,6 +841,32 @@
          }
        ]
      },
      excelForm3: {},
      excelOption3: {
        submitBtn: false,
        emptyBtn: false,
        column: [
          {
            label: "文件上传",
            prop: "excelFile",
            type: "upload",
            drag: true,
            loadText: "文件上传中,请稍等",
            span: 24,
            propsHttp: {
              res: "data"
            },
            tip: "请上传 .xls,.xlsx 标准格式文件",
            action: "/api/securityPaper/import-security-paper"
          },
          {
            label: "模板下载",
            prop: "excelTemplate",
            formslot: true,
            span: 24
          }
        ]
      },
      excelForm2: {},
      excelOption2: {
        submitBtn: false,
@@ -805,8 +882,8 @@
            propsHttp: {
              res: "data"
            },
            tip: "请上传 zip 压缩文件,照片文件名以身份证号码命名",
            action: "/api/blade-resource/oss/endpoint/put-file-zip"
            tip: "请上传 zip 压缩文件,照片文件名以用户编号命名",
            action: "/api/blade-resource/oss/endpoint/put-file-zips"
          }
        ]
      },
@@ -875,6 +952,131 @@
      },
      choiceList: [],
      deptIdss: "",
      optionSecurityCheckApply: {
        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: "realName",
            labelWidth: 110,
            disabled: true,
            rules: [
              {
                required: true,
                message: "请输入姓名",
                trigger: "blur"
              }
            ]
          },
          {
            label: "保安证编号",
            prop: "number",
            labelWidth: 110,
            disabled: false,
            rules: [
              {
                required: true,
                message: "请输入保安证编号",
                trigger: "blur"
              }
            ]
          },
          {
            label: "保安员证图片",
            prop: "url",
            labelWidth: 110,
            type: "upload",
            span: 24,
            listType: "picture-img",
            tip: "上传jpg/png文件,图片不超过1M",
            propsHttp: {
              res: "data",
              url: "url"
            },
            canvasOption: {
              text: " ",
              ratio: 1.0
            },
            action: "/api/blade-resource/oss/endpoint/put-files",
            rules: [
              {
                required: true,
                message: "请上传保安员证图片",
                trigger: "blur"
              }
            ]
          },
          {
            label: "申请理由",
            labelWidth: 110,
            span: 24,
            type: "textarea",
            prop: "applyReason"
          }
        ]
      },
      optionAccount: {
        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: "oldAccount",
            labelWidth: 110,
            disabled: true,
            rules: [
              {
                required: true,
                message: "请输入原账号",
                trigger: "blur"
              }
            ]
          },
          {
            label: "新账号",
            prop: "account",
            labelWidth: 110,
            rules: [
              {
                required: true,
                message: "请输入新账号",
                trigger: "blur"
              }
            ]
          }
        ]
      },
      formAccount: {},
      formSecurityCheckApply: {},
      option: {
        searchIndex: 6, //收缩展示数量
        searchIcon: true, //搜索是否收缩
@@ -898,7 +1100,7 @@
        searchMenuSpan: 6,
        stripe: true,
        border: true,
        delBtn: true,
        // delBtn: true,
        align: "center",
        index: true,
        // delBtnText: "注销",
@@ -910,6 +1112,8 @@
        dialogClickModal: false,
        column: securityFormPageColumn,
        ...this.$store.state.control.clearOtherBut,
        // addBtn: false,
        editBtn: false,
        group: [
          {
            label: "基础信息",
@@ -1094,11 +1298,6 @@
              {
                label: "是否持证",
                prop: "hold",
                // dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage",
                // props: {
                //   label: "dictValue",
                //   value: "dictKey",
                // },
                type: "select",
                dicData: [
                  {
@@ -1135,24 +1334,24 @@
                  }
                ]
              },
              {
                label: "保安证书照片",
                prop: "email",
                type: "upload",
                listType: "picture-img",
                display: true,
                propsHttp: {
                  res: "data",
                  url: "url"
                },
                canvasOption: {
                  text: " ",
                  ratio: 1.0
                },
                action: "/api/blade-resource/oss/endpoint/put-files",
                tip: "上传jpg,png格式图片,大小不超过2M",
                span: 12
              },
              // {
              //   label: "保安证书照片",
              //   prop: "email",
              //   type: "upload",
              //   listType: "picture-img",
              //   display: true,
              //   propsHttp: {
              //     res: "data",
              //     url: "url"
              //   },
              //   canvasOption: {
              //     text: " ",
              //     ratio: 1.0
              //   },
              //   action: "/api/blade-resource/oss/endpoint/put-files",
              //   tip: "上传jpg,png格式图片,大小不超过2M",
              //   span: 12
              // },
              {
                label: "民族",
                prop: "nation"
@@ -1432,8 +1631,8 @@
          this.option.group,
          "securitynumber"
        );
        var emailcolumn = this.findObject(this.option.group, "email");
        // console.log(val,1234);
        // var emailcolumn = this.findObject(this.option.group, "email");
        console.log(val, 1234);
        if (val == 1) {
          securitynumbercolumn.display = true;
          securitynumbercolumn.rules = [
@@ -1443,7 +1642,7 @@
              trigger: "blur"
            }
          ];
          emailcolumn.display = true;
          // emailcolumn.display = true;
        } else {
          securitynumbercolumn.display = false;
          securitynumbercolumn.rules = [
@@ -1453,7 +1652,7 @@
              trigger: "blur"
            }
          ];
          emailcolumn.display = false;
          // emailcolumn.display = false;
        }
      },
      immediate: true
@@ -1541,7 +1740,7 @@
      return {
        addBtn: this.vaildData(this.permission.securityGuard_add, false),
        viewBtn: this.vaildData(null, false),
        delBtn: this.vaildData(this.permission.securityGuard_delete, false),
        delBtn: this.vaildData(null, false),
        editBtn: this.vaildData(this.permission.securityGuard_edit, false)
      };
    },
@@ -1567,7 +1766,6 @@
  beforeCreate() {},
  created() {
    var that = this;
    // console.log(this.userInfo, 9999);
    if (this.userInfo.role_name == "办证管理员") {
      this.search["userType"] = 7;
      this.search["hold"] = "1";
@@ -1588,7 +1786,11 @@
      column.dicUrl =
        "/api/blade-system/dept/security_lazy-tree?deptId=" +
        this.userInfo.dept_id;
    } else if (roleName == "公安管理员" || roleName == "administrator") {
    } else if (
      roleName == "公安管理员" ||
      roleName == "administrator" ||
      this.userInfo.role_name == "民警"
    ) {
      var columnDept = that.findObject(that.option.column, "deptId");
      columnDept.dicUrl =
        "/api/blade-system/dept/security_lazy-tree?jurisdiction=" +
@@ -1644,6 +1846,36 @@
    // this.olondSFZ(); //检查身份证设备是否存在
  },
  methods: {
    //账号修改
    accountUpdate(row){
      this.formAccount = {
        id: row.id,
        oldAccount: row.account,
        account:"",
      }
      this.accountVisible = true;
    },
    //账号修改提交
    submit(row, done, loading) {
      var that = this;
      updateAccount(row).then(
        () => {
          that.$refs.formAccount.resetFields();
          that.$message({
            type: "success",
            message: "操作成功!"
          });
          that.accountVisible = false;
          that.onLoad(that.page);
          done();
        },
        error => {
          window.console.log(error);
          done();
        }
      );
    },
    checkDom(name, fn) {
      //  声明定时器
      let that = this;
@@ -1672,6 +1904,7 @@
      //  首次执行
      checkDom();
    },
    openccc() {
      console.log(this.zhiwenImg);
      // console.log(this.zhiwenChart);
@@ -1850,6 +2083,15 @@
    handleImport1() {
      this.excelBox1 = true;
    },
    handleImport3() {
      this.excelBox3 = true;
    },
    uploadAfter3(res, done, loading, column) {
      window.console.log(column);
      this.excelBox3 = false;
      this.refreshChange();
      done();
    },
    uploadAfter1(res, done, loading, column) {
      window.console.log(column);
      this.excelBox1 = false;
@@ -1873,6 +2115,13 @@
          this.website.tokenHeader
        }=${getToken()}`
      );
    },
    handleTemplate3() {
        window.open(
          `/api/securityPaper/export-template-security-paper?${
            this.website.tokenHeader
          }=${getToken()}`
        );
    },
    handleImport2() {
      this.excelBox2 = true;
@@ -2087,6 +2336,33 @@
          });
        });
    },
    // 证件核实申请
    rowCheckApply(row) {
      this.formSecurityCheckApply = {
        id: null,
        realName: row.realName,
        userId: row.id
      };
      this.securityCheckApplyvisible = true;
    },
    //证件核实申请提交
    submitSecurityCheckApply(row, done, loading) {
      var that = this;
      row["createUser"] = this.userInfo.Id;
      add(row).then(() => {
        that.$refs.formSecurityCheckApply.resetFields();
        this.$message({
          type: "success",
          message: `操作成功`
        });
        this.securityCheckApplyvisible = false;
        this.onLoad(this.page);
        done();
      });
      error => {
        window.console.log(error);
      };
    },
    //保安员信息导出
    handleExportSecurityInfo() {
      this.$confirm("是否导出保安员信息数据?", "提示", {
@@ -2094,12 +2370,6 @@
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        //获取查询条件
        // const { releaseTimeRange } = this.search;
        // if (releaseTimeRange) {
        //   this.search["startTime"] = releaseTimeRange[0];
        //   this.search["endTime"] = releaseTimeRange[1];
        // }
        var data = {
          cardid: this.search.cardid,
          deptId: this.search.deptId,
@@ -2128,7 +2398,10 @@
          //如果是培训公司管理员
          data["trainingUnitId"] = this.userInfo.Id;
        }
        if (this.userInfo.role_name == "公安管理员") {
        if (
          this.userInfo.role_name == "公安管理员" ||
          this.userInfo.role_name == "民警"
        ) {
          //如果是公安管理员
          data["jurisdiction"] = this.userInfo.jurisdiction;
        }
@@ -2199,20 +2472,47 @@
        }
      };
      securitySave(userMap).then(
        () => {
      securitySaves(userMap).then(
        res => {
          // console.log(res.data,111111111111111111);
          this.initFlag = false;
          this.$alert("账号为身份证号码,密码为身份证后六位", "温馨提示", {
            confirmButtonText: "确定",
            callback: action => {
              this.$message({
                type: "success",
                message: `操作成功`
              });
              this.onLoad(this.page);
              done();
            }
          });
          if (res.data.code == 200) {
            // this.$alert("新增成功,密码为身份证后六位", "温馨提示", {
            //   confirmButtonText: "确定",
            //   callback: action => {
            //     this.$message({
            //       type: "success",
            //       message: `操作成功`
            //     });
            //     this.onLoad(this.page);
            //     done();
            //   }
            // });
            this.$message({
              type: "success",
              message: `操作成功`
            });
            this.onLoad(this.page);
            done();
          }
          //保安员证编号不匹配的情况
          if (res.data.code == 201) {
            this.$alert(
              "用户新增成功!,密码为身份证后六位!注:当前保安证编号不匹配,请核实!",
              "温馨提示",
              {
                confirmButtonText: "确定",
                callback: action => {
                  this.$message({
                    type: "success",
                    message: `操作成功`
                  });
                  this.onLoad(this.page);
                  done();
                }
              }
            );
          }
        },
        error => {
          window.console.log(error);
@@ -2240,13 +2540,32 @@
        row["cell"] = this.nowCell;
      }
      update(row).then(
        () => {
        res => {
          this.initFlag = false;
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          if (res.data.code == 200) {
            this.$message({
              type: "success",
              message: "操作成功!"
            });
          }
          if (res.data.code == 201) {
            this.$alert(
              "修改成功!注:当前保安证编号不匹配,请核实!",
              "温馨提示",
              {
                confirmButtonText: "确定",
                callback: action => {
                  this.$message({
                    type: "success",
                    message: `操作成功`
                  });
                  this.onLoad(this.page);
                  done();
                }
              }
            );
          }
          done();
        },
        error => {
@@ -2451,7 +2770,7 @@
    SFZopens() {
      if (this.haveSEL == "noDrive") {
        let url =
          "http://223.82.109.183:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar";
          "http://61.131.136.25:2081/zhba/upload/20211201/64d8b76f3aecae93e18d015bbca89aba.rar";
        window.open(url, "_self");
      } else if (this.haveSEL == "noEquipment") {
        this.radio = true;
@@ -2651,7 +2970,6 @@
    },
    //排序
    sortChange(value) {
      // console.log(value, 51151515);
      if (value.order == "ascending") {
        this.sort = "asc";
      }
@@ -2727,7 +3045,8 @@
              "/api/blade-user/import-security?deptId=" + this.deptIds;
          } else if (
            roleAlias == "公安管理员" ||
            roleAlias == "administrator"
            roleAlias == "administrator" ||
            this.userInfo.role_name == "民警"
          ) {
            params["jurisdiction"] = that.userInfo.jurisdiction;
            var ColumnDeptUpdate = that.findObject(that.option.group, "deptId");
@@ -2735,13 +3054,21 @@
              "/api/blade-system/dept/security_lazy-tree?jurisdiction=" +
              that.userInfo.jurisdiction;
            //审查状态查询开启
            var columnExaminationType = that.findObject(
              that.option.column,
              "examinationType"
            //导入action 修改
            const importColumn = that.findObject(
              that.excelOption1.column,
              "excelFile"
            );
            columnExaminationType.search = true;
            columnExaminationType.hide = false;
            importColumn.action =
              "/api/blade-user/import-security?deptId=" + this.deptIds;
            //审查状态查询开启
            // var columnExaminationType = that.findObject(
            //   that.option.column,
            //   "examinationType"
            // );
            // columnExaminationType.search = true;
            // columnExaminationType.hide = false;
          } else {
            var ColumnDeptUpdate1 = that.findObject(
              that.option.group,